diff --git a/src/api.go b/src/api.go index d52b937..8faea65 100644 --- a/src/api.go +++ b/src/api.go @@ -55,6 +55,13 @@ func initAPIs() { authRouter.HandleFunc("/api/proxy/setIncoming", HandleIncomingPortSet) authRouter.HandleFunc("/api/proxy/useHttpsRedirect", HandleUpdateHttpsRedirect) authRouter.HandleFunc("/api/proxy/requestIsProxied", HandleManagementProxyCheck) + //Reverse proxy root related APIs + authRouter.HandleFunc("/api/proxy/root/listOptions", HandleRootRouteOptionList) + authRouter.HandleFunc("/api/proxy/root/updateOptions", HandleRootRouteOptionsUpdate) + //Reverse proxy auth related APIs + authRouter.HandleFunc("/api/proxy/auth/exceptions/list", ListProxyBasicAuthExceptionPaths) + authRouter.HandleFunc("/api/proxy/auth/exceptions/add", AddProxyBasicAuthExceptionPaths) + authRouter.HandleFunc("/api/proxy/auth/exceptions/delete", RemoveProxyBasicAuthExceptionPaths) //TLS / SSL config authRouter.HandleFunc("/api/cert/tls", handleToggleTLSProxy) @@ -164,8 +171,9 @@ func initAPIs() { //Others http.HandleFunc("/api/info/x", HandleZoraxyInfo) - http.HandleFunc("/api/conf/export", ExportConfigAsZip) - http.HandleFunc("/api/conf/import", ImportConfigFromZip) + authRouter.HandleFunc("/api/info/geoip", HandleGeoIpLookup) + authRouter.HandleFunc("/api/conf/export", ExportConfigAsZip) + authRouter.HandleFunc("/api/conf/import", ImportConfigFromZip) //Debug authRouter.HandleFunc("/api/info/pprof", pprof.Index) diff --git a/src/config.go b/src/config.go index 4fce2ef..9150476 100644 --- a/src/config.go +++ b/src/config.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "log" "net/http" "os" @@ -26,16 +25,18 @@ import ( */ type Record struct { - ProxyType string - Rootname string - ProxyTarget string - UseTLS bool - SkipTlsValidation bool - RequireBasicAuth bool - BasicAuthCredentials []*dynamicproxy.BasicAuthCredentials + ProxyType string + Rootname string + ProxyTarget string + UseTLS bool + SkipTlsValidation bool + RequireBasicAuth bool + BasicAuthCredentials []*dynamicproxy.BasicAuthCredentials + BasicAuthExceptionRules []*dynamicproxy.BasicAuthExceptionRule } -func SaveReverseProxyConfig(proxyConfigRecord *Record) error { +// Save a reverse proxy config record to file +func SaveReverseProxyConfigToFile(proxyConfigRecord *Record) error { //TODO: Make this accept new def types os.MkdirAll("./conf/proxy/", 0775) filename := getFilenameFromRootName(proxyConfigRecord.Rootname) @@ -45,10 +46,19 @@ func SaveReverseProxyConfig(proxyConfigRecord *Record) error { //Write to file js, _ := json.MarshalIndent(thisRecord, "", " ") - return ioutil.WriteFile(filepath.Join("./conf/proxy/", filename), js, 0775) + return os.WriteFile(filepath.Join("./conf/proxy/", filename), js, 0775) } -func RemoveReverseProxyConfig(rootname string) error { +// Save a running reverse proxy endpoint to file (with automatic endpoint to record conversion) +func SaveReverseProxyEndpointToFile(proxyEndpoint *dynamicproxy.ProxyEndpoint) error { + recordToSave, err := ConvertProxyEndpointToRecord(proxyEndpoint) + if err != nil { + return err + } + return SaveReverseProxyConfigToFile(recordToSave) +} + +func RemoveReverseProxyConfigFile(rootname string) error { filename := getFilenameFromRootName(rootname) removePendingFile := strings.ReplaceAll(filepath.Join("./conf/proxy/", filename), "\\", "/") log.Println("Config Removed: ", removePendingFile) @@ -66,8 +76,18 @@ func RemoveReverseProxyConfig(rootname string) error { // Return ptype, rootname and proxyTarget, error if any func LoadReverseProxyConfig(filename string) (*Record, error) { - thisRecord := Record{} - configContent, err := ioutil.ReadFile(filename) + thisRecord := Record{ + ProxyType: "", + Rootname: "", + ProxyTarget: "", + UseTLS: false, + SkipTlsValidation: false, + RequireBasicAuth: false, + BasicAuthCredentials: []*dynamicproxy.BasicAuthCredentials{}, + BasicAuthExceptionRules: []*dynamicproxy.BasicAuthExceptionRule{}, + } + + configContent, err := os.ReadFile(filename) if err != nil { return &thisRecord, err } @@ -82,6 +102,22 @@ func LoadReverseProxyConfig(filename string) (*Record, error) { return &thisRecord, nil } +// Convert a running proxy endpoint object into a save-able record struct +func ConvertProxyEndpointToRecord(targetProxyEndpoint *dynamicproxy.ProxyEndpoint) (*Record, error) { + thisProxyConfigRecord := Record{ + ProxyType: targetProxyEndpoint.GetProxyTypeString(), + Rootname: targetProxyEndpoint.RootOrMatchingDomain, + ProxyTarget: targetProxyEndpoint.Domain, + UseTLS: targetProxyEndpoint.RequireTLS, + SkipTlsValidation: targetProxyEndpoint.SkipCertValidations, + RequireBasicAuth: targetProxyEndpoint.RequireBasicAuth, + BasicAuthCredentials: targetProxyEndpoint.BasicAuthCredentials, + BasicAuthExceptionRules: targetProxyEndpoint.BasicAuthExceptionRules, + } + + return &thisProxyConfigRecord, nil +} + func getFilenameFromRootName(rootname string) string { //Generate a filename for this rootname filename := strings.ReplaceAll(rootname, ".", "_") diff --git a/src/emails.go b/src/emails.go index 0921928..55fd604 100644 --- a/src/emails.go +++ b/src/emails.go @@ -9,7 +9,7 @@ import ( "strings" "time" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "imuslab.com/zoraxy/mod/email" "imuslab.com/zoraxy/mod/utils" ) @@ -180,7 +180,7 @@ func setSMTPAdminAddress(adminAddr string) error { return sysdb.Write("smtp", "admin", adminAddr) } -//Load SMTP admin address. Return empty string if not set +// Load SMTP admin address. Return empty string if not set func loadSMTPAdminAddr() string { adminAddr := "" if sysdb.KeyExists("smtp", "admin") { @@ -223,7 +223,7 @@ func HandleAdminAccountResetEmail(w http.ResponseWriter, r *http.Request) { return } - passwordResetAccessToken = uuid.NewV4().String() + passwordResetAccessToken = uuid.New().String() //SMTP info exists. Send reset account email lastAccountResetEmail = time.Now().Unix() diff --git a/src/go.mod b/src/go.mod index 761fa8d..ad9214f 100644 --- a/src/go.mod +++ b/src/go.mod @@ -4,16 +4,15 @@ go 1.16 require ( github.com/boltdb/bolt v1.3.1 - github.com/go-acme/lego/v4 v4.12.1 // indirect + github.com/go-acme/lego/v4 v4.14.0 github.com/go-ping/ping v1.1.0 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/gorilla/sessions v1.2.1 - github.com/gorilla/websocket v1.4.2 + github.com/gorilla/websocket v1.5.0 github.com/grandcat/zeroconf v1.0.0 - github.com/likexian/whois v1.15.0 // indirect - github.com/microcosm-cc/bluemonday v1.0.24 - github.com/oschwald/geoip2-golang v1.8.0 - github.com/satori/go.uuid v1.2.0 - golang.org/x/net v0.11.0 - golang.org/x/sys v0.9.0 + github.com/likexian/whois v1.15.1 + github.com/microcosm-cc/bluemonday v1.0.25 + golang.org/x/net v0.14.0 + golang.org/x/sys v0.11.0 + golang.org/x/tools v0.12.0 // indirect ) diff --git a/src/go.sum b/src/go.sum index 44c5aef..e984002 100644 --- a/src/go.sum +++ b/src/go.sum @@ -123,7 +123,6 @@ cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOV cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= @@ -392,34 +391,59 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/AdamSLevy/jsonrpc2/v14 v14.1.0/go.mod h1:ZakZtbCXxCz82NJvq7MoREtiQesnDfrtF6RFUGzQfLo= +github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0/go.mod h1:NBanQUfSWiWn3QEpWDTCU0IjBECKOYvl2R8xdRtMtiM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.1.0/go.mod h1:copqlcjMWc/wgQ1N2fzsJFQxDdqKGg1EQt8T5wJMOGE= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2/go.mod h1:FbdwsQ2EzwvXxOPcMFYO8ogEc9uMMIj3YkmCdXdAFmk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.1.0/go.mod h1:y2zXtLSMM/X5Mfawq0lOftpWn3f4V6OCsRdINsvWBPI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= +github.com/AzureAD/microsoft-authentication-library-for-go v0.7.0/go.mod h1:BDJ5qMFKx9DugEg3+uQSDCdbYPr5s9vBTrL9P8TpqOU= +github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.1/go.mod h1:kX6YddBkXqqywAe8c9LyvgTCyFuZCTMF4cRPQhc3Fy8= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2/go.mod h1:QlXr/TrICfQ/ANa76sLeQyhAJyNR9sEcfNuZBkY9jgY= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/aliyun/alibaba-cloud-sdk-go v1.61.1755/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU= github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129/go.mod h1:rFgpPQZYZ8vdbc+48xibu8ALc3yeyd64IhHS+PU6Yyg= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= @@ -427,7 +451,26 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go v1.39.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go-v2 v1.19.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= +github.com/aws/aws-sdk-go-v2/config v1.18.28/go.mod h1:nIL+4/8JdAuNHEjn/gPEXqtnS02Q3NXB/9Z7o5xE4+A= +github.com/aws/aws-sdk-go-v2/credentials v1.13.27/go.mod h1:syOqAek45ZXZp29HlnRS/BNgMIW6uiRmeuQsz4Qh2UE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.5/go.mod h1:Gj7tm95r+QsDoN2Fhuz/3npQvcZbkEf5mL70n3Xfluc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.35/go.mod h1:ipR5PvpSPqIqL5Mi82BxLnfMkHVbmco8kUwO2xrCi0M= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.29/go.mod h1:M/eUABlDbw2uVrdAn+UsI6M727qp2fxkp8K0ejcBDUY= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.36/go.mod h1:Rmw2M1hMVTwiUhjwMoIBFWFJMhvJbct06sSidxInkhY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.27/go.mod h1:ZdjYvJpDlefgh8/hWelJhqgqJeodxu4SmbVsSdBlL7E= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.30/go.mod h1:qQtIBl5OVMfmeQkz8HaVyh5DzFmmFXyvK27UgIgOr4c= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.29/go.mod h1:fDbkK4o7fpPXWn8YAPmTieAMuB9mk/VgvW64uaUqxd4= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.4/go.mod h1:JniVpqvw90sVjNqanGLufrVapWySL28fhBlYgl96Q/w= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.27.2/go.mod h1:gQhLZrTEath4zik5ixIe6axvgY5jJrgSBDJ360Fxnco= +github.com/aws/aws-sdk-go-v2/service/route53 v1.28.4/go.mod h1:VBLWpaHvhQNeu7N9rMEf00SWeOONb/HvaDUxe/7b44k= +github.com/aws/aws-sdk-go-v2/service/s3 v1.37.0/go.mod h1:PwyKKVL0cNkC37QwLcrhyeCrAk+5bY8O2ou7USyAS2A= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.13/go.mod h1:DfX0sWuT46KpcqbMhJ9QWtxAIP1VozkDWf8VAkByjYY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.13/go.mod h1:BzqsVVFduubEmzrVtUFQQIQdFqvUItF8XUq2EnS8Wog= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.3/go.mod h1:yVGZA1CPkmUhBdA039jXNJJG7/6t+G+EBWmFq23xqnY= +github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -438,12 +481,14 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw= github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= -github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= @@ -455,7 +500,9 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/civo/civogo v0.3.11/go.mod h1:7+GeeFwc4AYTULaEshpT2vIcl3Qq8HPoxA17viX3l6g= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.49.0/go.mod h1:h0QgcIZ3qEXwFiwfBO8sQxjVdYsLX+PfD7NFEnANaKg= +github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/cloudflare-go v0.70.0/go.mod h1:VW6GuazkaZ4xEDkFt24lkXQUsE8q7BiGqDniC2s8WEM= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -487,9 +534,11 @@ github.com/deepmap/oapi-codegen v1.9.1/go.mod h1:PLqNAhdedP8ttRpBBkzLKU3bp+Fpy+t github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/dnsimple/dnsimple-go v0.71.1/go.mod h1:F9WHww9cC76hrnwGFfAfrqdW99j3MOYasQcIwTS/aUk= +github.com/dnsimple/dnsimple-go v1.2.0/go.mod h1:z/cs26v/eiRvUyXsHQBLd8lWF8+cD6GbmkPH84plM4U= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -503,7 +552,7 @@ github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/exoscale/egoscale v0.90.0/go.mod h1:wyXE5zrnFynMXA0jMhwQqSe24CfUhmBk2WI5wFZcq6Y= +github.com/exoscale/egoscale v0.100.1/go.mod h1:BAb9p4rmyU+Wl400CJZO5270H2sXtdsZjLcm5xMKkz4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -511,22 +560,27 @@ github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/getkin/kin-openapi v0.87.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-acme/lego/v4 v4.12.1 h1:Cy3FS7wADLNBqCLpz2wdfdNrThW9rZy8RCAfnUrL2uE= -github.com/go-acme/lego/v4 v4.12.1/go.mod h1:UZoOlhVmUYP/N0z4tEbfUjoCNHRZNObzqWZtT76DIsc= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/go-acme/lego/v4 v4.14.0 h1:/skZoRHgVh0d2RK7l1g3Ch8HqeqP9LB8ZEjLdGEpcDE= +github.com/go-acme/lego/v4 v4.14.0/go.mod h1:zjmvNCDLGz7GrC1OqdVpVmZFKSRabEDtWbdzmcpBsGo= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -540,14 +594,18 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-ping/ping v1.1.0 h1:3MCGhVX4fyEUuhsfwPrsEdQw6xspHkv5zHsiSoDFZYw= github.com/go-ping/ping v1.1.0/go.mod h1:xIFjORFzTxqIV/tDVGO4eDy/bLuSyawEeojSm3GfRGk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= -github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= +github.com/go-playground/validator/v10 v10.12.0/go.mod h1:hCAPuzYvKdP33pxWa+2+6AIKXEKqjIUyqsNCtbsSJrA= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw= @@ -556,10 +614,14 @@ github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -611,6 +673,7 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -640,8 +703,9 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= @@ -671,8 +735,9 @@ github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyC github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grandcat/zeroconf v1.0.0 h1:uHhahLBKqwWBV6WZUDAT71044vwOTL+McW0mBJvo6kE= github.com/grandcat/zeroconf v1.0.0/go.mod h1:lTKmG1zh86XyCoUeIHSA4FJMBwCJiQmGfcP2PdzytEs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -695,38 +760,44 @@ github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjh github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI= +github.com/hashicorp/hc-install v0.5.0/go.mod h1:JyzMfbzfSBSjoDCRPna1vi/24BEDxFaCPfdHtM5SCdo= +github.com/hashicorp/hc-install v0.5.2/go.mod h1:9QISwe6newMWIfEiXpzuu1k9HAGtQYgnSH8H9T8wmoI= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/terraform-exec v0.17.2/go.mod h1:tuIbsL2l4MlwwIZx9HPM+LOV9vVyEfBYu2GsO1uH3/8= -github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/hashicorp/terraform-exec v0.18.1/go.mod h1:58wg4IeuAJ6LVsLUeD2DWZZoc/bYi6dzhLHzxM41980= +github.com/hashicorp/terraform-json v0.15.0/go.mod h1:+L1RNzjDU5leLFZkHTFTbJXaoqUC6TqXlFgDoOXrtvk= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI= github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -744,9 +815,10 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= +github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -757,12 +829,15 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= github.com/labstack/echo/v4 v4.6.3/go.mod h1:Hk5OiHj0kDqmFq7aHe7eDqI7CUhuCrfpupQtLGGLm7A= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.2.2/go.mod h1:kUaIbLZWttglzwNuG0pgsh5vuV6u2YcGBYz1hIPjtOQ= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= github.com/lestrrat-go/codegen v1.0.2/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM= @@ -770,11 +845,12 @@ github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++ github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/likexian/gokit v0.25.13 h1:p2Uw3+6fGG53CwdU2Dz0T6bOycdb2+bAFAa3ymwWVkM= github.com/likexian/gokit v0.25.13/go.mod h1:qQhEWFBEfqLCO3/vOEo2EDKd+EycekVtUK4tex+l2H4= -github.com/likexian/whois v1.15.0 h1:AYYJ5bNUo8Qy2T1Z5GgMp1oIcIlCcTDfg1buYz6TdAE= -github.com/likexian/whois v1.15.0/go.mod h1:456fUTkh+O8F8v09bGdVl7XxBjRaQ4LvYHyVWX5Bxyg= -github.com/likexian/whois-parser v1.24.8/go.mod h1:b6STMHHDaSKbd4PzGrP50wWE5NzeBUETa/hT9gI0G9I= -github.com/linode/linodego v1.9.1/go.mod h1:h6AuFR/JpqwwM/vkj7s8KV3iGN8/jxn+zc437F8SZ8w= +github.com/likexian/whois v1.15.1 h1:6vTMI8n9s1eJdmcO4R9h1x99aQWIZZX1CD3am68gApU= +github.com/likexian/whois v1.15.1/go.mod h1:/nxmQ6YXvLz+qTxC/QFtEJNAt0zLuRxJrKiWpBJX8X0= +github.com/likexian/whois-parser v1.24.9/go.mod h1:b6STMHHDaSKbd4PzGrP50wWE5NzeBUETa/hT9gI0G9I= +github.com/linode/linodego v1.17.2/go.mod h1:C2iyT3Vg2O2sPxkWka4XAQ5WSUtm5LmTZ3Adw43Ra7Q= github.com/liquidweb/go-lwApi v0.0.0-20190605172801-52a4864d2738/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs= github.com/liquidweb/go-lwApi v0.0.5/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs= github.com/liquidweb/liquidweb-cli v0.6.9/go.mod h1:cE1uvQ+x24NGUL75D0QagOFCG8Wdvmwu8aL9TLmA/eQ= @@ -799,22 +875,24 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/microcosm-cc/bluemonday v1.0.24 h1:NGQoPtwGVcbGkKfvyYk1yRqknzBuoMiUrO6R7uFTPlw= -github.com/microcosm-cc/bluemonday v1.0.24/go.mod h1:ArQySAMps0790cHSkdPEJ7bGkF2VePWH773hsJNSHf8= +github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= +github.com/microcosm-cc/bluemonday v1.0.25 h1:4NEwSfiJ+Wva0VxN5B8OwMicaJvD8r9tlJWm9rtloEg= +github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.47/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/mimuret/golang-iij-dpf v0.7.1/go.mod h1:IXWYcQVIHYzuM+W7kDWX0mseHDfUoqMuarxMXHVTir0= +github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= +github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/mimuret/golang-iij-dpf v0.9.1/go.mod h1:sl9KyOkESib9+KRD3HaGpgi1xk7eoN2+d96LCLsME2M= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -825,27 +903,32 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nrdcg/auroradns v1.1.0/go.mod h1:O7tViUZbAcnykVnrGkXzIJTHoQCHcgalgAe6X1mzHfk= -github.com/nrdcg/desec v0.6.0/go.mod h1:wybWg5cRrNmtXLYpUCPCLvz4jfFNEGZQEnoUiX9WqcY= +github.com/nrdcg/desec v0.7.0/go.mod h1:e1uRqqKv1mJdd5+SQROAhmy75lKMphLzWIuASLkpeFY= github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/freemyip v0.2.0/go.mod h1:HjF0Yz0lSb37HD2ihIyGz9esyGcxbCrrGFLPpKevbx4= -github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c= +github.com/nrdcg/goinwx v0.8.2/go.mod h1:mnMSTi7CXBu2io4DzdOBoGFA1XclD0sEPWJaDhNgkA4= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nrdcg/nodion v0.1.0/go.mod h1:inbuh3neCtIWlMPZHtEpe43TmRXxHV6+hk97iCZicms= -github.com/nrdcg/porkbun v0.1.1/go.mod h1:JWl/WKnguWos4mjfp4YizvvToigk9qpQwrodOk+CPoA= +github.com/nrdcg/porkbun v0.2.0/go.mod h1:i0uLMn9ItFsLsSQIAeEu1wQ9/+6EvX1eQw15hulMMRw= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nzdjb/go-metaname v1.0.0/go.mod h1:0GR0LshZax1Lz4VrOrfNSE4dGvTp7HGjiemdczXT2H4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -859,15 +942,14 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/oschwald/geoip2-golang v1.8.0 h1:KfjYB8ojCEn/QLqsDU0AzrJ3R5Qa9vFlx3z6SLNcKTs= -github.com/oschwald/geoip2-golang v1.8.0/go.mod h1:R7bRvYjOeaoenAp9sKRS8GX5bJWcZ0laWO5+DauEktw= -github.com/oschwald/maxminddb-golang v1.10.0 h1:Xp1u0ZhqkSuopaKmk1WwHtjF0H9Hd9181uj2MQ5Vndg= -github.com/oschwald/maxminddb-golang v1.10.0/go.mod h1:Y2ELenReaLAZ0b400URyGwvYxHV1dLIxBuyOsyYjHK0= -github.com/ovh/go-ovh v1.1.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA= +github.com/ovh/go-ovh v1.4.1/go.mod h1:6bL6pPyUT7tBfI0pqOegJgRjgjuO+mOo+MyXd1EEC0M= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -879,7 +961,7 @@ github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/otp v1.3.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -907,30 +989,33 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6po github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rwtodd/Go.Sed v0.0.0-20210816025313-55464686f9ef/go.mod h1:8AEUvGVi2uQ5b24BIhcr0GCcpd/RNAFWaN2CJFrWIIQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sacloud/api-client-go v0.2.1/go.mod h1:8fmYy5OpT3W8ltV5ZxF8evultNwKpduGN4YKmU9Af7w= -github.com/sacloud/go-http v0.1.2/go.mod h1:gvWaT8LFBFnSBFVrznOQXC62uad46bHZQM8w+xoH3eE= -github.com/sacloud/iaas-api-go v1.3.2/go.mod h1:CoqpRYBG2NRB5xfqTfZNyh2lVLKyLkE/HV9ISqmbhGc= -github.com/sacloud/packages-go v0.0.5/go.mod h1:XWMBSNHT9YKY3lCh6yJsx1o1RRQQGpuhNqJA6bSHdD4= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/sacloud/api-client-go v0.2.8/go.mod h1:0CV/kWNYlS1hCNdnk6Wx7Wdg8DPFCnv0zOIzdXjeAeY= +github.com/sacloud/go-http v0.1.6/go.mod h1:oLAHoDJRkptf8sq4fE8oERLkdCh0kJWfWu+paoJY7I0= +github.com/sacloud/iaas-api-go v1.11.1/go.mod h1:uBDSa06F/V0OnoR66jGdbH0PVnCJw+NeE9RVbVgMfss= +github.com/sacloud/packages-go v0.0.8/go.mod h1:btPji+wtZ+Pk7MeCy+zo61o5IziBoLdHIrdGiYq9Kb8= +github.com/sacloud/packages-go v0.0.9/go.mod h1:k+EEUMF2LlncjbNIJNOqLyZ9wjTESPIWIk1OA7x9j2Q= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.17/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/simplesurance/bunny-go v0.0.0-20221115111006-e11d9dc91f04/go.mod h1:5KS21fpch8TIMyAUv/qQqTa3GZfBDYgjaZbd2KXKYfg= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.0.4/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= -github.com/softlayer/softlayer-go v1.0.6/go.mod h1:6HepcfAXROz0Rf63krk5hPZyHT6qyx2MNvYyHof7ik4= +github.com/softlayer/softlayer-go v1.1.2/go.mod h1:hvAbzGH4LRXA6yXY8BNx99yoqZ7urfDdtl9mvBf0G+g= github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e/go.mod h1:fKZCUVdirrxrBpwd9wb+lSoVixvpwAu8eHzbQB2tums= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -950,7 +1035,6 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -960,31 +1044,35 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.3/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.490/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.490/go.mod h1:l9q4vc1QiawUB1m3RU+87yLvrrxe54jc0w/kEl4DbSQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/transip/gotransip/v6 v6.17.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= +github.com/transip/gotransip/v6 v6.20.0/go.mod h1:nzv9eN2tdsUrm5nG5ZX6AugYIU4qgsMwIn2c0EZLk8c= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= -github.com/ultradns/ultradns-go-sdk v1.4.0-20221107152238-f3f1d1d/go.mod h1:IgdoVzrGYzq4H4IGI0DAVnM3CbcuQDSxEP4s/j6cztI= -github.com/urfave/cli/v2 v2.11.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= -github.com/urfave/cli/v2 v2.14.0/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= +github.com/ultradns/ultradns-go-sdk v1.5.0-20230427130837-23c9b0c/go.mod h1:F4UyVEmq4/m5lAmx+GccrxyRCXmnBjzUL09JLTQFp94= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= @@ -1000,6 +1088,7 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -1017,6 +1106,7 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1026,26 +1116,36 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1083,9 +1183,13 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1121,6 +1225,7 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1136,6 +1241,7 @@ golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1146,6 +1252,7 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= @@ -1156,10 +1263,11 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1185,10 +1293,9 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1203,8 +1310,9 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1257,6 +1365,7 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1271,6 +1380,7 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1278,6 +1388,7 @@ golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1293,23 +1404,27 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220804214406-8e32c043e418/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= @@ -1318,6 +1433,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1333,16 +1450,16 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1408,9 +1525,12 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1653,7 +1773,6 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1664,11 +1783,11 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ns1/ns1-go.v2 v2.6.5/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ns1/ns1-go.v2 v2.7.6/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -1682,6 +1801,7 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1692,6 +1812,7 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ= diff --git a/src/main.go b/src/main.go index 8bbac8d..edff546 100644 --- a/src/main.go +++ b/src/main.go @@ -36,9 +36,11 @@ import ( var noauth = flag.Bool("noauth", false, "Disable authentication for management interface") var showver = flag.Bool("version", false, "Show version of this server") var allowSshLoopback = flag.Bool("sshlb", false, "Allow loopback web ssh connection (DANGER)") +var allowMdnsScanning = flag.Bool("mdns", true, "Enable mDNS scanner and transponder") var ztAuthToken = flag.String("ztauth", "", "ZeroTier authtoken for the local node") var ztAPIPort = flag.Int("ztport", 9993, "ZeroTier controller API port") var acmeAutoRenewInterval = flag.Int("autorenew", 86400, "ACME auto TLS/SSL certificate renew check interval (seconds)") +var enableHighSpeedGeoIPLookup = flag.Bool("fastgeoip", false, "Enable high speed geoip lookup, require 1GB extra memory (Not recommend for low end devices)") var ( name = "Zoraxy" version = "2.6.6" @@ -96,9 +98,12 @@ func ShutdownSeq() { netstatBuffers.Close() fmt.Println("- Closing Statistic Collector") statisticCollector.Close() - fmt.Println("- Stopping mDNS Discoverer") - //Stop the mdns service - mdnsTickerStop <- true + if mdnsTickerStop != nil { + fmt.Println("- Stopping mDNS Discoverer (might take a few minutes)") + // Stop the mdns service + mdnsTickerStop <- true + } + mdnsScanner.Close() fmt.Println("- Closing Certificates Auto Renewer") acmeAutoRenewer.Close() diff --git a/src/mod/acme/acme.go b/src/mod/acme/acme.go index ec8bc1c..d82cf05 100644 --- a/src/mod/acme/acme.go +++ b/src/mod/acme/acme.go @@ -5,10 +5,10 @@ import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" + "crypto/tls" "crypto/x509" "encoding/json" "encoding/pem" - "errors" "fmt" "io/ioutil" "log" @@ -28,6 +28,12 @@ import ( "imuslab.com/zoraxy/mod/utils" ) +type CertificateInfoJSON struct { + AcmeName string `json:"acme_name"` + AcmeUrl string `json:"acme_url"` + SkipTLS bool `json:"skip_tls"` +} + // ACMEUser represents a user in the ACME system. type ACMEUser struct { Email string @@ -65,7 +71,7 @@ func NewACME(acmeServer string, port string) *ACMEHandler { } // ObtainCert obtains a certificate for the specified domains. -func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email string, ca string) (bool, error) { +func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email string, caName string, caUrl string, skipTLS bool) (bool, error) { log.Println("[ACME] Obtaining certificate...") // generate private key @@ -84,17 +90,41 @@ func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email // create config config := lego.NewConfig(&adminUser) - // setup who is the issuer and the key type - config.CADirURL = a.DefaultAcmeServer + // skip TLS verify if need + // Ref: https://github.com/go-acme/lego/blob/6af2c756ac73a9cb401621afca722d0f4112b1b8/lego/client_config.go#L74 + if skipTLS { + log.Println("[INFO] Ignore TLS/SSL Verification Error for ACME Server") + config.HTTPClient.Transport = &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).DialContext, + TLSHandshakeTimeout: 30 * time.Second, + ResponseHeaderTimeout: 30 * time.Second, + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + } + } - //Overwrite the CADir URL if set - if ca != "" { - caLinkOverwrite, err := loadCAApiServerFromName(ca) + // setup the custom ACME url endpoint. + if caUrl != "" { + config.CADirURL = caUrl + } + + // if not custom ACME url, load it from ca.json + if caName == "custom" { + log.Println("[INFO] Using Custom ACME " + caUrl + " for CA Directory URL") + } else { + caLinkOverwrite, err := loadCAApiServerFromName(caName) if err == nil { config.CADirURL = caLinkOverwrite log.Println("[INFO] Using " + caLinkOverwrite + " for CA Directory URL") } else { - return false, errors.New("CA " + ca + " is not supported. Please contribute to the source code and add this CA's directory link.") + // (caName == "" || caUrl == "") will use default acme + config.CADirURL = a.DefaultAcmeServer + log.Println("[INFO] Using Default ACME " + a.DefaultAcmeServer + " for CA Directory URL") } } @@ -145,6 +175,25 @@ func (a *ACMEHandler) ObtainCert(domains []string, certificateName string, email return false, err } + // Save certificate's ACME info for renew usage + certInfo := &CertificateInfoJSON{ + AcmeName: caName, + AcmeUrl: caUrl, + SkipTLS: skipTLS, + } + + certInfoBytes, err := json.Marshal(certInfo) + if err != nil { + log.Println(err) + return false, err + } + + err = os.WriteFile("./conf/certs/"+certificateName+".json", certInfoBytes, 0777) + if err != nil { + log.Println(err) + return false, err + } + return true, nil } @@ -250,14 +299,34 @@ func (a *ACMEHandler) HandleRenewCertificate(w http.ResponseWriter, r *http.Requ return } + var caUrl string + ca, err := utils.PostPara(r, "ca") if err != nil { - log.Println("CA not set. Using default (Let's Encrypt)") - ca = "Let's Encrypt" + log.Println("CA not set. Using default") + ca, caUrl = "", "" + } + + if ca == "custom" { + caUrl, err = utils.PostPara(r, "caURL") + if err != nil { + log.Println("Custom CA set but no URL provide, Using default") + ca, caUrl = "", "" + } + } + + var skipTLS bool + + if skipTLSString, err := utils.PostPara(r, "skipTLS"); err != nil { + skipTLS = false + } else if skipTLSString != "true" { + skipTLS = false + } else { + skipTLS = true } domains := strings.Split(domainPara, ",") - result, err := a.ObtainCert(domains, filename, email, ca) + result, err := a.ObtainCert(domains, filename, email, ca, caUrl, skipTLS) if err != nil { utils.SendErrorResponse(w, jsonEscape(err.Error())) return @@ -285,4 +354,20 @@ func IsPortInUse(port int) bool { } defer listener.Close() return false // Port is not in use + +} + +func loadCertInfoJSON(filename string) (*CertificateInfoJSON, error) { + + certInfoBytes, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + certInfo := &CertificateInfoJSON{} + if err = json.Unmarshal(certInfoBytes, certInfo); err != nil { + return nil, err + } + + return certInfo, nil } diff --git a/src/mod/acme/autorenew.go b/src/mod/acme/autorenew.go index 211e168..13872fd 100644 --- a/src/mod/acme/autorenew.go +++ b/src/mod/acme/autorenew.go @@ -3,6 +3,7 @@ package acme import ( "encoding/json" "errors" + "fmt" "log" "net/http" "net/mail" @@ -355,7 +356,16 @@ func (a *AutoRenewer) renewExpiredDomains(certs []*ExpiredCerts) ([]string, erro log.Println("Renewing " + expiredCert.Filepath + " (Might take a few minutes)") fileName := filepath.Base(expiredCert.Filepath) certName := fileName[:len(fileName)-len(filepath.Ext(fileName))] - _, err := a.AcmeHandler.ObtainCert(expiredCert.Domains, certName, a.RenewerConfig.Email, expiredCert.CA) + + // Load certificate info for ACME detail + certInfoFilename := fmt.Sprintf("%s/%s.json", filepath.Dir(expiredCert.Filepath), certName) + certInfo, err := loadCertInfoJSON(certInfoFilename) + if err != nil { + log.Printf("Renew %s certificate error, can't get the ACME detail for cert: %v, using default ACME", certName, err) + certInfo = &CertificateInfoJSON{} + } + + _, err = a.AcmeHandler.ObtainCert(expiredCert.Domains, certName, a.RenewerConfig.Email, certInfo.AcmeName, certInfo.AcmeUrl, certInfo.SkipTLS) if err != nil { log.Println("Renew " + fileName + "(" + strings.Join(expiredCert.Domains, ",") + ") failed: " + err.Error()) } else { diff --git a/src/mod/dynamicproxy/Server.go b/src/mod/dynamicproxy/Server.go index 4907ef4..1fa4793 100644 --- a/src/mod/dynamicproxy/Server.go +++ b/src/mod/dynamicproxy/Server.go @@ -1,7 +1,11 @@ package dynamicproxy import ( + _ "embed" + "errors" + "log" "net/http" + "net/url" "os" "strings" @@ -21,6 +25,11 @@ import ( - Vitrual Directory Routing */ +var ( + //go:embed tld.json + rawTldMap []byte +) + func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { /* Special Routing Rules, bypass most of the limitations @@ -108,10 +117,69 @@ func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, r.RequestURI+"/", http.StatusTemporaryRedirect) } else { //Passthrough the request to root + h.handleRootRouting(w, r) + } + } else { + //No routing rules found. + h.handleRootRouting(w, r) + } +} + +/* +handleRootRouting + +This function handle root routing situations where there are no subdomain +, vdir or special routing rule matches the requested URI. + +Once entered this routing segment, the root routing options will take over +for the routing logic. +*/ +func (h *ProxyHandler) handleRootRouting(w http.ResponseWriter, r *http.Request) { + domainOnly := r.Host + if strings.Contains(r.Host, ":") { + hostPath := strings.Split(r.Host, ":") + domainOnly = hostPath[0] + } + + if h.Parent.RootRoutingOptions.EnableRedirectForUnsetRules { + //Route to custom domain + if h.Parent.RootRoutingOptions.UnsetRuleRedirectTarget == "" { + //Not set. Redirect to first level of domain redirectable + fld, err := h.getTopLevelRedirectableDomain(domainOnly) + if err != nil { + //Redirect to proxy root + h.proxyRequest(w, r, h.Parent.Root) + } else { + log.Println("[Router] Redirecting request from " + domainOnly + " to " + fld) + h.logRequest(r, false, 307, "root-redirect", domainOnly) + http.Redirect(w, r, fld, http.StatusTemporaryRedirect) + } + return + } else if h.isTopLevelRedirectableDomain(domainOnly) { + //This is requesting a top level private domain that should be serving root h.proxyRequest(w, r, h.Parent.Root) + } else { + //Validate the redirection target URL + parsedURL, err := url.Parse(h.Parent.RootRoutingOptions.UnsetRuleRedirectTarget) + if err != nil { + //Error when parsing target. Send to root + h.proxyRequest(w, r, h.Parent.Root) + return + } + hostname := parsedURL.Hostname() + if domainOnly != hostname { + //Redirect to target + h.logRequest(r, false, 307, "root-redirect", domainOnly) + http.Redirect(w, r, h.Parent.RootRoutingOptions.UnsetRuleRedirectTarget, http.StatusTemporaryRedirect) + return + } else { + //Loopback request due to bad settings (Shd leave it empty) + //Forward it to root proxy + h.proxyRequest(w, r, h.Parent.Root) + } } } else { - //No routing rules found. Route to root. + //Route to root h.proxyRequest(w, r, h.Parent.Root) } } @@ -150,3 +218,44 @@ func (h *ProxyHandler) handleAccessRouting(w http.ResponseWriter, r *http.Reques return false } + +// Return if the given host is already topped (e.g. example.com or example.co.uk) instead of +// a host with subdomain (e.g. test.example.com) +func (h *ProxyHandler) isTopLevelRedirectableDomain(requestHost string) bool { + parts := strings.Split(requestHost, ".") + if len(parts) > 2 { + //Cases where strange tld is used like .co.uk or .com.hk + _, ok := h.Parent.tldMap[strings.Join(parts[1:], ".")] + if ok { + //Already topped + return true + } + } else { + //Already topped + return true + } + + return false +} + +// GetTopLevelRedirectableDomain returns the toppest level of domain +// that is redirectable. E.g. a.b.c.example.co.uk will return example.co.uk +func (h *ProxyHandler) getTopLevelRedirectableDomain(unsetSubdomainHost string) (string, error) { + parts := strings.Split(unsetSubdomainHost, ".") + if h.isTopLevelRedirectableDomain(unsetSubdomainHost) { + //Already topped + return "", errors.New("already at top level domain") + } + + for i := 0; i < len(parts); i++ { + possibleTld := parts[i:] + _, ok := h.Parent.tldMap[strings.Join(possibleTld, ".")] + if ok { + //This is tld length + tld := strings.Join(parts[i-1:], ".") + return "//" + tld, nil + } + } + + return "", errors.New("unsupported top level domain given") +} diff --git a/src/mod/dynamicproxy/basicAuth.go b/src/mod/dynamicproxy/basicAuth.go index d08e76a..8c8b5c3 100644 --- a/src/mod/dynamicproxy/basicAuth.go +++ b/src/mod/dynamicproxy/basicAuth.go @@ -3,6 +3,7 @@ package dynamicproxy import ( "errors" "net/http" + "strings" "imuslab.com/zoraxy/mod/auth" ) @@ -15,6 +16,16 @@ import ( */ func (h *ProxyHandler) handleBasicAuthRouting(w http.ResponseWriter, r *http.Request, pe *ProxyEndpoint) error { + if len(pe.BasicAuthExceptionRules) > 0 { + //Check if the current path matches the exception rules + for _, exceptionRule := range pe.BasicAuthExceptionRules { + if strings.HasPrefix(r.RequestURI, exceptionRule.PathPrefix) { + //This path is excluded from basic auth + return nil + } + } + } + proxyType := "vdir-auth" if pe.ProxyType == ProxyType_Subdomain { proxyType = "subd-auth" diff --git a/src/mod/dynamicproxy/dpcore/utils.go b/src/mod/dynamicproxy/dpcore/utils.go index 12c7f78..27459b6 100644 --- a/src/mod/dynamicproxy/dpcore/utils.go +++ b/src/mod/dynamicproxy/dpcore/utils.go @@ -21,6 +21,17 @@ func replaceLocationHost(urlString string, rrr *ResponseRewriteRuleSet, useTLS b u.Scheme = "http" } + //Issue #39: Check if it is location target match the proxying domain + //E.g. Proxy config: blog.example.com -> example.com/blog + //Check if it is actually redirecting to example.com instead of a new domain + //like news.example.com. + // The later check bypass apache screw up method of redirection header + // e.g. https://imuslab.com -> http://imuslab.com:443 + if rrr.ProxyDomain != u.Host && !strings.Contains(u.Host, rrr.OriginalHost+":") { + //New location domain not matching proxy target domain. + //Do not modify location header + return urlString, nil + } u.Host = rrr.OriginalHost if strings.Contains(rrr.ProxyDomain, "/") { diff --git a/src/mod/dynamicproxy/dynamicproxy.go b/src/mod/dynamicproxy/dynamicproxy.go index 8ffe096..8b5d750 100644 --- a/src/mod/dynamicproxy/dynamicproxy.go +++ b/src/mod/dynamicproxy/dynamicproxy.go @@ -3,6 +3,7 @@ package dynamicproxy import ( "context" "crypto/tls" + "encoding/json" "errors" "log" "net/http" @@ -29,12 +30,19 @@ func NewDynamicProxy(option RouterOption) (*Router, error) { Running: false, server: nil, routingRules: []*RoutingRule{}, + tldMap: map[string]int{}, } thisRouter.mux = &ProxyHandler{ Parent: &thisRouter, } + //Prase the tld map for tld redirection in main router + //See Server.go declarations + if len(rawTldMap) > 0 { + json.Unmarshal(rawTldMap, &thisRouter.tldMap) + } + return &thisRouter, nil } @@ -65,10 +73,18 @@ func (router *Router) StartProxyService() error { return errors.New("Reverse proxy server already running") } + //Check if root route is set if router.Root == nil { return errors.New("Reverse proxy router root not set") } + //Load root options from file + loadedRootOption, err := loadRootRoutingOptionsFromFile() + if err != nil { + return err + } + router.RootRoutingOptions = loadedRootOption + minVersion := tls.VersionTLS10 if router.Option.ForceTLSLatest { minVersion = tls.VersionTLS12 @@ -246,14 +262,15 @@ func (router *Router) AddVirtualDirectoryProxyService(options *VdirOptions) erro proxy := dpcore.NewDynamicProxyCore(path, options.RootName, options.SkipCertValidations) endpointObject := ProxyEndpoint{ - ProxyType: ProxyType_Vdir, - RootOrMatchingDomain: options.RootName, - Domain: domain, - RequireTLS: options.RequireTLS, - SkipCertValidations: options.SkipCertValidations, - RequireBasicAuth: options.RequireBasicAuth, - BasicAuthCredentials: options.BasicAuthCredentials, - Proxy: proxy, + ProxyType: ProxyType_Vdir, + RootOrMatchingDomain: options.RootName, + Domain: domain, + RequireTLS: options.RequireTLS, + SkipCertValidations: options.SkipCertValidations, + RequireBasicAuth: options.RequireBasicAuth, + BasicAuthCredentials: options.BasicAuthCredentials, + BasicAuthExceptionRules: options.BasicAuthExceptionRules, + Proxy: proxy, } router.ProxyEndpoints.Store(options.RootName, &endpointObject) @@ -271,44 +288,22 @@ func (router *Router) LoadProxy(ptype string, key string) (*ProxyEndpoint, error if !ok { return nil, errors.New("target proxy not found") } - return proxy.(*ProxyEndpoint), nil + + targetProxy := proxy.(*ProxyEndpoint) + targetProxy.parent = router + return targetProxy, nil } else if ptype == "subd" { proxy, ok := router.SubdomainEndpoint.Load(key) if !ok { return nil, errors.New("target proxy not found") } - return proxy.(*ProxyEndpoint), nil - } - - return nil, errors.New("unsupported ptype") -} - -/* -Save routing from RP -*/ -func (router *Router) SaveProxy(ptype string, key string, newConfig *ProxyEndpoint) { - if ptype == "vdir" { - router.ProxyEndpoints.Store(key, newConfig) - } else if ptype == "subd" { - router.SubdomainEndpoint.Store(key, newConfig) + targetProxy := proxy.(*ProxyEndpoint) + targetProxy.parent = router + return targetProxy, nil } -} - -/* -Remove routing from RP -*/ -func (router *Router) RemoveProxy(ptype string, key string) error { - //fmt.Println(ptype, key) - if ptype == "vdir" { - router.ProxyEndpoints.Delete(key) - return nil - } else if ptype == "subd" { - router.SubdomainEndpoint.Delete(key) - return nil - } - return errors.New("invalid ptype") + return nil, errors.New("unsupported ptype") } /* @@ -335,14 +330,15 @@ func (router *Router) SetRootProxy(options *RootOptions) error { proxy := dpcore.NewDynamicProxyCore(path, "", options.SkipCertValidations) rootEndpoint := ProxyEndpoint{ - ProxyType: ProxyType_Vdir, - RootOrMatchingDomain: "/", - Domain: proxyLocation, - RequireTLS: options.RequireTLS, - SkipCertValidations: options.SkipCertValidations, - RequireBasicAuth: options.RequireBasicAuth, - BasicAuthCredentials: options.BasicAuthCredentials, - Proxy: proxy, + ProxyType: ProxyType_Vdir, + RootOrMatchingDomain: "/", + Domain: proxyLocation, + RequireTLS: options.RequireTLS, + SkipCertValidations: options.SkipCertValidations, + RequireBasicAuth: options.RequireBasicAuth, + BasicAuthCredentials: options.BasicAuthCredentials, + BasicAuthExceptionRules: options.BasicAuthExceptionRules, + Proxy: proxy, } router.Root = &rootEndpoint diff --git a/src/mod/dynamicproxy/proxyEndpoint.go b/src/mod/dynamicproxy/proxyEndpoint.go new file mode 100644 index 0000000..42a7de1 --- /dev/null +++ b/src/mod/dynamicproxy/proxyEndpoint.go @@ -0,0 +1,68 @@ +package dynamicproxy + +import "errors" + +/* + ProxyEndpoint.go + author: tobychui + + This script handle the proxy endpoint object actions + so proxyEndpoint can be handled like a proper oop object + + Most of the functions are implemented in dynamicproxy.go +*/ + +//Get the string version of proxy type +func (ep *ProxyEndpoint) GetProxyTypeString() string { + if ep.ProxyType == ProxyType_Subdomain { + return "subd" + } else if ep.ProxyType == ProxyType_Vdir { + return "vdir" + } + + return "unknown" +} + +//Update change in the current running proxy endpoint config +func (ep *ProxyEndpoint) UpdateToRuntime() { + if ep.IsVdir() { + ep.parent.ProxyEndpoints.Store(ep.RootOrMatchingDomain, ep) + + } else if ep.IsSubDomain() { + ep.parent.SubdomainEndpoint.Store(ep.RootOrMatchingDomain, ep) + } +} + +//Return true if the endpoint type is virtual directory +func (ep *ProxyEndpoint) IsVdir() bool { + return ep.ProxyType == ProxyType_Vdir +} + +//Return true if the endpoint type is subdomain +func (ep *ProxyEndpoint) IsSubDomain() bool { + return ep.ProxyType == ProxyType_Subdomain +} + +//Remove this proxy endpoint from running proxy endpoint list +func (ep *ProxyEndpoint) Remove() error { + //fmt.Println(ptype, key) + if ep.IsVdir() { + ep.parent.ProxyEndpoints.Delete(ep.RootOrMatchingDomain) + return nil + } else if ep.IsSubDomain() { + ep.parent.SubdomainEndpoint.Delete(ep.RootOrMatchingDomain) + return nil + } + return errors.New("invalid or unsupported type") + +} + +//ProxyEndpoint remove provide global access by key +func (router *Router) RemoveProxyEndpointByRootname(proxyType string, rootnameOrMatchingDomain string) error { + targetEpt, err := router.LoadProxy(proxyType, rootnameOrMatchingDomain) + if err != nil { + return err + } + + return targetEpt.Remove() +} diff --git a/src/mod/dynamicproxy/rootRoute.go b/src/mod/dynamicproxy/rootRoute.go new file mode 100644 index 0000000..7ec8daa --- /dev/null +++ b/src/mod/dynamicproxy/rootRoute.go @@ -0,0 +1,51 @@ +package dynamicproxy + +import ( + "encoding/json" + "errors" + "log" + "os" + + "imuslab.com/zoraxy/mod/utils" +) + +/* + rootRoute.go + + This script handle special case in routing where the root proxy + entity is involved. This also include its setting object + RootRoutingOptions +*/ + +var rootConfigFilepath string = "conf/root_config.json" + +func loadRootRoutingOptionsFromFile() (*RootRoutingOptions, error) { + if !utils.FileExists(rootConfigFilepath) { + //Not found. Create a root option + js, _ := json.MarshalIndent(RootRoutingOptions{}, "", " ") + err := os.WriteFile(rootConfigFilepath, js, 0775) + if err != nil { + return nil, errors.New("Unable to write root config to file: " + err.Error()) + } + } + newRootOption := RootRoutingOptions{} + rootOptionsBytes, err := os.ReadFile(rootConfigFilepath) + if err != nil { + log.Println("[Error] Unable to read root config file at " + rootConfigFilepath + ": " + err.Error()) + return nil, err + } + err = json.Unmarshal(rootOptionsBytes, &newRootOption) + if err != nil { + log.Println("[Error] Unable to parse root config file: " + err.Error()) + return nil, err + } + + return &newRootOption, nil +} + +// Save the new config to file. Note that this will not overwrite the runtime one +func (opt *RootRoutingOptions) SaveToFile() error { + js, _ := json.MarshalIndent(opt, "", " ") + err := os.WriteFile(rootConfigFilepath, js, 0775) + return err +} diff --git a/src/mod/dynamicproxy/subdomain.go b/src/mod/dynamicproxy/subdomain.go index 4be9c36..9012724 100644 --- a/src/mod/dynamicproxy/subdomain.go +++ b/src/mod/dynamicproxy/subdomain.go @@ -34,13 +34,14 @@ func (router *Router) AddSubdomainRoutingService(options *SubdOptions) error { proxy := dpcore.NewDynamicProxyCore(path, "", options.SkipCertValidations) router.SubdomainEndpoint.Store(options.MatchingDomain, &ProxyEndpoint{ - RootOrMatchingDomain: options.MatchingDomain, - Domain: domain, - RequireTLS: options.RequireTLS, - Proxy: proxy, - SkipCertValidations: options.SkipCertValidations, - RequireBasicAuth: options.RequireBasicAuth, - BasicAuthCredentials: options.BasicAuthCredentials, + RootOrMatchingDomain: options.MatchingDomain, + Domain: domain, + RequireTLS: options.RequireTLS, + Proxy: proxy, + SkipCertValidations: options.SkipCertValidations, + RequireBasicAuth: options.RequireBasicAuth, + BasicAuthCredentials: options.BasicAuthCredentials, + BasicAuthExceptionRules: options.BasicAuthExceptionRules, }) log.Println("Adding Subdomain Rule: ", options.MatchingDomain+" to "+domain) diff --git a/src/mod/dynamicproxy/tld.json b/src/mod/dynamicproxy/tld.json new file mode 100644 index 0000000..346b471 --- /dev/null +++ b/src/mod/dynamicproxy/tld.json @@ -0,0 +1,9106 @@ +{ + "!city.kawasaki.jp": 1, + "!city.kitakyushu.jp": 1, + "!city.kobe.jp": 1, + "!city.nagoya.jp": 1, + "!city.sapporo.jp": 1, + "!city.sendai.jp": 1, + "!city.yokohama.jp": 1, + "!www.ck": 1, + "*.0emm.com": 1, + "*.advisor.ws": 1, + "*.alces.network": 1, + "*.awdev.ca": 1, + "*.azurecontainer.io": 1, + "*.backyards.banzaicloud.io": 1, + "*.banzai.cloud": 1, + "*.bd": 1, + "*.beget.app": 1, + "*.build.run": 1, + "*.builder.code.com": 1, + "*.bzz.dapps.earth": 1, + "*.ck": 1, + "*.cloud.metacentrum.cz": 1, + "*.cloudera.site": 1, + "*.cns.joyent.com": 1, + "*.code.run": 1, + "*.compute-1.amazonaws.com": 1, + "*.compute.amazonaws.com": 1, + "*.compute.amazonaws.com.cn": 1, + "*.compute.estate": 1, + "*.cryptonomic.net": 1, + "*.customer-oci.com": 1, + "*.dapps.earth": 1, + "*.database.run": 1, + "*.dev-builder.code.com": 1, + "*.dev.adobeaemcloud.com": 1, + "*.devcdnaccesso.com": 1, + "*.developer.app": 1, + "*.digitaloceanspaces.com": 1, + "*.diher.solutions": 1, + "*.dweb.link": 1, + "*.elb.amazonaws.com": 1, + "*.elb.amazonaws.com.cn": 1, + "*.er": 1, + "*.ex.futurecms.at": 1, + "*.ex.ortsinfo.at": 1, + "*.firenet.ch": 1, + "*.fk": 1, + "*.frusky.de": 1, + "*.futurecms.at": 1, + "*.gateway.dev": 1, + "*.hosting.myjino.ru": 1, + "*.hosting.ovh.net": 1, + "*.in.futurecms.at": 1, + "*.jm": 1, + "*.kawasaki.jp": 1, + "*.kh": 1, + "*.kitakyushu.jp": 1, + "*.kobe.jp": 1, + "*.kunden.ortsinfo.at": 1, + "*.landing.myjino.ru": 1, + "*.lcl.dev": 1, + "*.lclstage.dev": 1, + "*.linodeobjects.com": 1, + "*.magentosite.cloud": 1, + "*.migration.run": 1, + "*.mm": 1, + "*.moonscale.io": 1, + "*.nagoya.jp": 1, + "*.nodebalancer.linode.com": 1, + "*.nom.br": 1, + "*.northflank.app": 1, + "*.np": 1, + "*.oci.customer-oci.com": 1, + "*.ocp.customer-oci.com": 1, + "*.ocs.customer-oci.com": 1, + "*.on-acorn.io": 1, + "*.on-k3s.io": 1, + "*.on-rancher.cloud": 1, + "*.on-rio.io": 1, + "*.otap.co": 1, + "*.owo.codes": 1, + "*.paywhirl.com": 1, + "*.pg": 1, + "*.platformsh.site": 1, + "*.quipelements.com": 1, + "*.r.appspot.com": 1, + "*.rss.my.id": 1, + "*.s5y.io": 1, + "*.sapporo.jp": 1, + "*.sch.uk": 1, + "*.sendai.jp": 1, + "*.sensiosite.cloud": 1, + "*.spectrum.myjino.ru": 1, + "*.statics.cloud": 1, + "*.stg-builder.code.com": 1, + "*.stg.dev": 1, + "*.stgstage.dev": 1, + "*.stolos.io": 1, + "*.svc.firenet.ch": 1, + "*.sys.qcx.io": 1, + "*.telebit.xyz": 1, + "*.transurl.be": 1, + "*.transurl.eu": 1, + "*.transurl.nl": 1, + "*.triton.zone": 1, + "*.tst.site": 1, + "*.uberspace.de": 1, + "*.user.fm": 1, + "*.user.localcert.dev": 1, + "*.usercontent.goog": 1, + "*.vps.myjino.ru": 1, + "*.vultrobjects.com": 1, + "*.webhare.dev": 1, + "*.webpaas.ovh.net": 1, + "*.yokohama.jp": 1, + "0.bg": 1, + "001www.com": 1, + "0e.vc": 1, + "1.azurestaticapps.net": 1, + "1.bg": 1, + "123hjemmeside.dk": 1, + "123hjemmeside.no": 1, + "123homepage.it": 1, + "123kotisivu.fi": 1, + "123minsida.se": 1, + "123miweb.es": 1, + "123paginaweb.pt": 1, + "123sait.ru": 1, + "123siteweb.fr": 1, + "123webseite.at": 1, + "123webseite.de": 1, + "123website.be": 1, + "123website.ch": 1, + "123website.lu": 1, + "123website.nl": 1, + "12hp.at": 1, + "12hp.ch": 1, + "12hp.de": 1, + "1337.pictures": 1, + "16-b.it": 1, + "180r.com": 1, + "1kapp.com": 1, + "2-d.jp": 1, + "2.azurestaticapps.net": 1, + "2.bg": 1, + "2000.hu": 1, + "2038.io": 1, + "2ix.at": 1, + "2ix.ch": 1, + "2ix.de": 1, + "3.azurestaticapps.net": 1, + "3.bg": 1, + "32-b.it": 1, + "3utilities.com": 1, + "4.bg": 1, + "4lima.at": 1, + "4lima.ch": 1, + "4lima.de": 1, + "4u.com": 1, + "5.bg": 1, + "5g.in": 1, + "6.bg": 1, + "611.to": 1, + "64-b.it": 1, + "6g.in": 1, + "7.bg": 1, + "8.bg": 1, + "9.bg": 1, + "9guacu.br": 1, + "a.bg": 1, + "a.prod.fastly.net": 1, + "a.run.app": 1, + "a.se": 1, + "a.ssl.fastly.net": 1, + "aa.no": 1, + "aaa": 1, + "aaa.pro": 1, + "aarborte.no": 1, + "aarp": 1, + "ab.ca": 1, + "abashiri.hokkaido.jp": 1, + "abb": 1, + "abbott": 1, + "abbvie": 1, + "abc": 1, + "abc.br": 1, + "abeno.osaka.jp": 1, + "abiko.chiba.jp": 1, + "abira.hokkaido.jp": 1, + "abkhazia.su": 1, + "able": 1, + "abo.pa": 1, + "abogado": 1, + "abr.it": 1, + "abruzzo.it": 1, + "abu.yamaguchi.jp": 1, + "abudhabi": 1, + "ac": 1, + "ac.ae": 1, + "ac.at": 1, + "ac.be": 1, + "ac.ci": 1, + "ac.cn": 1, + "ac.cr": 1, + "ac.cy": 1, + "ac.fj": 1, + "ac.gn": 1, + "ac.gov.br": 1, + "ac.id": 1, + "ac.il": 1, + "ac.im": 1, + "ac.in": 1, + "ac.ir": 1, + "ac.jp": 1, + "ac.ke": 1, + "ac.kr": 1, + "ac.leg.br": 1, + "ac.lk": 1, + "ac.ls": 1, + "ac.ma": 1, + "ac.me": 1, + "ac.mu": 1, + "ac.mw": 1, + "ac.mz": 1, + "ac.ni": 1, + "ac.nz": 1, + "ac.pa": 1, + "ac.pr": 1, + "ac.rs": 1, + "ac.ru": 1, + "ac.rw": 1, + "ac.se": 1, + "ac.sz": 1, + "ac.th": 1, + "ac.tj": 1, + "ac.tz": 1, + "ac.ug": 1, + "ac.uk": 1, + "ac.vn": 1, + "ac.za": 1, + "ac.zm": 1, + "ac.zw": 1, + "aca.pro": 1, + "academia.bo": 1, + "academy": 1, + "accenture": 1, + "accesscam.org": 1, + "accident-investigation.aero": 1, + "accident-prevention.aero": 1, + "accountant": 1, + "accountants": 1, + "acct.pro": 1, + "achi.nagano.jp": 1, + "aco": 1, + "act.au": 1, + "act.edu.au": 1, + "activetrail.biz": 1, + "actor": 1, + "ad": 1, + "ad.jp": 1, + "adachi.tokyo.jp": 1, + "adimo.co.uk": 1, + "adm.br": 1, + "adobeaemcloud.com": 1, + "adobeaemcloud.net": 1, + "adobeio-static.net": 1, + "adobeioruntime.net": 1, + "ads": 1, + "adult": 1, + "adult.ht": 1, + "adv.br": 1, + "adv.mz": 1, + "adygeya.ru": 1, + "adygeya.su": 1, + "ae": 1, + "ae.org": 1, + "aeg": 1, + "aejrie.no": 1, + "aero": 1, + "aero.mv": 1, + "aero.tt": 1, + "aerobatic.aero": 1, + "aeroclub.aero": 1, + "aerodrome.aero": 1, + "aeroport.fr": 1, + "aetna": 1, + "af": 1, + "affinitylottery.org.uk": 1, + "afjord.no": 1, + "afl": 1, + "africa": 1, + "africa.bj": 1, + "africa.com": 1, + "ag": 1, + "ag.it": 1, + "aga.niigata.jp": 1, + "agakhan": 1, + "agano.niigata.jp": 1, + "agdenes.no": 1, + "agematsu.nagano.jp": 1, + "agency": 1, + "agents.aero": 1, + "agr.br": 1, + "agrar.hu": 1, + "agric.za": 1, + "agrigento.it": 1, + "agro.bj": 1, + "agro.bo": 1, + "agro.pl": 1, + "aguni.okinawa.jp": 1, + "ah.cn": 1, + "ah.no": 1, + "ai": 1, + "ai.in": 1, + "ai.vn": 1, + "aibetsu.hokkaido.jp": 1, + "aichi.jp": 1, + "aid.pl": 1, + "aig": 1, + "aikawa.kanagawa.jp": 1, + "ainan.ehime.jp": 1, + "aioi.hyogo.jp": 1, + "aip.ee": 1, + "air-surveillance.aero": 1, + "air-traffic-control.aero": 1, + "airbus": 1, + "aircraft.aero": 1, + "airforce": 1, + "airkitapps-au.com": 1, + "airkitapps.com": 1, + "airkitapps.eu": 1, + "airline.aero": 1, + "airport.aero": 1, + "airtel": 1, + "airtraffic.aero": 1, + "aisai.aichi.jp": 1, + "aisho.shiga.jp": 1, + "aivencloud.com": 1, + "aizubange.fukushima.jp": 1, + "aizumi.tokushima.jp": 1, + "aizumisato.fukushima.jp": 1, + "aizuwakamatsu.fukushima.jp": 1, + "aju.br": 1, + "ak.us": 1, + "akabira.hokkaido.jp": 1, + "akadns.net": 1, + "akagi.shimane.jp": 1, + "akaiwa.okayama.jp": 1, + "akamai-staging.net": 1, + "akamai.net": 1, + "akamaiedge-staging.net": 1, + "akamaiedge.net": 1, + "akamaihd-staging.net": 1, + "akamaihd.net": 1, + "akamaiorigin-staging.net": 1, + "akamaiorigin.net": 1, + "akamaized-staging.net": 1, + "akamaized.net": 1, + "akashi.hyogo.jp": 1, + "akdn": 1, + "aki.kochi.jp": 1, + "akiruno.tokyo.jp": 1, + "akishima.tokyo.jp": 1, + "akita.akita.jp": 1, + "akita.jp": 1, + "akkeshi.hokkaido.jp": 1, + "aknoluokta.no": 1, + "ako.hyogo.jp": 1, + "akrehamn.no": 1, + "aktyubinsk.su": 1, + "akune.kagoshima.jp": 1, + "al": 1, + "al.eu.org": 1, + "al.gov.br": 1, + "al.it": 1, + "al.leg.br": 1, + "al.no": 1, + "al.us": 1, + "alaheadju.no": 1, + "aland.fi": 1, + "alessandria.it": 1, + "alesund.no": 1, + "algard.no": 1, + "alibaba": 1, + "alipay": 1, + "allfinanz": 1, + "allstate": 1, + "ally": 1, + "alp1.ae.flow.ch": 1, + "alpha-myqnapcloud.com": 1, + "alpha.bounty-full.com": 1, + "alsace": 1, + "alstahaug.no": 1, + "alstom": 1, + "alt.za": 1, + "alta.no": 1, + "altervista.org": 1, + "alto-adige.it": 1, + "altoadige.it": 1, + "alvdal.no": 1, + "alwaysdata.net": 1, + "am": 1, + "am.br": 1, + "am.gov.br": 1, + "am.in": 1, + "am.leg.br": 1, + "ama.aichi.jp": 1, + "ama.shimane.jp": 1, + "amagasaki.hyogo.jp": 1, + "amakusa.kumamoto.jp": 1, + "amami.kagoshima.jp": 1, + "amazon": 1, + "ambulance.aero": 1, + "americanexpress": 1, + "americanfamily": 1, + "amex": 1, + "amfam": 1, + "ami.ibaraki.jp": 1, + "amica": 1, + "amli.no": 1, + "amot.no": 1, + "amscompute.com": 1, + "amsterdam": 1, + "amusement.aero": 1, + "an.it": 1, + "analytics": 1, + "analytics-gateway.ap-northeast-1.amazonaws.com": 1, + "analytics-gateway.eu-west-1.amazonaws.com": 1, + "analytics-gateway.us-east-1.amazonaws.com": 1, + "analytics-gateway.us-east-2.amazonaws.com": 1, + "analytics-gateway.us-west-2.amazonaws.com": 1, + "anamizu.ishikawa.jp": 1, + "anan.nagano.jp": 1, + "anan.tokushima.jp": 1, + "anani.br": 1, + "ancona.it": 1, + "andasuolo.no": 1, + "andebu.no": 1, + "ando.nara.jp": 1, + "andoy.no": 1, + "andria-barletta-trani.it": 1, + "andria-trani-barletta.it": 1, + "andriabarlettatrani.it": 1, + "andriatranibarletta.it": 1, + "android": 1, + "andøy.no": 1, + "angiang.vn": 1, + "angry.jp": 1, + "anjo.aichi.jp": 1, + "ann-arbor.mi.us": 1, + "annaka.gunma.jp": 1, + "anpachi.gifu.jp": 1, + "anquan": 1, + "anz": 1, + "ao": 1, + "ao.it": 1, + "aogaki.hyogo.jp": 1, + "aogashima.tokyo.jp": 1, + "aoki.nagano.jp": 1, + "aol": 1, + "aomori.aomori.jp": 1, + "aomori.jp": 1, + "aosta-valley.it": 1, + "aosta.it": 1, + "aostavalley.it": 1, + "aoste.it": 1, + "ap-northeast-1.elasticbeanstalk.com": 1, + "ap-northeast-2.elasticbeanstalk.com": 1, + "ap-northeast-3.elasticbeanstalk.com": 1, + "ap-south-1.elasticbeanstalk.com": 1, + "ap-southeast-1.elasticbeanstalk.com": 1, + "ap-southeast-2.elasticbeanstalk.com": 1, + "ap.gov.br": 1, + "ap.gov.pl": 1, + "ap.it": 1, + "ap.leg.br": 1, + "ap.ngrok.io": 1, + "aparecida.br": 1, + "apartments": 1, + "api.gov.uk": 1, + "api.stdlib.com": 1, + "apigee.io": 1, + "app": 1, + "app.banzaicloud.io": 1, + "app.br": 1, + "app.gp": 1, + "app.lmpm.com": 1, + "app.os.fedoraproject.org": 1, + "app.os.stg.fedoraproject.org": 1, + "app.render.com": 1, + "appchizi.com": 1, + "appengine.flow.ch": 1, + "apple": 1, + "applinzi.com": 1, + "apps.fbsbx.com": 1, + "apps.lair.io": 1, + "appspacehosted.com": 1, + "appspaceusercontent.com": 1, + "appspot.com": 1, + "appudo.net": 1, + "aq": 1, + "aq.it": 1, + "aquarelle": 1, + "aquila.it": 1, + "ar": 1, + "ar.com": 1, + "ar.it": 1, + "ar.us": 1, + "arab": 1, + "arai.shizuoka.jp": 1, + "arakawa.saitama.jp": 1, + "arakawa.tokyo.jp": 1, + "aramco": 1, + "arao.kumamoto.jp": 1, + "archi": 1, + "architectes.bj": 1, + "ardal.no": 1, + "aremark.no": 1, + "arendal.no": 1, + "arezzo.it": 1, + "ariake.saga.jp": 1, + "arida.wakayama.jp": 1, + "aridagawa.wakayama.jp": 1, + "arita.saga.jp": 1, + "arkhangelsk.su": 1, + "armenia.su": 1, + "army": 1, + "arna.no": 1, + "arpa": 1, + "arq.br": 1, + "art": 1, + "art.br": 1, + "art.do": 1, + "art.dz": 1, + "art.ht": 1, + "art.pl": 1, + "art.sn": 1, + "arte": 1, + "arte.bo": 1, + "arts.co": 1, + "arts.nf": 1, + "arts.ro": 1, + "arts.ve": 1, + "arvo.network": 1, + "as": 1, + "as.us": 1, + "asago.hyogo.jp": 1, + "asahi.chiba.jp": 1, + "asahi.ibaraki.jp": 1, + "asahi.mie.jp": 1, + "asahi.nagano.jp": 1, + "asahi.toyama.jp": 1, + "asahi.yamagata.jp": 1, + "asahikawa.hokkaido.jp": 1, + "asaka.saitama.jp": 1, + "asakawa.fukushima.jp": 1, + "asakuchi.okayama.jp": 1, + "asaminami.hiroshima.jp": 1, + "ascoli-piceno.it": 1, + "ascolipiceno.it": 1, + "asda": 1, + "aseral.no": 1, + "ashgabad.su": 1, + "ashibetsu.hokkaido.jp": 1, + "ashikaga.tochigi.jp": 1, + "ashiya.fukuoka.jp": 1, + "ashiya.hyogo.jp": 1, + "ashoro.hokkaido.jp": 1, + "asia": 1, + "asker.no": 1, + "askim.no": 1, + "askoy.no": 1, + "askvoll.no": 1, + "askøy.no": 1, + "asn.au": 1, + "asn.lv": 1, + "asnes.no": 1, + "aso.kumamoto.jp": 1, + "ass.km": 1, + "assabu.hokkaido.jp": 1, + "assn.lk": 1, + "asso.ci": 1, + "asso.dz": 1, + "asso.eu.org": 1, + "asso.fr": 1, + "asso.gp": 1, + "asso.ht": 1, + "asso.km": 1, + "asso.mc": 1, + "asso.nc": 1, + "asso.re": 1, + "associates": 1, + "association.aero": 1, + "assur.bj": 1, + "asti.it": 1, + "asuke.aichi.jp": 1, + "at": 1, + "at-band-camp.net": 1, + "at.eu.org": 1, + "at.it": 1, + "at.md": 1, + "at.vg": 1, + "atami.shizuoka.jp": 1, + "ath.cx": 1, + "athleta": 1, + "atl.jelastic.vps-host.net": 1, + "atm.pl": 1, + "ato.br": 1, + "atsugi.kanagawa.jp": 1, + "atsuma.hokkaido.jp": 1, + "attorney": 1, + "au": 1, + "au.eu.org": 1, + "au.ngrok.io": 1, + "auction": 1, + "audi": 1, + "audible": 1, + "audio": 1, + "audnedaln.no": 1, + "augustow.pl": 1, + "aukra.no": 1, + "aure.no": 1, + "aurland.no": 1, + "aurskog-holand.no": 1, + "aurskog-høland.no": 1, + "aus.basketball": 1, + "auspost": 1, + "austevoll.no": 1, + "austrheim.no": 1, + "authgear-staging.com": 1, + "authgearapps.com": 1, + "author": 1, + "author.aero": 1, + "auto": 1, + "auto.pl": 1, + "autocode.dev": 1, + "autos": 1, + "av.it": 1, + "av.tr": 1, + "avellino.it": 1, + "averoy.no": 1, + "averøy.no": 1, + "avianca": 1, + "avocat.fr": 1, + "avocat.pro": 1, + "avocats.bj": 1, + "avoues.fr": 1, + "aw": 1, + "awaji.hyogo.jp": 1, + "aws": 1, + "awsglobalaccelerator.com": 1, + "awsmppl.com": 1, + "ax": 1, + "axa": 1, + "aya.miyazaki.jp": 1, + "ayabe.kyoto.jp": 1, + "ayagawa.kagawa.jp": 1, + "ayase.kanagawa.jp": 1, + "az": 1, + "az.us": 1, + "azerbaijan.su": 1, + "azimuth.network": 1, + "azumino.nagano.jp": 1, + "azure": 1, + "azure-mobile.net": 1, + "azurestaticapps.net": 1, + "azurewebsites.net": 1, + "aéroport.ci": 1, + "b-data.io": 1, + "b.bg": 1, + "b.br": 1, + "b.se": 1, + "b.ssl.fastly.net": 1, + "ba": 1, + "ba.gov.br": 1, + "ba.it": 1, + "ba.leg.br": 1, + "babia-gora.pl": 1, + "baby": 1, + "babyblue.jp": 1, + "babymilk.jp": 1, + "bacgiang.vn": 1, + "backan.vn": 1, + "backdrop.jp": 1, + "backplaneapp.io": 1, + "baclieu.vn": 1, + "bacninh.vn": 1, + "badaddja.no": 1, + "bahcavuotna.no": 1, + "bahccavuotna.no": 1, + "baidar.no": 1, + "baidu": 1, + "bajddar.no": 1, + "balashov.su": 1, + "balat.no": 1, + "balena-devices.com": 1, + "balestrand.no": 1, + "ballangen.no": 1, + "ballooning.aero": 1, + "balsan-sudtirol.it": 1, + "balsan-suedtirol.it": 1, + "balsan-südtirol.it": 1, + "balsan.it": 1, + "balsfjord.no": 1, + "bambina.jp": 1, + "bamble.no": 1, + "banamex": 1, + "bananarepublic": 1, + "band": 1, + "bandai.fukushima.jp": 1, + "bando.ibaraki.jp": 1, + "bank": 1, + "bar": 1, + "bar.pro": 1, + "bar0.net": 1, + "bar1.net": 1, + "bar2.net": 1, + "barcelona": 1, + "barclaycard": 1, + "barclays": 1, + "bardu.no": 1, + "barefoot": 1, + "bargains": 1, + "bari.it": 1, + "baria-vungtau.vn": 1, + "barletta-trani-andria.it": 1, + "barlettatraniandria.it": 1, + "barrel-of-knowledge.info": 1, + "barrell-of-knowledge.info": 1, + "barsy.bg": 1, + "barsy.ca": 1, + "barsy.club": 1, + "barsy.co.uk": 1, + "barsy.de": 1, + "barsy.eu": 1, + "barsy.in": 1, + "barsy.info": 1, + "barsy.io": 1, + "barsy.me": 1, + "barsy.menu": 1, + "barsy.mobi": 1, + "barsy.net": 1, + "barsy.online": 1, + "barsy.org": 1, + "barsy.pro": 1, + "barsy.pub": 1, + "barsy.ro": 1, + "barsy.shop": 1, + "barsy.site": 1, + "barsy.support": 1, + "barsy.uk": 1, + "barsycenter.com": 1, + "barsyonline.co.uk": 1, + "barsyonline.com": 1, + "barueri.br": 1, + "barum.no": 1, + "bas.it": 1, + "base.ec": 1, + "base.shop": 1, + "baseball": 1, + "bashkiria.ru": 1, + "bashkiria.su": 1, + "basicserver.io": 1, + "basilicata.it": 1, + "basketball": 1, + "bato.tochigi.jp": 1, + "batsfjord.no": 1, + "bauhaus": 1, + "bayern": 1, + "bb": 1, + "bbc": 1, + "bbs.tr": 1, + "bbt": 1, + "bbva": 1, + "bc.ca": 1, + "bc.platform.sh": 1, + "bcg": 1, + "bci.dnstrace.pro": 1, + "bcn": 1, + "bd.se": 1, + "be": 1, + "be.ax": 1, + "be.eu.org": 1, + "be.gy": 1, + "beagleboard.io": 1, + "bearalvahki.no": 1, + "bearalváhki.no": 1, + "beardu.no": 1, + "beats": 1, + "beauty": 1, + "bedzin.pl": 1, + "beep.pl": 1, + "beer": 1, + "beiarn.no": 1, + "bel.tr": 1, + "belau.pw": 1, + "belem.br": 1, + "belluno.it": 1, + "benevento.it": 1, + "bentley": 1, + "bentre.vn": 1, + "beppu.oita.jp": 1, + "berg.no": 1, + "bergamo.it": 1, + "bergen.no": 1, + "berlevag.no": 1, + "berlevåg.no": 1, + "berlin": 1, + "beskidy.pl": 1, + "best": 1, + "bestbuy": 1, + "bet": 1, + "bet.ar": 1, + "beta.bounty-full.com": 1, + "beta.tailscale.net": 1, + "betainabox.com": 1, + "better-than.tv": 1, + "bf": 1, + "bg": 1, + "bg.eu.org": 1, + "bg.it": 1, + "bh": 1, + "bharti": 1, + "bhz.br": 1, + "bi": 1, + "bi.it": 1, + "bialowieza.pl": 1, + "bialystok.pl": 1, + "bib.br": 1, + "bib.ve": 1, + "bibai.hokkaido.jp": 1, + "bible": 1, + "bid": 1, + "biei.hokkaido.jp": 1, + "bielawa.pl": 1, + "biella.it": 1, + "bieszczady.pl": 1, + "bievat.no": 1, + "bievát.no": 1, + "bifuka.hokkaido.jp": 1, + "bihar.in": 1, + "bihoro.hokkaido.jp": 1, + "bike": 1, + "bindal.no": 1, + "bing": 1, + "bingo": 1, + "binhdinh.vn": 1, + "binhduong.vn": 1, + "binhphuoc.vn": 1, + "binhthuan.vn": 1, + "bio": 1, + "bio.br": 1, + "bip.sh": 1, + "bir.ru": 1, + "biratori.hokkaido.jp": 1, + "birkenes.no": 1, + "bitbridge.net": 1, + "bitbucket.io": 1, + "bitter.jp": 1, + "biz": 1, + "biz.at": 1, + "biz.az": 1, + "biz.bb": 1, + "biz.cy": 1, + "biz.dk": 1, + "biz.et": 1, + "biz.fj": 1, + "biz.gl": 1, + "biz.id": 1, + "biz.in": 1, + "biz.ki": 1, + "biz.ls": 1, + "biz.mv": 1, + "biz.mw": 1, + "biz.my": 1, + "biz.ni": 1, + "biz.nr": 1, + "biz.pk": 1, + "biz.pl": 1, + "biz.pr": 1, + "biz.ss": 1, + "biz.tj": 1, + "biz.tr": 1, + "biz.tt": 1, + "biz.ua": 1, + "biz.vn": 1, + "biz.wf": 1, + "biz.zm": 1, + "bizen.okayama.jp": 1, + "bj": 1, + "bj.cn": 1, + "bjarkoy.no": 1, + "bjarkøy.no": 1, + "bjerkreim.no": 1, + "bjugn.no": 1, + "bl.it": 1, + "black": 1, + "blackbaudcdn.net": 1, + "blackfriday": 1, + "blockbuster": 1, + "blog": 1, + "blog.bo": 1, + "blog.br": 1, + "blog.gt": 1, + "blog.kg": 1, + "blog.vu": 1, + "blogdns.com": 1, + "blogdns.net": 1, + "blogdns.org": 1, + "blogsite.org": 1, + "blogsite.xyz": 1, + "blogspot.ae": 1, + "blogspot.al": 1, + "blogspot.am": 1, + "blogspot.ba": 1, + "blogspot.be": 1, + "blogspot.bg": 1, + "blogspot.bj": 1, + "blogspot.ca": 1, + "blogspot.cf": 1, + "blogspot.ch": 1, + "blogspot.cl": 1, + "blogspot.co.at": 1, + "blogspot.co.id": 1, + "blogspot.co.il": 1, + "blogspot.co.ke": 1, + "blogspot.co.nz": 1, + "blogspot.co.uk": 1, + "blogspot.co.za": 1, + "blogspot.com": 1, + "blogspot.com.ar": 1, + "blogspot.com.au": 1, + "blogspot.com.br": 1, + "blogspot.com.by": 1, + "blogspot.com.co": 1, + "blogspot.com.cy": 1, + "blogspot.com.ee": 1, + "blogspot.com.eg": 1, + "blogspot.com.es": 1, + "blogspot.com.mt": 1, + "blogspot.com.ng": 1, + "blogspot.com.tr": 1, + "blogspot.com.uy": 1, + "blogspot.cv": 1, + "blogspot.cz": 1, + "blogspot.de": 1, + "blogspot.dk": 1, + "blogspot.fi": 1, + "blogspot.fr": 1, + "blogspot.gr": 1, + "blogspot.hk": 1, + "blogspot.hr": 1, + "blogspot.hu": 1, + "blogspot.ie": 1, + "blogspot.in": 1, + "blogspot.is": 1, + "blogspot.it": 1, + "blogspot.jp": 1, + "blogspot.kr": 1, + "blogspot.li": 1, + "blogspot.lt": 1, + "blogspot.lu": 1, + "blogspot.md": 1, + "blogspot.mk": 1, + "blogspot.mr": 1, + "blogspot.mx": 1, + "blogspot.my": 1, + "blogspot.nl": 1, + "blogspot.no": 1, + "blogspot.pe": 1, + "blogspot.pt": 1, + "blogspot.qa": 1, + "blogspot.re": 1, + "blogspot.ro": 1, + "blogspot.rs": 1, + "blogspot.ru": 1, + "blogspot.se": 1, + "blogspot.sg": 1, + "blogspot.si": 1, + "blogspot.sk": 1, + "blogspot.sn": 1, + "blogspot.td": 1, + "blogspot.tw": 1, + "blogspot.ug": 1, + "blogspot.vn": 1, + "blogsyte.com": 1, + "bloomberg": 1, + "bloxcms.com": 1, + "blue": 1, + "bluebite.io": 1, + "blush.jp": 1, + "bm": 1, + "bmd.br": 1, + "bmoattachments.org": 1, + "bms": 1, + "bmw": 1, + "bn": 1, + "bn.it": 1, + "bnpparibas": 1, + "bnr.la": 1, + "bo": 1, + "bo.it": 1, + "bo.nordland.no": 1, + "bo.telemark.no": 1, + "boats": 1, + "boavista.br": 1, + "bodo.no": 1, + "bodø.no": 1, + "boehringer": 1, + "bofa": 1, + "bokn.no": 1, + "boldlygoingnowhere.org": 1, + "boleslawiec.pl": 1, + "bolivia.bo": 1, + "bologna.it": 1, + "bolt.hu": 1, + "bolzano-altoadige.it": 1, + "bolzano.it": 1, + "bom": 1, + "bomlo.no": 1, + "bona.jp": 1, + "bond": 1, + "boo": 1, + "boo.jp": 1, + "book": 1, + "booking": 1, + "bookonline.app": 1, + "boomla.net": 1, + "bosch": 1, + "bostik": 1, + "boston": 1, + "bot": 1, + "bounceme.net": 1, + "bounty-full.com": 1, + "boutique": 1, + "boutir.com": 1, + "box": 1, + "boxfuse.io": 1, + "boy.jp": 1, + "boyfriend.jp": 1, + "bozen-sudtirol.it": 1, + "bozen-suedtirol.it": 1, + "bozen-südtirol.it": 1, + "bozen.it": 1, + "bplaced.com": 1, + "bplaced.de": 1, + "bplaced.net": 1, + "br": 1, + "br.com": 1, + "br.it": 1, + "bradesco": 1, + "brand.se": 1, + "brasilia.me": 1, + "bremanger.no": 1, + "brescia.it": 1, + "bridgestone": 1, + "brindisi.it": 1, + "broadway": 1, + "broke-it.net": 1, + "broker": 1, + "broker.aero": 1, + "bronnoy.no": 1, + "bronnoysund.no": 1, + "brother": 1, + "browsersafetymark.io": 1, + "brumunddal.no": 1, + "brussels": 1, + "bryansk.su": 1, + "bryne.no": 1, + "brønnøy.no": 1, + "brønnøysund.no": 1, + "bs": 1, + "bs.it": 1, + "bsb.br": 1, + "bss.design": 1, + "bt": 1, + "bt.it": 1, + "bu.no": 1, + "budejju.no": 1, + "build": 1, + "builders": 1, + "builtwithdark.com": 1, + "bukhara.su": 1, + "bulsan-sudtirol.it": 1, + "bulsan-suedtirol.it": 1, + "bulsan-südtirol.it": 1, + "bulsan.it": 1, + "bungoono.oita.jp": 1, + "bungotakada.oita.jp": 1, + "bunkyo.tokyo.jp": 1, + "busan.kr": 1, + "business": 1, + "business.in": 1, + "but.jp": 1, + "buy": 1, + "buyshop.jp": 1, + "buyshouses.net": 1, + "buzen.fukuoka.jp": 1, + "buzz": 1, + "bv": 1, + "bw": 1, + "by": 1, + "bydgoszcz.pl": 1, + "byen.site": 1, + "bygland.no": 1, + "bykle.no": 1, + "bytom.pl": 1, + "bz": 1, + "bz.it": 1, + "bzh": 1, + "báhcavuotna.no": 1, + "báhccavuotna.no": 1, + "báidár.no": 1, + "bájddar.no": 1, + "bálát.no": 1, + "bådåddjå.no": 1, + "båtsfjord.no": 1, + "bærum.no": 1, + "bø.nordland.no": 1, + "bø.telemark.no": 1, + "bømlo.no": 1, + "c.bg": 1, + "c.cdn77.org": 1, + "c.la": 1, + "c.se": 1, + "c66.me": 1, + "ca": 1, + "ca-central-1.elasticbeanstalk.com": 1, + "ca.eu.org": 1, + "ca.in": 1, + "ca.it": 1, + "ca.na": 1, + "ca.reclaim.cloud": 1, + "ca.us": 1, + "caa.aero": 1, + "caa.li": 1, + "cab": 1, + "cable-modem.org": 1, + "cafe": 1, + "cafjs.com": 1, + "cagliari.it": 1, + "cahcesuolo.no": 1, + "cal": 1, + "cal.it": 1, + "calabria.it": 1, + "call": 1, + "caltanissetta.it": 1, + "calvinklein": 1, + "cam": 1, + "cam.it": 1, + "camau.vn": 1, + "camdvr.org": 1, + "camera": 1, + "camp": 1, + "campaign.gov.uk": 1, + "campania.it": 1, + "campidano-medio.it": 1, + "campidanomedio.it": 1, + "campinagrande.br": 1, + "campinas.br": 1, + "campobasso.it": 1, + "candypop.jp": 1, + "canon": 1, + "cantho.vn": 1, + "canva-apps.cn": 1, + "canva-apps.com": 1, + "caobang.vn": 1, + "capetown": 1, + "capital": 1, + "capitalone": 1, + "capoo.jp": 1, + "car": 1, + "caracal.mythic-beasts.com": 1, + "caravan": 1, + "carbonia-iglesias.it": 1, + "carboniaiglesias.it": 1, + "cards": 1, + "care": 1, + "career": 1, + "careers": 1, + "cargo.aero": 1, + "carrara-massa.it": 1, + "carraramassa.it": 1, + "carrd.co": 1, + "cars": 1, + "casa": 1, + "casacam.net": 1, + "case": 1, + "caserta.it": 1, + "cash": 1, + "casino": 1, + "casino.hu": 1, + "cat": 1, + "cat.ax": 1, + "catania.it": 1, + "catanzaro.it": 1, + "catering": 1, + "catering.aero": 1, + "catfood.jp": 1, + "catholic": 1, + "catholic.edu.au": 1, + "caxias.br": 1, + "cb.it": 1, + "cba": 1, + "cbg.ru": 1, + "cbn": 1, + "cbre": 1, + "cbs": 1, + "cc": 1, + "cc.ak.us": 1, + "cc.al.us": 1, + "cc.ar.us": 1, + "cc.as.us": 1, + "cc.az.us": 1, + "cc.ca.us": 1, + "cc.co.us": 1, + "cc.ct.us": 1, + "cc.dc.us": 1, + "cc.de.us": 1, + "cc.fl.us": 1, + "cc.ga.us": 1, + "cc.gu.us": 1, + "cc.hi.us": 1, + "cc.hn": 1, + "cc.ia.us": 1, + "cc.id.us": 1, + "cc.il.us": 1, + "cc.in.us": 1, + "cc.ks.us": 1, + "cc.ky.us": 1, + "cc.la.us": 1, + "cc.ma.us": 1, + "cc.md.us": 1, + "cc.me.us": 1, + "cc.mi.us": 1, + "cc.mn.us": 1, + "cc.mo.us": 1, + "cc.ms.us": 1, + "cc.mt.us": 1, + "cc.na": 1, + "cc.nc.us": 1, + "cc.nd.us": 1, + "cc.ne.us": 1, + "cc.nh.us": 1, + "cc.nj.us": 1, + "cc.nm.us": 1, + "cc.nv.us": 1, + "cc.ny.us": 1, + "cc.oh.us": 1, + "cc.ok.us": 1, + "cc.or.us": 1, + "cc.pa.us": 1, + "cc.pr.us": 1, + "cc.ri.us": 1, + "cc.sc.us": 1, + "cc.sd.us": 1, + "cc.tn.us": 1, + "cc.tx.us": 1, + "cc.ua": 1, + "cc.ut.us": 1, + "cc.va.us": 1, + "cc.vi.us": 1, + "cc.vt.us": 1, + "cc.wa.us": 1, + "cc.wi.us": 1, + "cc.wv.us": 1, + "cc.wy.us": 1, + "cci.fr": 1, + "cd": 1, + "cd.eu.org": 1, + "cdn-edges.net": 1, + "cdn.prod.atlassian-dev.net": 1, + "cdn77-ssl.net": 1, + "ce.gov.br": 1, + "ce.it": 1, + "ce.leg.br": 1, + "cechire.com": 1, + "center": 1, + "centralus.azurestaticapps.net": 1, + "ceo": 1, + "cern": 1, + "certification.aero": 1, + "certmgr.org": 1, + "cesena-forli.it": 1, + "cesena-forlì.it": 1, + "cesenaforli.it": 1, + "cesenaforlì.it": 1, + "cf": 1, + "cf-ipfs.com": 1, + "cfa": 1, + "cfd": 1, + "cg": 1, + "ch": 1, + "ch.eu.org": 1, + "ch.it": 1, + "ch.tc": 1, + "ch.trendhosting.cloud": 1, + "chambagri.fr": 1, + "championship.aero": 1, + "chanel": 1, + "channel": 1, + "channelsdvr.net": 1, + "charity": 1, + "charter.aero": 1, + "chase": 1, + "chat": 1, + "cheap": 1, + "cheap.jp": 1, + "cherkassy.ua": 1, + "cherkasy.ua": 1, + "chernigov.ua": 1, + "chernihiv.ua": 1, + "chernivtsi.ua": 1, + "chernovtsy.ua": 1, + "chiba.jp": 1, + "chicappa.jp": 1, + "chichibu.saitama.jp": 1, + "chieti.it": 1, + "chigasaki.kanagawa.jp": 1, + "chihayaakasaka.osaka.jp": 1, + "chijiwa.nagasaki.jp": 1, + "chikugo.fukuoka.jp": 1, + "chikuho.fukuoka.jp": 1, + "chikuhoku.nagano.jp": 1, + "chikujo.fukuoka.jp": 1, + "chikuma.nagano.jp": 1, + "chikusei.ibaraki.jp": 1, + "chikushino.fukuoka.jp": 1, + "chikuzen.fukuoka.jp": 1, + "chillout.jp": 1, + "chimkent.su": 1, + "chino.nagano.jp": 1, + "chintai": 1, + "chippubetsu.hokkaido.jp": 1, + "chips.jp": 1, + "chirurgiens-dentistes-en-france.fr": 1, + "chirurgiens-dentistes.fr": 1, + "chiryu.aichi.jp": 1, + "chita.aichi.jp": 1, + "chitose.hokkaido.jp": 1, + "chiyoda.gunma.jp": 1, + "chiyoda.tokyo.jp": 1, + "chizu.tottori.jp": 1, + "chofu.tokyo.jp": 1, + "chonan.chiba.jp": 1, + "chosei.chiba.jp": 1, + "choshi.chiba.jp": 1, + "chowder.jp": 1, + "choyo.kumamoto.jp": 1, + "christmas": 1, + "chrome": 1, + "chtr.k12.ma.us": 1, + "chu.jp": 1, + "chungbuk.kr": 1, + "chungnam.kr": 1, + "chuo.chiba.jp": 1, + "chuo.fukuoka.jp": 1, + "chuo.osaka.jp": 1, + "chuo.tokyo.jp": 1, + "chuo.yamanashi.jp": 1, + "church": 1, + "ci": 1, + "ci.it": 1, + "ciao.jp": 1, + "ciencia.bo": 1, + "cieszyn.pl": 1, + "cim.br": 1, + "cipriani": 1, + "circle": 1, + "cisco": 1, + "ciscofreak.com": 1, + "cistron.nl": 1, + "citadel": 1, + "citi": 1, + "citic": 1, + "city": 1, + "city.hu": 1, + "cityeats": 1, + "civilaviation.aero": 1, + "ck.ua": 1, + "cl": 1, + "cl.it": 1, + "claims": 1, + "clan.rip": 1, + "cleaning": 1, + "clerk.app": 1, + "clerkstage.app": 1, + "cleverapps.io": 1, + "click": 1, + "clickrising.net": 1, + "clinic": 1, + "clinique": 1, + "clothing": 1, + "cloud": 1, + "cloud-fr1.unispace.io": 1, + "cloud.fedoraproject.org": 1, + "cloud.goog": 1, + "cloud.interhostsolutions.be": 1, + "cloud.jelastic.open.tim.it": 1, + "cloud.nospamproxy.com": 1, + "cloud66.ws": 1, + "cloud66.zone": 1, + "cloudaccess.host": 1, + "cloudaccess.net": 1, + "cloudapp.net": 1, + "cloudapps.digital": 1, + "cloudcontrolapp.com": 1, + "cloudcontrolled.com": 1, + "cloudflare-ipfs.com": 1, + "cloudfront.net": 1, + "cloudfunctions.net": 1, + "cloudjiffy.net": 1, + "cloudns.asia": 1, + "cloudns.biz": 1, + "cloudns.cc": 1, + "cloudns.club": 1, + "cloudns.eu": 1, + "cloudns.in": 1, + "cloudns.info": 1, + "cloudns.org": 1, + "cloudns.pro": 1, + "cloudns.pw": 1, + "cloudns.us": 1, + "cloudsite.builders": 1, + "cloudycluster.net": 1, + "club": 1, + "club.aero": 1, + "club.tw": 1, + "clubmed": 1, + "cm": 1, + "cn": 1, + "cn-north-1.eb.amazonaws.com.cn": 1, + "cn-northwest-1.eb.amazonaws.com.cn": 1, + "cn.com": 1, + "cn.eu.org": 1, + "cn.in": 1, + "cn.it": 1, + "cn.ua": 1, + "cn.vu": 1, + "cng.br": 1, + "cnpy.gdn": 1, + "cnt.br": 1, + "co": 1, + "co.ae": 1, + "co.ag": 1, + "co.am": 1, + "co.ao": 1, + "co.at": 1, + "co.bb": 1, + "co.bi": 1, + "co.bj": 1, + "co.bn": 1, + "co.business": 1, + "co.bw": 1, + "co.ca": 1, + "co.ci": 1, + "co.cl": 1, + "co.cm": 1, + "co.com": 1, + "co.cr": 1, + "co.cz": 1, + "co.dk": 1, + "co.education": 1, + "co.events": 1, + "co.financial": 1, + "co.gg": 1, + "co.gl": 1, + "co.gy": 1, + "co.hu": 1, + "co.id": 1, + "co.il": 1, + "co.im": 1, + "co.in": 1, + "co.ir": 1, + "co.it": 1, + "co.je": 1, + "co.jp": 1, + "co.ke": 1, + "co.kr": 1, + "co.krd": 1, + "co.lc": 1, + "co.ls": 1, + "co.ma": 1, + "co.me": 1, + "co.mg": 1, + "co.mu": 1, + "co.mw": 1, + "co.mz": 1, + "co.na": 1, + "co.network": 1, + "co.ni": 1, + "co.nl": 1, + "co.no": 1, + "co.nz": 1, + "co.om": 1, + "co.pl": 1, + "co.place": 1, + "co.pn": 1, + "co.pw": 1, + "co.ro": 1, + "co.rs": 1, + "co.rw": 1, + "co.st": 1, + "co.sz": 1, + "co.technology": 1, + "co.th": 1, + "co.tj": 1, + "co.tm": 1, + "co.tt": 1, + "co.tz": 1, + "co.ua": 1, + "co.ug": 1, + "co.uk": 1, + "co.us": 1, + "co.uz": 1, + "co.ve": 1, + "co.vi": 1, + "co.za": 1, + "co.zm": 1, + "co.zw": 1, + "coach": 1, + "cocotte.jp": 1, + "codeberg.page": 1, + "codes": 1, + "codespot.com": 1, + "coffee": 1, + "cog.mi.us": 1, + "col.ng": 1, + "college": 1, + "collegefan.org": 1, + "cologne": 1, + "com": 1, + "com.ac": 1, + "com.af": 1, + "com.ag": 1, + "com.ai": 1, + "com.al": 1, + "com.am": 1, + "com.ar": 1, + "com.au": 1, + "com.aw": 1, + "com.az": 1, + "com.ba": 1, + "com.bb": 1, + "com.bh": 1, + "com.bi": 1, + "com.bj": 1, + "com.bm": 1, + "com.bn": 1, + "com.bo": 1, + "com.br": 1, + "com.bs": 1, + "com.bt": 1, + "com.by": 1, + "com.bz": 1, + "com.ci": 1, + "com.cm": 1, + "com.cn": 1, + "com.co": 1, + "com.cu": 1, + "com.cv": 1, + "com.cw": 1, + "com.cy": 1, + "com.de": 1, + "com.dm": 1, + "com.do": 1, + "com.dz": 1, + "com.ec": 1, + "com.ee": 1, + "com.eg": 1, + "com.es": 1, + "com.et": 1, + "com.fj": 1, + "com.fm": 1, + "com.fr": 1, + "com.ge": 1, + "com.gh": 1, + "com.gi": 1, + "com.gl": 1, + "com.gn": 1, + "com.gp": 1, + "com.gr": 1, + "com.gt": 1, + "com.gu": 1, + "com.gy": 1, + "com.hk": 1, + "com.hn": 1, + "com.hr": 1, + "com.ht": 1, + "com.im": 1, + "com.in": 1, + "com.io": 1, + "com.iq": 1, + "com.is": 1, + "com.jo": 1, + "com.kg": 1, + "com.ki": 1, + "com.km": 1, + "com.kp": 1, + "com.kw": 1, + "com.ky": 1, + "com.kz": 1, + "com.la": 1, + "com.lb": 1, + "com.lc": 1, + "com.lk": 1, + "com.lr": 1, + "com.lv": 1, + "com.ly": 1, + "com.mg": 1, + "com.mk": 1, + "com.ml": 1, + "com.mo": 1, + "com.ms": 1, + "com.mt": 1, + "com.mu": 1, + "com.mv": 1, + "com.mw": 1, + "com.mx": 1, + "com.my": 1, + "com.na": 1, + "com.nf": 1, + "com.ng": 1, + "com.ni": 1, + "com.nr": 1, + "com.om": 1, + "com.pa": 1, + "com.pe": 1, + "com.pf": 1, + "com.ph": 1, + "com.pk": 1, + "com.pl": 1, + "com.pr": 1, + "com.ps": 1, + "com.pt": 1, + "com.py": 1, + "com.qa": 1, + "com.re": 1, + "com.ro": 1, + "com.ru": 1, + "com.sa": 1, + "com.sb": 1, + "com.sc": 1, + "com.sd": 1, + "com.se": 1, + "com.sg": 1, + "com.sh": 1, + "com.sl": 1, + "com.sn": 1, + "com.so": 1, + "com.ss": 1, + "com.st": 1, + "com.sv": 1, + "com.sy": 1, + "com.tj": 1, + "com.tm": 1, + "com.tn": 1, + "com.to": 1, + "com.tr": 1, + "com.tt": 1, + "com.tw": 1, + "com.ua": 1, + "com.ug": 1, + "com.uy": 1, + "com.uz": 1, + "com.vc": 1, + "com.ve": 1, + "com.vi": 1, + "com.vn": 1, + "com.vu": 1, + "com.ws": 1, + "com.ye": 1, + "com.zm": 1, + "comcast": 1, + "commbank": 1, + "commune.am": 1, + "community": 1, + "community-pro.de": 1, + "community-pro.net": 1, + "como.it": 1, + "company": 1, + "compare": 1, + "computer": 1, + "comsec": 1, + "condos": 1, + "conf.au": 1, + "conf.lv": 1, + "conf.se": 1, + "conference.aero": 1, + "conn.uk": 1, + "construction": 1, + "consulado.st": 1, + "consultant.aero": 1, + "consulting": 1, + "consulting.aero": 1, + "contact": 1, + "contagem.br": 1, + "contractors": 1, + "control.aero": 1, + "cooking": 1, + "cool": 1, + "coolblog.jp": 1, + "coop": 1, + "coop.ar": 1, + "coop.br": 1, + "coop.ht": 1, + "coop.in": 1, + "coop.km": 1, + "coop.mv": 1, + "coop.mw": 1, + "coop.py": 1, + "coop.rw": 1, + "coop.tt": 1, + "cooperativa.bo": 1, + "copro.uk": 1, + "corsica": 1, + "cosenza.it": 1, + "couchpotatofries.org": 1, + "council.aero": 1, + "country": 1, + "coupon": 1, + "coupons": 1, + "courses": 1, + "coz.br": 1, + "cpa": 1, + "cpa.pro": 1, + "cq.cn": 1, + "cr": 1, + "cr.it": 1, + "cr.ua": 1, + "crafting.xyz": 1, + "cranky.jp": 1, + "crap.jp": 1, + "crd.co": 1, + "credit": 1, + "creditcard": 1, + "creditunion": 1, + "cremona.it": 1, + "crew.aero": 1, + "cri.br": 1, + "cri.nz": 1, + "cricket": 1, + "crimea.ua": 1, + "crotone.it": 1, + "crown": 1, + "crs": 1, + "cruise": 1, + "cruises": 1, + "cs.in": 1, + "cs.it": 1, + "cs.keliweb.cloud": 1, + "csx.cc": 1, + "ct.it": 1, + "ct.us": 1, + "cu": 1, + "cuiaba.br": 1, + "cuisinella": 1, + "cuneo.it": 1, + "cupcake.is": 1, + "curitiba.br": 1, + "curv.dev": 1, + "cust.dev.thingdust.io": 1, + "cust.disrec.thingdust.io": 1, + "cust.prod.thingdust.io": 1, + "cust.retrosnub.co.uk": 1, + "cust.testing.thingdust.io": 1, + "custom.metacentrum.cz": 1, + "customer.mythic-beasts.com": 1, + "customer.speedpartner.de": 1, + "cutegirl.jp": 1, + "cv": 1, + "cv.ua": 1, + "cw": 1, + "cx": 1, + "cx.ua": 1, + "cy": 1, + "cy.eu.org": 1, + "cya.gg": 1, + "cymru": 1, + "cyon.link": 1, + "cyon.site": 1, + "cyou": 1, + "cz": 1, + "cz.eu.org": 1, + "cz.it": 1, + "czeladz.pl": 1, + "czest.pl": 1, + "d.bg": 1, + "d.gv.vc": 1, + "d.se": 1, + "daa.jp": 1, + "dabur": 1, + "dad": 1, + "daegu.kr": 1, + "daejeon.kr": 1, + "daemon.panel.gg": 1, + "dagestan.ru": 1, + "dagestan.su": 1, + "daigo.ibaraki.jp": 1, + "daisen.akita.jp": 1, + "daito.osaka.jp": 1, + "daiwa.hiroshima.jp": 1, + "daklak.vn": 1, + "daknong.vn": 1, + "damnserver.com": 1, + "danang.vn": 1, + "dance": 1, + "daplie.me": 1, + "data": 1, + "date": 1, + "date.fukushima.jp": 1, + "date.hokkaido.jp": 1, + "dating": 1, + "datsun": 1, + "dattolocal.com": 1, + "dattolocal.net": 1, + "dattorelay.com": 1, + "dattoweb.com": 1, + "davvenjarga.no": 1, + "davvenjárga.no": 1, + "davvesiida.no": 1, + "day": 1, + "daynight.jp": 1, + "dazaifu.fukuoka.jp": 1, + "dc.us": 1, + "dclk": 1, + "dd-dns.de": 1, + "ddns.me": 1, + "ddns.net": 1, + "ddns5.com": 1, + "ddnsfree.com": 1, + "ddnsgeek.com": 1, + "ddnsking.com": 1, + "ddnslive.com": 1, + "ddnss.de": 1, + "ddnss.org": 1, + "dds": 1, + "de": 1, + "de.com": 1, + "de.cool": 1, + "de.eu.org": 1, + "de.gt": 1, + "de.ls": 1, + "de.md": 1, + "de.trendhosting.cloud": 1, + "de.us": 1, + "deal": 1, + "dealer": 1, + "deals": 1, + "deatnu.no": 1, + "debian.net": 1, + "deca.jp": 1, + "deci.jp": 1, + "dedibox.fr": 1, + "dedyn.io": 1, + "def.br": 1, + "definima.io": 1, + "definima.net": 1, + "degree": 1, + "delhi.in": 1, + "delivery": 1, + "dell": 1, + "dell-ogliastra.it": 1, + "dellogliastra.it": 1, + "deloitte": 1, + "delta": 1, + "demo.datacenter.fi": 1, + "demo.datadetect.com": 1, + "demo.jelastic.com": 1, + "democracia.bo": 1, + "democrat": 1, + "demon.nl": 1, + "deno-staging.dev": 1, + "deno.dev": 1, + "dental": 1, + "dentist": 1, + "dep.no": 1, + "deporte.bo": 1, + "des.br": 1, + "desa.id": 1, + "desi": 1, + "design": 1, + "design.aero": 1, + "det.br": 1, + "deta.app": 1, + "deta.dev": 1, + "dev": 1, + "dev-myqnapcloud.com": 1, + "dev.br": 1, + "dev.static.land": 1, + "dev.vu": 1, + "development.run": 1, + "devices.resinstaging.io": 1, + "df.gov.br": 1, + "df.leg.br": 1, + "dgca.aero": 1, + "dh.bytemark.co.uk": 1, + "dhl": 1, + "diadem.cloud": 1, + "diamonds": 1, + "dielddanuorri.no": 1, + "dienbien.vn": 1, + "diet": 1, + "digick.jp": 1, + "digital": 1, + "direct": 1, + "direct.quickconnect.cn": 1, + "direct.quickconnect.to": 1, + "directory": 1, + "discordsays.com": 1, + "discordsez.com": 1, + "discount": 1, + "discourse.group": 1, + "discourse.team": 1, + "discover": 1, + "dish": 1, + "diskstation.eu": 1, + "diskstation.me": 1, + "diskstation.org": 1, + "diskussionsbereich.de": 1, + "ditchyourip.com": 1, + "divtasvuodna.no": 1, + "divttasvuotna.no": 1, + "diy": 1, + "dj": 1, + "dk": 1, + "dk.eu.org": 1, + "dlugoleka.pl": 1, + "dm": 1, + "dn.ua": 1, + "dnepropetrovsk.ua": 1, + "dni.us": 1, + "dnipropetrovsk.ua": 1, + "dnp": 1, + "dnsalias.com": 1, + "dnsalias.net": 1, + "dnsalias.org": 1, + "dnsdojo.com": 1, + "dnsdojo.net": 1, + "dnsdojo.org": 1, + "dnsfor.me": 1, + "dnshome.de": 1, + "dnsiskinky.com": 1, + "dnsking.ch": 1, + "dnsup.net": 1, + "dnsupdate.info": 1, + "dnsupdater.de": 1, + "do": 1, + "docs": 1, + "doctor": 1, + "does-it.net": 1, + "doesntexist.com": 1, + "doesntexist.org": 1, + "dog": 1, + "dojin.com": 1, + "domains": 1, + "donetsk.ua": 1, + "dongnai.vn": 1, + "dongthap.vn": 1, + "donna.no": 1, + "dontexist.com": 1, + "dontexist.net": 1, + "dontexist.org": 1, + "doomdns.com": 1, + "doomdns.org": 1, + "dopaas.com": 1, + "doshi.yamanashi.jp": 1, + "dot": 1, + "dovre.no": 1, + "download": 1, + "dp.ua": 1, + "dr.in": 1, + "dr.na": 1, + "dr.tr": 1, + "drammen.no": 1, + "drangedal.no": 1, + "dray-dns.de": 1, + "drayddns.com": 1, + "draydns.de": 1, + "dreamhosters.com": 1, + "drive": 1, + "drobak.no": 1, + "drr.ac": 1, + "drud.io": 1, + "drud.us": 1, + "drøbak.no": 1, + "dscloud.biz": 1, + "dscloud.me": 1, + "dscloud.mobi": 1, + "dsmynas.com": 1, + "dsmynas.net": 1, + "dsmynas.org": 1, + "dst.mi.us": 1, + "dtv": 1, + "dubai": 1, + "duckdns.org": 1, + "dunlop": 1, + "dupont": 1, + "durban": 1, + "dvag": 1, + "dvr": 1, + "dvrcam.info": 1, + "dvrdns.org": 1, + "dy.fi": 1, + "dyn-berlin.de": 1, + "dyn-ip24.de": 1, + "dyn-o-saur.com": 1, + "dyn-vpn.de": 1, + "dyn.cosidns.de": 1, + "dyn.ddnss.de": 1, + "dyn.home-webserver.de": 1, + "dyn53.io": 1, + "dynalias.com": 1, + "dynalias.net": 1, + "dynalias.org": 1, + "dynamic-dns.info": 1, + "dynamisches-dns.de": 1, + "dynathome.net": 1, + "dyndns-at-home.com": 1, + "dyndns-at-work.com": 1, + "dyndns-blog.com": 1, + "dyndns-free.com": 1, + "dyndns-home.com": 1, + "dyndns-ip.com": 1, + "dyndns-mail.com": 1, + "dyndns-office.com": 1, + "dyndns-pics.com": 1, + "dyndns-remote.com": 1, + "dyndns-server.com": 1, + "dyndns-web.com": 1, + "dyndns-wiki.com": 1, + "dyndns-work.com": 1, + "dyndns.biz": 1, + "dyndns.dappnode.io": 1, + "dyndns.ddnss.de": 1, + "dyndns.info": 1, + "dyndns.org": 1, + "dyndns.tv": 1, + "dyndns.ws": 1, + "dyndns1.de": 1, + "dynns.com": 1, + "dynserv.org": 1, + "dynu.net": 1, + "dynv6.net": 1, + "dynvpn.de": 1, + "dyroy.no": 1, + "dyrøy.no": 1, + "dz": 1, + "dønna.no": 1, + "e.bg": 1, + "e.se": 1, + "e12.ve": 1, + "e164.arpa": 1, + "e4.cz": 1, + "earth": 1, + "east-kazakhstan.su": 1, + "eastasia.azurestaticapps.net": 1, + "eastus2.azurestaticapps.net": 1, + "easypanel.app": 1, + "easypanel.host": 1, + "eat": 1, + "eating-organic.net": 1, + "eaton.mi.us": 1, + "ebetsu.hokkaido.jp": 1, + "ebina.kanagawa.jp": 1, + "ebino.miyazaki.jp": 1, + "ebiz.tw": 1, + "ec": 1, + "echizen.fukui.jp": 1, + "ecn.br": 1, + "eco": 1, + "eco.bj": 1, + "eco.br": 1, + "ecologia.bo": 1, + "ecommerce-shop.pl": 1, + "econo.bj": 1, + "economia.bo": 1, + "ed.ao": 1, + "ed.ci": 1, + "ed.cr": 1, + "ed.jp": 1, + "ed.pw": 1, + "edeka": 1, + "edgeapp.net": 1, + "edgecompute.app": 1, + "edgekey-staging.net": 1, + "edgekey.net": 1, + "edgestack.me": 1, + "edgesuite-staging.net": 1, + "edgesuite.net": 1, + "editorx.io": 1, + "edogawa.tokyo.jp": 1, + "edu": 1, + "edu.ac": 1, + "edu.af": 1, + "edu.al": 1, + "edu.ar": 1, + "edu.au": 1, + "edu.az": 1, + "edu.ba": 1, + "edu.bb": 1, + "edu.bh": 1, + "edu.bi": 1, + "edu.bj": 1, + "edu.bm": 1, + "edu.bn": 1, + "edu.bo": 1, + "edu.br": 1, + "edu.bs": 1, + "edu.bt": 1, + "edu.bz": 1, + "edu.ci": 1, + "edu.cn": 1, + "edu.co": 1, + "edu.cu": 1, + "edu.cv": 1, + "edu.cw": 1, + "edu.dm": 1, + "edu.do": 1, + "edu.dz": 1, + "edu.ec": 1, + "edu.ee": 1, + "edu.eg": 1, + "edu.es": 1, + "edu.et": 1, + "edu.eu.org": 1, + "edu.fm": 1, + "edu.gd": 1, + "edu.ge": 1, + "edu.gh": 1, + "edu.gi": 1, + "edu.gl": 1, + "edu.gn": 1, + "edu.gp": 1, + "edu.gr": 1, + "edu.gt": 1, + "edu.gu": 1, + "edu.gy": 1, + "edu.hk": 1, + "edu.hn": 1, + "edu.ht": 1, + "edu.in": 1, + "edu.iq": 1, + "edu.is": 1, + "edu.it": 1, + "edu.jo": 1, + "edu.kg": 1, + "edu.ki": 1, + "edu.km": 1, + "edu.kn": 1, + "edu.kp": 1, + "edu.krd": 1, + "edu.kw": 1, + "edu.ky": 1, + "edu.kz": 1, + "edu.la": 1, + "edu.lb": 1, + "edu.lc": 1, + "edu.lk": 1, + "edu.lr": 1, + "edu.ls": 1, + "edu.lv": 1, + "edu.ly": 1, + "edu.me": 1, + "edu.mg": 1, + "edu.mk": 1, + "edu.ml": 1, + "edu.mn": 1, + "edu.mo": 1, + "edu.ms": 1, + "edu.mt": 1, + "edu.mv": 1, + "edu.mw": 1, + "edu.mx": 1, + "edu.my": 1, + "edu.mz": 1, + "edu.ng": 1, + "edu.ni": 1, + "edu.nr": 1, + "edu.om": 1, + "edu.pa": 1, + "edu.pe": 1, + "edu.pf": 1, + "edu.ph": 1, + "edu.pk": 1, + "edu.pl": 1, + "edu.pn": 1, + "edu.pr": 1, + "edu.ps": 1, + "edu.pt": 1, + "edu.py": 1, + "edu.qa": 1, + "edu.rs": 1, + "edu.ru": 1, + "edu.sa": 1, + "edu.sb": 1, + "edu.sc": 1, + "edu.scot": 1, + "edu.sd": 1, + "edu.sg": 1, + "edu.sl": 1, + "edu.sn": 1, + "edu.so": 1, + "edu.ss": 1, + "edu.st": 1, + "edu.sv": 1, + "edu.sy": 1, + "edu.tj": 1, + "edu.tm": 1, + "edu.to": 1, + "edu.tr": 1, + "edu.tt": 1, + "edu.tw": 1, + "edu.ua": 1, + "edu.uy": 1, + "edu.vc": 1, + "edu.ve": 1, + "edu.vn": 1, + "edu.vu": 1, + "edu.ws": 1, + "edu.ye": 1, + "edu.za": 1, + "edu.zm": 1, + "education": 1, + "educator.aero": 1, + "edugit.io": 1, + "ee": 1, + "ee.eu.org": 1, + "eek.jp": 1, + "eero-stage.online": 1, + "eero.online": 1, + "eg": 1, + "egersund.no": 1, + "egoism.jp": 1, + "ehime.jp": 1, + "eid.no": 1, + "eidfjord.no": 1, + "eidsberg.no": 1, + "eidskog.no": 1, + "eidsvoll.no": 1, + "eigersund.no": 1, + "eiheiji.fukui.jp": 1, + "ekloges.cy": 1, + "elasticbeanstalk.com": 1, + "elblag.pl": 1, + "elementor.cloud": 1, + "elementor.cool": 1, + "elk.pl": 1, + "elverum.no": 1, + "email": 1, + "emb.kw": 1, + "embaixada.st": 1, + "embetsu.hokkaido.jp": 1, + "emerck": 1, + "emergency.aero": 1, + "emilia-romagna.it": 1, + "emiliaromagna.it": 1, + "emp.br": 1, + "empresa.bo": 1, + "emr.it": 1, + "en-root.fr": 1, + "en.it": 1, + "ena.gifu.jp": 1, + "encoreapi.com": 1, + "encr.app": 1, + "endofinternet.net": 1, + "endofinternet.org": 1, + "endoftheinternet.org": 1, + "enebakk.no": 1, + "energy": 1, + "enf.br": 1, + "eng.br": 1, + "eng.pro": 1, + "engerdal.no": 1, + "engine.aero": 1, + "engineer": 1, + "engineer.aero": 1, + "engineering": 1, + "eniwa.hokkaido.jp": 1, + "enna.it": 1, + "ens.tn": 1, + "enscaled.sg": 1, + "ent.platform.sh": 1, + "enterprisecloud.nu": 1, + "enterprises": 1, + "entertainment.aero": 1, + "epson": 1, + "equipment": 1, + "equipment.aero": 1, + "er.in": 1, + "ericsson": 1, + "erimo.hokkaido.jp": 1, + "erni": 1, + "erotica.hu": 1, + "erotika.hu": 1, + "es": 1, + "es-1.axarnet.cloud": 1, + "es.ax": 1, + "es.eu.org": 1, + "es.gov.br": 1, + "es.kr": 1, + "es.leg.br": 1, + "esan.hokkaido.jp": 1, + "esashi.hokkaido.jp": 1, + "esp.br": 1, + "esq": 1, + "est-a-la-maison.com": 1, + "est-a-la-masion.com": 1, + "est-le-patron.com": 1, + "est-mon-blogueur.com": 1, + "est.pr": 1, + "estate": 1, + "et": 1, + "etajima.hiroshima.jp": 1, + "etc.br": 1, + "eti.br": 1, + "etisalat": 1, + "etne.no": 1, + "etnedal.no": 1, + "eu": 1, + "eu-1.evennode.com": 1, + "eu-2.evennode.com": 1, + "eu-3.evennode.com": 1, + "eu-4.evennode.com": 1, + "eu-central-1.elasticbeanstalk.com": 1, + "eu-west-1.elasticbeanstalk.com": 1, + "eu-west-2.elasticbeanstalk.com": 1, + "eu-west-3.elasticbeanstalk.com": 1, + "eu.ax": 1, + "eu.com": 1, + "eu.encoway.cloud": 1, + "eu.int": 1, + "eu.meteorapp.com": 1, + "eu.ngrok.io": 1, + "eu.org": 1, + "eu.platform.sh": 1, + "eu.pythonanywhere.com": 1, + "eun.eg": 1, + "eurodir.ru": 1, + "eurovision": 1, + "eus": 1, + "evenassi.no": 1, + "evenes.no": 1, + "events": 1, + "evenášši.no": 1, + "evje-og-hornnes.no": 1, + "exchange": 1, + "exchange.aero": 1, + "exnet.su": 1, + "expert": 1, + "experts-comptables.fr": 1, + "exposed": 1, + "express": 1, + "express.aero": 1, + "extraspace": 1, + "ezproxy.kuleuven.be": 1, + "f.bg": 1, + "f.se": 1, + "fage": 1, + "fail": 1, + "fairwinds": 1, + "faith": 1, + "fakefur.jp": 1, + "fam.pk": 1, + "family": 1, + "familyds.com": 1, + "familyds.net": 1, + "familyds.org": 1, + "fan": 1, + "fans": 1, + "fantasyleague.cc": 1, + "far.br": 1, + "farm": 1, + "farmers": 1, + "farsund.no": 1, + "fashion": 1, + "fashionstore.jp": 1, + "fast": 1, + "fastly-edge.com": 1, + "fastly-terrarium.com": 1, + "fastlylb.net": 1, + "faststacks.net": 1, + "fastvps-server.com": 1, + "fastvps.host": 1, + "fastvps.site": 1, + "fauske.no": 1, + "fbx-os.fr": 1, + "fbxos.fr": 1, + "fc.it": 1, + "fe.it": 1, + "fed.us": 1, + "federation.aero": 1, + "fedex": 1, + "fedje.no": 1, + "fedorainfracloud.org": 1, + "fedorapeople.org": 1, + "feedback": 1, + "feira.br": 1, + "fem.jp": 1, + "fentiger.mythic-beasts.com": 1, + "fermo.it": 1, + "ferrara.it": 1, + "ferrari": 1, + "ferrero": 1, + "feste-ip.net": 1, + "fet.no": 1, + "fetsund.no": 1, + "fg.it": 1, + "fh-muenster.io": 1, + "fh.se": 1, + "fhs.no": 1, + "fhsk.se": 1, + "fhv.se": 1, + "fi": 1, + "fi.cloudplatform.fi": 1, + "fi.cr": 1, + "fi.eu.org": 1, + "fi.it": 1, + "fidelity": 1, + "fido": 1, + "fie.ee": 1, + "filegear-au.me": 1, + "filegear-de.me": 1, + "filegear-gb.me": 1, + "filegear-ie.me": 1, + "filegear-jp.me": 1, + "filegear-sg.me": 1, + "filegear.me": 1, + "film": 1, + "film.hu": 1, + "fin.ci": 1, + "fin.ec": 1, + "fin.tn": 1, + "final": 1, + "finance": 1, + "financial": 1, + "finnoy.no": 1, + "finnøy.no": 1, + "fire": 1, + "firebaseapp.com": 1, + "firenze.it": 1, + "firestone": 1, + "firewall-gateway.com": 1, + "firewall-gateway.de": 1, + "firewall-gateway.net": 1, + "firewalledreplit.co": 1, + "fireweb.app": 1, + "firm.co": 1, + "firm.dk": 1, + "firm.ht": 1, + "firm.in": 1, + "firm.nf": 1, + "firm.ng": 1, + "firm.ro": 1, + "firm.ve": 1, + "firmdale": 1, + "fish": 1, + "fishing": 1, + "fit": 1, + "fitjar.no": 1, + "fitness": 1, + "fj": 1, + "fj.cn": 1, + "fjaler.no": 1, + "fjell.no": 1, + "fl.us": 1, + "fla.no": 1, + "flakstad.no": 1, + "flap.id": 1, + "flatanger.no": 1, + "fldrv.com": 1, + "flekkefjord.no": 1, + "flesberg.no": 1, + "flickr": 1, + "flier.jp": 1, + "flight.aero": 1, + "flights": 1, + "flir": 1, + "flog.br": 1, + "flop.jp": 1, + "floppy.jp": 1, + "flora.no": 1, + "florence.it": 1, + "floripa.br": 1, + "florist": 1, + "floro.no": 1, + "florø.no": 1, + "flowers": 1, + "flt.cloud.muni.cz": 1, + "fly": 1, + "fly.dev": 1, + "flynnhosting.net": 1, + "flå.no": 1, + "fm": 1, + "fm.br": 1, + "fm.it": 1, + "fm.no": 1, + "fnc.fr-par.scw.cloud": 1, + "fnd.br": 1, + "fnwk.site": 1, + "fo": 1, + "foggia.it": 1, + "folionetwork.site": 1, + "folkebibl.no": 1, + "folldal.no": 1, + "foo": 1, + "food": 1, + "fool.jp": 1, + "football": 1, + "for-better.biz": 1, + "for-more.biz": 1, + "for-our.info": 1, + "for-some.biz": 1, + "for-the.biz": 1, + "ford": 1, + "forde.no": 1, + "forex": 1, + "forgeblocks.com": 1, + "forgot.her.name": 1, + "forgot.his.name": 1, + "forli-cesena.it": 1, + "forlicesena.it": 1, + "forlì-cesena.it": 1, + "forlìcesena.it": 1, + "forsale": 1, + "forsand.no": 1, + "fortal.br": 1, + "forte.id": 1, + "forum": 1, + "forum.hu": 1, + "forumz.info": 1, + "fosnes.no": 1, + "fot.br": 1, + "foundation": 1, + "fox": 1, + "foz.br": 1, + "fr": 1, + "fr-1.paas.massivegrid.net": 1, + "fr-par-1.baremetal.scw.cloud": 1, + "fr-par-2.baremetal.scw.cloud": 1, + "fr.eu.org": 1, + "fr.it": 1, + "fra1-de.cloudjiffy.net": 1, + "framer.app": 1, + "framer.media": 1, + "framer.photos": 1, + "framer.website": 1, + "framer.wiki": 1, + "framercanvas.com": 1, + "frana.no": 1, + "fredrikstad.no": 1, + "free": 1, + "free.hr": 1, + "freebox-os.com": 1, + "freebox-os.fr": 1, + "freeboxos.com": 1, + "freeboxos.fr": 1, + "freeddns.org": 1, + "freeddns.us": 1, + "freedesktop.org": 1, + "freemyip.com": 1, + "freesite.host": 1, + "freetls.fastly.net": 1, + "frei.no": 1, + "frenchkiss.jp": 1, + "fresenius": 1, + "friuli-v-giulia.it": 1, + "friuli-ve-giulia.it": 1, + "friuli-vegiulia.it": 1, + "friuli-venezia-giulia.it": 1, + "friuli-veneziagiulia.it": 1, + "friuli-vgiulia.it": 1, + "friuliv-giulia.it": 1, + "friulive-giulia.it": 1, + "friulivegiulia.it": 1, + "friulivenezia-giulia.it": 1, + "friuliveneziagiulia.it": 1, + "friulivgiulia.it": 1, + "frl": 1, + "frogans": 1, + "frogn.no": 1, + "froland.no": 1, + "from-ak.com": 1, + "from-al.com": 1, + "from-ar.com": 1, + "from-az.net": 1, + "from-ca.com": 1, + "from-co.net": 1, + "from-ct.com": 1, + "from-dc.com": 1, + "from-de.com": 1, + "from-fl.com": 1, + "from-ga.com": 1, + "from-hi.com": 1, + "from-ia.com": 1, + "from-id.com": 1, + "from-il.com": 1, + "from-in.com": 1, + "from-ks.com": 1, + "from-ky.com": 1, + "from-la.net": 1, + "from-ma.com": 1, + "from-md.com": 1, + "from-me.org": 1, + "from-mi.com": 1, + "from-mn.com": 1, + "from-mo.com": 1, + "from-ms.com": 1, + "from-mt.com": 1, + "from-nc.com": 1, + "from-nd.com": 1, + "from-ne.com": 1, + "from-nh.com": 1, + "from-nj.com": 1, + "from-nm.com": 1, + "from-nv.com": 1, + "from-ny.net": 1, + "from-oh.com": 1, + "from-ok.com": 1, + "from-or.com": 1, + "from-pa.com": 1, + "from-pr.com": 1, + "from-ri.com": 1, + "from-sc.com": 1, + "from-sd.com": 1, + "from-tn.com": 1, + "from-tx.com": 1, + "from-ut.com": 1, + "from-va.com": 1, + "from-vt.com": 1, + "from-wa.com": 1, + "from-wi.com": 1, + "from-wv.com": 1, + "from-wy.com": 1, + "from.hr": 1, + "from.tv": 1, + "frontdoor": 1, + "frontier": 1, + "frosinone.it": 1, + "frosta.no": 1, + "froya.no": 1, + "fræna.no": 1, + "frøya.no": 1, + "fst.br": 1, + "ftpaccess.cc": 1, + "ftr": 1, + "fuchu.hiroshima.jp": 1, + "fuchu.tokyo.jp": 1, + "fuchu.toyama.jp": 1, + "fudai.iwate.jp": 1, + "fuefuki.yamanashi.jp": 1, + "fuel.aero": 1, + "fuettertdasnetz.de": 1, + "fuji.shizuoka.jp": 1, + "fujieda.shizuoka.jp": 1, + "fujiidera.osaka.jp": 1, + "fujikawa.shizuoka.jp": 1, + "fujikawa.yamanashi.jp": 1, + "fujikawaguchiko.yamanashi.jp": 1, + "fujimi.nagano.jp": 1, + "fujimi.saitama.jp": 1, + "fujimino.saitama.jp": 1, + "fujinomiya.shizuoka.jp": 1, + "fujioka.gunma.jp": 1, + "fujisato.akita.jp": 1, + "fujisawa.iwate.jp": 1, + "fujisawa.kanagawa.jp": 1, + "fujishiro.ibaraki.jp": 1, + "fujitsu": 1, + "fujiyoshida.yamanashi.jp": 1, + "fukagawa.hokkaido.jp": 1, + "fukaya.saitama.jp": 1, + "fukuchi.fukuoka.jp": 1, + "fukuchiyama.kyoto.jp": 1, + "fukudomi.saga.jp": 1, + "fukui.fukui.jp": 1, + "fukui.jp": 1, + "fukumitsu.toyama.jp": 1, + "fukuoka.jp": 1, + "fukuroi.shizuoka.jp": 1, + "fukusaki.hyogo.jp": 1, + "fukushima.fukushima.jp": 1, + "fukushima.hokkaido.jp": 1, + "fukushima.jp": 1, + "fukuyama.hiroshima.jp": 1, + "fun": 1, + "funabashi.chiba.jp": 1, + "funagata.yamagata.jp": 1, + "funahashi.toyama.jp": 1, + "functions.fnc.fr-par.scw.cloud": 1, + "fund": 1, + "fuoisku.no": 1, + "fuossko.no": 1, + "furano.hokkaido.jp": 1, + "furniture": 1, + "furubira.hokkaido.jp": 1, + "furudono.fukushima.jp": 1, + "furukawa.miyagi.jp": 1, + "fusa.no": 1, + "fuso.aichi.jp": 1, + "fussa.tokyo.jp": 1, + "futaba.fukushima.jp": 1, + "futbol": 1, + "futsu.nagasaki.jp": 1, + "futtsu.chiba.jp": 1, + "futurehosting.at": 1, + "futuremailing.at": 1, + "fvg.it": 1, + "fyi": 1, + "fylkesbibl.no": 1, + "fyresdal.no": 1, + "førde.no": 1, + "g.bg": 1, + "g.se": 1, + "g.vbrplsbx.io": 1, + "g12.br": 1, + "ga": 1, + "ga.us": 1, + "gaivuotna.no": 1, + "gal": 1, + "gallery": 1, + "gallo": 1, + "gallup": 1, + "galsa.no": 1, + "gamagori.aichi.jp": 1, + "game": 1, + "game-host.org": 1, + "game-server.cc": 1, + "game.tw": 1, + "games": 1, + "games.hu": 1, + "gamo.shiga.jp": 1, + "gamvik.no": 1, + "gangaviika.no": 1, + "gangwon.kr": 1, + "gap": 1, + "garden": 1, + "gaular.no": 1, + "gausdal.no": 1, + "gay": 1, + "gb": 1, + "gb.net": 1, + "gbiz": 1, + "gc.ca": 1, + "gd": 1, + "gd.cn": 1, + "gda.pl": 1, + "gdansk.pl": 1, + "gdn": 1, + "gdynia.pl": 1, + "ge": 1, + "ge.it": 1, + "gea": 1, + "geek.nz": 1, + "geekgalaxy.com": 1, + "gehirn.ne.jp": 1, + "geisei.kochi.jp": 1, + "gen.in": 1, + "gen.mi.us": 1, + "gen.ng": 1, + "gen.nz": 1, + "gen.tr": 1, + "genkai.saga.jp": 1, + "genoa.it": 1, + "genova.it": 1, + "gent": 1, + "gentapps.com": 1, + "genting": 1, + "gentlentapis.com": 1, + "geo.br": 1, + "geometre-expert.fr": 1, + "george": 1, + "georgia.su": 1, + "getmyip.com": 1, + "gets-it.net": 1, + "gf": 1, + "gg": 1, + "gg.ax": 1, + "ggee": 1, + "ggf.br": 1, + "gh": 1, + "ghost.io": 1, + "gi": 1, + "gialai.vn": 1, + "giehtavuoatna.no": 1, + "gift": 1, + "gifts": 1, + "gifu.gifu.jp": 1, + "gifu.jp": 1, + "giize.com": 1, + "gildeskal.no": 1, + "gildeskål.no": 1, + "ginan.gifu.jp": 1, + "ginowan.okinawa.jp": 1, + "ginoza.okinawa.jp": 1, + "girlfriend.jp": 1, + "girly.jp": 1, + "giske.no": 1, + "git-pages.rit.edu": 1, + "git-repos.de": 1, + "gitapp.si": 1, + "github.io": 1, + "githubpreview.dev": 1, + "githubusercontent.com": 1, + "gitlab.io": 1, + "gitpage.si": 1, + "gives": 1, + "giving": 1, + "gjemnes.no": 1, + "gjerdrum.no": 1, + "gjerstad.no": 1, + "gjesdal.no": 1, + "gjovik.no": 1, + "gjøvik.no": 1, + "gl": 1, + "glass": 1, + "gle": 1, + "gleeze.com": 1, + "gliding.aero": 1, + "glitch.me": 1, + "gliwice.pl": 1, + "global": 1, + "global.prod.fastly.net": 1, + "global.ssl.fastly.net": 1, + "globo": 1, + "glogow.pl": 1, + "gloomy.jp": 1, + "gloppen.no": 1, + "glug.org.uk": 1, + "gm": 1, + "gmail": 1, + "gmbh": 1, + "gmina.pl": 1, + "gmo": 1, + "gmx": 1, + "gn": 1, + "gniezno.pl": 1, + "go.ci": 1, + "go.cr": 1, + "go.dyndns.org": 1, + "go.gov.br": 1, + "go.id": 1, + "go.it": 1, + "go.jp": 1, + "go.ke": 1, + "go.kr": 1, + "go.leg.br": 1, + "go.pw": 1, + "go.th": 1, + "go.tj": 1, + "go.tz": 1, + "go.ug": 1, + "gob.ar": 1, + "gob.bo": 1, + "gob.cl": 1, + "gob.do": 1, + "gob.ec": 1, + "gob.es": 1, + "gob.gt": 1, + "gob.hn": 1, + "gob.mx": 1, + "gob.ni": 1, + "gob.pa": 1, + "gob.pe": 1, + "gob.pk": 1, + "gob.sv": 1, + "gob.ve": 1, + "gobo.wakayama.jp": 1, + "godaddy": 1, + "godo.gifu.jp": 1, + "goiania.br": 1, + "goip.de": 1, + "gojome.akita.jp": 1, + "gok.pk": 1, + "gokase.miyazaki.jp": 1, + "gol.no": 1, + "gold": 1, + "goldpoint": 1, + "golf": 1, + "golffan.us": 1, + "gon.pk": 1, + "gonna.jp": 1, + "gonohe.aomori.jp": 1, + "goo": 1, + "goodyear": 1, + "goog": 1, + "google": 1, + "googleapis.com": 1, + "googlecode.com": 1, + "gop": 1, + "gop.pk": 1, + "gorizia.it": 1, + "gorlice.pl": 1, + "gos.pk": 1, + "gose.nara.jp": 1, + "gosen.niigata.jp": 1, + "goshiki.hyogo.jp": 1, + "got": 1, + "gotdns.ch": 1, + "gotdns.com": 1, + "gotdns.org": 1, + "gotemba.shizuoka.jp": 1, + "goto.nagasaki.jp": 1, + "gotpantheon.com": 1, + "gotsu.shimane.jp": 1, + "goupile.fr": 1, + "gouv.ci": 1, + "gouv.fr": 1, + "gouv.ht": 1, + "gouv.km": 1, + "gouv.ml": 1, + "gouv.sn": 1, + "gov": 1, + "gov.ac": 1, + "gov.ae": 1, + "gov.af": 1, + "gov.al": 1, + "gov.ar": 1, + "gov.as": 1, + "gov.au": 1, + "gov.az": 1, + "gov.ba": 1, + "gov.bb": 1, + "gov.bf": 1, + "gov.bh": 1, + "gov.bm": 1, + "gov.bn": 1, + "gov.br": 1, + "gov.bs": 1, + "gov.bt": 1, + "gov.by": 1, + "gov.bz": 1, + "gov.cd": 1, + "gov.cl": 1, + "gov.cm": 1, + "gov.cn": 1, + "gov.co": 1, + "gov.cu": 1, + "gov.cx": 1, + "gov.cy": 1, + "gov.dm": 1, + "gov.do": 1, + "gov.dz": 1, + "gov.ec": 1, + "gov.ee": 1, + "gov.eg": 1, + "gov.et": 1, + "gov.fj": 1, + "gov.gd": 1, + "gov.ge": 1, + "gov.gh": 1, + "gov.gi": 1, + "gov.gn": 1, + "gov.gr": 1, + "gov.gu": 1, + "gov.gy": 1, + "gov.hk": 1, + "gov.ie": 1, + "gov.il": 1, + "gov.in": 1, + "gov.iq": 1, + "gov.ir": 1, + "gov.is": 1, + "gov.it": 1, + "gov.jo": 1, + "gov.kg": 1, + "gov.ki": 1, + "gov.km": 1, + "gov.kn": 1, + "gov.kp": 1, + "gov.kw": 1, + "gov.kz": 1, + "gov.la": 1, + "gov.lb": 1, + "gov.lc": 1, + "gov.lk": 1, + "gov.lr": 1, + "gov.ls": 1, + "gov.lt": 1, + "gov.lv": 1, + "gov.ly": 1, + "gov.ma": 1, + "gov.me": 1, + "gov.mg": 1, + "gov.mk": 1, + "gov.ml": 1, + "gov.mn": 1, + "gov.mo": 1, + "gov.mr": 1, + "gov.ms": 1, + "gov.mu": 1, + "gov.mv": 1, + "gov.mw": 1, + "gov.my": 1, + "gov.mz": 1, + "gov.nc.tr": 1, + "gov.ng": 1, + "gov.nl": 1, + "gov.nr": 1, + "gov.om": 1, + "gov.ph": 1, + "gov.pk": 1, + "gov.pl": 1, + "gov.pn": 1, + "gov.pr": 1, + "gov.ps": 1, + "gov.pt": 1, + "gov.py": 1, + "gov.qa": 1, + "gov.rs": 1, + "gov.ru": 1, + "gov.rw": 1, + "gov.sa": 1, + "gov.sb": 1, + "gov.sc": 1, + "gov.scot": 1, + "gov.sd": 1, + "gov.sg": 1, + "gov.sh": 1, + "gov.sl": 1, + "gov.so": 1, + "gov.ss": 1, + "gov.sx": 1, + "gov.sy": 1, + "gov.tj": 1, + "gov.tl": 1, + "gov.tm": 1, + "gov.tn": 1, + "gov.to": 1, + "gov.tr": 1, + "gov.tt": 1, + "gov.tw": 1, + "gov.ua": 1, + "gov.uk": 1, + "gov.vc": 1, + "gov.ve": 1, + "gov.vn": 1, + "gov.ws": 1, + "gov.ye": 1, + "gov.za": 1, + "gov.zm": 1, + "gov.zw": 1, + "government.aero": 1, + "govt.nz": 1, + "gp": 1, + "gq": 1, + "gr": 1, + "gr.com": 1, + "gr.eu.org": 1, + "gr.it": 1, + "gr.jp": 1, + "grainger": 1, + "grajewo.pl": 1, + "gran.no": 1, + "grane.no": 1, + "granvin.no": 1, + "graphics": 1, + "graphox.us": 1, + "gratangen.no": 1, + "gratis": 1, + "greater.jp": 1, + "green": 1, + "greta.fr": 1, + "grimstad.no": 1, + "gripe": 1, + "griw.gov.pl": 1, + "grocery": 1, + "groks-the.info": 1, + "groks-this.info": 1, + "grondar.za": 1, + "grong.no": 1, + "grosseto.it": 1, + "groundhandling.aero": 1, + "group": 1, + "group.aero": 1, + "grozny.ru": 1, + "grozny.su": 1, + "grp.lk": 1, + "gru.br": 1, + "grue.no": 1, + "gs": 1, + "gs.aa.no": 1, + "gs.ah.no": 1, + "gs.bu.no": 1, + "gs.cn": 1, + "gs.fm.no": 1, + "gs.hl.no": 1, + "gs.hm.no": 1, + "gs.jan-mayen.no": 1, + "gs.mr.no": 1, + "gs.nl.no": 1, + "gs.nt.no": 1, + "gs.of.no": 1, + "gs.ol.no": 1, + "gs.oslo.no": 1, + "gs.rl.no": 1, + "gs.sf.no": 1, + "gs.st.no": 1, + "gs.svalbard.no": 1, + "gs.tm.no": 1, + "gs.tr.no": 1, + "gs.va.no": 1, + "gs.vf.no": 1, + "gsj.bz": 1, + "gsm.pl": 1, + "gt": 1, + "gu": 1, + "gu.us": 1, + "guam.gu": 1, + "guardian": 1, + "gub.uy": 1, + "gucci": 1, + "guge": 1, + "guide": 1, + "guitars": 1, + "gujarat.in": 1, + "gujo.gifu.jp": 1, + "gulen.no": 1, + "gunma.jp": 1, + "guovdageaidnu.no": 1, + "guru": 1, + "gushikami.okinawa.jp": 1, + "gv.ao": 1, + "gv.at": 1, + "gv.vc": 1, + "gw": 1, + "gwangju.kr": 1, + "gx.cn": 1, + "gy": 1, + "gyeongbuk.kr": 1, + "gyeonggi.kr": 1, + "gyeongnam.kr": 1, + "gyokuto.kumamoto.jp": 1, + "gz.cn": 1, + "gáivuotna.no": 1, + "gálsá.no": 1, + "gáŋgaviika.no": 1, + "günstigbestellen.de": 1, + "günstigliefern.de": 1, + "h.bg": 1, + "h.se": 1, + "ha.cn": 1, + "ha.no": 1, + "habikino.osaka.jp": 1, + "habmer.no": 1, + "haboro.hokkaido.jp": 1, + "hacca.jp": 1, + "hachijo.tokyo.jp": 1, + "hachinohe.aomori.jp": 1, + "hachioji.tokyo.jp": 1, + "hachirogata.akita.jp": 1, + "hadano.kanagawa.jp": 1, + "hadsel.no": 1, + "haebaru.okinawa.jp": 1, + "haga.tochigi.jp": 1, + "hagebostad.no": 1, + "hagi.yamaguchi.jp": 1, + "hagiang.vn": 1, + "haibara.shizuoka.jp": 1, + "haiduong.vn": 1, + "haiphong.vn": 1, + "hair": 1, + "hakata.fukuoka.jp": 1, + "hakodate.hokkaido.jp": 1, + "hakone.kanagawa.jp": 1, + "hakuba.nagano.jp": 1, + "hakui.ishikawa.jp": 1, + "hakusan.ishikawa.jp": 1, + "halden.no": 1, + "half.host": 1, + "halfmoon.jp": 1, + "halsa.no": 1, + "ham-radio-op.net": 1, + "hamada.shimane.jp": 1, + "hamamatsu.shizuoka.jp": 1, + "hamar.no": 1, + "hamaroy.no": 1, + "hamatama.saga.jp": 1, + "hamatonbetsu.hokkaido.jp": 1, + "hamburg": 1, + "hammarfeasta.no": 1, + "hammerfest.no": 1, + "hamura.tokyo.jp": 1, + "hanam.vn": 1, + "hanamaki.iwate.jp": 1, + "hanamigawa.chiba.jp": 1, + "hanawa.fukushima.jp": 1, + "handa.aichi.jp": 1, + "handcrafted.jp": 1, + "hanggliding.aero": 1, + "hangout": 1, + "hannan.osaka.jp": 1, + "hanno.saitama.jp": 1, + "hanoi.vn": 1, + "hanyu.saitama.jp": 1, + "hapmir.no": 1, + "happou.akita.jp": 1, + "hara.nagano.jp": 1, + "haram.no": 1, + "hareid.no": 1, + "harima.hyogo.jp": 1, + "harstad.no": 1, + "hasama.oita.jp": 1, + "hasami.nagasaki.jp": 1, + "hashbang.sh": 1, + "hashikami.aomori.jp": 1, + "hashima.gifu.jp": 1, + "hashimoto.wakayama.jp": 1, + "hasuda.saitama.jp": 1, + "hasura-app.io": 1, + "hasura.app": 1, + "hasvik.no": 1, + "hatinh.vn": 1, + "hatogaya.saitama.jp": 1, + "hatoyama.saitama.jp": 1, + "hatsukaichi.hiroshima.jp": 1, + "hattfjelldal.no": 1, + "haugesund.no": 1, + "haugiang.vn": 1, + "haus": 1, + "hayakawa.yamanashi.jp": 1, + "hayashima.okayama.jp": 1, + "hazu.aichi.jp": 1, + "hb.cldmail.ru": 1, + "hb.cn": 1, + "hbo": 1, + "hdfc": 1, + "hdfcbank": 1, + "he.cn": 1, + "health": 1, + "health-carereform.com": 1, + "health.nz": 1, + "health.vn": 1, + "healthcare": 1, + "heavy.jp": 1, + "heguri.nara.jp": 1, + "hekinan.aichi.jp": 1, + "help": 1, + "helsinki": 1, + "hemne.no": 1, + "hemnes.no": 1, + "hemsedal.no": 1, + "hepforge.org": 1, + "her.jp": 1, + "herad.no": 1, + "here": 1, + "here-for-more.info": 1, + "hermes": 1, + "herokuapp.com": 1, + "herokussl.com": 1, + "heroy.more-og-romsdal.no": 1, + "heroy.nordland.no": 1, + "herøy.møre-og-romsdal.no": 1, + "herøy.nordland.no": 1, + "heteml.net": 1, + "hi.cn": 1, + "hi.us": 1, + "hicam.net": 1, + "hichiso.gifu.jp": 1, + "hida.gifu.jp": 1, + "hidaka.hokkaido.jp": 1, + "hidaka.kochi.jp": 1, + "hidaka.saitama.jp": 1, + "hidaka.wakayama.jp": 1, + "higashi.fukuoka.jp": 1, + "higashi.fukushima.jp": 1, + "higashi.okinawa.jp": 1, + "higashiagatsuma.gunma.jp": 1, + "higashichichibu.saitama.jp": 1, + "higashihiroshima.hiroshima.jp": 1, + "higashiizu.shizuoka.jp": 1, + "higashiizumo.shimane.jp": 1, + "higashikagawa.kagawa.jp": 1, + "higashikagura.hokkaido.jp": 1, + "higashikawa.hokkaido.jp": 1, + "higashikurume.tokyo.jp": 1, + "higashimatsushima.miyagi.jp": 1, + "higashimatsuyama.saitama.jp": 1, + "higashimurayama.tokyo.jp": 1, + "higashinaruse.akita.jp": 1, + "higashine.yamagata.jp": 1, + "higashiomi.shiga.jp": 1, + "higashiosaka.osaka.jp": 1, + "higashishirakawa.gifu.jp": 1, + "higashisumiyoshi.osaka.jp": 1, + "higashitsuno.kochi.jp": 1, + "higashiura.aichi.jp": 1, + "higashiyama.kyoto.jp": 1, + "higashiyamato.tokyo.jp": 1, + "higashiyodogawa.osaka.jp": 1, + "higashiyoshino.nara.jp": 1, + "hiho.jp": 1, + "hiji.oita.jp": 1, + "hikari.yamaguchi.jp": 1, + "hikawa.shimane.jp": 1, + "hikimi.shimane.jp": 1, + "hikone.shiga.jp": 1, + "himeji.hyogo.jp": 1, + "himeshima.oita.jp": 1, + "himi.toyama.jp": 1, + "hino.tokyo.jp": 1, + "hino.tottori.jp": 1, + "hinode.tokyo.jp": 1, + "hinohara.tokyo.jp": 1, + "hioki.kagoshima.jp": 1, + "hiphop": 1, + "hippy.jp": 1, + "hirado.nagasaki.jp": 1, + "hiraizumi.iwate.jp": 1, + "hirakata.osaka.jp": 1, + "hiranai.aomori.jp": 1, + "hirara.okinawa.jp": 1, + "hirata.fukushima.jp": 1, + "hiratsuka.kanagawa.jp": 1, + "hiraya.nagano.jp": 1, + "hirogawa.wakayama.jp": 1, + "hirokawa.fukuoka.jp": 1, + "hirono.fukushima.jp": 1, + "hirono.iwate.jp": 1, + "hiroo.hokkaido.jp": 1, + "hirosaki.aomori.jp": 1, + "hiroshima.jp": 1, + "hisamitsu": 1, + "hisayama.fukuoka.jp": 1, + "hita.oita.jp": 1, + "hitachi": 1, + "hitachi.ibaraki.jp": 1, + "hitachinaka.ibaraki.jp": 1, + "hitachiomiya.ibaraki.jp": 1, + "hitachiota.ibaraki.jp": 1, + "hitra.no": 1, + "hiv": 1, + "hizen.saga.jp": 1, + "hjartdal.no": 1, + "hjelmeland.no": 1, + "hk": 1, + "hk.cn": 1, + "hk.com": 1, + "hk.org": 1, + "hkt": 1, + "hl.cn": 1, + "hl.no": 1, + "hlx.live": 1, + "hlx.page": 1, + "hlx3.page": 1, + "hm": 1, + "hm.no": 1, + "hn": 1, + "hn.cn": 1, + "hoabinh.vn": 1, + "hobby-site.com": 1, + "hobby-site.org": 1, + "hobol.no": 1, + "hobøl.no": 1, + "hockey": 1, + "hof.no": 1, + "hofu.yamaguchi.jp": 1, + "hokkaido.jp": 1, + "hokksund.no": 1, + "hokuryu.hokkaido.jp": 1, + "hokuto.hokkaido.jp": 1, + "hokuto.yamanashi.jp": 1, + "hol.no": 1, + "holdings": 1, + "hole.no": 1, + "holiday": 1, + "holmestrand.no": 1, + "holtalen.no": 1, + "holtålen.no": 1, + "holy.jp": 1, + "home-webserver.de": 1, + "home.dyndns.org": 1, + "homebuilt.aero": 1, + "homedepot": 1, + "homedns.org": 1, + "homeftp.net": 1, + "homeftp.org": 1, + "homegoods": 1, + "homeip.net": 1, + "homelink.one": 1, + "homelinux.com": 1, + "homelinux.net": 1, + "homelinux.org": 1, + "homeoffice.gov.uk": 1, + "homes": 1, + "homesecuritymac.com": 1, + "homesecuritypc.com": 1, + "homesense": 1, + "homesklep.pl": 1, + "homeunix.com": 1, + "homeunix.net": 1, + "homeunix.org": 1, + "honai.ehime.jp": 1, + "honbetsu.hokkaido.jp": 1, + "honda": 1, + "honefoss.no": 1, + "hongo.hiroshima.jp": 1, + "honjo.akita.jp": 1, + "honjo.saitama.jp": 1, + "honjyo.akita.jp": 1, + "hoplix.shop": 1, + "hopto.me": 1, + "hopto.org": 1, + "hornindal.no": 1, + "horokanai.hokkaido.jp": 1, + "horonobe.hokkaido.jp": 1, + "horse": 1, + "horten.no": 1, + "hosp.uk": 1, + "hospital": 1, + "host": 1, + "hostedpi.com": 1, + "hosting": 1, + "hosting-cluster.nl": 1, + "hostyhosting.io": 1, + "hot": 1, + "hotel.hu": 1, + "hotel.lk": 1, + "hotel.tz": 1, + "hotels": 1, + "hotelwithflight.com": 1, + "hotmail": 1, + "house": 1, + "how": 1, + "hoyanger.no": 1, + "hoylandet.no": 1, + "hr": 1, + "hr.eu.org": 1, + "hra.health": 1, + "hs.kr": 1, + "hs.run": 1, + "hs.zone": 1, + "hsbc": 1, + "ht": 1, + "httpbin.org": 1, + "hu": 1, + "hu.com": 1, + "hu.eu.org": 1, + "hu.net": 1, + "hughes": 1, + "huissier-justice.fr": 1, + "hungry.jp": 1, + "hungyen.vn": 1, + "hurdal.no": 1, + "hurum.no": 1, + "hvaler.no": 1, + "hyatt": 1, + "hyllestad.no": 1, + "hyogo.jp": 1, + "hyuga.miyazaki.jp": 1, + "hyundai": 1, + "hzc.io": 1, + "hábmer.no": 1, + "hámmárfeasta.no": 1, + "hápmir.no": 1, + "häkkinen.fi": 1, + "hå.no": 1, + "hægebostad.no": 1, + "hønefoss.no": 1, + "høyanger.no": 1, + "høylandet.no": 1, + "i.bg": 1, + "i.ng": 1, + "i.ph": 1, + "i.se": 1, + "i234.me": 1, + "ia.us": 1, + "iamallama.com": 1, + "ibara.okayama.jp": 1, + "ibaraki.ibaraki.jp": 1, + "ibaraki.jp": 1, + "ibaraki.osaka.jp": 1, + "ibestad.no": 1, + "ibigawa.gifu.jp": 1, + "ibm": 1, + "ibxos.it": 1, + "ic.gov.pl": 1, + "icbc": 1, + "ice": 1, + "ichiba.tokushima.jp": 1, + "ichihara.chiba.jp": 1, + "ichikai.tochigi.jp": 1, + "ichikawa.chiba.jp": 1, + "ichikawa.hyogo.jp": 1, + "ichikawamisato.yamanashi.jp": 1, + "ichinohe.iwate.jp": 1, + "ichinomiya.aichi.jp": 1, + "ichinomiya.chiba.jp": 1, + "ichinoseki.iwate.jp": 1, + "icu": 1, + "icurus.jp": 1, + "id": 1, + "id.au": 1, + "id.firewalledreplit.co": 1, + "id.forgerock.io": 1, + "id.ir": 1, + "id.lv": 1, + "id.ly": 1, + "id.repl.co": 1, + "id.us": 1, + "id.vn": 1, + "ide.kyoto.jp": 1, + "idf.il": 1, + "idrett.no": 1, + "idv.hk": 1, + "idv.tw": 1, + "ie": 1, + "ie.eu.org": 1, + "ie.ua": 1, + "ieee": 1, + "if.ua": 1, + "ifm": 1, + "iglesias-carbonia.it": 1, + "iglesiascarbonia.it": 1, + "iheya.okinawa.jp": 1, + "iida.nagano.jp": 1, + "iide.yamagata.jp": 1, + "iijima.nagano.jp": 1, + "iitate.fukushima.jp": 1, + "iiyama.nagano.jp": 1, + "iizuka.fukuoka.jp": 1, + "iizuna.nagano.jp": 1, + "ikano": 1, + "ikaruga.nara.jp": 1, + "ikata.ehime.jp": 1, + "ikawa.akita.jp": 1, + "ikeda.fukui.jp": 1, + "ikeda.gifu.jp": 1, + "ikeda.hokkaido.jp": 1, + "ikeda.nagano.jp": 1, + "ikeda.osaka.jp": 1, + "iki.fi": 1, + "iki.nagasaki.jp": 1, + "ikoma.nara.jp": 1, + "ikusaka.nagano.jp": 1, + "il": 1, + "il.eu.org": 1, + "il.us": 1, + "ilawa.pl": 1, + "iliadboxos.it": 1, + "ilovecollege.info": 1, + "im": 1, + "im.it": 1, + "imabari.ehime.jp": 1, + "imakane.hokkaido.jp": 1, + "imamat": 1, + "imari.saga.jp": 1, + "imb.br": 1, + "imdb": 1, + "imizu.toyama.jp": 1, + "immo": 1, + "immobilien": 1, + "imperia.it": 1, + "impertrix.com": 1, + "impertrixcdn.com": 1, + "in": 1, + "in-addr.arpa": 1, + "in-berlin.de": 1, + "in-brb.de": 1, + "in-butter.de": 1, + "in-dsl.de": 1, + "in-dsl.net": 1, + "in-dsl.org": 1, + "in-the-band.net": 1, + "in-vpn.de": 1, + "in-vpn.net": 1, + "in-vpn.org": 1, + "in.eu.org": 1, + "in.na": 1, + "in.net": 1, + "in.ngrok.io": 1, + "in.ni": 1, + "in.rs": 1, + "in.th": 1, + "in.ua": 1, + "in.us": 1, + "ina.ibaraki.jp": 1, + "ina.nagano.jp": 1, + "ina.saitama.jp": 1, + "inabe.mie.jp": 1, + "inagawa.hyogo.jp": 1, + "inagi.tokyo.jp": 1, + "inami.toyama.jp": 1, + "inami.wakayama.jp": 1, + "inashiki.ibaraki.jp": 1, + "inatsuki.fukuoka.jp": 1, + "inawashiro.fukushima.jp": 1, + "inazawa.aichi.jp": 1, + "inc": 1, + "inc.hk": 1, + "incheon.kr": 1, + "ind.br": 1, + "ind.gt": 1, + "ind.in": 1, + "ind.kw": 1, + "ind.tn": 1, + "independent-commission.uk": 1, + "independent-inquest.uk": 1, + "independent-inquiry.uk": 1, + "independent-panel.uk": 1, + "independent-review.uk": 1, + "inderoy.no": 1, + "inderøy.no": 1, + "indie.porn": 1, + "indigena.bo": 1, + "industria.bo": 1, + "industries": 1, + "ine.kyoto.jp": 1, + "inf.br": 1, + "inf.cu": 1, + "inf.mk": 1, + "inf.ua": 1, + "infiniti": 1, + "info": 1, + "info.at": 1, + "info.au": 1, + "info.az": 1, + "info.bb": 1, + "info.bj": 1, + "info.bo": 1, + "info.co": 1, + "info.cx": 1, + "info.ec": 1, + "info.et": 1, + "info.fj": 1, + "info.gu": 1, + "info.ht": 1, + "info.hu": 1, + "info.in": 1, + "info.ke": 1, + "info.ki": 1, + "info.la": 1, + "info.ls": 1, + "info.mv": 1, + "info.na": 1, + "info.nf": 1, + "info.ni": 1, + "info.nr": 1, + "info.pk": 1, + "info.pl": 1, + "info.pr": 1, + "info.ro": 1, + "info.sd": 1, + "info.tn": 1, + "info.tr": 1, + "info.tt": 1, + "info.tz": 1, + "info.ve": 1, + "info.vn": 1, + "info.zm": 1, + "ing": 1, + "ing.pa": 1, + "ingatlan.hu": 1, + "ink": 1, + "ino.kochi.jp": 1, + "instance.datadetect.com": 1, + "instances.spawn.cc": 1, + "instantcloud.cn": 1, + "institute": 1, + "insurance": 1, + "insurance.aero": 1, + "insure": 1, + "int": 1, + "int.ar": 1, + "int.az": 1, + "int.bo": 1, + "int.ci": 1, + "int.co": 1, + "int.cv": 1, + "int.eu.org": 1, + "int.in": 1, + "int.is": 1, + "int.la": 1, + "int.lk": 1, + "int.mv": 1, + "int.mw": 1, + "int.ni": 1, + "int.pt": 1, + "int.ru": 1, + "int.tj": 1, + "int.tt": 1, + "int.ve": 1, + "int.vn": 1, + "international": 1, + "internet-dns.de": 1, + "internet.in": 1, + "intl.tn": 1, + "intuit": 1, + "inuyama.aichi.jp": 1, + "investments": 1, + "inzai.chiba.jp": 1, + "io": 1, + "io.in": 1, + "io.kg": 1, + "io.vn": 1, + "iobb.net": 1, + "iopsys.se": 1, + "ip.linodeusercontent.com": 1, + "ip6.arpa": 1, + "ipifony.net": 1, + "ipiranga": 1, + "iq": 1, + "ir": 1, + "iris.arpa": 1, + "irish": 1, + "iruma.saitama.jp": 1, + "is": 1, + "is-a-anarchist.com": 1, + "is-a-blogger.com": 1, + "is-a-bookkeeper.com": 1, + "is-a-bruinsfan.org": 1, + "is-a-bulls-fan.com": 1, + "is-a-candidate.org": 1, + "is-a-caterer.com": 1, + "is-a-celticsfan.org": 1, + "is-a-chef.com": 1, + "is-a-chef.net": 1, + "is-a-chef.org": 1, + "is-a-conservative.com": 1, + "is-a-cpa.com": 1, + "is-a-cubicle-slave.com": 1, + "is-a-democrat.com": 1, + "is-a-designer.com": 1, + "is-a-doctor.com": 1, + "is-a-financialadvisor.com": 1, + "is-a-geek.com": 1, + "is-a-geek.net": 1, + "is-a-geek.org": 1, + "is-a-green.com": 1, + "is-a-guru.com": 1, + "is-a-hard-worker.com": 1, + "is-a-hunter.com": 1, + "is-a-knight.org": 1, + "is-a-landscaper.com": 1, + "is-a-lawyer.com": 1, + "is-a-liberal.com": 1, + "is-a-libertarian.com": 1, + "is-a-linux-user.org": 1, + "is-a-llama.com": 1, + "is-a-musician.com": 1, + "is-a-nascarfan.com": 1, + "is-a-nurse.com": 1, + "is-a-painter.com": 1, + "is-a-patsfan.org": 1, + "is-a-personaltrainer.com": 1, + "is-a-photographer.com": 1, + "is-a-player.com": 1, + "is-a-republican.com": 1, + "is-a-rockstar.com": 1, + "is-a-socialist.com": 1, + "is-a-soxfan.org": 1, + "is-a-student.com": 1, + "is-a-teacher.com": 1, + "is-a-techie.com": 1, + "is-a-therapist.com": 1, + "is-an-accountant.com": 1, + "is-an-actor.com": 1, + "is-an-actress.com": 1, + "is-an-anarchist.com": 1, + "is-an-artist.com": 1, + "is-an-engineer.com": 1, + "is-an-entertainer.com": 1, + "is-by.us": 1, + "is-certified.com": 1, + "is-found.org": 1, + "is-gone.com": 1, + "is-into-anime.com": 1, + "is-into-cars.com": 1, + "is-into-cartoons.com": 1, + "is-into-games.com": 1, + "is-leet.com": 1, + "is-lost.org": 1, + "is-not-certified.com": 1, + "is-saved.org": 1, + "is-slick.com": 1, + "is-uberleet.com": 1, + "is-very-bad.org": 1, + "is-very-evil.org": 1, + "is-very-good.org": 1, + "is-very-nice.org": 1, + "is-very-sweet.org": 1, + "is-with-theband.com": 1, + "is.eu.org": 1, + "is.gov.pl": 1, + "is.it": 1, + "isa-geek.com": 1, + "isa-geek.net": 1, + "isa-geek.org": 1, + "isa-hockeynut.com": 1, + "isa.kagoshima.jp": 1, + "isa.us": 1, + "isahaya.nagasaki.jp": 1, + "ise.mie.jp": 1, + "isehara.kanagawa.jp": 1, + "isen.kagoshima.jp": 1, + "isernia.it": 1, + "iserv.dev": 1, + "iservschule.de": 1, + "isesaki.gunma.jp": 1, + "ishigaki.okinawa.jp": 1, + "ishikari.hokkaido.jp": 1, + "ishikawa.fukushima.jp": 1, + "ishikawa.jp": 1, + "ishikawa.okinawa.jp": 1, + "ishinomaki.miyagi.jp": 1, + "isla.pr": 1, + "ismaili": 1, + "isshiki.aichi.jp": 1, + "issmarterthanyou.com": 1, + "ist": 1, + "istanbul": 1, + "isteingeek.de": 1, + "istmein.de": 1, + "isumi.chiba.jp": 1, + "it": 1, + "it.ao": 1, + "it.com": 1, + "it.eu.org": 1, + "it1.eur.aruba.jenv-aruba.cloud": 1, + "it1.jenv-aruba.cloud": 1, + "itabashi.tokyo.jp": 1, + "itako.ibaraki.jp": 1, + "itakura.gunma.jp": 1, + "itami.hyogo.jp": 1, + "itano.tokushima.jp": 1, + "itau": 1, + "itayanagi.aomori.jp": 1, + "itcouldbewor.se": 1, + "itigo.jp": 1, + "ito.shizuoka.jp": 1, + "itoigawa.niigata.jp": 1, + "itoman.okinawa.jp": 1, + "its.me": 1, + "itv": 1, + "ivano-frankivsk.ua": 1, + "ivanovo.su": 1, + "iveland.no": 1, + "ivgu.no": 1, + "ivory.ne.jp": 1, + "iwade.wakayama.jp": 1, + "iwafune.tochigi.jp": 1, + "iwaizumi.iwate.jp": 1, + "iwaki.fukushima.jp": 1, + "iwakuni.yamaguchi.jp": 1, + "iwakura.aichi.jp": 1, + "iwama.ibaraki.jp": 1, + "iwamizawa.hokkaido.jp": 1, + "iwanai.hokkaido.jp": 1, + "iwanuma.miyagi.jp": 1, + "iwata.shizuoka.jp": 1, + "iwate.iwate.jp": 1, + "iwate.jp": 1, + "iwatsuki.saitama.jp": 1, + "iwi.nz": 1, + "iyo.ehime.jp": 1, + "iz.hr": 1, + "izena.okinawa.jp": 1, + "izu.shizuoka.jp": 1, + "izumi.kagoshima.jp": 1, + "izumi.osaka.jp": 1, + "izumiotsu.osaka.jp": 1, + "izumisano.osaka.jp": 1, + "izumizaki.fukushima.jp": 1, + "izumo.shimane.jp": 1, + "izumozaki.niigata.jp": 1, + "izunokuni.shizuoka.jp": 1, + "j.bg": 1, + "j.layershift.co.uk": 1, + "j.scaleforce.com.cy": 1, + "j.scaleforce.net": 1, + "jab.br": 1, + "jaguar": 1, + "jambyl.su": 1, + "jampa.br": 1, + "jan-mayen.no": 1, + "java": 1, + "jaworzno.pl": 1, + "jc.neen.it": 1, + "jcb": 1, + "jcloud-ver-jpc.ik-server.com": 1, + "jcloud.ik-server.com": 1, + "jcloud.kz": 1, + "jdevcloud.com": 1, + "jdf.br": 1, + "je": 1, + "jed.wafaicloud.com": 1, + "jeep": 1, + "jeez.jp": 1, + "jeju.kr": 1, + "jelastic.dogado.eu": 1, + "jelastic.regruhosting.ru": 1, + "jelastic.saveincloud.net": 1, + "jelastic.team": 1, + "jelastic.tsukaeru.net": 1, + "jele.cloud": 1, + "jele.club": 1, + "jele.host": 1, + "jele.io": 1, + "jele.site": 1, + "jelenia-gora.pl": 1, + "jellybean.jp": 1, + "jeonbuk.kr": 1, + "jeonnam.kr": 1, + "jessheim.no": 1, + "jetzt": 1, + "jevnaker.no": 1, + "jewelry": 1, + "jgora.pl": 1, + "jinsekikogen.hiroshima.jp": 1, + "jio": 1, + "jl.cn": 1, + "jll": 1, + "jls-sto1.elastx.net": 1, + "jls-sto2.elastx.net": 1, + "jls-sto3.elastx.net": 1, + "jmp": 1, + "jnj": 1, + "jo": 1, + "joboji.iwate.jp": 1, + "jobs": 1, + "jobs.tt": 1, + "joburg": 1, + "joetsu.niigata.jp": 1, + "jogasz.hu": 1, + "johana.toyama.jp": 1, + "joinville.br": 1, + "jolster.no": 1, + "jondal.no": 1, + "jor.br": 1, + "jorpeland.no": 1, + "joso.ibaraki.jp": 1, + "jot": 1, + "jotelulu.cloud": 1, + "journal.aero": 1, + "journalist.aero": 1, + "joy": 1, + "joyo.kyoto.jp": 1, + "jozi.biz": 1, + "jp": 1, + "jp.eu.org": 1, + "jp.kg": 1, + "jp.md": 1, + "jp.net": 1, + "jp.ngrok.io": 1, + "jpmorgan": 1, + "jpn.com": 1, + "jpn.org": 1, + "jprs": 1, + "js.cn": 1, + "js.org": 1, + "js.wpenginepowered.com": 1, + "ju.mp": 1, + "juegos": 1, + "juniper": 1, + "jur.pro": 1, + "jus.br": 1, + "jx.cn": 1, + "jølster.no": 1, + "jørpeland.no": 1, + "k.bg": 1, + "k.se": 1, + "k12.ak.us": 1, + "k12.al.us": 1, + "k12.ar.us": 1, + "k12.as.us": 1, + "k12.az.us": 1, + "k12.ca.us": 1, + "k12.co.us": 1, + "k12.ct.us": 1, + "k12.dc.us": 1, + "k12.de.us": 1, + "k12.ec": 1, + "k12.fl.us": 1, + "k12.ga.us": 1, + "k12.gu.us": 1, + "k12.ia.us": 1, + "k12.id.us": 1, + "k12.il": 1, + "k12.il.us": 1, + "k12.in.us": 1, + "k12.ks.us": 1, + "k12.ky.us": 1, + "k12.la.us": 1, + "k12.ma.us": 1, + "k12.md.us": 1, + "k12.me.us": 1, + "k12.mi.us": 1, + "k12.mn.us": 1, + "k12.mo.us": 1, + "k12.ms.us": 1, + "k12.mt.us": 1, + "k12.nc.us": 1, + "k12.ne.us": 1, + "k12.nh.us": 1, + "k12.nj.us": 1, + "k12.nm.us": 1, + "k12.nv.us": 1, + "k12.ny.us": 1, + "k12.oh.us": 1, + "k12.ok.us": 1, + "k12.or.us": 1, + "k12.pa.us": 1, + "k12.pr.us": 1, + "k12.sc.us": 1, + "k12.tn.us": 1, + "k12.tr": 1, + "k12.tx.us": 1, + "k12.ut.us": 1, + "k12.va.us": 1, + "k12.vi": 1, + "k12.vi.us": 1, + "k12.vt.us": 1, + "k12.wa.us": 1, + "k12.wi.us": 1, + "k12.wy.us": 1, + "k8s.fr-par.scw.cloud": 1, + "k8s.nl-ams.scw.cloud": 1, + "k8s.pl-waw.scw.cloud": 1, + "k8s.scw.cloud": 1, + "kaas.gg": 1, + "kadena.okinawa.jp": 1, + "kadogawa.miyazaki.jp": 1, + "kadoma.osaka.jp": 1, + "kafjord.no": 1, + "kaga.ishikawa.jp": 1, + "kagami.kochi.jp": 1, + "kagamiishi.fukushima.jp": 1, + "kagamino.okayama.jp": 1, + "kagawa.jp": 1, + "kagoshima.jp": 1, + "kagoshima.kagoshima.jp": 1, + "kaho.fukuoka.jp": 1, + "kahoku.ishikawa.jp": 1, + "kahoku.yamagata.jp": 1, + "kai.yamanashi.jp": 1, + "kainan.tokushima.jp": 1, + "kainan.wakayama.jp": 1, + "kaisei.kanagawa.jp": 1, + "kaita.hiroshima.jp": 1, + "kaizuka.osaka.jp": 1, + "kakamigahara.gifu.jp": 1, + "kakegawa.shizuoka.jp": 1, + "kakinoki.shimane.jp": 1, + "kakogawa.hyogo.jp": 1, + "kakuda.miyagi.jp": 1, + "kalisz.pl": 1, + "kalmykia.ru": 1, + "kalmykia.su": 1, + "kaluga.su": 1, + "kamagaya.chiba.jp": 1, + "kamaishi.iwate.jp": 1, + "kamakura.kanagawa.jp": 1, + "kameoka.kyoto.jp": 1, + "kameyama.mie.jp": 1, + "kami.kochi.jp": 1, + "kami.miyagi.jp": 1, + "kamiamakusa.kumamoto.jp": 1, + "kamifurano.hokkaido.jp": 1, + "kamigori.hyogo.jp": 1, + "kamiichi.toyama.jp": 1, + "kamiizumi.saitama.jp": 1, + "kamijima.ehime.jp": 1, + "kamikawa.hokkaido.jp": 1, + "kamikawa.hyogo.jp": 1, + "kamikawa.saitama.jp": 1, + "kamikitayama.nara.jp": 1, + "kamikoani.akita.jp": 1, + "kamimine.saga.jp": 1, + "kaminokawa.tochigi.jp": 1, + "kaminoyama.yamagata.jp": 1, + "kamioka.akita.jp": 1, + "kamisato.saitama.jp": 1, + "kamishihoro.hokkaido.jp": 1, + "kamisu.ibaraki.jp": 1, + "kamisunagawa.hokkaido.jp": 1, + "kamitonda.wakayama.jp": 1, + "kamitsue.oita.jp": 1, + "kamo.kyoto.jp": 1, + "kamo.niigata.jp": 1, + "kamoenai.hokkaido.jp": 1, + "kamogawa.chiba.jp": 1, + "kanagawa.jp": 1, + "kanan.osaka.jp": 1, + "kanazawa.ishikawa.jp": 1, + "kanegasaki.iwate.jp": 1, + "kaneyama.fukushima.jp": 1, + "kaneyama.yamagata.jp": 1, + "kani.gifu.jp": 1, + "kanie.aichi.jp": 1, + "kanmaki.nara.jp": 1, + "kanna.gunma.jp": 1, + "kannami.shizuoka.jp": 1, + "kanonji.kagawa.jp": 1, + "kanoya.kagoshima.jp": 1, + "kanra.gunma.jp": 1, + "kanuma.tochigi.jp": 1, + "kanzaki.saga.jp": 1, + "kapsi.fi": 1, + "karacol.su": 1, + "karaganda.su": 1, + "karasjohka.no": 1, + "karasjok.no": 1, + "karasuyama.tochigi.jp": 1, + "karatsu.saga.jp": 1, + "karelia.su": 1, + "kariwa.niigata.jp": 1, + "kariya.aichi.jp": 1, + "karlsoy.no": 1, + "karmoy.no": 1, + "karmøy.no": 1, + "karpacz.pl": 1, + "kartuzy.pl": 1, + "karuizawa.nagano.jp": 1, + "karumai.iwate.jp": 1, + "kasahara.gifu.jp": 1, + "kasai.hyogo.jp": 1, + "kasama.ibaraki.jp": 1, + "kasamatsu.gifu.jp": 1, + "kasaoka.okayama.jp": 1, + "kashiba.nara.jp": 1, + "kashihara.nara.jp": 1, + "kashima.ibaraki.jp": 1, + "kashima.saga.jp": 1, + "kashiwa.chiba.jp": 1, + "kashiwara.osaka.jp": 1, + "kashiwazaki.niigata.jp": 1, + "kasserver.com": 1, + "kasuga.fukuoka.jp": 1, + "kasuga.hyogo.jp": 1, + "kasugai.aichi.jp": 1, + "kasukabe.saitama.jp": 1, + "kasumigaura.ibaraki.jp": 1, + "kasuya.fukuoka.jp": 1, + "kaszuby.pl": 1, + "katagami.akita.jp": 1, + "katano.osaka.jp": 1, + "katashina.gunma.jp": 1, + "katori.chiba.jp": 1, + "katowice.pl": 1, + "katsuragi.nara.jp": 1, + "katsuragi.wakayama.jp": 1, + "katsushika.tokyo.jp": 1, + "katsuura.chiba.jp": 1, + "katsuyama.fukui.jp": 1, + "kaufen": 1, + "kautokeino.no": 1, + "kawaba.gunma.jp": 1, + "kawachinagano.osaka.jp": 1, + "kawagoe.mie.jp": 1, + "kawagoe.saitama.jp": 1, + "kawaguchi.saitama.jp": 1, + "kawahara.tottori.jp": 1, + "kawai.iwate.jp": 1, + "kawai.nara.jp": 1, + "kawaiishop.jp": 1, + "kawajima.saitama.jp": 1, + "kawakami.nagano.jp": 1, + "kawakami.nara.jp": 1, + "kawakita.ishikawa.jp": 1, + "kawamata.fukushima.jp": 1, + "kawaminami.miyazaki.jp": 1, + "kawanabe.kagoshima.jp": 1, + "kawanehon.shizuoka.jp": 1, + "kawanishi.hyogo.jp": 1, + "kawanishi.nara.jp": 1, + "kawanishi.yamagata.jp": 1, + "kawara.fukuoka.jp": 1, + "kawasaki.miyagi.jp": 1, + "kawatana.nagasaki.jp": 1, + "kawaue.gifu.jp": 1, + "kawazu.shizuoka.jp": 1, + "kayabe.hokkaido.jp": 1, + "kazimierz-dolny.pl": 1, + "kazo.saitama.jp": 1, + "kazuno.akita.jp": 1, + "kddi": 1, + "ke": 1, + "keisen.fukuoka.jp": 1, + "keliweb.cloud": 1, + "kembuchi.hokkaido.jp": 1, + "kep.tr": 1, + "kepno.pl": 1, + "kerryhotels": 1, + "kerrylogistics": 1, + "kerryproperties": 1, + "ketrzyn.pl": 1, + "keymachine.de": 1, + "kfh": 1, + "kg": 1, + "kg.kr": 1, + "kh.ua": 1, + "khakassia.su": 1, + "khanhhoa.vn": 1, + "kharkiv.ua": 1, + "kharkov.ua": 1, + "kherson.ua": 1, + "khmelnitskiy.ua": 1, + "khmelnytskyi.ua": 1, + "khplay.nl": 1, + "ki": 1, + "kia": 1, + "kibichuo.okayama.jp": 1, + "kicks-ass.net": 1, + "kicks-ass.org": 1, + "kids": 1, + "kids.us": 1, + "kiengiang.vn": 1, + "kiev.ua": 1, + "kiho.mie.jp": 1, + "kihoku.ehime.jp": 1, + "kijo.miyazaki.jp": 1, + "kikirara.jp": 1, + "kikonai.hokkaido.jp": 1, + "kikuchi.kumamoto.jp": 1, + "kikugawa.shizuoka.jp": 1, + "kilatiron.com": 1, + "kill.jp": 1, + "kilo.jp": 1, + "kim": 1, + "kimino.wakayama.jp": 1, + "kimitsu.chiba.jp": 1, + "kimobetsu.hokkaido.jp": 1, + "kin.okinawa.jp": 1, + "kinder": 1, + "kindle": 1, + "kinghost.net": 1, + "kinko.kagoshima.jp": 1, + "kinokawa.wakayama.jp": 1, + "kira.aichi.jp": 1, + "kirara.st": 1, + "kirkenes.no": 1, + "kirovograd.ua": 1, + "kiryu.gunma.jp": 1, + "kisarazu.chiba.jp": 1, + "kishiwada.osaka.jp": 1, + "kiso.nagano.jp": 1, + "kisofukushima.nagano.jp": 1, + "kisosaki.mie.jp": 1, + "kita.kyoto.jp": 1, + "kita.osaka.jp": 1, + "kita.tokyo.jp": 1, + "kitaaiki.nagano.jp": 1, + "kitaakita.akita.jp": 1, + "kitadaito.okinawa.jp": 1, + "kitagata.gifu.jp": 1, + "kitagata.saga.jp": 1, + "kitagawa.kochi.jp": 1, + "kitagawa.miyazaki.jp": 1, + "kitahata.saga.jp": 1, + "kitahiroshima.hokkaido.jp": 1, + "kitakami.iwate.jp": 1, + "kitakata.fukushima.jp": 1, + "kitakata.miyazaki.jp": 1, + "kitami.hokkaido.jp": 1, + "kitamoto.saitama.jp": 1, + "kitanakagusuku.okinawa.jp": 1, + "kitashiobara.fukushima.jp": 1, + "kitaura.miyazaki.jp": 1, + "kitayama.wakayama.jp": 1, + "kitchen": 1, + "kiwa.mie.jp": 1, + "kiwi": 1, + "kiwi.nz": 1, + "kiyama.saga.jp": 1, + "kiyokawa.kanagawa.jp": 1, + "kiyosato.hokkaido.jp": 1, + "kiyose.tokyo.jp": 1, + "kiyosu.aichi.jp": 1, + "kizu.kyoto.jp": 1, + "klabu.no": 1, + "klepp.no": 1, + "klodzko.pl": 1, + "klæbu.no": 1, + "km": 1, + "km.ua": 1, + "kmpsp.gov.pl": 1, + "kn": 1, + "knightpoint.systems": 1, + "knowsitall.info": 1, + "knx-server.net": 1, + "kobayashi.miyazaki.jp": 1, + "kobierzyce.pl": 1, + "kochi.jp": 1, + "kochi.kochi.jp": 1, + "kodaira.tokyo.jp": 1, + "koeln": 1, + "kofu.yamanashi.jp": 1, + "koga.fukuoka.jp": 1, + "koga.ibaraki.jp": 1, + "koganei.tokyo.jp": 1, + "koge.tottori.jp": 1, + "koka.shiga.jp": 1, + "kokonoe.oita.jp": 1, + "kokubunji.tokyo.jp": 1, + "kolobrzeg.pl": 1, + "komae.tokyo.jp": 1, + "komagane.nagano.jp": 1, + "komaki.aichi.jp": 1, + "komatsu": 1, + "komatsu.ishikawa.jp": 1, + "komatsushima.tokushima.jp": 1, + "komforb.se": 1, + "kommunalforbund.se": 1, + "kommune.no": 1, + "komono.mie.jp": 1, + "komoro.nagano.jp": 1, + "komvux.se": 1, + "konan.aichi.jp": 1, + "konan.shiga.jp": 1, + "kongsberg.no": 1, + "kongsvinger.no": 1, + "konin.pl": 1, + "konskowola.pl": 1, + "konsulat.gov.pl": 1, + "kontum.vn": 1, + "konyvelo.hu": 1, + "koobin.events": 1, + "koori.fukushima.jp": 1, + "kopervik.no": 1, + "koriyama.fukushima.jp": 1, + "koryo.nara.jp": 1, + "kosai.shizuoka.jp": 1, + "kosaka.akita.jp": 1, + "kosei.shiga.jp": 1, + "kosher": 1, + "koshigaya.saitama.jp": 1, + "koshimizu.hokkaido.jp": 1, + "koshu.yamanashi.jp": 1, + "kosuge.yamanashi.jp": 1, + "kota.aichi.jp": 1, + "koto.shiga.jp": 1, + "koto.tokyo.jp": 1, + "kotohira.kagawa.jp": 1, + "kotoura.tottori.jp": 1, + "kouhoku.saga.jp": 1, + "kounosu.saitama.jp": 1, + "kouyama.kagoshima.jp": 1, + "kouzushima.tokyo.jp": 1, + "koya.wakayama.jp": 1, + "koza.wakayama.jp": 1, + "kozagawa.wakayama.jp": 1, + "kozaki.chiba.jp": 1, + "kozow.com": 1, + "kp": 1, + "kpmg": 1, + "kpn": 1, + "kppsp.gov.pl": 1, + "kr": 1, + "kr.com": 1, + "kr.eu.org": 1, + "kr.it": 1, + "kr.ua": 1, + "kraanghke.no": 1, + "kragero.no": 1, + "kragerø.no": 1, + "krakow.pl": 1, + "krasnik.pl": 1, + "krasnodar.su": 1, + "krd": 1, + "kred": 1, + "krellian.net": 1, + "kristiansand.no": 1, + "kristiansund.no": 1, + "krodsherad.no": 1, + "krokstadelva.no": 1, + "kropyvnytskyi.ua": 1, + "krym.ua": 1, + "kråanghke.no": 1, + "krødsherad.no": 1, + "ks.ua": 1, + "ks.us": 1, + "ktistory.com": 1, + "kuchinotsu.nagasaki.jp": 1, + "kudamatsu.yamaguchi.jp": 1, + "kudoyama.wakayama.jp": 1, + "kui.hiroshima.jp": 1, + "kuji.iwate.jp": 1, + "kuju.oita.jp": 1, + "kujukuri.chiba.jp": 1, + "kuki.saitama.jp": 1, + "kuleuven.cloud": 1, + "kumagaya.saitama.jp": 1, + "kumakogen.ehime.jp": 1, + "kumamoto.jp": 1, + "kumamoto.kumamoto.jp": 1, + "kumano.hiroshima.jp": 1, + "kumano.mie.jp": 1, + "kumatori.osaka.jp": 1, + "kumejima.okinawa.jp": 1, + "kumenan.okayama.jp": 1, + "kumiyama.kyoto.jp": 1, + "kunigami.okinawa.jp": 1, + "kunimi.fukushima.jp": 1, + "kunisaki.oita.jp": 1, + "kunitachi.tokyo.jp": 1, + "kunitomi.miyazaki.jp": 1, + "kunneppu.hokkaido.jp": 1, + "kunohe.iwate.jp": 1, + "kuokgroup": 1, + "kurashiki.okayama.jp": 1, + "kurate.fukuoka.jp": 1, + "kure.hiroshima.jp": 1, + "kurgan.su": 1, + "kuriyama.hokkaido.jp": 1, + "kurobe.toyama.jp": 1, + "kurogi.fukuoka.jp": 1, + "kuroishi.aomori.jp": 1, + "kuroiso.tochigi.jp": 1, + "kuromatsunai.hokkaido.jp": 1, + "kuron.jp": 1, + "kurotaki.nara.jp": 1, + "kurume.fukuoka.jp": 1, + "kusatsu.gunma.jp": 1, + "kusatsu.shiga.jp": 1, + "kushima.miyazaki.jp": 1, + "kushimoto.wakayama.jp": 1, + "kushiro.hokkaido.jp": 1, + "kustanai.ru": 1, + "kustanai.su": 1, + "kusu.oita.jp": 1, + "kutchan.hokkaido.jp": 1, + "kutno.pl": 1, + "kuwana.mie.jp": 1, + "kuzumaki.iwate.jp": 1, + "kv.ua": 1, + "kvafjord.no": 1, + "kvalsund.no": 1, + "kvam.no": 1, + "kvanangen.no": 1, + "kvinesdal.no": 1, + "kvinnherad.no": 1, + "kviteseid.no": 1, + "kvitsoy.no": 1, + "kvitsøy.no": 1, + "kvæfjord.no": 1, + "kvænangen.no": 1, + "kw": 1, + "kwp.gov.pl": 1, + "kwpsp.gov.pl": 1, + "ky": 1, + "ky.us": 1, + "kyiv.ua": 1, + "kyonan.chiba.jp": 1, + "kyotamba.kyoto.jp": 1, + "kyotanabe.kyoto.jp": 1, + "kyotango.kyoto.jp": 1, + "kyoto": 1, + "kyoto.jp": 1, + "kyowa.akita.jp": 1, + "kyowa.hokkaido.jp": 1, + "kyuragi.saga.jp": 1, + "kz": 1, + "kárášjohka.no": 1, + "kåfjord.no": 1, + "l-o-g-i-n.de": 1, + "l.bg": 1, + "l.se": 1, + "la": 1, + "la-spezia.it": 1, + "la.us": 1, + "laakesvuemie.no": 1, + "lab.ms": 1, + "lacaixa": 1, + "ladesk.com": 1, + "lahppi.no": 1, + "laichau.vn": 1, + "lakas.hu": 1, + "lamborghini": 1, + "lamdong.vn": 1, + "lamer": 1, + "lanbib.se": 1, + "lancaster": 1, + "land": 1, + "land-4-sale.us": 1, + "landrover": 1, + "langevag.no": 1, + "langevåg.no": 1, + "langson.vn": 1, + "lanxess": 1, + "laocai.vn": 1, + "lapy.pl": 1, + "laquila.it": 1, + "lardal.no": 1, + "larvik.no": 1, + "lasalle": 1, + "laspezia.it": 1, + "lat": 1, + "latina.it": 1, + "latino": 1, + "latrobe": 1, + "lavagis.no": 1, + "lavangen.no": 1, + "law": 1, + "law.pro": 1, + "law.za": 1, + "lawyer": 1, + "laz.it": 1, + "lazio.it": 1, + "lb": 1, + "lc": 1, + "lc.it": 1, + "lcube-server.de": 1, + "lds": 1, + "le.it": 1, + "leadpages.co": 1, + "leangaviika.no": 1, + "lease": 1, + "leasing.aero": 1, + "leaŋgaviika.no": 1, + "lebesby.no": 1, + "lebork.pl": 1, + "lebtimnetz.de": 1, + "lecce.it": 1, + "lecco.it": 1, + "leclerc": 1, + "leczna.pl": 1, + "lefrak": 1, + "leg.br": 1, + "legal": 1, + "legnica.pl": 1, + "lego": 1, + "leikanger.no": 1, + "leirfjord.no": 1, + "leirvik.no": 1, + "leitungsen.de": 1, + "leka.no": 1, + "leksvik.no": 1, + "lel.br": 1, + "lelux.site": 1, + "lenug.su": 1, + "lenvik.no": 1, + "lerdal.no": 1, + "lesja.no": 1, + "levanger.no": 1, + "lexus": 1, + "lezajsk.pl": 1, + "lg.jp": 1, + "lg.ua": 1, + "lgbt": 1, + "li": 1, + "li.it": 1, + "lib.ak.us": 1, + "lib.al.us": 1, + "lib.ar.us": 1, + "lib.as.us": 1, + "lib.az.us": 1, + "lib.ca.us": 1, + "lib.co.us": 1, + "lib.ct.us": 1, + "lib.dc.us": 1, + "lib.de.us": 1, + "lib.ee": 1, + "lib.fl.us": 1, + "lib.ga.us": 1, + "lib.gu.us": 1, + "lib.hi.us": 1, + "lib.ia.us": 1, + "lib.id.us": 1, + "lib.il.us": 1, + "lib.in.us": 1, + "lib.ks.us": 1, + "lib.ky.us": 1, + "lib.la.us": 1, + "lib.ma.us": 1, + "lib.md.us": 1, + "lib.me.us": 1, + "lib.mi.us": 1, + "lib.mn.us": 1, + "lib.mo.us": 1, + "lib.ms.us": 1, + "lib.mt.us": 1, + "lib.nc.us": 1, + "lib.nd.us": 1, + "lib.ne.us": 1, + "lib.nh.us": 1, + "lib.nj.us": 1, + "lib.nm.us": 1, + "lib.nv.us": 1, + "lib.ny.us": 1, + "lib.oh.us": 1, + "lib.ok.us": 1, + "lib.or.us": 1, + "lib.pa.us": 1, + "lib.pr.us": 1, + "lib.ri.us": 1, + "lib.sc.us": 1, + "lib.sd.us": 1, + "lib.tn.us": 1, + "lib.tx.us": 1, + "lib.ut.us": 1, + "lib.va.us": 1, + "lib.vi.us": 1, + "lib.vt.us": 1, + "lib.wa.us": 1, + "lib.wi.us": 1, + "lib.wy.us": 1, + "lidl": 1, + "lier.no": 1, + "lierne.no": 1, + "life": 1, + "lifeinsurance": 1, + "lifestyle": 1, + "lig.it": 1, + "lighting": 1, + "liguria.it": 1, + "like": 1, + "likes-pie.com": 1, + "likescandy.com": 1, + "lillehammer.no": 1, + "lillesand.no": 1, + "lilly": 1, + "lima-city.at": 1, + "lima-city.ch": 1, + "lima-city.de": 1, + "lima-city.rocks": 1, + "lima.zone": 1, + "limanowa.pl": 1, + "limited": 1, + "limo": 1, + "lincoln": 1, + "lindas.no": 1, + "lindesnes.no": 1, + "lindås.no": 1, + "link": 1, + "linkyard-cloud.ch": 1, + "linkyard.cloud": 1, + "lipsy": 1, + "littlestar.jp": 1, + "live": 1, + "living": 1, + "livorno.it": 1, + "lk": 1, + "lk3.ru": 1, + "llc": 1, + "llp": 1, + "ln.cn": 1, + "lo.it": 1, + "loabat.no": 1, + "loabát.no": 1, + "loan": 1, + "loans": 1, + "localhost.daplie.me": 1, + "localzone.xyz": 1, + "locker": 1, + "locus": 1, + "lodi.it": 1, + "lodingen.no": 1, + "log.br": 1, + "loginline.app": 1, + "loginline.dev": 1, + "loginline.io": 1, + "loginline.services": 1, + "loginline.site": 1, + "loginto.me": 1, + "logistics.aero": 1, + "logoip.com": 1, + "logoip.de": 1, + "lohmus.me": 1, + "loisirs.bj": 1, + "lol": 1, + "lolipop.io": 1, + "lolipopmc.jp": 1, + "lolitapunk.jp": 1, + "lom.it": 1, + "lom.no": 1, + "lombardia.it": 1, + "lombardy.it": 1, + "lomo.jp": 1, + "lomza.pl": 1, + "lon-1.paas.massivegrid.net": 1, + "lon-2.paas.massivegrid.net": 1, + "lon.wafaicloud.com": 1, + "london": 1, + "london.cloudapps.digital": 1, + "londrina.br": 1, + "longan.vn": 1, + "loppa.no": 1, + "lorenskog.no": 1, + "loseyourip.com": 1, + "loten.no": 1, + "lotte": 1, + "lotto": 1, + "love": 1, + "lovepop.jp": 1, + "lovesick.jp": 1, + "lowicz.pl": 1, + "lpages.co": 1, + "lpl": 1, + "lplfinancial": 1, + "lpusercontent.com": 1, + "lr": 1, + "ls": 1, + "lt": 1, + "lt.eu.org": 1, + "lt.it": 1, + "lt.ua": 1, + "ltd": 1, + "ltd.co.im": 1, + "ltd.cy": 1, + "ltd.gi": 1, + "ltd.hk": 1, + "ltd.lk": 1, + "ltd.ng": 1, + "ltd.ua": 1, + "ltd.uk": 1, + "ltda": 1, + "lu": 1, + "lu.eu.org": 1, + "lu.it": 1, + "lubartow.pl": 1, + "lubin.pl": 1, + "lublin.pl": 1, + "lucania.it": 1, + "lucca.it": 1, + "lug.org.uk": 1, + "lugansk.ua": 1, + "lugs.org.uk": 1, + "lukow.pl": 1, + "lund.no": 1, + "lundbeck": 1, + "lunner.no": 1, + "luroy.no": 1, + "lurøy.no": 1, + "luster.no": 1, + "lutsk.ua": 1, + "luxe": 1, + "luxury": 1, + "lv": 1, + "lv.eu.org": 1, + "lv.ua": 1, + "lviv.ua": 1, + "ly": 1, + "lyngdal.no": 1, + "lyngen.no": 1, + "lynx.mythic-beasts.com": 1, + "láhppi.no": 1, + "lærdal.no": 1, + "lødingen.no": 1, + "lørenskog.no": 1, + "løten.no": 1, + "m.bg": 1, + "m.se": 1, + "ma": 1, + "ma.gov.br": 1, + "ma.leg.br": 1, + "ma.us": 1, + "macapa.br": 1, + "maceio.br": 1, + "macerata.it": 1, + "machida.tokyo.jp": 1, + "madrid": 1, + "maebashi.gunma.jp": 1, + "magazine.aero": 1, + "magnet.page": 1, + "maibara.shiga.jp": 1, + "maif": 1, + "mail-box.ne.jp": 1, + "mail.pl": 1, + "main.jp": 1, + "maintenance.aero": 1, + "maison": 1, + "maizuru.kyoto.jp": 1, + "makeup": 1, + "makinohara.shizuoka.jp": 1, + "makurazaki.kagoshima.jp": 1, + "malatvuopmi.no": 1, + "malbork.pl": 1, + "malopolska.pl": 1, + "malselv.no": 1, + "malvik.no": 1, + "mamurogawa.yamagata.jp": 1, + "man": 1, + "management": 1, + "manaus.br": 1, + "mandal.no": 1, + "mango": 1, + "mangyshlak.su": 1, + "maniwa.okayama.jp": 1, + "manno.kagawa.jp": 1, + "mantova.it": 1, + "maori.nz": 1, + "map": 1, + "map.fastly.net": 1, + "map.fastlylb.net": 1, + "mar.it": 1, + "marche.it": 1, + "marine.ru": 1, + "maringa.br": 1, + "marker.no": 1, + "market": 1, + "marketing": 1, + "markets": 1, + "marnardal.no": 1, + "marriott": 1, + "marshalls": 1, + "marugame.kagawa.jp": 1, + "marumori.miyagi.jp": 1, + "masaki.ehime.jp": 1, + "masfjorden.no": 1, + "mashike.hokkaido.jp": 1, + "mashiki.kumamoto.jp": 1, + "mashiko.tochigi.jp": 1, + "masoy.no": 1, + "massa-carrara.it": 1, + "massacarrara.it": 1, + "masuda.shimane.jp": 1, + "mat.br": 1, + "matera.it": 1, + "matrix.jp": 1, + "matsubara.osaka.jp": 1, + "matsubushi.saitama.jp": 1, + "matsuda.kanagawa.jp": 1, + "matsudo.chiba.jp": 1, + "matsue.shimane.jp": 1, + "matsukawa.nagano.jp": 1, + "matsumae.hokkaido.jp": 1, + "matsumoto.kagoshima.jp": 1, + "matsumoto.nagano.jp": 1, + "matsuno.ehime.jp": 1, + "matsusaka.mie.jp": 1, + "matsushige.tokushima.jp": 1, + "matsushima.miyagi.jp": 1, + "matsuura.nagasaki.jp": 1, + "matsuyama.ehime.jp": 1, + "matsuzaki.shizuoka.jp": 1, + "matta-varjjat.no": 1, + "mattel": 1, + "mayfirst.info": 1, + "mayfirst.org": 1, + "mazeplay.com": 1, + "mazowsze.pl": 1, + "mazury.pl": 1, + "mb.ca": 1, + "mb.it": 1, + "mba": 1, + "mc": 1, + "mc.ax": 1, + "mc.eu.org": 1, + "mc.it": 1, + "mcdir.me": 1, + "mcdir.ru": 1, + "mckinsey": 1, + "mcpe.me": 1, + "mcpre.ru": 1, + "md": 1, + "md.ci": 1, + "md.us": 1, + "me": 1, + "me.eu.org": 1, + "me.in": 1, + "me.it": 1, + "me.ke": 1, + "me.so": 1, + "me.ss": 1, + "me.tc": 1, + "me.tz": 1, + "me.uk": 1, + "me.us": 1, + "me.vu": 1, + "med": 1, + "med.br": 1, + "med.ec": 1, + "med.ee": 1, + "med.ht": 1, + "med.ly": 1, + "med.om": 1, + "med.pa": 1, + "med.pl": 1, + "med.pro": 1, + "med.sa": 1, + "med.sd": 1, + "medecin.fr": 1, + "medecin.km": 1, + "media": 1, + "media.aero": 1, + "media.hu": 1, + "media.pl": 1, + "mediatech.by": 1, + "mediatech.dev": 1, + "medicina.bo": 1, + "medio-campidano.it": 1, + "mediocampidano.it": 1, + "meet": 1, + "meguro.tokyo.jp": 1, + "mein-iserv.de": 1, + "mein-vigor.de": 1, + "meinforum.net": 1, + "meiwa.gunma.jp": 1, + "meiwa.mie.jp": 1, + "mel.cloudlets.com.au": 1, + "meland.no": 1, + "melbourne": 1, + "meldal.no": 1, + "melhus.no": 1, + "meloy.no": 1, + "meløy.no": 1, + "members.linode.com": 1, + "meme": 1, + "memorial": 1, + "memset.net": 1, + "men": 1, + "menu": 1, + "meraker.no": 1, + "merckmsd": 1, + "merseine.nu": 1, + "meråker.no": 1, + "messerli.app": 1, + "messina.it": 1, + "messwithdns.com": 1, + "meteorapp.com": 1, + "mex.com": 1, + "mg": 1, + "mg.gov.br": 1, + "mg.leg.br": 1, + "mh": 1, + "mi.it": 1, + "mi.th": 1, + "mi.us": 1, + "miami": 1, + "miasa.nagano.jp": 1, + "miasta.pl": 1, + "mibu.tochigi.jp": 1, + "microlight.aero": 1, + "microsoft": 1, + "midori.chiba.jp": 1, + "midori.gunma.jp": 1, + "midsund.no": 1, + "midtre-gauldal.no": 1, + "mie.jp": 1, + "mielec.pl": 1, + "mielno.pl": 1, + "mifune.kumamoto.jp": 1, + "mihama.aichi.jp": 1, + "mihama.chiba.jp": 1, + "mihama.fukui.jp": 1, + "mihama.mie.jp": 1, + "mihama.wakayama.jp": 1, + "mihara.hiroshima.jp": 1, + "mihara.kochi.jp": 1, + "miharu.fukushima.jp": 1, + "miho.ibaraki.jp": 1, + "mikasa.hokkaido.jp": 1, + "mikawa.yamagata.jp": 1, + "miki.hyogo.jp": 1, + "mil": 1, + "mil.ac": 1, + "mil.ae": 1, + "mil.al": 1, + "mil.ar": 1, + "mil.az": 1, + "mil.ba": 1, + "mil.bo": 1, + "mil.br": 1, + "mil.by": 1, + "mil.cl": 1, + "mil.cn": 1, + "mil.co": 1, + "mil.cy": 1, + "mil.do": 1, + "mil.ec": 1, + "mil.eg": 1, + "mil.fj": 1, + "mil.ge": 1, + "mil.gh": 1, + "mil.gt": 1, + "mil.hn": 1, + "mil.id": 1, + "mil.in": 1, + "mil.iq": 1, + "mil.jo": 1, + "mil.kg": 1, + "mil.km": 1, + "mil.kr": 1, + "mil.kz": 1, + "mil.lv": 1, + "mil.mg": 1, + "mil.mv": 1, + "mil.my": 1, + "mil.mz": 1, + "mil.ng": 1, + "mil.ni": 1, + "mil.no": 1, + "mil.nz": 1, + "mil.pe": 1, + "mil.ph": 1, + "mil.pl": 1, + "mil.py": 1, + "mil.qa": 1, + "mil.ru": 1, + "mil.rw": 1, + "mil.sh": 1, + "mil.st": 1, + "mil.sy": 1, + "mil.tj": 1, + "mil.tm": 1, + "mil.to": 1, + "mil.tr": 1, + "mil.tw": 1, + "mil.tz": 1, + "mil.uy": 1, + "mil.vc": 1, + "mil.ve": 1, + "mil.ye": 1, + "mil.za": 1, + "mil.zm": 1, + "mil.zw": 1, + "milan.it": 1, + "milano.it": 1, + "mima.tokushima.jp": 1, + "mimata.miyazaki.jp": 1, + "mimoza.jp": 1, + "minakami.gunma.jp": 1, + "minamata.kumamoto.jp": 1, + "minami-alps.yamanashi.jp": 1, + "minami.fukuoka.jp": 1, + "minami.kyoto.jp": 1, + "minami.tokushima.jp": 1, + "minamiaiki.nagano.jp": 1, + "minamiashigara.kanagawa.jp": 1, + "minamiawaji.hyogo.jp": 1, + "minamiboso.chiba.jp": 1, + "minamidaito.okinawa.jp": 1, + "minamiechizen.fukui.jp": 1, + "minamifurano.hokkaido.jp": 1, + "minamiise.mie.jp": 1, + "minamiizu.shizuoka.jp": 1, + "minamimaki.nagano.jp": 1, + "minamiminowa.nagano.jp": 1, + "minamioguni.kumamoto.jp": 1, + "minamisanriku.miyagi.jp": 1, + "minamitane.kagoshima.jp": 1, + "minamiuonuma.niigata.jp": 1, + "minamiyamashiro.kyoto.jp": 1, + "minano.saitama.jp": 1, + "minato.osaka.jp": 1, + "minato.tokyo.jp": 1, + "mincom.tn": 1, + "mine.nu": 1, + "mini": 1, + "miniserver.com": 1, + "minisite.ms": 1, + "mino.gifu.jp": 1, + "minobu.yamanashi.jp": 1, + "minoh.osaka.jp": 1, + "minokamo.gifu.jp": 1, + "minowa.nagano.jp": 1, + "mint": 1, + "mintere.site": 1, + "mints.ne.jp": 1, + "mircloud.host": 1, + "mircloud.ru": 1, + "mircloud.us": 1, + "misaki.okayama.jp": 1, + "misaki.osaka.jp": 1, + "misasa.tottori.jp": 1, + "misato.akita.jp": 1, + "misato.miyagi.jp": 1, + "misato.saitama.jp": 1, + "misato.shimane.jp": 1, + "misato.wakayama.jp": 1, + "misawa.aomori.jp": 1, + "misconfused.org": 1, + "mishima.fukushima.jp": 1, + "mishima.shizuoka.jp": 1, + "misugi.mie.jp": 1, + "mit": 1, + "mitaka.tokyo.jp": 1, + "mitake.gifu.jp": 1, + "mitane.akita.jp": 1, + "mito.ibaraki.jp": 1, + "mitou.yamaguchi.jp": 1, + "mitoyo.kagawa.jp": 1, + "mitsubishi": 1, + "mitsue.nara.jp": 1, + "mitsuke.niigata.jp": 1, + "miura.kanagawa.jp": 1, + "miyada.nagano.jp": 1, + "miyagi.jp": 1, + "miyake.nara.jp": 1, + "miyako.fukuoka.jp": 1, + "miyako.iwate.jp": 1, + "miyakonojo.miyazaki.jp": 1, + "miyama.fukuoka.jp": 1, + "miyama.mie.jp": 1, + "miyashiro.saitama.jp": 1, + "miyawaka.fukuoka.jp": 1, + "miyazaki.jp": 1, + "miyazaki.miyazaki.jp": 1, + "miyazu.kyoto.jp": 1, + "miyoshi.aichi.jp": 1, + "miyoshi.hiroshima.jp": 1, + "miyoshi.saitama.jp": 1, + "miyoshi.tokushima.jp": 1, + "miyota.nagano.jp": 1, + "mizuho.tokyo.jp": 1, + "mizumaki.fukuoka.jp": 1, + "mizunami.gifu.jp": 1, + "mizusawa.iwate.jp": 1, + "mjondalen.no": 1, + "mjøndalen.no": 1, + "mk": 1, + "mk.eu.org": 1, + "mk.ua": 1, + "ml": 1, + "mlb": 1, + "mlbfan.org": 1, + "mls": 1, + "mma": 1, + "mmafan.biz": 1, + "mn": 1, + "mn.it": 1, + "mn.us": 1, + "mo": 1, + "mo-i-rana.no": 1, + "mo-siemens.io": 1, + "mo.cn": 1, + "mo.it": 1, + "mo.us": 1, + "moareke.no": 1, + "mobara.chiba.jp": 1, + "mobi": 1, + "mobi.gp": 1, + "mobi.ke": 1, + "mobi.na": 1, + "mobi.ng": 1, + "mobi.tt": 1, + "mobi.tz": 1, + "mobile": 1, + "mochizuki.nagano.jp": 1, + "mock.pstmn.io": 1, + "mod.gi": 1, + "moda": 1, + "modalen.no": 1, + "modelling.aero": 1, + "modena.it": 1, + "mods.jp": 1, + "modum.no": 1, + "moe": 1, + "moi": 1, + "moka.tochigi.jp": 1, + "mokuren.ne.jp": 1, + "mol.it": 1, + "molde.no": 1, + "molise.it": 1, + "mom": 1, + "mombetsu.hokkaido.jp": 1, + "monash": 1, + "mond.jp": 1, + "money": 1, + "money.bj": 1, + "mongolian.jp": 1, + "monster": 1, + "monza-brianza.it": 1, + "monza-e-della-brianza.it": 1, + "monza.it": 1, + "monzabrianza.it": 1, + "monzaebrianza.it": 1, + "monzaedellabrianza.it": 1, + "moo.jp": 1, + "moonscale.net": 1, + "mordovia.ru": 1, + "mordovia.su": 1, + "morena.br": 1, + "moriguchi.osaka.jp": 1, + "morimachi.shizuoka.jp": 1, + "morioka.iwate.jp": 1, + "moriya.ibaraki.jp": 1, + "moriyama.shiga.jp": 1, + "moriyoshi.akita.jp": 1, + "mormon": 1, + "morotsuka.miyazaki.jp": 1, + "moroyama.saitama.jp": 1, + "mortgage": 1, + "moscow": 1, + "moseushi.hokkaido.jp": 1, + "mosjoen.no": 1, + "mosjøen.no": 1, + "moskenes.no": 1, + "moss.no": 1, + "mosvik.no": 1, + "motegi.tochigi.jp": 1, + "moto": 1, + "motobu.okinawa.jp": 1, + "motorcycles": 1, + "motosu.gifu.jp": 1, + "motoyama.kochi.jp": 1, + "mov": 1, + "movie": 1, + "movimiento.bo": 1, + "mozilla-iot.org": 1, + "moåreke.no": 1, + "mp": 1, + "mp.br": 1, + "mq": 1, + "mr": 1, + "mr.no": 1, + "mragowo.pl": 1, + "ms": 1, + "ms.gov.br": 1, + "ms.it": 1, + "ms.kr": 1, + "ms.leg.br": 1, + "ms.us": 1, + "msd": 1, + "msk.ru": 1, + "msk.su": 1, + "mt": 1, + "mt.eu.org": 1, + "mt.gov.br": 1, + "mt.it": 1, + "mt.leg.br": 1, + "mt.us": 1, + "mtn": 1, + "mtr": 1, + "mu": 1, + "mugi.tokushima.jp": 1, + "muika.niigata.jp": 1, + "mukawa.hokkaido.jp": 1, + "muko.kyoto.jp": 1, + "munakata.fukuoka.jp": 1, + "muni.il": 1, + "muosat.no": 1, + "muosát.no": 1, + "mup.gov.pl": 1, + "murakami.niigata.jp": 1, + "murata.miyagi.jp": 1, + "murayama.yamagata.jp": 1, + "murmansk.su": 1, + "muroran.hokkaido.jp": 1, + "muroto.kochi.jp": 1, + "mus.br": 1, + "mus.mi.us": 1, + "musashimurayama.tokyo.jp": 1, + "musashino.tokyo.jp": 1, + "museum": 1, + "museum.mv": 1, + "museum.mw": 1, + "museum.no": 1, + "museum.om": 1, + "museum.tt": 1, + "music": 1, + "musica.ar": 1, + "musica.bo": 1, + "musician.io": 1, + "mutsu.aomori.jp": 1, + "mutsuzawa.chiba.jp": 1, + "mutual.ar": 1, + "mv": 1, + "mw": 1, + "mw.gov.pl": 1, + "mx": 1, + "mx.na": 1, + "my": 1, + "my-firewall.org": 1, + "my-gateway.de": 1, + "my-router.de": 1, + "my-vigor.de": 1, + "my-wan.de": 1, + "my.eu.org": 1, + "my.id": 1, + "myactivedirectory.com": 1, + "myamaze.net": 1, + "myasustor.com": 1, + "mycd.eu": 1, + "mycloud.by": 1, + "mydatto.com": 1, + "mydatto.net": 1, + "myddns.rocks": 1, + "mydissent.net": 1, + "mydobiss.com": 1, + "mydrobo.com": 1, + "myds.me": 1, + "myeffect.net": 1, + "myfast.host": 1, + "myfast.space": 1, + "myfirewall.org": 1, + "myforum.community": 1, + "myfritz.net": 1, + "myftp.biz": 1, + "myftp.org": 1, + "myhome-server.de": 1, + "myiphost.com": 1, + "myjino.ru": 1, + "mykolaiv.ua": 1, + "mymailer.com.tw": 1, + "mymediapc.net": 1, + "myoko.niigata.jp": 1, + "mypep.link": 1, + "mypets.ws": 1, + "myphotos.cc": 1, + "mypi.co": 1, + "mypsx.net": 1, + "myqnapcloud.com": 1, + "mysecuritycamera.com": 1, + "mysecuritycamera.net": 1, + "mysecuritycamera.org": 1, + "myshopblocks.com": 1, + "myshopify.com": 1, + "myspreadshop.at": 1, + "myspreadshop.be": 1, + "myspreadshop.ca": 1, + "myspreadshop.ch": 1, + "myspreadshop.co.uk": 1, + "myspreadshop.com": 1, + "myspreadshop.com.au": 1, + "myspreadshop.de": 1, + "myspreadshop.dk": 1, + "myspreadshop.es": 1, + "myspreadshop.fi": 1, + "myspreadshop.fr": 1, + "myspreadshop.ie": 1, + "myspreadshop.it": 1, + "myspreadshop.net": 1, + "myspreadshop.nl": 1, + "myspreadshop.no": 1, + "myspreadshop.pl": 1, + "myspreadshop.se": 1, + "mytabit.co.il": 1, + "mytabit.com": 1, + "mytis.ru": 1, + "mytuleap.com": 1, + "myvnc.com": 1, + "mywire.org": 1, + "mz": 1, + "málatvuopmi.no": 1, + "mátta-várjjat.no": 1, + "målselv.no": 1, + "måsøy.no": 1, + "māori.nz": 1, + "n.bg": 1, + "n.se": 1, + "n4t.co": 1, + "na": 1, + "na.it": 1, + "na4u.ru": 1, + "naamesjevuemie.no": 1, + "nab": 1, + "nabari.mie.jp": 1, + "nachikatsuura.wakayama.jp": 1, + "nagahama.shiga.jp": 1, + "nagai.yamagata.jp": 1, + "nagano.jp": 1, + "nagano.nagano.jp": 1, + "naganohara.gunma.jp": 1, + "nagaoka.niigata.jp": 1, + "nagaokakyo.kyoto.jp": 1, + "nagara.chiba.jp": 1, + "nagareyama.chiba.jp": 1, + "nagasaki.jp": 1, + "nagasaki.nagasaki.jp": 1, + "nagasu.kumamoto.jp": 1, + "nagato.yamaguchi.jp": 1, + "nagatoro.saitama.jp": 1, + "nagawa.nagano.jp": 1, + "nagi.okayama.jp": 1, + "nagiso.nagano.jp": 1, + "nago.okinawa.jp": 1, + "nagoya": 1, + "naha.okinawa.jp": 1, + "nahari.kochi.jp": 1, + "naie.hokkaido.jp": 1, + "naka.hiroshima.jp": 1, + "naka.ibaraki.jp": 1, + "nakadomari.aomori.jp": 1, + "nakagawa.fukuoka.jp": 1, + "nakagawa.hokkaido.jp": 1, + "nakagawa.nagano.jp": 1, + "nakagawa.tokushima.jp": 1, + "nakagusuku.okinawa.jp": 1, + "nakagyo.kyoto.jp": 1, + "nakai.kanagawa.jp": 1, + "nakama.fukuoka.jp": 1, + "nakamichi.yamanashi.jp": 1, + "nakamura.kochi.jp": 1, + "nakaniikawa.toyama.jp": 1, + "nakano.nagano.jp": 1, + "nakano.tokyo.jp": 1, + "nakanojo.gunma.jp": 1, + "nakanoto.ishikawa.jp": 1, + "nakasatsunai.hokkaido.jp": 1, + "nakatane.kagoshima.jp": 1, + "nakatombetsu.hokkaido.jp": 1, + "nakatsugawa.gifu.jp": 1, + "nakayama.yamagata.jp": 1, + "nakijin.okinawa.jp": 1, + "naklo.pl": 1, + "nalchik.ru": 1, + "nalchik.su": 1, + "namaste.jp": 1, + "namdalseid.no": 1, + "namdinh.vn": 1, + "name": 1, + "name.az": 1, + "name.eg": 1, + "name.et": 1, + "name.fj": 1, + "name.hr": 1, + "name.jo": 1, + "name.mk": 1, + "name.mv": 1, + "name.my": 1, + "name.na": 1, + "name.ng": 1, + "name.pm": 1, + "name.pr": 1, + "name.qa": 1, + "name.tj": 1, + "name.tr": 1, + "name.tt": 1, + "name.vn": 1, + "namegata.ibaraki.jp": 1, + "namegawa.saitama.jp": 1, + "namerikawa.toyama.jp": 1, + "namie.fukushima.jp": 1, + "namikata.ehime.jp": 1, + "namsos.no": 1, + "namsskogan.no": 1, + "nanae.hokkaido.jp": 1, + "nanao.ishikawa.jp": 1, + "nanbu.tottori.jp": 1, + "nanbu.yamanashi.jp": 1, + "nango.fukushima.jp": 1, + "nanjo.okinawa.jp": 1, + "nankoku.kochi.jp": 1, + "nanmoku.gunma.jp": 1, + "nannestad.no": 1, + "nanporo.hokkaido.jp": 1, + "nantan.kyoto.jp": 1, + "nanto.toyama.jp": 1, + "nanyo.yamagata.jp": 1, + "naoshima.kagawa.jp": 1, + "naples.it": 1, + "napoli.it": 1, + "nara.jp": 1, + "nara.nara.jp": 1, + "narashino.chiba.jp": 1, + "narita.chiba.jp": 1, + "naroy.no": 1, + "narusawa.yamanashi.jp": 1, + "naruto.tokushima.jp": 1, + "narviika.no": 1, + "narvik.no": 1, + "nasu.tochigi.jp": 1, + "nasushiobara.tochigi.jp": 1, + "nat.tn": 1, + "natal.br": 1, + "natori.miyagi.jp": 1, + "natura": 1, + "natural.bo": 1, + "naturbruksgymn.se": 1, + "naustdal.no": 1, + "navigation.aero": 1, + "navoi.su": 1, + "navuotna.no": 1, + "navy": 1, + "nayoro.hokkaido.jp": 1, + "nb.ca": 1, + "nba": 1, + "nc": 1, + "nc.tr": 1, + "nc.us": 1, + "nd.us": 1, + "ne": 1, + "ne.jp": 1, + "ne.ke": 1, + "ne.kr": 1, + "ne.pw": 1, + "ne.tz": 1, + "ne.ug": 1, + "ne.us": 1, + "neat-url.com": 1, + "nec": 1, + "nedre-eiker.no": 1, + "neko.am": 1, + "nemuro.hokkaido.jp": 1, + "nerdpol.ovh": 1, + "nerima.tokyo.jp": 1, + "nes.akershus.no": 1, + "nes.buskerud.no": 1, + "nesna.no": 1, + "nesodden.no": 1, + "nesoddtangen.no": 1, + "nesseby.no": 1, + "nesset.no": 1, + "net": 1, + "net-freaks.com": 1, + "net.ac": 1, + "net.ae": 1, + "net.af": 1, + "net.ag": 1, + "net.ai": 1, + "net.al": 1, + "net.am": 1, + "net.ar": 1, + "net.au": 1, + "net.az": 1, + "net.ba": 1, + "net.bb": 1, + "net.bh": 1, + "net.bj": 1, + "net.bm": 1, + "net.bn": 1, + "net.bo": 1, + "net.br": 1, + "net.bs": 1, + "net.bt": 1, + "net.bz": 1, + "net.ci": 1, + "net.cm": 1, + "net.cn": 1, + "net.co": 1, + "net.cu": 1, + "net.cw": 1, + "net.cy": 1, + "net.dm": 1, + "net.do": 1, + "net.dz": 1, + "net.ec": 1, + "net.eg": 1, + "net.et": 1, + "net.eu.org": 1, + "net.fj": 1, + "net.fm": 1, + "net.ge": 1, + "net.gg": 1, + "net.gl": 1, + "net.gn": 1, + "net.gp": 1, + "net.gr": 1, + "net.gt": 1, + "net.gu": 1, + "net.gy": 1, + "net.hk": 1, + "net.hn": 1, + "net.ht": 1, + "net.id": 1, + "net.il": 1, + "net.im": 1, + "net.in": 1, + "net.iq": 1, + "net.ir": 1, + "net.is": 1, + "net.je": 1, + "net.jo": 1, + "net.kg": 1, + "net.ki": 1, + "net.kn": 1, + "net.kw": 1, + "net.ky": 1, + "net.kz": 1, + "net.la": 1, + "net.lb": 1, + "net.lc": 1, + "net.lk": 1, + "net.lr": 1, + "net.ls": 1, + "net.lv": 1, + "net.ly": 1, + "net.ma": 1, + "net.me": 1, + "net.mk": 1, + "net.ml": 1, + "net.mo": 1, + "net.ms": 1, + "net.mt": 1, + "net.mu": 1, + "net.mv": 1, + "net.mw": 1, + "net.mx": 1, + "net.my": 1, + "net.mz": 1, + "net.nf": 1, + "net.ng": 1, + "net.ni": 1, + "net.nr": 1, + "net.nz": 1, + "net.om": 1, + "net.pa": 1, + "net.pe": 1, + "net.ph": 1, + "net.pk": 1, + "net.pl": 1, + "net.pn": 1, + "net.pr": 1, + "net.ps": 1, + "net.pt": 1, + "net.py": 1, + "net.qa": 1, + "net.ru": 1, + "net.rw": 1, + "net.sa": 1, + "net.sb": 1, + "net.sc": 1, + "net.sd": 1, + "net.sg": 1, + "net.sh": 1, + "net.sl": 1, + "net.so": 1, + "net.ss": 1, + "net.st": 1, + "net.sy": 1, + "net.th": 1, + "net.tj": 1, + "net.tm": 1, + "net.tn": 1, + "net.to": 1, + "net.tr": 1, + "net.tt": 1, + "net.tw": 1, + "net.ua": 1, + "net.uk": 1, + "net.uy": 1, + "net.uz": 1, + "net.vc": 1, + "net.ve": 1, + "net.vi": 1, + "net.vn": 1, + "net.vu": 1, + "net.ws": 1, + "net.ye": 1, + "net.za": 1, + "net.zm": 1, + "netbank": 1, + "netflix": 1, + "netgamers.jp": 1, + "netlify.app": 1, + "network": 1, + "neustar": 1, + "new": 1, + "news": 1, + "news.hu": 1, + "next": 1, + "nextdirect": 1, + "nexus": 1, + "neyagawa.osaka.jp": 1, + "nf": 1, + "nf.ca": 1, + "nfl": 1, + "nflfan.org": 1, + "nfshost.com": 1, + "ng": 1, + "ng.eu.org": 1, + "nghean.vn": 1, + "ngo": 1, + "ngo.lk": 1, + "ngo.ng": 1, + "ngo.ph": 1, + "ngo.za": 1, + "ngrok-free.app": 1, + "ngrok-free.dev": 1, + "ngrok.app": 1, + "ngrok.dev": 1, + "ngrok.io": 1, + "ngrok.pizza": 1, + "nh-serv.co.uk": 1, + "nh.us": 1, + "nhk": 1, + "nhlfan.net": 1, + "nhs.uk": 1, + "ni": 1, + "nic.in": 1, + "nic.tj": 1, + "nic.za": 1, + "nichinan.miyazaki.jp": 1, + "nichinan.tottori.jp": 1, + "nico": 1, + "nid.io": 1, + "nieruchomosci.pl": 1, + "niigata.jp": 1, + "niigata.niigata.jp": 1, + "niihama.ehime.jp": 1, + "niikappu.hokkaido.jp": 1, + "niimi.okayama.jp": 1, + "niiza.saitama.jp": 1, + "nikaho.akita.jp": 1, + "nike": 1, + "niki.hokkaido.jp": 1, + "nikita.jp": 1, + "nikko.tochigi.jp": 1, + "nikolaev.ua": 1, + "nikon": 1, + "ninhbinh.vn": 1, + "ninhthuan.vn": 1, + "ninja": 1, + "ninohe.iwate.jp": 1, + "ninomiya.kanagawa.jp": 1, + "nirasaki.yamanashi.jp": 1, + "nis.za": 1, + "nishi.fukuoka.jp": 1, + "nishi.osaka.jp": 1, + "nishiaizu.fukushima.jp": 1, + "nishiarita.saga.jp": 1, + "nishiawakura.okayama.jp": 1, + "nishiazai.shiga.jp": 1, + "nishigo.fukushima.jp": 1, + "nishihara.kumamoto.jp": 1, + "nishihara.okinawa.jp": 1, + "nishiizu.shizuoka.jp": 1, + "nishikata.tochigi.jp": 1, + "nishikatsura.yamanashi.jp": 1, + "nishikawa.yamagata.jp": 1, + "nishimera.miyazaki.jp": 1, + "nishinomiya.hyogo.jp": 1, + "nishinoomote.kagoshima.jp": 1, + "nishinoshima.shimane.jp": 1, + "nishio.aichi.jp": 1, + "nishiokoppe.hokkaido.jp": 1, + "nishitosa.kochi.jp": 1, + "nishiwaki.hyogo.jp": 1, + "nissan": 1, + "nissay": 1, + "nissedal.no": 1, + "nisshin.aichi.jp": 1, + "niteroi.br": 1, + "nittedal.no": 1, + "niyodogawa.kochi.jp": 1, + "nj.us": 1, + "njs.jelastic.vps-host.net": 1, + "nl": 1, + "nl-ams-1.baremetal.scw.cloud": 1, + "nl.ca": 1, + "nl.ci": 1, + "nl.eu.org": 1, + "nl.no": 1, + "nm.cn": 1, + "nm.us": 1, + "no": 1, + "no-ip.biz": 1, + "no-ip.ca": 1, + "no-ip.co.uk": 1, + "no-ip.info": 1, + "no-ip.net": 1, + "no-ip.org": 1, + "no.com": 1, + "no.eu.org": 1, + "no.it": 1, + "nobeoka.miyazaki.jp": 1, + "noboribetsu.hokkaido.jp": 1, + "nobushi.jp": 1, + "noda.chiba.jp": 1, + "noda.iwate.jp": 1, + "nodes.k8s.fr-par.scw.cloud": 1, + "nodes.k8s.nl-ams.scw.cloud": 1, + "nodes.k8s.pl-waw.scw.cloud": 1, + "nog.community": 1, + "nogata.fukuoka.jp": 1, + "nogi.tochigi.jp": 1, + "noheji.aomori.jp": 1, + "noho.st": 1, + "nohost.me": 1, + "noip.me": 1, + "noip.us": 1, + "nokia": 1, + "nom.ad": 1, + "nom.ag": 1, + "nom.co": 1, + "nom.es": 1, + "nom.fr": 1, + "nom.km": 1, + "nom.mg": 1, + "nom.nc": 1, + "nom.ni": 1, + "nom.pa": 1, + "nom.pe": 1, + "nom.pl": 1, + "nom.re": 1, + "nom.ro": 1, + "nom.tm": 1, + "nom.ve": 1, + "nom.za": 1, + "nombre.bo": 1, + "nome.cv": 1, + "nome.pt": 1, + "nomi.ishikawa.jp": 1, + "nonoichi.ishikawa.jp": 1, + "noop.app": 1, + "noor.jp": 1, + "nord-aurdal.no": 1, + "nord-fron.no": 1, + "nord-odal.no": 1, + "norddal.no": 1, + "nordeste-idc.saveincloud.net": 1, + "nordkapp.no": 1, + "nordre-land.no": 1, + "nordreisa.no": 1, + "nore-og-uvdal.no": 1, + "north-kazakhstan.su": 1, + "norton": 1, + "nose.osaka.jp": 1, + "nosegawa.nara.jp": 1, + "noshiro.akita.jp": 1, + "not.br": 1, + "notaires.fr": 1, + "notaires.km": 1, + "noticeable.news": 1, + "noticias.bo": 1, + "noto.ishikawa.jp": 1, + "notodden.no": 1, + "notogawa.shiga.jp": 1, + "notteroy.no": 1, + "nov.ru": 1, + "nov.su": 1, + "novara.it": 1, + "novecore.site": 1, + "now": 1, + "now-dns.net": 1, + "now-dns.org": 1, + "now-dns.top": 1, + "now.sh": 1, + "nowaruda.pl": 1, + "nowruz": 1, + "nowtv": 1, + "nozawaonsen.nagano.jp": 1, + "nr": 1, + "nra": 1, + "nrw": 1, + "ns.ca": 1, + "nsn.us": 1, + "nsupdate.info": 1, + "nsw.au": 1, + "nsw.edu.au": 1, + "nt.au": 1, + "nt.ca": 1, + "nt.edu.au": 1, + "nt.no": 1, + "nt.ro": 1, + "ntdll.top": 1, + "ntr.br": 1, + "ntt": 1, + "nu": 1, + "nu.ca": 1, + "nu.it": 1, + "numata.gunma.jp": 1, + "numata.hokkaido.jp": 1, + "numazu.shizuoka.jp": 1, + "nuoro.it": 1, + "nv.us": 1, + "nx.cn": 1, + "ny-1.paas.massivegrid.net": 1, + "ny-2.paas.massivegrid.net": 1, + "ny.us": 1, + "nyaa.am": 1, + "nyan.to": 1, + "nyanta.jp": 1, + "nyc": 1, + "nyc.mn": 1, + "nysa.pl": 1, + "nyuzen.toyama.jp": 1, + "nz": 1, + "nz.basketball": 1, + "nz.eu.org": 1, + "návuotna.no": 1, + "nååmesjevuemie.no": 1, + "nærøy.no": 1, + "nøtterøy.no": 1, + "o.bg": 1, + "o.se": 1, + "o0o0.jp": 1, + "oamishirasato.chiba.jp": 1, + "oarai.ibaraki.jp": 1, + "obama.fukui.jp": 1, + "obama.nagasaki.jp": 1, + "obanazawa.yamagata.jp": 1, + "obi": 1, + "obihiro.hokkaido.jp": 1, + "obira.hokkaido.jp": 1, + "obninsk.su": 1, + "observer": 1, + "obu.aichi.jp": 1, + "obuse.nagano.jp": 1, + "ocelot.mythic-beasts.com": 1, + "ochi.kochi.jp": 1, + "od.ua": 1, + "odate.akita.jp": 1, + "odawara.kanagawa.jp": 1, + "odda.no": 1, + "odesa.ua": 1, + "odessa.ua": 1, + "odo.br": 1, + "oe.yamagata.jp": 1, + "of.by": 1, + "of.je": 1, + "of.no": 1, + "off.ai": 1, + "office": 1, + "office-on-the.net": 1, + "official.academy": 1, + "official.ec": 1, + "ofunato.iwate.jp": 1, + "og.ao": 1, + "og.it": 1, + "oga.akita.jp": 1, + "ogaki.gifu.jp": 1, + "ogano.saitama.jp": 1, + "ogasawara.tokyo.jp": 1, + "ogata.akita.jp": 1, + "ogawa.ibaraki.jp": 1, + "ogawa.nagano.jp": 1, + "ogawa.saitama.jp": 1, + "ogawara.miyagi.jp": 1, + "ogi.saga.jp": 1, + "ogimi.okinawa.jp": 1, + "ogliastra.it": 1, + "ogori.fukuoka.jp": 1, + "ogose.saitama.jp": 1, + "oguchi.aichi.jp": 1, + "oguni.kumamoto.jp": 1, + "oguni.yamagata.jp": 1, + "oh.us": 1, + "oharu.aichi.jp": 1, + "ohda.shimane.jp": 1, + "ohi.fukui.jp": 1, + "ohira.miyagi.jp": 1, + "ohira.tochigi.jp": 1, + "ohkura.yamagata.jp": 1, + "ohtawara.tochigi.jp": 1, + "oi.kanagawa.jp": 1, + "oia.gov.pl": 1, + "oirase.aomori.jp": 1, + "oirm.gov.pl": 1, + "oishida.yamagata.jp": 1, + "oiso.kanagawa.jp": 1, + "oita.jp": 1, + "oita.oita.jp": 1, + "oizumi.gunma.jp": 1, + "oji.nara.jp": 1, + "ojiya.niigata.jp": 1, + "ok.us": 1, + "okagaki.fukuoka.jp": 1, + "okawa.fukuoka.jp": 1, + "okawa.kochi.jp": 1, + "okaya.nagano.jp": 1, + "okayama.jp": 1, + "okayama.okayama.jp": 1, + "okazaki.aichi.jp": 1, + "oke.gov.pl": 1, + "okegawa.saitama.jp": 1, + "oketo.hokkaido.jp": 1, + "oki.fukuoka.jp": 1, + "okinawa": 1, + "okinawa.jp": 1, + "okinawa.okinawa.jp": 1, + "okinoshima.shimane.jp": 1, + "okoppe.hokkaido.jp": 1, + "oksnes.no": 1, + "okuizumo.shimane.jp": 1, + "okuma.fukushima.jp": 1, + "okutama.tokyo.jp": 1, + "ol.no": 1, + "olawa.pl": 1, + "olayan": 1, + "olayangroup": 1, + "olbia-tempio.it": 1, + "olbiatempio.it": 1, + "oldnavy": 1, + "olecko.pl": 1, + "olkusz.pl": 1, + "ollo": 1, + "olsztyn.pl": 1, + "om": 1, + "omachi.nagano.jp": 1, + "omachi.saga.jp": 1, + "omaezaki.shizuoka.jp": 1, + "omasvuotna.no": 1, + "ome.tokyo.jp": 1, + "omega": 1, + "omg.lol": 1, + "omi.nagano.jp": 1, + "omi.niigata.jp": 1, + "omigawa.chiba.jp": 1, + "omihachiman.shiga.jp": 1, + "omitama.ibaraki.jp": 1, + "omiya.saitama.jp": 1, + "omniwe.site": 1, + "omotego.fukushima.jp": 1, + "omura.nagasaki.jp": 1, + "omuta.fukuoka.jp": 1, + "on-aptible.com": 1, + "on-the-web.tv": 1, + "on-web.fr": 1, + "on.ca": 1, + "onagawa.miyagi.jp": 1, + "onavstack.net": 1, + "oncilla.mythic-beasts.com": 1, + "ondigitalocean.app": 1, + "one": 1, + "onfabrica.com": 1, + "onflashdrive.app": 1, + "ong": 1, + "ong.br": 1, + "onga.fukuoka.jp": 1, + "onion": 1, + "onjuku.chiba.jp": 1, + "onl": 1, + "online": 1, + "online.th": 1, + "onna.okinawa.jp": 1, + "ono.fukui.jp": 1, + "ono.fukushima.jp": 1, + "ono.hyogo.jp": 1, + "onojo.fukuoka.jp": 1, + "onomichi.hiroshima.jp": 1, + "onporter.run": 1, + "onred.one": 1, + "onrender.com": 1, + "onthewifi.com": 1, + "onza.mythic-beasts.com": 1, + "ooguy.com": 1, + "ookuwa.nagano.jp": 1, + "ooo": 1, + "oops.jp": 1, + "ooshika.nagano.jp": 1, + "oow.gov.pl": 1, + "opal.ne.jp": 1, + "open": 1, + "opencraft.hosting": 1, + "opensocial.site": 1, + "operaunite.com": 1, + "opoczno.pl": 1, + "opole.pl": 1, + "oppdal.no": 1, + "oppegard.no": 1, + "oppegård.no": 1, + "or.at": 1, + "or.bi": 1, + "or.ci": 1, + "or.cr": 1, + "or.id": 1, + "or.it": 1, + "or.jp": 1, + "or.ke": 1, + "or.kr": 1, + "or.mu": 1, + "or.na": 1, + "or.pw": 1, + "or.th": 1, + "or.tz": 1, + "or.ug": 1, + "or.us": 1, + "ora.gunma.jp": 1, + "oracle": 1, + "orange": 1, + "orangecloud.tn": 1, + "org": 1, + "org.ac": 1, + "org.ae": 1, + "org.af": 1, + "org.ag": 1, + "org.ai": 1, + "org.al": 1, + "org.am": 1, + "org.ar": 1, + "org.au": 1, + "org.az": 1, + "org.ba": 1, + "org.bb": 1, + "org.bh": 1, + "org.bi": 1, + "org.bj": 1, + "org.bm": 1, + "org.bn": 1, + "org.bo": 1, + "org.br": 1, + "org.bs": 1, + "org.bt": 1, + "org.bw": 1, + "org.bz": 1, + "org.ci": 1, + "org.cn": 1, + "org.co": 1, + "org.cu": 1, + "org.cv": 1, + "org.cw": 1, + "org.cy": 1, + "org.dm": 1, + "org.do": 1, + "org.dz": 1, + "org.ec": 1, + "org.ee": 1, + "org.eg": 1, + "org.es": 1, + "org.et": 1, + "org.fj": 1, + "org.fm": 1, + "org.ge": 1, + "org.gg": 1, + "org.gh": 1, + "org.gi": 1, + "org.gl": 1, + "org.gn": 1, + "org.gp": 1, + "org.gr": 1, + "org.gt": 1, + "org.gu": 1, + "org.gy": 1, + "org.hk": 1, + "org.hn": 1, + "org.ht": 1, + "org.hu": 1, + "org.il": 1, + "org.im": 1, + "org.in": 1, + "org.iq": 1, + "org.ir": 1, + "org.is": 1, + "org.je": 1, + "org.jo": 1, + "org.kg": 1, + "org.ki": 1, + "org.km": 1, + "org.kn": 1, + "org.kp": 1, + "org.kw": 1, + "org.ky": 1, + "org.kz": 1, + "org.la": 1, + "org.lb": 1, + "org.lc": 1, + "org.lk": 1, + "org.lr": 1, + "org.ls": 1, + "org.lv": 1, + "org.ly": 1, + "org.ma": 1, + "org.me": 1, + "org.mg": 1, + "org.mk": 1, + "org.ml": 1, + "org.mn": 1, + "org.mo": 1, + "org.ms": 1, + "org.mt": 1, + "org.mu": 1, + "org.mv": 1, + "org.mw": 1, + "org.mx": 1, + "org.my": 1, + "org.mz": 1, + "org.na": 1, + "org.ng": 1, + "org.ni": 1, + "org.nr": 1, + "org.nz": 1, + "org.om": 1, + "org.pa": 1, + "org.pe": 1, + "org.pf": 1, + "org.ph": 1, + "org.pk": 1, + "org.pl": 1, + "org.pn": 1, + "org.pr": 1, + "org.ps": 1, + "org.pt": 1, + "org.py": 1, + "org.qa": 1, + "org.ro": 1, + "org.rs": 1, + "org.ru": 1, + "org.rw": 1, + "org.sa": 1, + "org.sb": 1, + "org.sc": 1, + "org.sd": 1, + "org.se": 1, + "org.sg": 1, + "org.sh": 1, + "org.sl": 1, + "org.sn": 1, + "org.so": 1, + "org.ss": 1, + "org.st": 1, + "org.sv": 1, + "org.sy": 1, + "org.sz": 1, + "org.tj": 1, + "org.tm": 1, + "org.tn": 1, + "org.to": 1, + "org.tr": 1, + "org.tt": 1, + "org.tw": 1, + "org.ua": 1, + "org.ug": 1, + "org.uk": 1, + "org.uy": 1, + "org.uz": 1, + "org.vc": 1, + "org.ve": 1, + "org.vi": 1, + "org.vn": 1, + "org.vu": 1, + "org.ws": 1, + "org.ye": 1, + "org.yt": 1, + "org.za": 1, + "org.zm": 1, + "org.zw": 1, + "organic": 1, + "origins": 1, + "oristano.it": 1, + "orkanger.no": 1, + "orkdal.no": 1, + "orland.no": 1, + "orsites.com": 1, + "orskog.no": 1, + "orsta.no": 1, + "orx.biz": 1, + "os.hedmark.no": 1, + "os.hordaland.no": 1, + "osaka": 1, + "osaka.jp": 1, + "osakasayama.osaka.jp": 1, + "osaki.miyagi.jp": 1, + "osakikamijima.hiroshima.jp": 1, + "osasco.br": 1, + "oschr.gov.pl": 1, + "osen.no": 1, + "oseto.nagasaki.jp": 1, + "oshima.tokyo.jp": 1, + "oshima.yamaguchi.jp": 1, + "oshino.yamanashi.jp": 1, + "oshu.iwate.jp": 1, + "oslo.no": 1, + "osoyro.no": 1, + "osteroy.no": 1, + "osterøy.no": 1, + "ostre-toten.no": 1, + "ostroda.pl": 1, + "ostroleka.pl": 1, + "ostrowiec.pl": 1, + "ostrowwlkp.pl": 1, + "osøyro.no": 1, + "ot.it": 1, + "ota.gunma.jp": 1, + "ota.tokyo.jp": 1, + "otake.hiroshima.jp": 1, + "otaki.chiba.jp": 1, + "otaki.nagano.jp": 1, + "otaki.saitama.jp": 1, + "otama.fukushima.jp": 1, + "otari.nagano.jp": 1, + "otaru.hokkaido.jp": 1, + "ote.bj": 1, + "other.nf": 1, + "oto.fukuoka.jp": 1, + "otobe.hokkaido.jp": 1, + "otofuke.hokkaido.jp": 1, + "otoineppu.hokkaido.jp": 1, + "otoyo.kochi.jp": 1, + "otsu.shiga.jp": 1, + "otsuchi.iwate.jp": 1, + "otsuka": 1, + "otsuki.kochi.jp": 1, + "otsuki.yamanashi.jp": 1, + "ott": 1, + "ouchi.saga.jp": 1, + "ouda.nara.jp": 1, + "oum.gov.pl": 1, + "oumu.hokkaido.jp": 1, + "outsystemscloud.com": 1, + "overhalla.no": 1, + "ovh": 1, + "ovre-eiker.no": 1, + "owani.aomori.jp": 1, + "owariasahi.aichi.jp": 1, + "own.pm": 1, + "ownip.net": 1, + "ownprovider.com": 1, + "ox.rs": 1, + "oxa.cloud": 1, + "oy.lc": 1, + "oya.to": 1, + "oyabe.toyama.jp": 1, + "oyama.tochigi.jp": 1, + "oyamazaki.kyoto.jp": 1, + "oyer.no": 1, + "oygarden.no": 1, + "oyodo.nara.jp": 1, + "oystre-slidre.no": 1, + "oz.au": 1, + "ozora.hokkaido.jp": 1, + "ozu.ehime.jp": 1, + "ozu.kumamoto.jp": 1, + "p.bg": 1, + "p.se": 1, + "pa": 1, + "pa.gov.br": 1, + "pa.gov.pl": 1, + "pa.it": 1, + "pa.leg.br": 1, + "pa.us": 1, + "paas.beebyte.io": 1, + "paas.datacenter.fi": 1, + "paas.hosted-by-previder.com": 1, + "paas.massivegrid.com": 1, + "padova.it": 1, + "padua.it": 1, + "page": 1, + "pagefrontapp.com": 1, + "pages.dev": 1, + "pages.it.hs-heilbronn.de": 1, + "pages.torproject.net": 1, + "pages.wiardweb.com": 1, + "pagespeedmobilizer.com": 1, + "pagexl.com": 1, + "palermo.it": 1, + "palmas.br": 1, + "panasonic": 1, + "panel.gg": 1, + "pantheonsite.io": 1, + "parachuting.aero": 1, + "paragliding.aero": 1, + "parallel.jp": 1, + "parasite.jp": 1, + "paris": 1, + "paris.eu.org": 1, + "parliament.nz": 1, + "parma.it": 1, + "paroch.k12.ma.us": 1, + "pars": 1, + "parti.se": 1, + "partners": 1, + "parts": 1, + "party": 1, + "passenger-association.aero": 1, + "patria.bo": 1, + "pavia.it": 1, + "pay": 1, + "pb.ao": 1, + "pb.gov.br": 1, + "pb.leg.br": 1, + "pc.it": 1, + "pc.pl": 1, + "pccw": 1, + "pcloud.host": 1, + "pd.it": 1, + "pdns.page": 1, + "pe": 1, + "pe.ca": 1, + "pe.gov.br": 1, + "pe.it": 1, + "pe.kr": 1, + "pe.leg.br": 1, + "pecori.jp": 1, + "peewee.jp": 1, + "penne.jp": 1, + "penza.su": 1, + "pepper.jp": 1, + "per.la": 1, + "per.nf": 1, + "per.sg": 1, + "perma.jp": 1, + "perso.ht": 1, + "perso.sn": 1, + "perso.tn": 1, + "perspecta.cloud": 1, + "perugia.it": 1, + "pesaro-urbino.it": 1, + "pesarourbino.it": 1, + "pescara.it": 1, + "pet": 1, + "pf": 1, + "pfizer": 1, + "pg.in": 1, + "pg.it": 1, + "pgafan.net": 1, + "pgfog.com": 1, + "ph": 1, + "pharmacien.fr": 1, + "pharmaciens.km": 1, + "pharmacy": 1, + "phd": 1, + "philips": 1, + "phone": 1, + "photo": 1, + "photography": 1, + "photos": 1, + "phutho.vn": 1, + "phuyen.vn": 1, + "phx.enscaled.us": 1, + "physio": 1, + "pi.gov.br": 1, + "pi.it": 1, + "pi.leg.br": 1, + "piacenza.it": 1, + "pics": 1, + "pictet": 1, + "pictures": 1, + "pid": 1, + "piedmont.it": 1, + "piemonte.it": 1, + "pigboat.jp": 1, + "pila.pl": 1, + "pilot.aero": 1, + "pimienta.org": 1, + "pin": 1, + "pinb.gov.pl": 1, + "ping": 1, + "pink": 1, + "pinoko.jp": 1, + "pioneer": 1, + "pippu.hokkaido.jp": 1, + "pisa.it": 1, + "pistoia.it": 1, + "pisz.pl": 1, + "piw.gov.pl": 1, + "pixolino.com": 1, + "pizza": 1, + "pk": 1, + "pl": 1, + "pl.eu.org": 1, + "pl.ua": 1, + "place": 1, + "platform0.app": 1, + "platter-app.com": 1, + "platter-app.dev": 1, + "platterp.us": 1, + "play": 1, + "playstation": 1, + "playstation-cloud.com": 1, + "plc.co.im": 1, + "plc.ly": 1, + "plc.uk": 1, + "plesk.page": 1, + "pleskns.com": 1, + "plo.ps": 1, + "plumbing": 1, + "plurinacional.bo": 1, + "plus": 1, + "pm": 1, + "pmn.it": 1, + "pn": 1, + "pn.it": 1, + "pnc": 1, + "po.gov.pl": 1, + "po.it": 1, + "poa.br": 1, + "podhale.pl": 1, + "podlasie.pl": 1, + "podzone.net": 1, + "podzone.org": 1, + "pohl": 1, + "point2this.com": 1, + "pointto.us": 1, + "poivron.org": 1, + "poker": 1, + "pokrovsk.su": 1, + "pol.dz": 1, + "pol.ht": 1, + "pol.tr": 1, + "police.uk": 1, + "politica.bo": 1, + "politie": 1, + "polkowice.pl": 1, + "poltava.ua": 1, + "pomorskie.pl": 1, + "pomorze.pl": 1, + "poniatowa.pl": 1, + "ponpes.id": 1, + "pordenone.it": 1, + "porn": 1, + "porsanger.no": 1, + "porsangu.no": 1, + "porsgrunn.no": 1, + "porsáŋgu.no": 1, + "port.fr": 1, + "post": 1, + "post.in": 1, + "postman-echo.com": 1, + "potager.org": 1, + "potenza.it": 1, + "powiat.pl": 1, + "poznan.pl": 1, + "pp.az": 1, + "pp.ru": 1, + "pp.se": 1, + "pp.ua": 1, + "ppg.br": 1, + "pr": 1, + "pr.gov.br": 1, + "pr.gov.pl": 1, + "pr.it": 1, + "pr.leg.br": 1, + "pr.us": 1, + "pramerica": 1, + "prato.it": 1, + "praxi": 1, + "prd.fr": 1, + "prd.km": 1, + "prd.mg": 1, + "prequalifyme.today": 1, + "press": 1, + "press.aero": 1, + "press.cy": 1, + "press.ma": 1, + "press.se": 1, + "presse.ci": 1, + "presse.km": 1, + "presse.ml": 1, + "pri.ee": 1, + "prime": 1, + "primetel.cloud": 1, + "principe.st": 1, + "priv.at": 1, + "priv.hu": 1, + "priv.instances.scw.cloud": 1, + "priv.me": 1, + "priv.no": 1, + "priv.pl": 1, + "privatelink.snowflake.app": 1, + "privatizehealthinsurance.net": 1, + "pro": 1, + "pro.az": 1, + "pro.br": 1, + "pro.cy": 1, + "pro.ec": 1, + "pro.fj": 1, + "pro.ht": 1, + "pro.in": 1, + "pro.mv": 1, + "pro.na": 1, + "pro.om": 1, + "pro.pr": 1, + "pro.tt": 1, + "pro.typeform.com": 1, + "pro.vn": 1, + "prochowice.pl": 1, + "prod": 1, + "production.aero": 1, + "productions": 1, + "prof": 1, + "prof.pr": 1, + "profesional.bo": 1, + "progressive": 1, + "promo": 1, + "properties": 1, + "property": 1, + "protection": 1, + "protonet.io": 1, + "pru": 1, + "prudential": 1, + "pruszkow.pl": 1, + "prvcy.page": 1, + "przeworsk.pl": 1, + "ps": 1, + "psc.br": 1, + "psi.br": 1, + "psp.gov.pl": 1, + "psse.gov.pl": 1, + "pstmn.io": 1, + "pt": 1, + "pt.eu.org": 1, + "pt.it": 1, + "pu.it": 1, + "pub": 1, + "pub.instances.scw.cloud": 1, + "pub.sa": 1, + "publ.pt": 1, + "public-inquiry.uk": 1, + "publishproxy.com": 1, + "pubtls.org": 1, + "pueblo.bo": 1, + "pug.it": 1, + "puglia.it": 1, + "pulawy.pl": 1, + "punyu.jp": 1, + "pup.gov.pl": 1, + "pupu.jp": 1, + "pussycat.jp": 1, + "pv.it": 1, + "pvh.br": 1, + "pvt.ge": 1, + "pvt.k12.ma.us": 1, + "pw": 1, + "pwc": 1, + "py": 1, + "pya.jp": 1, + "pyatigorsk.ru": 1, + "pymnt.uk": 1, + "pythonanywhere.com": 1, + "pz.it": 1, + "q-a.eu.org": 1, + "q.bg": 1, + "qa": 1, + "qa2.com": 1, + "qbuser.com": 1, + "qc.ca": 1, + "qc.com": 1, + "qcx.io": 1, + "qh.cn": 1, + "qld.au": 1, + "qld.edu.au": 1, + "qld.gov.au": 1, + "qoto.io": 1, + "qpon": 1, + "qsl.br": 1, + "qualifioapp.com": 1, + "quangbinh.vn": 1, + "quangnam.vn": 1, + "quangngai.vn": 1, + "quangninh.vn": 1, + "quangtri.vn": 1, + "quebec": 1, + "quest": 1, + "quicksytes.com": 1, + "r.bg": 1, + "r.cdn77.net": 1, + "r.se": 1, + "r2.dev": 1, + "ra.it": 1, + "racing": 1, + "rackmaze.com": 1, + "rackmaze.net": 1, + "rade.no": 1, + "radio": 1, + "radio.am": 1, + "radio.br": 1, + "radio.fm": 1, + "radom.pl": 1, + "radoy.no": 1, + "radøy.no": 1, + "raffleentry.org.uk": 1, + "rag-cloud-ch.hosteur.com": 1, + "rag-cloud.hosteur.com": 1, + "ragusa.it": 1, + "rahkkeravju.no": 1, + "raholt.no": 1, + "raindrop.jp": 1, + "raisa.no": 1, + "rakkestad.no": 1, + "ralingen.no": 1, + "rana.no": 1, + "randaberg.no": 1, + "rankoshi.hokkaido.jp": 1, + "ranzan.saitama.jp": 1, + "rar.ve": 1, + "ras.ru": 1, + "rauma.no": 1, + "ravendb.cloud": 1, + "ravendb.community": 1, + "ravendb.me": 1, + "ravendb.run": 1, + "ravenna.it": 1, + "ravpage.co.il": 1, + "rawa-maz.pl": 1, + "rc.it": 1, + "rdv.to": 1, + "rdy.jp": 1, + "re": 1, + "re.it": 1, + "re.kr": 1, + "read": 1, + "read-books.org": 1, + "readmyblog.org": 1, + "readthedocs.io": 1, + "readymade.jp": 1, + "realestate": 1, + "realestate.pl": 1, + "realm.cz": 1, + "realtor": 1, + "realty": 1, + "rebun.hokkaido.jp": 1, + "rec.br": 1, + "rec.co": 1, + "rec.nf": 1, + "rec.ro": 1, + "rec.ve": 1, + "recht.pro": 1, + "recife.br": 1, + "recipes": 1, + "recreation.aero": 1, + "red": 1, + "red.sv": 1, + "redirectme.net": 1, + "redstone": 1, + "redumbrella": 1, + "reg.dk": 1, + "reggio-calabria.it": 1, + "reggio-emilia.it": 1, + "reggiocalabria.it": 1, + "reggioemilia.it": 1, + "rehab": 1, + "reise": 1, + "reisen": 1, + "reit": 1, + "reklam.hu": 1, + "rel.ht": 1, + "rel.pl": 1, + "reliance": 1, + "remotewd.com": 1, + "ren": 1, + "rendalen.no": 1, + "rennebu.no": 1, + "rennesoy.no": 1, + "rennesøy.no": 1, + "rent": 1, + "rentals": 1, + "rep.br": 1, + "rep.kp": 1, + "repair": 1, + "repbody.aero": 1, + "repl.co": 1, + "repl.run": 1, + "report": 1, + "republican": 1, + "res.aero": 1, + "res.in": 1, + "research.aero": 1, + "reservd.com": 1, + "reservd.dev.thingdust.io": 1, + "reservd.disrec.thingdust.io": 1, + "reservd.testing.thingdust.io": 1, + "reserve-online.com": 1, + "reserve-online.net": 1, + "resindevice.io": 1, + "rest": 1, + "restaurant": 1, + "restaurant.bj": 1, + "resto.bj": 1, + "review": 1, + "reviews": 1, + "revista.bo": 1, + "rexroth": 1, + "rg.it": 1, + "rgr.jp": 1, + "rhcloud.com": 1, + "ri.it": 1, + "ri.us": 1, + "ribeirao.br": 1, + "ric.jelastic.vps-host.net": 1, + "rich": 1, + "richardli": 1, + "ricoh": 1, + "rieti.it": 1, + "rifu.miyagi.jp": 1, + "riik.ee": 1, + "rikubetsu.hokkaido.jp": 1, + "rikuzentakata.iwate.jp": 1, + "ril": 1, + "rimini.it": 1, + "rindal.no": 1, + "ringebu.no": 1, + "ringerike.no": 1, + "ringsaker.no": 1, + "rio": 1, + "rio.br": 1, + "riobranco.br": 1, + "riopreto.br": 1, + "rip": 1, + "rishiri.hokkaido.jp": 1, + "rishirifuji.hokkaido.jp": 1, + "risor.no": 1, + "rissa.no": 1, + "risør.no": 1, + "ritto.shiga.jp": 1, + "rivne.ua": 1, + "rj.gov.br": 1, + "rj.leg.br": 1, + "rl.no": 1, + "rm.it": 1, + "rn.gov.br": 1, + "rn.it": 1, + "rn.leg.br": 1, + "ro": 1, + "ro.eu.org": 1, + "ro.gov.br": 1, + "ro.im": 1, + "ro.it": 1, + "ro.leg.br": 1, + "roan.no": 1, + "rocher": 1, + "rocks": 1, + "rocky.page": 1, + "rodeo": 1, + "rodoy.no": 1, + "rogers": 1, + "rokunohe.aomori.jp": 1, + "rollag.no": 1, + "roma.it": 1, + "rome.it": 1, + "romsa.no": 1, + "romskog.no": 1, + "room": 1, + "roros.no": 1, + "rost.no": 1, + "rotorcraft.aero": 1, + "router.management": 1, + "rovigo.it": 1, + "rovno.ua": 1, + "royal-commission.uk": 1, + "royken.no": 1, + "royrvik.no": 1, + "rr.gov.br": 1, + "rr.leg.br": 1, + "rs": 1, + "rs.ba": 1, + "rs.gov.br": 1, + "rs.leg.br": 1, + "rs.webaccel.jp": 1, + "rsc.cdn77.org": 1, + "rsvp": 1, + "ru": 1, + "ru.com": 1, + "ru.eu.org": 1, + "ru.net": 1, + "rugby": 1, + "ruhr": 1, + "rulez.jp": 1, + "run": 1, + "run.app": 1, + "ruovat.no": 1, + "rv.ua": 1, + "rw": 1, + "rwe": 1, + "rybnik.pl": 1, + "ryd.wafaicloud.com": 1, + "rygge.no": 1, + "ryokami.saitama.jp": 1, + "ryugasaki.ibaraki.jp": 1, + "ryukyu": 1, + "ryuoh.shiga.jp": 1, + "rzeszow.pl": 1, + "rzgw.gov.pl": 1, + "ráhkkerávju.no": 1, + "ráisa.no": 1, + "råde.no": 1, + "råholt.no": 1, + "rælingen.no": 1, + "rødøy.no": 1, + "rømskog.no": 1, + "røros.no": 1, + "røst.no": 1, + "røyken.no": 1, + "røyrvik.no": 1, + "s.bg": 1, + "s.se": 1, + "s3-ap-northeast-1.amazonaws.com": 1, + "s3-ap-northeast-2.amazonaws.com": 1, + "s3-ap-south-1.amazonaws.com": 1, + "s3-ap-southeast-1.amazonaws.com": 1, + "s3-ap-southeast-2.amazonaws.com": 1, + "s3-ca-central-1.amazonaws.com": 1, + "s3-eu-central-1.amazonaws.com": 1, + "s3-eu-west-1.amazonaws.com": 1, + "s3-eu-west-2.amazonaws.com": 1, + "s3-eu-west-3.amazonaws.com": 1, + "s3-external-1.amazonaws.com": 1, + "s3-fips-us-gov-west-1.amazonaws.com": 1, + "s3-sa-east-1.amazonaws.com": 1, + "s3-us-east-2.amazonaws.com": 1, + "s3-us-gov-west-1.amazonaws.com": 1, + "s3-us-west-1.amazonaws.com": 1, + "s3-us-west-2.amazonaws.com": 1, + "s3-website-ap-northeast-1.amazonaws.com": 1, + "s3-website-ap-southeast-1.amazonaws.com": 1, + "s3-website-ap-southeast-2.amazonaws.com": 1, + "s3-website-eu-west-1.amazonaws.com": 1, + "s3-website-sa-east-1.amazonaws.com": 1, + "s3-website-us-east-1.amazonaws.com": 1, + "s3-website-us-west-1.amazonaws.com": 1, + "s3-website-us-west-2.amazonaws.com": 1, + "s3-website.ap-northeast-2.amazonaws.com": 1, + "s3-website.ap-south-1.amazonaws.com": 1, + "s3-website.ca-central-1.amazonaws.com": 1, + "s3-website.eu-central-1.amazonaws.com": 1, + "s3-website.eu-west-2.amazonaws.com": 1, + "s3-website.eu-west-3.amazonaws.com": 1, + "s3-website.fr-par.scw.cloud": 1, + "s3-website.nl-ams.scw.cloud": 1, + "s3-website.pl-waw.scw.cloud": 1, + "s3-website.us-east-2.amazonaws.com": 1, + "s3.amazonaws.com": 1, + "s3.ap-northeast-2.amazonaws.com": 1, + "s3.ap-south-1.amazonaws.com": 1, + "s3.ca-central-1.amazonaws.com": 1, + "s3.cn-north-1.amazonaws.com.cn": 1, + "s3.dualstack.ap-northeast-1.amazonaws.com": 1, + "s3.dualstack.ap-northeast-2.amazonaws.com": 1, + "s3.dualstack.ap-south-1.amazonaws.com": 1, + "s3.dualstack.ap-southeast-1.amazonaws.com": 1, + "s3.dualstack.ap-southeast-2.amazonaws.com": 1, + "s3.dualstack.ca-central-1.amazonaws.com": 1, + "s3.dualstack.eu-central-1.amazonaws.com": 1, + "s3.dualstack.eu-west-1.amazonaws.com": 1, + "s3.dualstack.eu-west-2.amazonaws.com": 1, + "s3.dualstack.eu-west-3.amazonaws.com": 1, + "s3.dualstack.sa-east-1.amazonaws.com": 1, + "s3.dualstack.us-east-1.amazonaws.com": 1, + "s3.dualstack.us-east-2.amazonaws.com": 1, + "s3.eu-central-1.amazonaws.com": 1, + "s3.eu-west-2.amazonaws.com": 1, + "s3.eu-west-3.amazonaws.com": 1, + "s3.fr-par.scw.cloud": 1, + "s3.isk01.sakurastorage.jp": 1, + "s3.isk02.sakurastorage.jp": 1, + "s3.nl-ams.scw.cloud": 1, + "s3.pl-waw.scw.cloud": 1, + "s3.teckids.org": 1, + "s3.us-east-2.amazonaws.com": 1, + "sa": 1, + "sa-east-1.elasticbeanstalk.com": 1, + "sa.au": 1, + "sa.com": 1, + "sa.cr": 1, + "sa.edu.au": 1, + "sa.gov.au": 1, + "sa.gov.pl": 1, + "sa.it": 1, + "sa.ngrok.io": 1, + "saarland": 1, + "sabae.fukui.jp": 1, + "sadist.jp": 1, + "sado.niigata.jp": 1, + "safe": 1, + "safety": 1, + "safety.aero": 1, + "saga.jp": 1, + "saga.saga.jp": 1, + "sagae.yamagata.jp": 1, + "sagamihara.kanagawa.jp": 1, + "saigawa.fukuoka.jp": 1, + "saijo.ehime.jp": 1, + "saikai.nagasaki.jp": 1, + "saiki.oita.jp": 1, + "saitama.jp": 1, + "saitama.saitama.jp": 1, + "saito.miyazaki.jp": 1, + "saka.hiroshima.jp": 1, + "sakado.saitama.jp": 1, + "sakae.chiba.jp": 1, + "sakae.nagano.jp": 1, + "sakahogi.gifu.jp": 1, + "sakai.fukui.jp": 1, + "sakai.ibaraki.jp": 1, + "sakai.osaka.jp": 1, + "sakaiminato.tottori.jp": 1, + "sakaki.nagano.jp": 1, + "sakata.yamagata.jp": 1, + "sakawa.kochi.jp": 1, + "sakegawa.yamagata.jp": 1, + "saku.nagano.jp": 1, + "sakuho.nagano.jp": 1, + "sakura": 1, + "sakura.chiba.jp": 1, + "sakura.ne.jp": 1, + "sakura.tochigi.jp": 1, + "sakura.tv": 1, + "sakuragawa.ibaraki.jp": 1, + "sakurai.nara.jp": 1, + "sakuratan.com": 1, + "sakuraweb.com": 1, + "sakyo.kyoto.jp": 1, + "salangen.no": 1, + "salat.no": 1, + "sale": 1, + "salerno.it": 1, + "salon": 1, + "saloon.jp": 1, + "saltdal.no": 1, + "salud.bo": 1, + "salvador.br": 1, + "samegawa.fukushima.jp": 1, + "samnanger.no": 1, + "sampa.br": 1, + "samsclub": 1, + "samsung": 1, + "samukawa.kanagawa.jp": 1, + "sanagochi.tokushima.jp": 1, + "sanda.hyogo.jp": 1, + "sandcats.io": 1, + "sande.more-og-romsdal.no": 1, + "sande.møre-og-romsdal.no": 1, + "sande.vestfold.no": 1, + "sandefjord.no": 1, + "sandnes.no": 1, + "sandnessjoen.no": 1, + "sandnessjøen.no": 1, + "sandoy.no": 1, + "sandvik": 1, + "sandvikcoromant": 1, + "sandøy.no": 1, + "sango.nara.jp": 1, + "sanjo.niigata.jp": 1, + "sannan.hyogo.jp": 1, + "sannohe.aomori.jp": 1, + "sano.tochigi.jp": 1, + "sanofi": 1, + "sanok.pl": 1, + "santamaria.br": 1, + "santoandre.br": 1, + "sanuki.kagawa.jp": 1, + "saobernardo.br": 1, + "saogonca.br": 1, + "saotome.st": 1, + "sap": 1, + "sar.it": 1, + "sardegna.it": 1, + "sardinia.it": 1, + "sarl": 1, + "saroma.hokkaido.jp": 1, + "sarpsborg.no": 1, + "sarufutsu.hokkaido.jp": 1, + "sas": 1, + "sasaguri.fukuoka.jp": 1, + "sasayama.hyogo.jp": 1, + "sasebo.nagasaki.jp": 1, + "sassari.it": 1, + "satosho.okayama.jp": 1, + "satsumasendai.kagoshima.jp": 1, + "satte.saitama.jp": 1, + "sauda.no": 1, + "sauherad.no": 1, + "save": 1, + "saves-the-whales.com": 1, + "savona.it": 1, + "saxo": 1, + "sayama.osaka.jp": 1, + "sayama.saitama.jp": 1, + "sayo.hyogo.jp": 1, + "sb": 1, + "sb.ua": 1, + "sbi": 1, + "sblo.jp": 1, + "sbs": 1, + "sc": 1, + "sc.cn": 1, + "sc.gov.br": 1, + "sc.ke": 1, + "sc.kr": 1, + "sc.leg.br": 1, + "sc.ls": 1, + "sc.tz": 1, + "sc.ug": 1, + "sc.us": 1, + "sca": 1, + "scalebook.scw.cloud": 1, + "scb": 1, + "sch.ae": 1, + "sch.id": 1, + "sch.ir": 1, + "sch.jo": 1, + "sch.lk": 1, + "sch.ly": 1, + "sch.ng": 1, + "sch.qa": 1, + "sch.sa": 1, + "sch.so": 1, + "sch.ss": 1, + "sch.tf": 1, + "sch.wf": 1, + "sch.zm": 1, + "schaeffler": 1, + "schmidt": 1, + "schokokeks.net": 1, + "scholarships": 1, + "school": 1, + "school.na": 1, + "school.nz": 1, + "school.za": 1, + "schoolbus.jp": 1, + "schools.nsw.edu.au": 1, + "schule": 1, + "schulplattform.de": 1, + "schulserver.de": 1, + "schwarz": 1, + "sci.eg": 1, + "science": 1, + "scientist.aero": 1, + "scot": 1, + "scrapper-site.net": 1, + "scrapping.cc": 1, + "scrysec.com": 1, + "sd": 1, + "sd.cn": 1, + "sd.us": 1, + "sdn.gov.pl": 1, + "sdscloud.pl": 1, + "se": 1, + "se.eu.org": 1, + "se.gov.br": 1, + "se.leg.br": 1, + "se.net": 1, + "search": 1, + "seat": 1, + "sebastopol.ua": 1, + "sec.ps": 1, + "secaas.hk": 1, + "secret.jp": 1, + "secure": 1, + "security": 1, + "securitytactics.com": 1, + "seek": 1, + "seg.br": 1, + "seidat.net": 1, + "seihi.nagasaki.jp": 1, + "seika.kyoto.jp": 1, + "seiro.niigata.jp": 1, + "seirou.niigata.jp": 1, + "seiyo.ehime.jp": 1, + "sejny.pl": 1, + "sekd1.beebyteapp.io": 1, + "seki.gifu.jp": 1, + "sekigahara.gifu.jp": 1, + "sekikawa.niigata.jp": 1, + "sel.no": 1, + "selbu.no": 1, + "select": 1, + "selfip.biz": 1, + "selfip.com": 1, + "selfip.info": 1, + "selfip.net": 1, + "selfip.org": 1, + "selje.no": 1, + "seljord.no": 1, + "sellfy.store": 1, + "sells-for-less.com": 1, + "sells-for-u.com": 1, + "sells-it.net": 1, + "sellsyourhome.org": 1, + "semboku.akita.jp": 1, + "semine.miyagi.jp": 1, + "senasa.ar": 1, + "sener": 1, + "sennan.osaka.jp": 1, + "senseering.net": 1, + "seoul.kr": 1, + "sera.hiroshima.jp": 1, + "seranishi.hiroshima.jp": 1, + "servebbs.com": 1, + "servebbs.net": 1, + "servebbs.org": 1, + "servebeer.com": 1, + "serveblog.net": 1, + "servecounterstrike.com": 1, + "serveexchange.com": 1, + "serveftp.com": 1, + "serveftp.net": 1, + "serveftp.org": 1, + "servegame.com": 1, + "servegame.org": 1, + "servehalflife.com": 1, + "servehttp.com": 1, + "servehumour.com": 1, + "serveirc.com": 1, + "serveminecraft.net": 1, + "servemp3.com": 1, + "servep2p.com": 1, + "servepics.com": 1, + "servequake.com": 1, + "servers.run": 1, + "servesarcasm.com": 1, + "service.gov.scot": 1, + "service.gov.uk": 1, + "service.one": 1, + "services": 1, + "services.aero": 1, + "setagaya.tokyo.jp": 1, + "seto.aichi.jp": 1, + "setouchi.okayama.jp": 1, + "settsu.osaka.jp": 1, + "sevastopol.ua": 1, + "seven": 1, + "sew": 1, + "sex": 1, + "sex.hu": 1, + "sex.pl": 1, + "sexy": 1, + "sf.no": 1, + "sfr": 1, + "sg": 1, + "sg-1.paas.massivegrid.net": 1, + "sh": 1, + "sh.cn": 1, + "shacknet.nu": 1, + "shakotan.hokkaido.jp": 1, + "shangrila": 1, + "shari.hokkaido.jp": 1, + "sharp": 1, + "shaw": 1, + "shell": 1, + "shia": 1, + "shibata.miyagi.jp": 1, + "shibata.niigata.jp": 1, + "shibecha.hokkaido.jp": 1, + "shibetsu.hokkaido.jp": 1, + "shibukawa.gunma.jp": 1, + "shibuya.tokyo.jp": 1, + "shichikashuku.miyagi.jp": 1, + "shichinohe.aomori.jp": 1, + "shiftcrypto.dev": 1, + "shiftcrypto.io": 1, + "shiftedit.io": 1, + "shiga.jp": 1, + "shiiba.miyazaki.jp": 1, + "shijonawate.osaka.jp": 1, + "shika.ishikawa.jp": 1, + "shikabe.hokkaido.jp": 1, + "shikama.miyagi.jp": 1, + "shikaoi.hokkaido.jp": 1, + "shikatsu.aichi.jp": 1, + "shiki.saitama.jp": 1, + "shikokuchuo.ehime.jp": 1, + "shiksha": 1, + "shima.mie.jp": 1, + "shimabara.nagasaki.jp": 1, + "shimada.shizuoka.jp": 1, + "shimamaki.hokkaido.jp": 1, + "shimamoto.osaka.jp": 1, + "shimane.jp": 1, + "shimane.shimane.jp": 1, + "shimizu.hokkaido.jp": 1, + "shimizu.shizuoka.jp": 1, + "shimoda.shizuoka.jp": 1, + "shimodate.ibaraki.jp": 1, + "shimofusa.chiba.jp": 1, + "shimogo.fukushima.jp": 1, + "shimoichi.nara.jp": 1, + "shimoji.okinawa.jp": 1, + "shimokawa.hokkaido.jp": 1, + "shimokitayama.nara.jp": 1, + "shimonita.gunma.jp": 1, + "shimonoseki.yamaguchi.jp": 1, + "shimosuwa.nagano.jp": 1, + "shimotsuke.tochigi.jp": 1, + "shimotsuma.ibaraki.jp": 1, + "shinagawa.tokyo.jp": 1, + "shinanomachi.nagano.jp": 1, + "shingo.aomori.jp": 1, + "shingu.fukuoka.jp": 1, + "shingu.hyogo.jp": 1, + "shingu.wakayama.jp": 1, + "shinichi.hiroshima.jp": 1, + "shinjo.nara.jp": 1, + "shinjo.okayama.jp": 1, + "shinjo.yamagata.jp": 1, + "shinjuku.tokyo.jp": 1, + "shinkamigoto.nagasaki.jp": 1, + "shinonsen.hyogo.jp": 1, + "shinshinotsu.hokkaido.jp": 1, + "shinshiro.aichi.jp": 1, + "shinto.gunma.jp": 1, + "shintoku.hokkaido.jp": 1, + "shintomi.miyazaki.jp": 1, + "shinyoshitomi.fukuoka.jp": 1, + "shiogama.miyagi.jp": 1, + "shiojiri.nagano.jp": 1, + "shioya.tochigi.jp": 1, + "shirahama.wakayama.jp": 1, + "shirakawa.fukushima.jp": 1, + "shirakawa.gifu.jp": 1, + "shirako.chiba.jp": 1, + "shiranuka.hokkaido.jp": 1, + "shiraoi.hokkaido.jp": 1, + "shiraoka.saitama.jp": 1, + "shirataka.yamagata.jp": 1, + "shiriuchi.hokkaido.jp": 1, + "shiroi.chiba.jp": 1, + "shiroishi.miyagi.jp": 1, + "shiroishi.saga.jp": 1, + "shirosato.ibaraki.jp": 1, + "shishikui.tokushima.jp": 1, + "shiso.hyogo.jp": 1, + "shisui.chiba.jp": 1, + "shitara.aichi.jp": 1, + "shiwa.iwate.jp": 1, + "shizukuishi.iwate.jp": 1, + "shizuoka.jp": 1, + "shizuoka.shizuoka.jp": 1, + "shobara.hiroshima.jp": 1, + "shoes": 1, + "shonai.fukuoka.jp": 1, + "shonai.yamagata.jp": 1, + "shoo.okayama.jp": 1, + "shop": 1, + "shop.brendly.rs": 1, + "shop.ht": 1, + "shop.hu": 1, + "shop.pl": 1, + "shop.ro": 1, + "shop.th": 1, + "shoparena.pl": 1, + "shopitsite.com": 1, + "shopping": 1, + "shopselect.net": 1, + "shopware.store": 1, + "shouji": 1, + "show": 1, + "show.aero": 1, + "showa.fukushima.jp": 1, + "showa.gunma.jp": 1, + "showa.yamanashi.jp": 1, + "showtime": 1, + "shunan.yamaguchi.jp": 1, + "shw.io": 1, + "si": 1, + "si.eu.org": 1, + "si.it": 1, + "sic.it": 1, + "sicilia.it": 1, + "sicily.it": 1, + "siellak.no": 1, + "siena.it": 1, + "sigdal.no": 1, + "siiites.com": 1, + "siljan.no": 1, + "silk": 1, + "simple-url.com": 1, + "simplesite.com": 1, + "simplesite.com.br": 1, + "simplesite.gr": 1, + "simplesite.pl": 1, + "sina": 1, + "sinaapp.com": 1, + "singles": 1, + "siracusa.it": 1, + "sirdal.no": 1, + "site": 1, + "site.tb-hosting.com": 1, + "site.transip.me": 1, + "siteleaf.net": 1, + "sites.static.land": 1, + "sj": 1, + "sjc.br": 1, + "sk": 1, + "sk.ca": 1, + "sk.eu.org": 1, + "skanit.no": 1, + "skanland.no": 1, + "skaun.no": 1, + "skedsmo.no": 1, + "skedsmokorset.no": 1, + "ski": 1, + "ski.no": 1, + "skien.no": 1, + "skierva.no": 1, + "skiervá.no": 1, + "skin": 1, + "skiptvet.no": 1, + "skjak.no": 1, + "skjervoy.no": 1, + "skjervøy.no": 1, + "skjåk.no": 1, + "sklep.pl": 1, + "sko.gov.pl": 1, + "skoczow.pl": 1, + "skodje.no": 1, + "skr.jp": 1, + "sky": 1, + "skydiving.aero": 1, + "skygearapp.com": 1, + "skype": 1, + "skánit.no": 1, + "skånland.no": 1, + "sl": 1, + "slask.pl": 1, + "slattum.no": 1, + "sld.do": 1, + "sld.pa": 1, + "slg.br": 1, + "sling": 1, + "slupsk.pl": 1, + "slz.br": 1, + "sm": 1, + "sm.ua": 1, + "small-web.org": 1, + "smart": 1, + "smartlabeling.scw.cloud": 1, + "smile": 1, + "smola.no": 1, + "smushcdn.com": 1, + "smøla.no": 1, + "sn": 1, + "sn.cn": 1, + "snaase.no": 1, + "snasa.no": 1, + "sncf": 1, + "snillfjord.no": 1, + "snoasa.no": 1, + "snowflake.app": 1, + "snåase.no": 1, + "snåsa.no": 1, + "so": 1, + "so.gov.pl": 1, + "so.it": 1, + "sobetsu.hokkaido.jp": 1, + "soc.dz": 1, + "soc.lk": 1, + "soc.srcf.net": 1, + "soccer": 1, + "sochi.su": 1, + "social": 1, + "soctrang.vn": 1, + "sodegaura.chiba.jp": 1, + "soeda.fukuoka.jp": 1, + "softbank": 1, + "software": 1, + "software.aero": 1, + "sogndal.no": 1, + "sogne.no": 1, + "sohu": 1, + "soja.okayama.jp": 1, + "soka.saitama.jp": 1, + "sokndal.no": 1, + "sola.no": 1, + "solar": 1, + "solund.no": 1, + "solutions": 1, + "soma.fukushima.jp": 1, + "somna.no": 1, + "sondre-land.no": 1, + "sondrio.it": 1, + "song": 1, + "songdalen.no": 1, + "soni.nara.jp": 1, + "sonla.vn": 1, + "sony": 1, + "soo.kagoshima.jp": 1, + "sopot.pl": 1, + "sor-aurdal.no": 1, + "sor-fron.no": 1, + "sor-odal.no": 1, + "sor-varanger.no": 1, + "sorfold.no": 1, + "sorocaba.br": 1, + "sorreisa.no": 1, + "sortland.no": 1, + "sorum.no": 1, + "sos.pl": 1, + "sosa.chiba.jp": 1, + "sosnowiec.pl": 1, + "soundcast.me": 1, + "sowa.ibaraki.jp": 1, + "soy": 1, + "sp.gov.br": 1, + "sp.it": 1, + "sp.leg.br": 1, + "spa": 1, + "space": 1, + "space-to-rent.com": 1, + "spacekit.io": 1, + "spb.ru": 1, + "spb.su": 1, + "spdns.de": 1, + "spdns.eu": 1, + "spdns.org": 1, + "sphinx.mythic-beasts.com": 1, + "spjelkavik.no": 1, + "sport": 1, + "sport.hu": 1, + "spot": 1, + "spydeberg.no": 1, + "square7.ch": 1, + "square7.de": 1, + "square7.net": 1, + "squares.net": 1, + "sr": 1, + "sr.gov.pl": 1, + "sr.it": 1, + "srht.site": 1, + "srl": 1, + "srv.br": 1, + "ss": 1, + "ss.it": 1, + "ssl.origin.cdn77-secure.org": 1, + "st": 1, + "st.no": 1, + "staba.jp": 1, + "stackhero-network.com": 1, + "stada": 1, + "stage.nodeart.io": 1, + "staging.onred.one": 1, + "stalowa-wola.pl": 1, + "stange.no": 1, + "staples": 1, + "star": 1, + "starachowice.pl": 1, + "stargard.pl": 1, + "starostwo.gov.pl": 1, + "stat.no": 1, + "statebank": 1, + "statefarm": 1, + "stathelle.no": 1, + "static-access.net": 1, + "static.land": 1, + "static.observableusercontent.com": 1, + "stavanger.no": 1, + "stavern.no": 1, + "stc": 1, + "stcgroup": 1, + "steigen.no": 1, + "steinkjer.no": 1, + "sth.ac.at": 1, + "stjordal.no": 1, + "stjordalshalsen.no": 1, + "stjørdal.no": 1, + "stjørdalshalsen.no": 1, + "stockholm": 1, + "stokke.no": 1, + "stor-elvdal.no": 1, + "storage": 1, + "storage.yandexcloud.net": 1, + "stord.no": 1, + "stordal.no": 1, + "store": 1, + "store.bb": 1, + "store.dk": 1, + "store.nf": 1, + "store.ro": 1, + "store.st": 1, + "store.ve": 1, + "storebase.store": 1, + "storfjord.no": 1, + "storipress.app": 1, + "storj.farm": 1, + "strand.no": 1, + "stranda.no": 1, + "stream": 1, + "streamlit.app": 1, + "streamlitapp.com": 1, + "stripper.jp": 1, + "stryn.no": 1, + "student.aero": 1, + "studio": 1, + "study": 1, + "stuff-4-sale.org": 1, + "stuff-4-sale.us": 1, + "stufftoread.com": 1, + "style": 1, + "su": 1, + "su.paba.se": 1, + "sub.jp": 1, + "sucks": 1, + "sue.fukuoka.jp": 1, + "suedtirol.it": 1, + "suginami.tokyo.jp": 1, + "sugito.saitama.jp": 1, + "suifu.ibaraki.jp": 1, + "suita.osaka.jp": 1, + "sukagawa.fukushima.jp": 1, + "sukumo.kochi.jp": 1, + "sula.no": 1, + "suldal.no": 1, + "suli.hu": 1, + "sumida.tokyo.jp": 1, + "sumita.iwate.jp": 1, + "sumomo.ne.jp": 1, + "sumoto.hyogo.jp": 1, + "sumoto.kumamoto.jp": 1, + "sumy.ua": 1, + "sunagawa.hokkaido.jp": 1, + "sund.no": 1, + "sunndal.no": 1, + "sunnyday.jp": 1, + "supabase.co": 1, + "supabase.in": 1, + "supabase.net": 1, + "supersale.jp": 1, + "supplies": 1, + "supply": 1, + "support": 1, + "surf": 1, + "surgery": 1, + "surnadal.no": 1, + "susaki.kochi.jp": 1, + "susono.shizuoka.jp": 1, + "suwa.nagano.jp": 1, + "suwalki.pl": 1, + "suzaka.nagano.jp": 1, + "suzu.ishikawa.jp": 1, + "suzuka.mie.jp": 1, + "suzuki": 1, + "sv": 1, + "sv.it": 1, + "svalbard.no": 1, + "sveio.no": 1, + "svelvik.no": 1, + "svn-repos.de": 1, + "swatch": 1, + "sweetpepper.org": 1, + "swidnica.pl": 1, + "swidnik.pl": 1, + "swiebodzin.pl": 1, + "swinoujscie.pl": 1, + "swiss": 1, + "sx": 1, + "sx.cn": 1, + "sy": 1, + "sydney": 1, + "sykkylven.no": 1, + "syncloud.it": 1, + "syno-ds.de": 1, + "synology-diskstation.de": 1, + "synology-ds.de": 1, + "synology.me": 1, + "systems": 1, + "sytes.net": 1, + "sz": 1, + "szczecin.pl": 1, + "szczytno.pl": 1, + "szex.hu": 1, + "szkola.pl": 1, + "sálat.no": 1, + "sálát.no": 1, + "søgne.no": 1, + "sømna.no": 1, + "søndre-land.no": 1, + "sør-aurdal.no": 1, + "sør-fron.no": 1, + "sør-odal.no": 1, + "sør-varanger.no": 1, + "sørfold.no": 1, + "sørreisa.no": 1, + "sørum.no": 1, + "südtirol.it": 1, + "t.bg": 1, + "t.se": 1, + "t3l3p0rt.net": 1, + "ta.it": 1, + "taa.it": 1, + "tab": 1, + "tabayama.yamanashi.jp": 1, + "tabitorder.co.il": 1, + "tabuse.yamaguchi.jp": 1, + "tachiarai.fukuoka.jp": 1, + "tachikawa.tokyo.jp": 1, + "tadaoka.osaka.jp": 1, + "tado.mie.jp": 1, + "tadotsu.kagawa.jp": 1, + "tagajo.miyagi.jp": 1, + "tagami.niigata.jp": 1, + "tagawa.fukuoka.jp": 1, + "tahara.aichi.jp": 1, + "taifun-dns.de": 1, + "taiji.wakayama.jp": 1, + "taiki.hokkaido.jp": 1, + "taiki.mie.jp": 1, + "tainai.niigata.jp": 1, + "taipei": 1, + "taira.toyama.jp": 1, + "taishi.hyogo.jp": 1, + "taishi.osaka.jp": 1, + "taishin.fukushima.jp": 1, + "taito.tokyo.jp": 1, + "taiwa.miyagi.jp": 1, + "tajimi.gifu.jp": 1, + "tajiri.osaka.jp": 1, + "taka.hyogo.jp": 1, + "takagi.nagano.jp": 1, + "takahagi.ibaraki.jp": 1, + "takahama.aichi.jp": 1, + "takahama.fukui.jp": 1, + "takaharu.miyazaki.jp": 1, + "takahashi.okayama.jp": 1, + "takahata.yamagata.jp": 1, + "takaishi.osaka.jp": 1, + "takamatsu.kagawa.jp": 1, + "takamori.kumamoto.jp": 1, + "takamori.nagano.jp": 1, + "takanabe.miyazaki.jp": 1, + "takanezawa.tochigi.jp": 1, + "takaoka.toyama.jp": 1, + "takarazuka.hyogo.jp": 1, + "takasago.hyogo.jp": 1, + "takasaki.gunma.jp": 1, + "takashima.shiga.jp": 1, + "takasu.hokkaido.jp": 1, + "takata.fukuoka.jp": 1, + "takatori.nara.jp": 1, + "takatsuki.osaka.jp": 1, + "takatsuki.shiga.jp": 1, + "takayama.gifu.jp": 1, + "takayama.gunma.jp": 1, + "takayama.nagano.jp": 1, + "takazaki.miyazaki.jp": 1, + "takehara.hiroshima.jp": 1, + "taketa.oita.jp": 1, + "taketomi.okinawa.jp": 1, + "taki.mie.jp": 1, + "takikawa.hokkaido.jp": 1, + "takino.hyogo.jp": 1, + "takinoue.hokkaido.jp": 1, + "takko.aomori.jp": 1, + "tako.chiba.jp": 1, + "taku.saga.jp": 1, + "talk": 1, + "tama.tokyo.jp": 1, + "tamakawa.fukushima.jp": 1, + "tamaki.mie.jp": 1, + "tamamura.gunma.jp": 1, + "tamano.okayama.jp": 1, + "tamatsukuri.ibaraki.jp": 1, + "tamayu.shimane.jp": 1, + "tamba.hyogo.jp": 1, + "tana.no": 1, + "tanabe.kyoto.jp": 1, + "tanabe.wakayama.jp": 1, + "tanagura.fukushima.jp": 1, + "tananger.no": 1, + "tank.jp": 1, + "tanohata.iwate.jp": 1, + "taobao": 1, + "tara.saga.jp": 1, + "tarama.okinawa.jp": 1, + "taranto.it": 1, + "target": 1, + "targi.pl": 1, + "tarnobrzeg.pl": 1, + "tarui.gifu.jp": 1, + "tarumizu.kagoshima.jp": 1, + "tas.au": 1, + "tas.edu.au": 1, + "tas.gov.au": 1, + "tashkent.su": 1, + "tatamotors": 1, + "tatar": 1, + "tatebayashi.gunma.jp": 1, + "tateshina.nagano.jp": 1, + "tateyama.chiba.jp": 1, + "tateyama.toyama.jp": 1, + "tatsuno.hyogo.jp": 1, + "tatsuno.nagano.jp": 1, + "tattoo": 1, + "tawaramoto.nara.jp": 1, + "tax": 1, + "taxi": 1, + "taxi.br": 1, + "tayninh.vn": 1, + "tc": 1, + "tc.br": 1, + "tci": 1, + "tcp4.me": 1, + "td": 1, + "tdk": 1, + "te.it": 1, + "te.ua": 1, + "teaches-yoga.com": 1, + "team": 1, + "tec.br": 1, + "tec.mi.us": 1, + "tec.ve": 1, + "tech": 1, + "tech.orange": 1, + "technology": 1, + "tecnologia.bo": 1, + "tel": 1, + "tel.tr": 1, + "tele.amune.org": 1, + "telebit.app": 1, + "telebit.io": 1, + "temasek": 1, + "temp-dns.com": 1, + "tempio-olbia.it": 1, + "tempioolbia.it": 1, + "tempurl.host": 1, + "tendo.yamagata.jp": 1, + "tenei.fukushima.jp": 1, + "tenkawa.nara.jp": 1, + "tennis": 1, + "tenri.nara.jp": 1, + "teo.br": 1, + "teramo.it": 1, + "termez.su": 1, + "terni.it": 1, + "ternopil.ua": 1, + "teshikaga.hokkaido.jp": 1, + "test-iserv.de": 1, + "test.ru": 1, + "test.tj": 1, + "teva": 1, + "tf": 1, + "tg": 1, + "tgory.pl": 1, + "th": 1, + "thaibinh.vn": 1, + "thainguyen.vn": 1, + "thanhhoa.vn": 1, + "thanhphohochiminh.vn": 1, + "thd": 1, + "the.br": 1, + "theater": 1, + "theatre": 1, + "theshop.jp": 1, + "theworkpc.com": 1, + "thick.jp": 1, + "thingdustdata.com": 1, + "thruhere.net": 1, + "thuathienhue.vn": 1, + "tiaa": 1, + "tickets": 1, + "tickets.io": 1, + "tienda": 1, + "tiengiang.vn": 1, + "time.no": 1, + "tingvoll.no": 1, + "tinn.no": 1, + "tips": 1, + "tires": 1, + "tirol": 1, + "tj": 1, + "tj.cn": 1, + "tjeldsund.no": 1, + "tjmaxx": 1, + "tjome.no": 1, + "tjx": 1, + "tjøme.no": 1, + "tk": 1, + "tkmaxx": 1, + "tksat.bo": 1, + "tl": 1, + "tlon.network": 1, + "tm": 1, + "tm.cy": 1, + "tm.dz": 1, + "tm.fr": 1, + "tm.hu": 1, + "tm.km": 1, + "tm.mc": 1, + "tm.mg": 1, + "tm.no": 1, + "tm.pl": 1, + "tm.ro": 1, + "tm.se": 1, + "tm.za": 1, + "tmall": 1, + "tmp.br": 1, + "tn": 1, + "tn.it": 1, + "tn.oxa.cloud": 1, + "tn.us": 1, + "to": 1, + "to.gov.br": 1, + "to.gt": 1, + "to.it": 1, + "to.leg.br": 1, + "to.md": 1, + "toba.mie.jp": 1, + "tobe.ehime.jp": 1, + "tobetsu.hokkaido.jp": 1, + "tobishima.aichi.jp": 1, + "tochigi.jp": 1, + "tochigi.tochigi.jp": 1, + "tochio.niigata.jp": 1, + "toda.saitama.jp": 1, + "today": 1, + "toei.aichi.jp": 1, + "toga.toyama.jp": 1, + "togakushi.nagano.jp": 1, + "togane.chiba.jp": 1, + "togitsu.nagasaki.jp": 1, + "togliatti.su": 1, + "togo.aichi.jp": 1, + "togura.nagano.jp": 1, + "tohma.hokkaido.jp": 1, + "tohnosho.chiba.jp": 1, + "toho.fukuoka.jp": 1, + "tokai.aichi.jp": 1, + "tokai.ibaraki.jp": 1, + "tokamachi.niigata.jp": 1, + "tokashiki.okinawa.jp": 1, + "toki.gifu.jp": 1, + "tokigawa.saitama.jp": 1, + "tokke.no": 1, + "tokoname.aichi.jp": 1, + "tokorozawa.saitama.jp": 1, + "tokushima.jp": 1, + "tokushima.tokushima.jp": 1, + "tokuyama.yamaguchi.jp": 1, + "tokyo": 1, + "tokyo.jp": 1, + "tolga.no": 1, + "tomakomai.hokkaido.jp": 1, + "tomari.hokkaido.jp": 1, + "tome.miyagi.jp": 1, + "tomi.nagano.jp": 1, + "tomigusuku.okinawa.jp": 1, + "tomika.gifu.jp": 1, + "tomioka.gunma.jp": 1, + "tomisato.chiba.jp": 1, + "tomiya.miyagi.jp": 1, + "tomobe.ibaraki.jp": 1, + "tonaki.okinawa.jp": 1, + "tonami.toyama.jp": 1, + "tondabayashi.osaka.jp": 1, + "tone.ibaraki.jp": 1, + "tonkotsu.jp": 1, + "tono.iwate.jp": 1, + "tonosho.kagawa.jp": 1, + "tonsberg.no": 1, + "toolforge.org": 1, + "tools": 1, + "toon.ehime.jp": 1, + "top": 1, + "topaz.ne.jp": 1, + "torahime.shiga.jp": 1, + "toray": 1, + "toride.ibaraki.jp": 1, + "torino.it": 1, + "torproject.net": 1, + "torsken.no": 1, + "tos.it": 1, + "tosa.kochi.jp": 1, + "tosashimizu.kochi.jp": 1, + "toscana.it": 1, + "toshiba": 1, + "toshima.tokyo.jp": 1, + "tosu.saga.jp": 1, + "total": 1, + "tottori.jp": 1, + "tottori.tottori.jp": 1, + "tourism.bj": 1, + "tourism.pl": 1, + "tourism.tn": 1, + "tours": 1, + "towada.aomori.jp": 1, + "town": 1, + "townnews-staging.com": 1, + "toya.hokkaido.jp": 1, + "toyako.hokkaido.jp": 1, + "toyama.jp": 1, + "toyama.toyama.jp": 1, + "toyo.kochi.jp": 1, + "toyoake.aichi.jp": 1, + "toyohashi.aichi.jp": 1, + "toyokawa.aichi.jp": 1, + "toyonaka.osaka.jp": 1, + "toyone.aichi.jp": 1, + "toyono.osaka.jp": 1, + "toyooka.hyogo.jp": 1, + "toyosato.shiga.jp": 1, + "toyota": 1, + "toyota.aichi.jp": 1, + "toyota.yamaguchi.jp": 1, + "toyotomi.hokkaido.jp": 1, + "toyotsu.fukuoka.jp": 1, + "toyoura.hokkaido.jp": 1, + "toys": 1, + "tozawa.yamagata.jp": 1, + "tozsde.hu": 1, + "tp.it": 1, + "tr": 1, + "tr.eu.org": 1, + "tr.it": 1, + "tr.no": 1, + "tra.kp": 1, + "trade": 1, + "trader.aero": 1, + "trading": 1, + "trading.aero": 1, + "traeumtgerade.de": 1, + "trafficplex.cloud": 1, + "trainer.aero": 1, + "training": 1, + "trana.no": 1, + "tranby.no": 1, + "trani-andria-barletta.it": 1, + "trani-barletta-andria.it": 1, + "traniandriabarletta.it": 1, + "tranibarlettaandria.it": 1, + "tranoy.no": 1, + "translate.goog": 1, + "translated.page": 1, + "transporte.bo": 1, + "tranøy.no": 1, + "trapani.it": 1, + "travel": 1, + "travel.in": 1, + "travel.pl": 1, + "travel.tt": 1, + "travelers": 1, + "travelersinsurance": 1, + "travinh.vn": 1, + "trd.br": 1, + "trentin-sud-tirol.it": 1, + "trentin-sudtirol.it": 1, + "trentin-sued-tirol.it": 1, + "trentin-suedtirol.it": 1, + "trentin-süd-tirol.it": 1, + "trentin-südtirol.it": 1, + "trentino-a-adige.it": 1, + "trentino-aadige.it": 1, + "trentino-alto-adige.it": 1, + "trentino-altoadige.it": 1, + "trentino-s-tirol.it": 1, + "trentino-stirol.it": 1, + "trentino-sud-tirol.it": 1, + "trentino-sudtirol.it": 1, + "trentino-sued-tirol.it": 1, + "trentino-suedtirol.it": 1, + "trentino-süd-tirol.it": 1, + "trentino-südtirol.it": 1, + "trentino.it": 1, + "trentinoa-adige.it": 1, + "trentinoaadige.it": 1, + "trentinoalto-adige.it": 1, + "trentinoaltoadige.it": 1, + "trentinos-tirol.it": 1, + "trentinostirol.it": 1, + "trentinosud-tirol.it": 1, + "trentinosudtirol.it": 1, + "trentinosued-tirol.it": 1, + "trentinosuedtirol.it": 1, + "trentinosüd-tirol.it": 1, + "trentinosüdtirol.it": 1, + "trentinsud-tirol.it": 1, + "trentinsudtirol.it": 1, + "trentinsued-tirol.it": 1, + "trentinsuedtirol.it": 1, + "trentinsüd-tirol.it": 1, + "trentinsüdtirol.it": 1, + "trento.it": 1, + "treviso.it": 1, + "trieste.it": 1, + "troandin.no": 1, + "trogstad.no": 1, + "troitsk.su": 1, + "tromsa.no": 1, + "tromso.no": 1, + "tromsø.no": 1, + "trondheim.no": 1, + "trust": 1, + "trv": 1, + "try-snowplow.com": 1, + "trycloudflare.com": 1, + "trysil.no": 1, + "træna.no": 1, + "trøgstad.no": 1, + "ts.it": 1, + "ts.net": 1, + "tselinograd.su": 1, + "tsk.tr": 1, + "tsu.mie.jp": 1, + "tsubame.niigata.jp": 1, + "tsubata.ishikawa.jp": 1, + "tsubetsu.hokkaido.jp": 1, + "tsuchiura.ibaraki.jp": 1, + "tsuga.tochigi.jp": 1, + "tsugaru.aomori.jp": 1, + "tsuiki.fukuoka.jp": 1, + "tsukigata.hokkaido.jp": 1, + "tsukiyono.gunma.jp": 1, + "tsukuba.ibaraki.jp": 1, + "tsukui.kanagawa.jp": 1, + "tsukumi.oita.jp": 1, + "tsumagoi.gunma.jp": 1, + "tsunan.niigata.jp": 1, + "tsuno.kochi.jp": 1, + "tsuno.miyazaki.jp": 1, + "tsuru.yamanashi.jp": 1, + "tsuruga.fukui.jp": 1, + "tsurugashima.saitama.jp": 1, + "tsurugi.ishikawa.jp": 1, + "tsuruoka.yamagata.jp": 1, + "tsuruta.aomori.jp": 1, + "tsushima.aichi.jp": 1, + "tsushima.nagasaki.jp": 1, + "tsuwano.shimane.jp": 1, + "tsuyama.okayama.jp": 1, + "tt": 1, + "tt.im": 1, + "tube": 1, + "tui": 1, + "tula.su": 1, + "tuleap-partners.com": 1, + "tunes": 1, + "tunk.org": 1, + "tur.ar": 1, + "tur.br": 1, + "turek.pl": 1, + "turin.it": 1, + "turystyka.pl": 1, + "tuscany.it": 1, + "tushu": 1, + "tuva.su": 1, + "tuxfamily.org": 1, + "tuyenquang.vn": 1, + "tv": 1, + "tv.bb": 1, + "tv.bo": 1, + "tv.br": 1, + "tv.im": 1, + "tv.in": 1, + "tv.it": 1, + "tv.kg": 1, + "tv.na": 1, + "tv.sd": 1, + "tv.tr": 1, + "tv.tz": 1, + "tvedestrand.no": 1, + "tvs": 1, + "tw": 1, + "tw.cn": 1, + "twmail.cc": 1, + "twmail.net": 1, + "twmail.org": 1, + "tx.us": 1, + "tychy.pl": 1, + "tydal.no": 1, + "tynset.no": 1, + "typedream.app": 1, + "tysfjord.no": 1, + "tysnes.no": 1, + "tysvar.no": 1, + "tysvær.no": 1, + "tz": 1, + "tønsberg.no": 1, + "u.bg": 1, + "u.channelsdvr.net": 1, + "u.se": 1, + "u2-local.xnbay.com": 1, + "u2.xnbay.com": 1, + "ua": 1, + "ua.rs": 1, + "ubank": 1, + "ube.yamaguchi.jp": 1, + "uber.space": 1, + "ubs": 1, + "uchihara.ibaraki.jp": 1, + "uchiko.ehime.jp": 1, + "uchinada.ishikawa.jp": 1, + "uchinomi.kagawa.jp": 1, + "ud.it": 1, + "uda.nara.jp": 1, + "udi.br": 1, + "udine.it": 1, + "udono.mie.jp": 1, + "ueda.nagano.jp": 1, + "ueno.gunma.jp": 1, + "uenohara.yamanashi.jp": 1, + "ufcfan.org": 1, + "ug": 1, + "ug.gov.pl": 1, + "ugim.gov.pl": 1, + "uh-oh.jp": 1, + "ui.nabu.casa": 1, + "uji.kyoto.jp": 1, + "ujiie.tochigi.jp": 1, + "ujitawara.kyoto.jp": 1, + "uk": 1, + "uk.com": 1, + "uk.eu.org": 1, + "uk.in": 1, + "uk.kg": 1, + "uk.net": 1, + "uk.oxa.cloud": 1, + "uk.primetel.cloud": 1, + "uk.reclaim.cloud": 1, + "uk0.bigv.io": 1, + "uki.kumamoto.jp": 1, + "ukiha.fukuoka.jp": 1, + "ullensaker.no": 1, + "ullensvang.no": 1, + "ulsan.kr": 1, + "ulvik.no": 1, + "um.gov.pl": 1, + "umaji.kochi.jp": 1, + "umb.it": 1, + "umbria.it": 1, + "umi.fukuoka.jp": 1, + "umig.gov.pl": 1, + "unazuki.toyama.jp": 1, + "under.jp": 1, + "undo.jp": 1, + "uni5.net": 1, + "unicloud.pl": 1, + "unicom": 1, + "union.aero": 1, + "univ.bj": 1, + "univ.sn": 1, + "university": 1, + "unjarga.no": 1, + "unjárga.no": 1, + "unnan.shimane.jp": 1, + "uno": 1, + "unusualperson.com": 1, + "unzen.nagasaki.jp": 1, + "uol": 1, + "uonuma.niigata.jp": 1, + "uozu.toyama.jp": 1, + "up.in": 1, + "upaas.kazteleport.kz": 1, + "upli.io": 1, + "upow.gov.pl": 1, + "upper.jp": 1, + "uppo.gov.pl": 1, + "ups": 1, + "urakawa.hokkaido.jp": 1, + "urasoe.okinawa.jp": 1, + "urausu.hokkaido.jp": 1, + "urawa.saitama.jp": 1, + "urayasu.chiba.jp": 1, + "urbino-pesaro.it": 1, + "urbinopesaro.it": 1, + "ureshino.mie.jp": 1, + "uri.arpa": 1, + "url.tw": 1, + "urn.arpa": 1, + "urown.cloud": 1, + "uruma.okinawa.jp": 1, + "uryu.hokkaido.jp": 1, + "us": 1, + "us-1.evennode.com": 1, + "us-2.evennode.com": 1, + "us-3.evennode.com": 1, + "us-4.evennode.com": 1, + "us-east-1.amazonaws.com": 1, + "us-east-1.elasticbeanstalk.com": 1, + "us-east-2.elasticbeanstalk.com": 1, + "us-gov-west-1.elasticbeanstalk.com": 1, + "us-west-1.elasticbeanstalk.com": 1, + "us-west-2.elasticbeanstalk.com": 1, + "us.ax": 1, + "us.com": 1, + "us.eu.org": 1, + "us.gov.pl": 1, + "us.in": 1, + "us.kg": 1, + "us.na": 1, + "us.ngrok.io": 1, + "us.org": 1, + "us.platform.sh": 1, + "us.reclaim.cloud": 1, + "usa.oita.jp": 1, + "user.aseinet.ne.jp": 1, + "user.party.eus": 1, + "user.srcf.net": 1, + "user.webaccel.jp": 1, + "usercontent.jp": 1, + "ushiku.ibaraki.jp": 1, + "usr.cloud.muni.cz": 1, + "ustka.pl": 1, + "usui.fukuoka.jp": 1, + "usuki.oita.jp": 1, + "ut.us": 1, + "utashinai.hokkaido.jp": 1, + "utazas.hu": 1, + "utazu.kagawa.jp": 1, + "uto.kumamoto.jp": 1, + "utsira.no": 1, + "utsunomiya.tochigi.jp": 1, + "utwente.io": 1, + "uw.gov.pl": 1, + "uwajima.ehime.jp": 1, + "uwu.ai": 1, + "uy": 1, + "uy.com": 1, + "uz": 1, + "uz.ua": 1, + "uzhgorod.ua": 1, + "uzs.gov.pl": 1, + "v-info.info": 1, + "v.bg": 1, + "v.ua": 1, + "va": 1, + "va.it": 1, + "va.no": 1, + "va.us": 1, + "vaapste.no": 1, + "vacations": 1, + "vadso.no": 1, + "vadsø.no": 1, + "vaga.no": 1, + "vagan.no": 1, + "vagsoy.no": 1, + "vaksdal.no": 1, + "val-d-aosta.it": 1, + "val-daosta.it": 1, + "vald-aosta.it": 1, + "valdaosta.it": 1, + "valer.hedmark.no": 1, + "valer.ostfold.no": 1, + "valle-aosta.it": 1, + "valle-d-aosta.it": 1, + "valle-daosta.it": 1, + "valle.no": 1, + "valleaosta.it": 1, + "valled-aosta.it": 1, + "valledaosta.it": 1, + "vallee-aoste.it": 1, + "vallee-d-aoste.it": 1, + "valleeaoste.it": 1, + "valleedaoste.it": 1, + "vallée-aoste.it": 1, + "vallée-d-aoste.it": 1, + "valléeaoste.it": 1, + "valléedaoste.it": 1, + "vana": 1, + "vang.no": 1, + "vanguard": 1, + "vanylven.no": 1, + "vao.it": 1, + "vapor.cloud": 1, + "vaporcloud.io": 1, + "vardo.no": 1, + "vardø.no": 1, + "varese.it": 1, + "varggat.no": 1, + "varoy.no": 1, + "vb.it": 1, + "vc": 1, + "vc.it": 1, + "vda.it": 1, + "ve": 1, + "ve.it": 1, + "vefsn.no": 1, + "vega.no": 1, + "vegarshei.no": 1, + "vegas": 1, + "vegårshei.no": 1, + "velvet.jp": 1, + "ven.it": 1, + "veneto.it": 1, + "venezia.it": 1, + "venice.it": 1, + "vennesla.no": 1, + "ventures": 1, + "verbania.it": 1, + "vercel.app": 1, + "vercel.dev": 1, + "vercelli.it": 1, + "verdal.no": 1, + "verisign": 1, + "vermögensberater": 1, + "vermögensberatung": 1, + "verona.it": 1, + "verran.no": 1, + "verse.jp": 1, + "versicherung": 1, + "versus.jp": 1, + "vestby.no": 1, + "vestnes.no": 1, + "vestre-slidre.no": 1, + "vestre-toten.no": 1, + "vestvagoy.no": 1, + "vestvågøy.no": 1, + "vet": 1, + "vet.br": 1, + "veterinaire.fr": 1, + "veterinaire.km": 1, + "vevelstad.no": 1, + "vf.no": 1, + "vfs.cloud9.af-south-1.amazonaws.com": 1, + "vfs.cloud9.ap-east-1.amazonaws.com": 1, + "vfs.cloud9.ap-northeast-1.amazonaws.com": 1, + "vfs.cloud9.ap-northeast-2.amazonaws.com": 1, + "vfs.cloud9.ap-northeast-3.amazonaws.com": 1, + "vfs.cloud9.ap-south-1.amazonaws.com": 1, + "vfs.cloud9.ap-southeast-1.amazonaws.com": 1, + "vfs.cloud9.ap-southeast-2.amazonaws.com": 1, + "vfs.cloud9.ca-central-1.amazonaws.com": 1, + "vfs.cloud9.eu-central-1.amazonaws.com": 1, + "vfs.cloud9.eu-north-1.amazonaws.com": 1, + "vfs.cloud9.eu-south-1.amazonaws.com": 1, + "vfs.cloud9.eu-west-1.amazonaws.com": 1, + "vfs.cloud9.eu-west-2.amazonaws.com": 1, + "vfs.cloud9.eu-west-3.amazonaws.com": 1, + "vfs.cloud9.me-south-1.amazonaws.com": 1, + "vfs.cloud9.sa-east-1.amazonaws.com": 1, + "vfs.cloud9.us-east-1.amazonaws.com": 1, + "vfs.cloud9.us-east-2.amazonaws.com": 1, + "vfs.cloud9.us-west-1.amazonaws.com": 1, + "vfs.cloud9.us-west-2.amazonaws.com": 1, + "vg": 1, + "vgs.no": 1, + "vi": 1, + "vi.it": 1, + "vi.us": 1, + "viajes": 1, + "vibo-valentia.it": 1, + "vibovalentia.it": 1, + "vic.au": 1, + "vic.edu.au": 1, + "vic.gov.au": 1, + "vicenza.it": 1, + "video": 1, + "video.hu": 1, + "vig": 1, + "vik.no": 1, + "viking": 1, + "vikna.no": 1, + "villas": 1, + "vin": 1, + "vindafjord.no": 1, + "vinhlong.vn": 1, + "vinhphuc.vn": 1, + "vinnica.ua": 1, + "vinnytsia.ua": 1, + "vip": 1, + "vip.jelastic.cloud": 1, + "vipsinaapp.com": 1, + "virgin": 1, + "virtual-user.de": 1, + "virtualserver.io": 1, + "virtualuser.de": 1, + "visa": 1, + "vision": 1, + "viterbo.it": 1, + "viva": 1, + "vivian.jp": 1, + "vivo": 1, + "vix.br": 1, + "vlaanderen": 1, + "vladikavkaz.ru": 1, + "vladikavkaz.su": 1, + "vladimir.ru": 1, + "vladimir.su": 1, + "vlog.br": 1, + "vm.bytemark.co.uk": 1, + "vn": 1, + "vn.ua": 1, + "voagat.no": 1, + "vodka": 1, + "volda.no": 1, + "volkswagen": 1, + "vologda.su": 1, + "volvo": 1, + "volyn.ua": 1, + "voorloper.cloud": 1, + "voss.no": 1, + "vossevangen.no": 1, + "vote": 1, + "voting": 1, + "voto": 1, + "voyage": 1, + "vp4.me": 1, + "vpndns.net": 1, + "vpnplus.to": 1, + "vps-host.net": 1, + "vps.mcdir.ru": 1, + "vr.it": 1, + "vs.it": 1, + "vs.mythic-beasts.com": 1, + "vt.it": 1, + "vt.us": 1, + "vu": 1, + "vv.it": 1, + "vxl.sh": 1, + "várggát.no": 1, + "vågan.no": 1, + "vågsøy.no": 1, + "vågå.no": 1, + "våler.hedmark.no": 1, + "våler.østfold.no": 1, + "værøy.no": 1, + "w.bg": 1, + "w.se": 1, + "wa.au": 1, + "wa.edu.au": 1, + "wa.gov.au": 1, + "wa.us": 1, + "wada.nagano.jp": 1, + "wafflecell.com": 1, + "wajiki.tokushima.jp": 1, + "wajima.ishikawa.jp": 1, + "wakasa.fukui.jp": 1, + "wakasa.tottori.jp": 1, + "wakayama.jp": 1, + "wakayama.wakayama.jp": 1, + "wake.okayama.jp": 1, + "wakkanai.hokkaido.jp": 1, + "wakuya.miyagi.jp": 1, + "walbrzych.pl": 1, + "wales": 1, + "walmart": 1, + "walter": 1, + "wang": 1, + "wanggou": 1, + "wanouchi.gifu.jp": 1, + "warabi.saitama.jp": 1, + "warmia.pl": 1, + "warszawa.pl": 1, + "washtenaw.mi.us": 1, + "wassamu.hokkaido.jp": 1, + "watarai.mie.jp": 1, + "watari.miyagi.jp": 1, + "watch": 1, + "watches": 1, + "watson.jp": 1, + "waw.pl": 1, + "wazuka.kyoto.jp": 1, + "we.bs": 1, + "we.tc": 1, + "weather": 1, + "weatherchannel": 1, + "web.app": 1, + "web.bo": 1, + "web.co": 1, + "web.do": 1, + "web.gu": 1, + "web.id": 1, + "web.in": 1, + "web.lk": 1, + "web.nf": 1, + "web.ni": 1, + "web.pk": 1, + "web.tj": 1, + "web.tr": 1, + "web.ve": 1, + "web.za": 1, + "webcam": 1, + "weber": 1, + "webhop.biz": 1, + "webhop.info": 1, + "webhop.me": 1, + "webhop.net": 1, + "webhop.org": 1, + "webhosting.be": 1, + "weblike.jp": 1, + "webredirect.org": 1, + "website": 1, + "website.yandexcloud.net": 1, + "websozai.jp": 1, + "webspace.rocks": 1, + "webthings.io": 1, + "webview-assets.aws-cloud9.af-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-east-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.ca-central-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-central-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-north-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-west-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-west-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.eu-west-3.amazonaws.com": 1, + "webview-assets.aws-cloud9.me-south-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.sa-east-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-east-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-east-2.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-west-1.amazonaws.com": 1, + "webview-assets.aws-cloud9.us-west-2.amazonaws.com": 1, + "webview-assets.cloud9.af-south-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-east-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-northeast-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-northeast-2.amazonaws.com": 1, + "webview-assets.cloud9.ap-northeast-3.amazonaws.com": 1, + "webview-assets.cloud9.ap-south-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-southeast-1.amazonaws.com": 1, + "webview-assets.cloud9.ap-southeast-2.amazonaws.com": 1, + "webview-assets.cloud9.ca-central-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-central-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-north-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-south-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-west-1.amazonaws.com": 1, + "webview-assets.cloud9.eu-west-2.amazonaws.com": 1, + "webview-assets.cloud9.eu-west-3.amazonaws.com": 1, + "webview-assets.cloud9.me-south-1.amazonaws.com": 1, + "webview-assets.cloud9.sa-east-1.amazonaws.com": 1, + "webview-assets.cloud9.us-east-1.amazonaws.com": 1, + "webview-assets.cloud9.us-east-2.amazonaws.com": 1, + "webview-assets.cloud9.us-west-1.amazonaws.com": 1, + "webview-assets.cloud9.us-west-2.amazonaws.com": 1, + "wedding": 1, + "wedeploy.io": 1, + "wedeploy.me": 1, + "wedeploy.sh": 1, + "weeklylottery.org.uk": 1, + "wegrow.pl": 1, + "weibo": 1, + "weir": 1, + "wellbeingzone.co.uk": 1, + "wellbeingzone.eu": 1, + "west1-us.cloudjiffy.net": 1, + "westeurope.azurestaticapps.net": 1, + "westus2.azurestaticapps.net": 1, + "wf": 1, + "whitesnow.jp": 1, + "whm.fr-par.scw.cloud": 1, + "whm.nl-ams.scw.cloud": 1, + "whoswho": 1, + "wi.us": 1, + "wielun.pl": 1, + "wien": 1, + "wien.funkfeuer.at": 1, + "wif.gov.pl": 1, + "wiih.gov.pl": 1, + "wiki": 1, + "wiki.bo": 1, + "wiki.br": 1, + "williamhill": 1, + "win": 1, + "winb.gov.pl": 1, + "windows": 1, + "wine": 1, + "winners": 1, + "wios.gov.pl": 1, + "witd.gov.pl": 1, + "withgoogle.com": 1, + "withyoutube.com": 1, + "wiw.gov.pl": 1, + "wixsite.com": 1, + "wkz.gov.pl": 1, + "wlocl.pl": 1, + "wloclawek.pl": 1, + "wmcloud.org": 1, + "wme": 1, + "wmflabs.org": 1, + "wnext.app": 1, + "wodzislaw.pl": 1, + "wolomin.pl": 1, + "wolterskluwer": 1, + "woltlab-demo.com": 1, + "woodside": 1, + "work": 1, + "workers.dev": 1, + "workinggroup.aero": 1, + "workisboring.com": 1, + "works": 1, + "works.aero": 1, + "world": 1, + "worse-than.tv": 1, + "wow": 1, + "wpdevcloud.com": 1, + "wpenginepowered.com": 1, + "wphostedmail.com": 1, + "wpmucdn.com": 1, + "wpmudev.host": 1, + "writesthisblog.com": 1, + "wroc.pl": 1, + "wroclaw.pl": 1, + "ws": 1, + "ws.na": 1, + "wsa.gov.pl": 1, + "wskr.gov.pl": 1, + "wsse.gov.pl": 1, + "wtc": 1, + "wtf": 1, + "wuoz.gov.pl": 1, + "wv.us": 1, + "www.ro": 1, + "wy.us": 1, + "wzmiuw.gov.pl": 1, + "x.bg": 1, + "x.mythic-beasts.com": 1, + "x.se": 1, + "x0.com": 1, + "x0.to": 1, + "x443.pw": 1, + "xbox": 1, + "xen.prgmr.com": 1, + "xerox": 1, + "xfinity": 1, + "xihuan": 1, + "xii.jp": 1, + "xin": 1, + "xj.cn": 1, + "xnbay.com": 1, + "xs4all.space": 1, + "xx.gl": 1, + "xxx": 1, + "xy.ax": 1, + "xyz": 1, + "xz.cn": 1, + "y.bg": 1, + "y.se": 1, + "yabu.hyogo.jp": 1, + "yabuki.fukushima.jp": 1, + "yachimata.chiba.jp": 1, + "yachiyo.chiba.jp": 1, + "yachiyo.ibaraki.jp": 1, + "yachts": 1, + "yaese.okinawa.jp": 1, + "yahaba.iwate.jp": 1, + "yahiko.niigata.jp": 1, + "yahoo": 1, + "yaita.tochigi.jp": 1, + "yaizu.shizuoka.jp": 1, + "yakage.okayama.jp": 1, + "yakumo.hokkaido.jp": 1, + "yakumo.shimane.jp": 1, + "yali.mythic-beasts.com": 1, + "yalta.ua": 1, + "yamada.fukuoka.jp": 1, + "yamada.iwate.jp": 1, + "yamada.toyama.jp": 1, + "yamaga.kumamoto.jp": 1, + "yamagata.gifu.jp": 1, + "yamagata.ibaraki.jp": 1, + "yamagata.jp": 1, + "yamagata.nagano.jp": 1, + "yamagata.yamagata.jp": 1, + "yamaguchi.jp": 1, + "yamakita.kanagawa.jp": 1, + "yamamoto.miyagi.jp": 1, + "yamanakako.yamanashi.jp": 1, + "yamanashi.jp": 1, + "yamanashi.yamanashi.jp": 1, + "yamanobe.yamagata.jp": 1, + "yamanouchi.nagano.jp": 1, + "yamashina.kyoto.jp": 1, + "yamato.fukushima.jp": 1, + "yamato.kanagawa.jp": 1, + "yamato.kumamoto.jp": 1, + "yamatokoriyama.nara.jp": 1, + "yamatotakada.nara.jp": 1, + "yamatsuri.fukushima.jp": 1, + "yamaxun": 1, + "yamazoe.nara.jp": 1, + "yame.fukuoka.jp": 1, + "yanagawa.fukuoka.jp": 1, + "yanaizu.fukushima.jp": 1, + "yandex": 1, + "yandexcloud.net": 1, + "yao.osaka.jp": 1, + "yaotsu.gifu.jp": 1, + "yasaka.nagano.jp": 1, + "yashio.saitama.jp": 1, + "yashiro.hyogo.jp": 1, + "yasu.shiga.jp": 1, + "yasuda.kochi.jp": 1, + "yasugi.shimane.jp": 1, + "yasuoka.nagano.jp": 1, + "yatomi.aichi.jp": 1, + "yatsuka.shimane.jp": 1, + "yatsushiro.kumamoto.jp": 1, + "yawara.ibaraki.jp": 1, + "yawata.kyoto.jp": 1, + "yawatahama.ehime.jp": 1, + "yazu.tottori.jp": 1, + "ybo.faith": 1, + "ybo.party": 1, + "ybo.review": 1, + "ybo.science": 1, + "ybo.trade": 1, + "ye": 1, + "yenbai.vn": 1, + "yk.ca": 1, + "yn.cn": 1, + "ynh.fr": 1, + "yodobashi": 1, + "yoga": 1, + "yoichi.hokkaido.jp": 1, + "yoita.niigata.jp": 1, + "yoka.hyogo.jp": 1, + "yokaichiba.chiba.jp": 1, + "yokawa.hyogo.jp": 1, + "yokkaichi.mie.jp": 1, + "yokohama": 1, + "yokoshibahikari.chiba.jp": 1, + "yokosuka.kanagawa.jp": 1, + "yokote.akita.jp": 1, + "yokoze.saitama.jp": 1, + "yolasite.com": 1, + "yombo.me": 1, + "yomitan.okinawa.jp": 1, + "yonabaru.okinawa.jp": 1, + "yonago.tottori.jp": 1, + "yonaguni.okinawa.jp": 1, + "yonezawa.yamagata.jp": 1, + "yono.saitama.jp": 1, + "yorii.saitama.jp": 1, + "yoro.gifu.jp": 1, + "yoshida.saitama.jp": 1, + "yoshida.shizuoka.jp": 1, + "yoshikawa.saitama.jp": 1, + "yoshimi.saitama.jp": 1, + "yoshino.nara.jp": 1, + "yoshinogari.saga.jp": 1, + "yoshioka.gunma.jp": 1, + "yotsukaido.chiba.jp": 1, + "you": 1, + "youtube": 1, + "yt": 1, + "yuasa.wakayama.jp": 1, + "yufu.oita.jp": 1, + "yugawa.fukushima.jp": 1, + "yugawara.kanagawa.jp": 1, + "yuki.ibaraki.jp": 1, + "yukuhashi.fukuoka.jp": 1, + "yun": 1, + "yura.wakayama.jp": 1, + "yurihonjo.akita.jp": 1, + "yusuhara.kochi.jp": 1, + "yusui.kagoshima.jp": 1, + "yuu.yamaguchi.jp": 1, + "yuza.yamagata.jp": 1, + "yuzawa.niigata.jp": 1, + "z.bg": 1, + "z.se": 1, + "za.bz": 1, + "za.com": 1, + "za.net": 1, + "za.org": 1, + "zachpomor.pl": 1, + "zagan.pl": 1, + "zakopane.pl": 1, + "zama.kanagawa.jp": 1, + "zamami.okinawa.jp": 1, + "zao.miyagi.jp": 1, + "zaporizhzhe.ua": 1, + "zaporizhzhia.ua": 1, + "zappos": 1, + "zapto.org": 1, + "zapto.xyz": 1, + "zara": 1, + "zarow.pl": 1, + "zentsuji.kagawa.jp": 1, + "zero": 1, + "zgora.pl": 1, + "zgorzelec.pl": 1, + "zhitomir.ua": 1, + "zhytomyr.ua": 1, + "zip": 1, + "zj.cn": 1, + "zlg.br": 1, + "zm": 1, + "zombie.jp": 1, + "zone": 1, + "zp.gov.pl": 1, + "zp.ua": 1, + "zpisdn.gov.pl": 1, + "zt.ua": 1, + "zuerich": 1, + "zushi.kanagawa.jp": 1, + "zw": 1, + "ákŋoluokta.no": 1, + "álaheadju.no": 1, + "áltá.no": 1, + "åfjord.no": 1, + "åkrehamn.no": 1, + "ål.no": 1, + "ålesund.no": 1, + "ålgård.no": 1, + "åmli.no": 1, + "åmot.no": 1, + "årdal.no": 1, + "ås.no": 1, + "åseral.no": 1, + "åsnes.no": 1, + "øksnes.no": 1, + "ørland.no": 1, + "ørskog.no": 1, + "ørsta.no": 1, + "østre-toten.no": 1, + "øvre-eiker.no": 1, + "øyer.no": 1, + "øygarden.no": 1, + "øystre-slidre.no": 1, + "čáhcesuolo.no": 1, + "ελ": 1, + "ευ": 1, + "ак.срб": 1, + "бг": 1, + "бел": 1, + "биз.рус": 1, + "дети": 1, + "ею": 1, + "католик": 1, + "ком": 1, + "ком.рус": 1, + "крым.рус": 1, + "мир.рус": 1, + "мкд": 1, + "мон": 1, + "москва": 1, + "мск.рус": 1, + "обр.срб": 1, + "од.срб": 1, + "онлайн": 1, + "орг": 1, + "орг.рус": 1, + "орг.срб": 1, + "пр.срб": 1, + "рус": 1, + "рф": 1, + "сайт": 1, + "самара.рус": 1, + "сочи.рус": 1, + "спб.рус": 1, + "срб": 1, + "укр": 1, + "упр.срб": 1, + "я.рус": 1, + "қаз": 1, + "հայ": 1, + "אקדמיה.ישראל": 1, + "ישוב.ישראל": 1, + "ישראל": 1, + "ממשל.ישראל": 1, + "צהל.ישראל": 1, + "קום": 1, + "ابوظبي": 1, + "اتصالات": 1, + "ارامكو": 1, + "الاردن": 1, + "البحرين": 1, + "الجزائر": 1, + "السعودية": 1, + "السعوديه": 1, + "السعودیة": 1, + "السعودیۃ": 1, + "العليان": 1, + "المغرب": 1, + "اليمن": 1, + "امارات": 1, + "ايران": 1, + "ايران.ir": 1, + "ایران": 1, + "ایران.ir": 1, + "بارت": 1, + "بازار": 1, + "بيتك": 1, + "بھارت": 1, + "تونس": 1, + "سودان": 1, + "سوريا": 1, + "سورية": 1, + "شبكة": 1, + "عراق": 1, + "عرب": 1, + "عمان": 1, + "فلسطين": 1, + "قطر": 1, + "كاثوليك": 1, + "كوم": 1, + "مصر": 1, + "مليسيا": 1, + "موريتانيا": 1, + "موقع": 1, + "همراه": 1, + "پاكستان": 1, + "پاکستان": 1, + "ڀارت": 1, + "कॉम": 1, + "नेट": 1, + "भारत": 1, + "भारतम्": 1, + "भारोत": 1, + "संगठन": 1, + "বাংলা": 1, + "ভারত": 1, + "ভাৰত": 1, + "ਭਾਰਤ": 1, + "ભારત": 1, + "ଭାରତ": 1, + "இந்தியா": 1, + "இலங்கை": 1, + "சிங்கப்பூர்": 1, + "భారత్": 1, + "ಭಾರತ": 1, + "ഭാരതം": 1, + "ලංකා": 1, + "คอม": 1, + "ทหาร.ไทย": 1, + "ธุรกิจ.ไทย": 1, + "รัฐบาล.ไทย": 1, + "ศึกษา.ไทย": 1, + "องค์กร.ไทย": 1, + "เน็ต.ไทย": 1, + "ไทย": 1, + "ລາວ": 1, + "გე": 1, + "みんな": 1, + "アマゾン": 1, + "クラウド": 1, + "グーグル": 1, + "コム": 1, + "ストア": 1, + "セール": 1, + "ファッション": 1, + "ポイント": 1, + "三重.jp": 1, + "世界": 1, + "个人.hk": 1, + "中信": 1, + "中国": 1, + "中國": 1, + "中文网": 1, + "亚马逊": 1, + "京都.jp": 1, + "企业": 1, + "佐賀.jp": 1, + "佛山": 1, + "信息": 1, + "個人.hk": 1, + "個人.香港": 1, + "健康": 1, + "八卦": 1, + "公司": 1, + "公司.cn": 1, + "公司.hk": 1, + "公司.香港": 1, + "公益": 1, + "兵庫.jp": 1, + "北海道.jp": 1, + "千葉.jp": 1, + "台湾": 1, + "台灣": 1, + "和歌山.jp": 1, + "商城": 1, + "商店": 1, + "商标": 1, + "商業.tw": 1, + "嘉里": 1, + "嘉里大酒店": 1, + "在线": 1, + "埼玉.jp": 1, + "大分.jp": 1, + "大拿": 1, + "大阪.jp": 1, + "天主教": 1, + "奈良.jp": 1, + "娱乐": 1, + "宮城.jp": 1, + "宮崎.jp": 1, + "家電": 1, + "富山.jp": 1, + "山口.jp": 1, + "山形.jp": 1, + "山梨.jp": 1, + "岐阜.jp": 1, + "岡山.jp": 1, + "岩手.jp": 1, + "島根.jp": 1, + "广东": 1, + "広島.jp": 1, + "微博": 1, + "徳島.jp": 1, + "愛媛.jp": 1, + "愛知.jp": 1, + "慈善": 1, + "我爱你": 1, + "手机": 1, + "招聘": 1, + "政务": 1, + "政府": 1, + "政府.hk": 1, + "政府.香港": 1, + "敎育.hk": 1, + "教育.hk": 1, + "教育.香港": 1, + "新加坡": 1, + "新潟.jp": 1, + "新闻": 1, + "时尚": 1, + "書籍": 1, + "机构": 1, + "東京.jp": 1, + "栃木.jp": 1, + "沖縄.jp": 1, + "淡马锡": 1, + "游戏": 1, + "滋賀.jp": 1, + "澳門": 1, + "澳门": 1, + "点看": 1, + "熊本.jp": 1, + "石川.jp": 1, + "神奈川.jp": 1, + "福井.jp": 1, + "福岡.jp": 1, + "福島.jp": 1, + "秋田.jp": 1, + "移动": 1, + "箇人.hk": 1, + "組織.hk": 1, + "組織.tw": 1, + "組織.香港": 1, + "組织.hk": 1, + "網絡.cn": 1, + "網絡.hk": 1, + "網絡.香港": 1, + "網络.hk": 1, + "網路.tw": 1, + "组織.hk": 1, + "组织.hk": 1, + "组织机构": 1, + "网址": 1, + "网店": 1, + "网站": 1, + "网絡.hk": 1, + "网络": 1, + "网络.cn": 1, + "网络.hk": 1, + "群馬.jp": 1, + "联通": 1, + "臺灣": 1, + "茨城.jp": 1, + "谷歌": 1, + "购物": 1, + "通販": 1, + "長崎.jp": 1, + "長野.jp": 1, + "集团": 1, + "電訊盈科": 1, + "青森.jp": 1, + "静岡.jp": 1, + "飞利浦": 1, + "食品": 1, + "餐厅": 1, + "香川.jp": 1, + "香格里拉": 1, + "香港": 1, + "高知.jp": 1, + "鳥取.jp": 1, + "鹿児島.jp": 1, + "닷넷": 1, + "닷컴": 1, + "삼성": 1, + "한국": 1 +} \ No newline at end of file diff --git a/src/mod/dynamicproxy/typedef.go b/src/mod/dynamicproxy/typedef.go index a865b66..218bae5 100644 --- a/src/mod/dynamicproxy/typedef.go +++ b/src/mod/dynamicproxy/typedef.go @@ -34,17 +34,19 @@ type RouterOption struct { } type Router struct { - Option *RouterOption - ProxyEndpoints *sync.Map - SubdomainEndpoint *sync.Map - Running bool - Root *ProxyEndpoint - mux http.Handler - server *http.Server - tlsListener net.Listener - routingRules []*RoutingRule - - tlsRedirectStop chan bool + Option *RouterOption + ProxyEndpoints *sync.Map + SubdomainEndpoint *sync.Map + Running bool + Root *ProxyEndpoint + RootRoutingOptions *RootRoutingOptions + mux http.Handler + server *http.Server + tlsListener net.Listener + routingRules []*RoutingRule + + tlsRedirectStop chan bool //Stop channel for tls redirection server + tldMap map[string]int //Top level domain map, see tld.json } // Auth credential for basic auth on certain endpoints @@ -59,56 +61,65 @@ type BasicAuthUnhashedCredentials struct { Password string } +// Paths to exclude in basic auth enabled proxy handler +type BasicAuthExceptionRule struct { + PathPrefix string +} + // A proxy endpoint record type ProxyEndpoint struct { - ProxyType int //The type of this proxy, see const def - RootOrMatchingDomain string //Root for vdir or Matching domain for subd - Domain string //Domain or IP to proxy to - RequireTLS bool //Target domain require TLS - SkipCertValidations bool //Set to true to accept self signed certs - RequireBasicAuth bool //Set to true to request basic auth before proxy - BasicAuthCredentials []*BasicAuthCredentials `json:"-"` - Proxy *dpcore.ReverseProxy `json:"-"` + ProxyType int //The type of this proxy, see const def + RootOrMatchingDomain string //Root for vdir or Matching domain for subd, also act as key + Domain string //Domain or IP to proxy to + RequireTLS bool //Target domain require TLS + BypassGlobalTLS bool //Bypass global TLS setting options if TLS Listener enabled (parent.tlsListener != nil) + SkipCertValidations bool //Set to true to accept self signed certs + RequireBasicAuth bool //Set to true to request basic auth before proxy + BasicAuthCredentials []*BasicAuthCredentials `json:"-"` //Basic auth credentials + BasicAuthExceptionRules []*BasicAuthExceptionRule //Path to exclude in a basic auth enabled proxy target + Proxy *dpcore.ReverseProxy `json:"-"` + + parent *Router } +// Root options are those that are required for reverse proxy handler to work type RootOptions struct { - ProxyLocation string - RequireTLS bool - SkipCertValidations bool - RequireBasicAuth bool - BasicAuthCredentials []*BasicAuthCredentials -} + ProxyLocation string //Proxy Root target, all unset traffic will be forward to here + RequireTLS bool //Proxy root target require TLS connection (not recommended) + BypassGlobalTLS bool //Bypass global TLS setting and make root http only (not recommended) + SkipCertValidations bool //Skip cert validation, suitable for self-signed certs, CURRENTLY NOT USED -type VdirOptions struct { - RootName string - Domain string - RequireTLS bool - SkipCertValidations bool - RequireBasicAuth bool - BasicAuthCredentials []*BasicAuthCredentials + //Basic Auth Related + RequireBasicAuth bool //Require basic auth, CURRENTLY NOT USED + BasicAuthCredentials []*BasicAuthCredentials + BasicAuthExceptionRules []*BasicAuthExceptionRule } -type SubdOptions struct { - MatchingDomain string - Domain string - RequireTLS bool - SkipCertValidations bool - RequireBasicAuth bool - BasicAuthCredentials []*BasicAuthCredentials +// Additional options are here for letting router knows how to route exception cases for root +type RootRoutingOptions struct { + //Root only configs + EnableRedirectForUnsetRules bool //Force unset rules to redirect to custom domain + UnsetRuleRedirectTarget string //Custom domain to redirect to for unset rules } -/* -type ProxyEndpoint struct { - Root string - Domain string - RequireTLS bool - Proxy *reverseproxy.ReverseProxy `json:"-"` +type VdirOptions struct { + RootName string + Domain string + RequireTLS bool + BypassGlobalTLS bool + SkipCertValidations bool + RequireBasicAuth bool + BasicAuthCredentials []*BasicAuthCredentials + BasicAuthExceptionRules []*BasicAuthExceptionRule } -type SubdomainEndpoint struct { - MatchingDomain string - Domain string - RequireTLS bool - Proxy *reverseproxy.ReverseProxy `json:"-"` +type SubdOptions struct { + MatchingDomain string + Domain string + RequireTLS bool + BypassGlobalTLS bool + SkipCertValidations bool + RequireBasicAuth bool + BasicAuthCredentials []*BasicAuthCredentials + BasicAuthExceptionRules []*BasicAuthExceptionRule } -*/ diff --git a/src/mod/geodb/geodb.go b/src/mod/geodb/geodb.go index ecb484c..25bc2fb 100644 --- a/src/mod/geodb/geodb.go +++ b/src/mod/geodb/geodb.go @@ -20,13 +20,16 @@ type Store struct { WhitelistEnabled bool geodb [][]string //Parsed geodb list geodbIpv6 [][]string //Parsed geodb list for ipv6 - - geotrie *trie - geotrieIpv6 *trie - + geotrie *trie + geotrieIpv6 *trie //geoipCache sync.Map + sysdb *database.Database + option *StoreOptions +} - sysdb *database.Database +type StoreOptions struct { + AllowSlowIpv4LookUp bool + AllowSloeIpv6Lookup bool } type CountryInfo struct { @@ -34,7 +37,7 @@ type CountryInfo struct { ContinetCode string } -func NewGeoDb(sysdb *database.Database) (*Store, error) { +func NewGeoDb(sysdb *database.Database, option *StoreOptions) (*Store, error) { parsedGeoData, err := parseCSV(geoipv4) if err != nil { return nil, err @@ -79,14 +82,25 @@ func NewGeoDb(sysdb *database.Database) (*Store, error) { log.Println("Database pointer set to nil: Entering debug mode") } + var ipv4Trie *trie + if !option.AllowSlowIpv4LookUp { + ipv4Trie = constrctTrieTree(parsedGeoData) + } + + var ipv6Trie *trie + if !option.AllowSloeIpv6Lookup { + ipv6Trie = constrctTrieTree(parsedGeoDataIpv6) + } + return &Store{ BlacklistEnabled: blacklistEnabled, WhitelistEnabled: whitelistEnabled, geodb: parsedGeoData, - geotrie: constrctTrieTree(parsedGeoData), + geotrie: ipv4Trie, geodbIpv6: parsedGeoDataIpv6, - geotrieIpv6: constrctTrieTree(parsedGeoDataIpv6), + geotrieIpv6: ipv6Trie, sysdb: sysdb, + option: option, }, nil } @@ -106,6 +120,7 @@ func (s *Store) ResolveCountryCodeFromIP(ipstring string) (*CountryInfo, error) CountryIsoCode: cc, ContinetCode: "", }, nil + } func (s *Store) Close() { diff --git a/src/mod/geodb/geodb_test.go b/src/mod/geodb/geodb_test.go index 3c56f64..437d399 100644 --- a/src/mod/geodb/geodb_test.go +++ b/src/mod/geodb/geodb_test.go @@ -41,7 +41,10 @@ func TestTrieConstruct(t *testing.T) { func TestResolveCountryCodeFromIP(t *testing.T) { // Create a new store - store, err := geodb.NewGeoDb(nil) + store, err := geodb.NewGeoDb(nil, &geodb.StoreOptions{ + false, + false, + }) if err != nil { t.Errorf("error creating store: %v", err) return diff --git a/src/mod/geodb/geoloader.go b/src/mod/geodb/geoloader.go index 83928a8..2044b9d 100644 --- a/src/mod/geodb/geoloader.go +++ b/src/mod/geodb/geoloader.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/csv" "io" - "net" "strings" ) @@ -26,9 +25,17 @@ func (s *Store) search(ip string) string { //Search in geotrie tree cc := "" if IsIPv6(ip) { - cc = s.geotrieIpv6.search(ip) + if s.geotrieIpv6 == nil { + cc = s.slowSearchIpv6(ip) + } else { + cc = s.geotrieIpv6.search(ip) + } } else { - cc = s.geotrie.search(ip) + if s.geotrie == nil { + cc = s.slowSearchIpv4(ip) + } else { + cc = s.geotrie.search(ip) + } } /* @@ -69,27 +76,3 @@ func parseCSV(content []byte) ([][]string, error) { } return records, nil } - -// Check if a ip string is within the range of two others -func isIPInRange(ip, start, end string) bool { - ipAddr := net.ParseIP(ip) - if ipAddr == nil { - return false - } - - startAddr := net.ParseIP(start) - if startAddr == nil { - return false - } - - endAddr := net.ParseIP(end) - if endAddr == nil { - return false - } - - if ipAddr.To4() == nil || startAddr.To4() == nil || endAddr.To4() == nil { - return false - } - - return bytes.Compare(ipAddr.To4(), startAddr.To4()) >= 0 && bytes.Compare(ipAddr.To4(), endAddr.To4()) <= 0 -} diff --git a/src/mod/geodb/slowSearch.go b/src/mod/geodb/slowSearch.go new file mode 100644 index 0000000..9d5f4c7 --- /dev/null +++ b/src/mod/geodb/slowSearch.go @@ -0,0 +1,81 @@ +package geodb + +import ( + "errors" + "math/big" + "net" +) + +/* + slowSearch.go + + This script implement the slow search method for ip to country code + lookup. If you have the memory allocation for near O(1) lookup, + you should not be using slow search mode. +*/ + +func ipv4ToUInt32(ip net.IP) uint32 { + ip = ip.To4() + return uint32(ip[0])<<24 | uint32(ip[1])<<16 | uint32(ip[2])<<8 | uint32(ip[3]) +} + +func isIPv4InRange(startIP, endIP, testIP string) (bool, error) { + start := net.ParseIP(startIP) + end := net.ParseIP(endIP) + test := net.ParseIP(testIP) + + if start == nil || end == nil || test == nil { + return false, errors.New("invalid IP address format") + } + + startUint := ipv4ToUInt32(start) + endUint := ipv4ToUInt32(end) + testUint := ipv4ToUInt32(test) + + return testUint >= startUint && testUint <= endUint, nil +} + +func isIPv6InRange(startIP, endIP, testIP string) (bool, error) { + start := net.ParseIP(startIP) + end := net.ParseIP(endIP) + test := net.ParseIP(testIP) + + if start == nil || end == nil || test == nil { + return false, errors.New("invalid IP address format") + } + + startInt := new(big.Int).SetBytes(start.To16()) + endInt := new(big.Int).SetBytes(end.To16()) + testInt := new(big.Int).SetBytes(test.To16()) + + return testInt.Cmp(startInt) >= 0 && testInt.Cmp(endInt) <= 0, nil +} + +// Slow country code lookup for +func (s *Store) slowSearchIpv4(ipAddr string) string { + for _, ipRange := range s.geodb { + startIp := ipRange[0] + endIp := ipRange[1] + cc := ipRange[2] + + inRange, _ := isIPv4InRange(startIp, endIp, ipAddr) + if inRange { + return cc + } + } + return "" +} + +func (s *Store) slowSearchIpv6(ipAddr string) string { + for _, ipRange := range s.geodbIpv6 { + startIp := ipRange[0] + endIp := ipRange[1] + cc := ipRange[2] + + inRange, _ := isIPv6InRange(startIp, endIp, ipAddr) + if inRange { + return cc + } + } + return "" +} diff --git a/src/mod/geodb/trie.go b/src/mod/geodb/trie.go index 5b382af..be69cfc 100644 --- a/src/mod/geodb/trie.go +++ b/src/mod/geodb/trie.go @@ -1,15 +1,12 @@ package geodb import ( - "fmt" + "math" "net" - "strconv" - "strings" ) type trie_Node struct { childrens [2]*trie_Node - ends bool cc string } @@ -18,7 +15,7 @@ type trie struct { root *trie_Node } -func ipToBitString(ip string) string { +func ipToBytes(ip string) []byte { // Parse the IP address string into a net.IP object parsedIP := net.ParseIP(ip) @@ -29,49 +26,7 @@ func ipToBitString(ip string) string { ipBytes = parsedIP.To16() } - // Convert each byte in the IP address to its 8-bit binary representation - var result []string - for _, b := range ipBytes { - result = append(result, fmt.Sprintf("%08b", b)) - } - - // Join the binary representation of each byte with dots to form the final bit string - return strings.Join(result, "") -} - -func bitStringToIp(bitString string) string { - // Check if the bit string represents an IPv4 or IPv6 address - isIPv4 := len(bitString) == 32 - - // Split the bit string into 8-bit segments - segments := make([]string, 0) - if isIPv4 { - for i := 0; i < 4; i++ { - segments = append(segments, bitString[i*8:(i+1)*8]) - } - } else { - for i := 0; i < 16; i++ { - segments = append(segments, bitString[i*8:(i+1)*8]) - } - } - - // Convert each segment to its decimal equivalent - decimalSegments := make([]int, len(segments)) - for i, s := range segments { - val, _ := strconv.ParseInt(s, 2, 64) - decimalSegments[i] = int(val) - } - - // Construct the IP address string based on the type (IPv4 or IPv6) - if isIPv4 { - return fmt.Sprintf("%d.%d.%d.%d", decimalSegments[0], decimalSegments[1], decimalSegments[2], decimalSegments[3]) - } else { - ip := make(net.IP, net.IPv6len) - for i := 0; i < net.IPv6len; i++ { - ip[i] = byte(decimalSegments[i]) - } - return ip.String() - } + return ipBytes } // inititlaizing a new trie @@ -83,20 +38,39 @@ func newTrie() *trie { // Passing words to trie func (t *trie) insert(ipAddr string, cc string) { - word := ipToBitString(ipAddr) + ipBytes := ipToBytes(ipAddr) current := t.root - for _, wr := range word { - index := wr - '0' - if current.childrens[index] == nil { - current.childrens[index] = &trie_Node{ - childrens: [2]*trie_Node{}, - ends: false, - cc: cc, + for _, b := range ipBytes { + //For each byte in the ip address + //each byte is 8 bit + for j := 0; j < 8; j++ { + bitwise := (b&uint8(math.Pow(float64(2), float64(j))) > 0) + bit := 0b0000 + if bitwise { + bit = 0b0001 + } + if current.childrens[bit] == nil { + current.childrens[bit] = &trie_Node{ + childrens: [2]*trie_Node{}, + cc: cc, + } } + current = current.childrens[bit] } - current = current.childrens[index] } - current.ends = true + + /* + for i := 63; i >= 0; i-- { + bit := (ipInt64 >> uint(i)) & 1 + if current.childrens[bit] == nil { + current.childrens[bit] = &trie_Node{ + childrens: [2]*trie_Node{}, + cc: cc, + } + } + current = current.childrens[bit] + } + */ } func isReservedIP(ip string) bool { @@ -126,16 +100,34 @@ func (t *trie) search(ipAddr string) string { if isReservedIP(ipAddr) { return "" } - word := ipToBitString(ipAddr) + + ipBytes := ipToBytes(ipAddr) current := t.root - for _, wr := range word { - index := wr - '0' - if current.childrens[index] == nil { - return current.cc + for _, b := range ipBytes { + //For each byte in the ip address + //each byte is 8 bit + for j := 0; j < 8; j++ { + bitwise := (b&uint8(math.Pow(float64(2), float64(j))) > 0) + bit := 0b0000 + if bitwise { + bit = 0b0001 + } + if current.childrens[bit] == nil { + return current.cc + } + current = current.childrens[bit] } - current = current.childrens[index] } - if current.ends { + /* + for i := 63; i >= 0; i-- { + bit := (ipInt64 >> uint(i)) & 1 + if current.childrens[bit] == nil { + return current.cc + } + current = current.childrens[bit] + } + */ + if len(current.childrens) == 0 { return current.cc } diff --git a/src/mod/mdns/mdns.go b/src/mod/mdns/mdns.go index 3a0022d..f266029 100644 --- a/src/mod/mdns/mdns.go +++ b/src/mod/mdns/mdns.go @@ -226,7 +226,7 @@ func (m *MDNSHost) Scan(timeout int, domainFilter string) []*NetworkHost { return discoveredHost } -//Get all mac address of all interfaces +// Get all mac address of all interfaces func getMacAddr() ([]string, error) { ifas, err := net.Interfaces() if err != nil { diff --git a/src/mod/pathrule/handler.go b/src/mod/pathrule/handler.go index 1253554..1808860 100644 --- a/src/mod/pathrule/handler.go +++ b/src/mod/pathrule/handler.go @@ -5,7 +5,7 @@ import ( "net/http" "strconv" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "imuslab.com/zoraxy/mod/utils" ) @@ -58,7 +58,7 @@ func (h *Handler) HandleAddBlockingPath(w http.ResponseWriter, r *http.Request) } targetBlockingPath := BlockingPath{ - UUID: uuid.NewV4().String(), + UUID: uuid.New().String(), MatchingPath: matchingPath, ExactMatch: exactMatch == "true", StatusCode: statusCode, diff --git a/src/mod/tcpprox/tcpprox.go b/src/mod/tcpprox/tcpprox.go index b6a3e2e..c5944e6 100644 --- a/src/mod/tcpprox/tcpprox.go +++ b/src/mod/tcpprox/tcpprox.go @@ -4,7 +4,7 @@ import ( "errors" "net" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "imuslab.com/zoraxy/mod/database" ) @@ -95,7 +95,7 @@ func NewTCProxy(options *Options) *Manager { func (m *Manager) NewConfig(config *ProxyRelayOptions) string { //Generate a new config from options - configUUID := uuid.NewV4().String() + configUUID := uuid.New().String() thisConfig := ProxyRelayConfig{ UUID: configUUID, Name: config.Name, diff --git a/src/mod/utils/utils.go b/src/mod/utils/utils.go index 8315317..bd21c8b 100644 --- a/src/mod/utils/utils.go +++ b/src/mod/utils/utils.go @@ -37,46 +37,6 @@ func SendOK(w http.ResponseWriter) { w.Write([]byte("\"OK\"")) } -/* - The paramter move function (mv) - - You can find similar things in the PHP version of ArOZ Online Beta. You need to pass in - r (HTTP Request Object) - getParamter (string, aka $_GET['This string]) - - Will return - Paramter string (if any) - Error (if error) - -*/ -/* -func Mv(r *http.Request, getParamter string, postMode bool) (string, error) { - if postMode == false { - //Access the paramter via GET - keys, ok := r.URL.Query()[getParamter] - - if !ok || len(keys[0]) < 1 { - //log.Println("Url Param " + getParamter +" is missing") - return "", errors.New("GET paramter " + getParamter + " not found or it is empty") - } - - // Query()["key"] will return an array of items, - // we only want the single item. - key := keys[0] - return string(key), nil - } else { - //Access the parameter via POST - r.ParseForm() - x := r.Form.Get(getParamter) - if len(x) == 0 || x == "" { - return "", errors.New("POST paramter " + getParamter + " not found or it is empty") - } - return string(x), nil - } - -} -*/ - // Get GET parameter func GetPara(r *http.Request, key string) (string, error) { keys, ok := r.URL.Query()[key] @@ -98,6 +58,24 @@ func PostPara(r *http.Request, key string) (string, error) { } } +// Get POST paramter as boolean, accept 1 or true +func PostBool(r *http.Request, key string) (bool, error) { + x, err := PostPara(r, key) + if err != nil { + return false, err + } + + x = strings.TrimSpace(x) + + if x == "1" || strings.ToLower(x) == "true" { + return true, nil + } else if x == "0" || strings.ToLower(x) == "false" { + return false, nil + } + + return false, errors.New("invalid boolean given") +} + func FileExists(filename string) bool { _, err := os.Stat(filename) if os.IsNotExist(err) { @@ -128,19 +106,6 @@ func TimeToString(targetTime time.Time) string { return targetTime.Format("2006-01-02 15:04:05") } -// Use for redirections -func ConstructRelativePathFromRequestURL(requestURI string, redirectionLocation string) string { - if strings.Count(requestURI, "/") == 1 { - //Already root level - return redirectionLocation - } - for i := 0; i < strings.Count(requestURI, "/")-1; i++ { - redirectionLocation = "../" + redirectionLocation - } - - return redirectionLocation -} - // Check if given string in a given slice func StringInArray(arr []string, str string) bool { for _, a := range arr { diff --git a/src/reverseproxy.go b/src/reverseproxy.go index a5f8159..e45953a 100644 --- a/src/reverseproxy.go +++ b/src/reverseproxy.go @@ -88,21 +88,23 @@ func ReverseProxtInit() { }) } else if record.ProxyType == "subd" { dynamicProxyRouter.AddSubdomainRoutingService(&dynamicproxy.SubdOptions{ - MatchingDomain: record.Rootname, - Domain: record.ProxyTarget, - RequireTLS: record.UseTLS, - SkipCertValidations: record.SkipTlsValidation, - RequireBasicAuth: record.RequireBasicAuth, - BasicAuthCredentials: record.BasicAuthCredentials, + MatchingDomain: record.Rootname, + Domain: record.ProxyTarget, + RequireTLS: record.UseTLS, + SkipCertValidations: record.SkipTlsValidation, + RequireBasicAuth: record.RequireBasicAuth, + BasicAuthCredentials: record.BasicAuthCredentials, + BasicAuthExceptionRules: record.BasicAuthExceptionRules, }) } else if record.ProxyType == "vdir" { dynamicProxyRouter.AddVirtualDirectoryProxyService(&dynamicproxy.VdirOptions{ - RootName: record.Rootname, - Domain: record.ProxyTarget, - RequireTLS: record.UseTLS, - SkipCertValidations: record.SkipTlsValidation, - RequireBasicAuth: record.RequireBasicAuth, - BasicAuthCredentials: record.BasicAuthCredentials, + RootName: record.Rootname, + Domain: record.ProxyTarget, + RequireTLS: record.UseTLS, + SkipCertValidations: record.SkipTlsValidation, + RequireBasicAuth: record.RequireBasicAuth, + BasicAuthCredentials: record.BasicAuthCredentials, + BasicAuthExceptionRules: record.BasicAuthExceptionRules, }) } else { log.Println("Unsupported endpoint type: " + record.ProxyType + ". Skipping " + filepath.Base(conf)) @@ -282,7 +284,7 @@ func ReverseProxyHandleAddEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: basicAuthCredentials, } - SaveReverseProxyConfig(&thisProxyConfigRecord) + SaveReverseProxyConfigToFile(&thisProxyConfigRecord) //Update utm if exists if uptimeMonitor != nil { @@ -355,7 +357,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: targetProxyEntry.BasicAuthCredentials, } - dynamicProxyRouter.RemoveProxy("vdir", thisOption.RootName) + targetProxyEntry.Remove() dynamicProxyRouter.AddVirtualDirectoryProxyService(&thisOption) } else if eptype == "subd" { @@ -367,7 +369,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: targetProxyEntry.BasicAuthCredentials, } - dynamicProxyRouter.RemoveProxy("subd", thisOption.MatchingDomain) + targetProxyEntry.Remove() dynamicProxyRouter.AddSubdomainRoutingService(&thisOption) } @@ -381,7 +383,7 @@ func ReverseProxyHandleEditEndpoint(w http.ResponseWriter, r *http.Request) { RequireBasicAuth: requireBasicAuth, BasicAuthCredentials: targetProxyEntry.BasicAuthCredentials, } - SaveReverseProxyConfig(&thisProxyConfigRecord) + SaveReverseProxyConfigToFile(&thisProxyConfigRecord) utils.SendOK(w) } @@ -398,13 +400,15 @@ func DeleteProxyEndpoint(w http.ResponseWriter, r *http.Request) { return } - err = dynamicProxyRouter.RemoveProxy(ptype, ep) + //Remove the config from runtime + err = dynamicProxyRouter.RemoveProxyEndpointByRootname(ptype, ep) if err != nil { utils.SendErrorResponse(w, err.Error()) return } - RemoveReverseProxyConfig(ep) + //Remove the config from file + RemoveReverseProxyConfigFile(ep) //Update utm if exists if uptimeMonitor != nil { @@ -528,19 +532,10 @@ func UpdateProxyBasicAuthCredentials(w http.ResponseWriter, r *http.Request) { targetProxy.BasicAuthCredentials = mergedCredentials //Save it to file - thisProxyConfigRecord := Record{ - ProxyType: ptype, - Rootname: targetProxy.RootOrMatchingDomain, - ProxyTarget: targetProxy.Domain, - UseTLS: targetProxy.RequireTLS, - SkipTlsValidation: targetProxy.SkipCertValidations, - RequireBasicAuth: targetProxy.RequireBasicAuth, - BasicAuthCredentials: targetProxy.BasicAuthCredentials, - } - SaveReverseProxyConfig(&thisProxyConfigRecord) + SaveReverseProxyEndpointToFile(targetProxy) //Replace runtime configuration - dynamicProxyRouter.SaveProxy(ptype, ep, targetProxy) + targetProxy.UpdateToRuntime() utils.SendOK(w) } else { http.Error(w, "invalid usage", http.StatusMethodNotAllowed) @@ -548,6 +543,147 @@ func UpdateProxyBasicAuthCredentials(w http.ResponseWriter, r *http.Request) { } +// List, Update or Remove the exception paths for basic auth. +func ListProxyBasicAuthExceptionPaths(w http.ResponseWriter, r *http.Request) { + + if r.Method != http.MethodGet { + http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed) + } + ep, err := utils.GetPara(r, "ep") + if err != nil { + utils.SendErrorResponse(w, "Invalid ep given") + return + } + + ptype, err := utils.GetPara(r, "ptype") + if err != nil { + utils.SendErrorResponse(w, "Invalid ptype given") + return + } + + //Load the target proxy object from router + targetProxy, err := dynamicProxyRouter.LoadProxy(ptype, ep) + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + //List all the exception paths for this proxy + results := targetProxy.BasicAuthExceptionRules + if results == nil { + //It is a config from a really old version of zoraxy. Overwrite it with empty array + results = []*dynamicproxy.BasicAuthExceptionRule{} + } + js, _ := json.Marshal(results) + utils.SendJSONResponse(w, string(js)) + return +} + +func AddProxyBasicAuthExceptionPaths(w http.ResponseWriter, r *http.Request) { + ep, err := utils.PostPara(r, "ep") + if err != nil { + utils.SendErrorResponse(w, "Invalid ep given") + return + } + + ptype, err := utils.PostPara(r, "ptype") + if err != nil { + utils.SendErrorResponse(w, "Invalid ptype given") + return + } + + matchingPrefix, err := utils.PostPara(r, "prefix") + if err != nil { + utils.SendErrorResponse(w, "Invalid matching prefix given") + return + } + + //Load the target proxy object from router + targetProxy, err := dynamicProxyRouter.LoadProxy(ptype, ep) + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + //Check if the prefix starts with /. If not, prepend it + if !strings.HasPrefix(matchingPrefix, "/") { + matchingPrefix = "/" + matchingPrefix + } + + //Add a new exception rule if it is not already exists + alreadyExists := false + for _, thisExceptionRule := range targetProxy.BasicAuthExceptionRules { + if thisExceptionRule.PathPrefix == matchingPrefix { + alreadyExists = true + break + } + } + if alreadyExists { + utils.SendErrorResponse(w, "This matching path already exists") + return + } + targetProxy.BasicAuthExceptionRules = append(targetProxy.BasicAuthExceptionRules, &dynamicproxy.BasicAuthExceptionRule{ + PathPrefix: strings.TrimSpace(matchingPrefix), + }) + + //Save configs to runtime and file + targetProxy.UpdateToRuntime() + SaveReverseProxyEndpointToFile(targetProxy) + + utils.SendOK(w) +} + +func RemoveProxyBasicAuthExceptionPaths(w http.ResponseWriter, r *http.Request) { + // Delete a rule + ep, err := utils.PostPara(r, "ep") + if err != nil { + utils.SendErrorResponse(w, "Invalid ep given") + return + } + + ptype, err := utils.PostPara(r, "ptype") + if err != nil { + utils.SendErrorResponse(w, "Invalid ptype given") + return + } + + matchingPrefix, err := utils.PostPara(r, "prefix") + if err != nil { + utils.SendErrorResponse(w, "Invalid matching prefix given") + return + } + + // Load the target proxy object from router + targetProxy, err := dynamicProxyRouter.LoadProxy(ptype, ep) + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + newExceptionRuleList := []*dynamicproxy.BasicAuthExceptionRule{} + matchingExists := false + for _, thisExceptionalRule := range targetProxy.BasicAuthExceptionRules { + if thisExceptionalRule.PathPrefix != matchingPrefix { + newExceptionRuleList = append(newExceptionRuleList, thisExceptionalRule) + } else { + matchingExists = true + } + } + + if !matchingExists { + utils.SendErrorResponse(w, "target matching rule not exists") + return + } + + targetProxy.BasicAuthExceptionRules = newExceptionRuleList + + // Save configs to runtime and file + targetProxy.UpdateToRuntime() + SaveReverseProxyEndpointToFile(targetProxy) + + utils.SendOK(w) +} + func ReverseProxyStatus(w http.ResponseWriter, r *http.Request) { js, _ := json.Marshal(dynamicProxyRouter) utils.SendJSONResponse(w, string(js)) @@ -644,11 +780,18 @@ func HandleIncomingPortSet(w http.ResponseWriter, r *http.Request) { newIncomingPortInt, err := strconv.Atoi(newIncomingPort) if err != nil { - utils.SendErrorResponse(w, "invalid incoming port given") + utils.SendErrorResponse(w, "Invalid incoming port given") return } //Check if it is identical as proxy root (recursion!) + if dynamicProxyRouter.Root == nil || dynamicProxyRouter.Root.Domain == "" { + //Check if proxy root is set before checking recursive listen + //Fixing issue #43 + utils.SendErrorResponse(w, "Set Proxy Root before changing inbound port") + return + } + proxyRoot := strings.TrimSuffix(dynamicProxyRouter.Root.Domain, "/") if strings.HasPrefix(proxyRoot, "localhost:"+strconv.Itoa(newIncomingPortInt)) || strings.HasPrefix(proxyRoot, "127.0.0.1:"+strconv.Itoa(newIncomingPortInt)) { //Listening port is same as proxy root @@ -671,3 +814,34 @@ func HandleIncomingPortSet(w http.ResponseWriter, r *http.Request) { utils.SendOK(w) } + +// Handle list of root route options +func HandleRootRouteOptionList(w http.ResponseWriter, r *http.Request) { + js, _ := json.Marshal(dynamicProxyRouter.RootRoutingOptions) + utils.SendJSONResponse(w, string(js)) +} + +// Handle update of the root route edge case options. See dynamicproxy/rootRoute.go +func HandleRootRouteOptionsUpdate(w http.ResponseWriter, r *http.Request) { + enableUnsetSubdomainRedirect, err := utils.PostBool(r, "unsetRedirect") + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + unsetRedirectTarget, _ := utils.PostPara(r, "unsetRedirectTarget") + + newRootOption := dynamicproxy.RootRoutingOptions{ + EnableRedirectForUnsetRules: enableUnsetSubdomainRedirect, + UnsetRuleRedirectTarget: unsetRedirectTarget, + } + + dynamicProxyRouter.RootRoutingOptions = &newRootOption + err = newRootOption.SaveToFile() + if err != nil { + utils.SendErrorResponse(w, err.Error()) + return + } + + utils.SendOK(w) +} diff --git a/src/start.go b/src/start.go index 30d5eb2..3da18e6 100644 --- a/src/start.go +++ b/src/start.go @@ -76,7 +76,10 @@ func startupSequence() { } //Create a geodb store - geodbStore, err = geodb.NewGeoDb(sysdb) + geodbStore, err = geodb.NewGeoDb(sysdb, &geodb.StoreOptions{ + AllowSlowIpv4LookUp: !*enableHighSpeedGeoIPLookup, + AllowSloeIpv6Lookup: !*enableHighSpeedGeoIPLookup, + }) if err != nil { panic(err) } @@ -114,47 +117,49 @@ func startupSequence() { This discover nearby ArozOS Nodes or other services that provide mDNS discovery with domain (e.g. Synology NAS) */ - portInt, err := strconv.Atoi(strings.Split(handler.Port, ":")[1]) - if err != nil { - portInt = 8000 - } - mdnsScanner, err = mdns.NewMDNS(mdns.NetworkHost{ - HostName: "zoraxy_" + nodeUUID, - Port: portInt, - Domain: "zoraxy.imuslab.com", - Model: "Network Gateway", - UUID: nodeUUID, - Vendor: "imuslab.com", - BuildVersion: version, - }, "") - if err != nil { - log.Println("Unable to startup mDNS service.") - log.Fatal(err) - } - //Start initial scanning - go func() { - hosts := mdnsScanner.Scan(30, "") - previousmdnsScanResults = hosts - log.Println("mDNS Startup scan completed") - }() - - //Create a ticker to update mDNS results every 5 minutes - ticker := time.NewTicker(15 * time.Minute) - stopChan := make(chan bool) - go func() { - for { - select { - case <-stopChan: - ticker.Stop() - case <-ticker.C: + if *allowMdnsScanning { + portInt, err := strconv.Atoi(strings.Split(handler.Port, ":")[1]) + if err != nil { + portInt = 8000 + } + mdnsScanner, err = mdns.NewMDNS(mdns.NetworkHost{ + HostName: "zoraxy_" + nodeUUID, + Port: portInt, + Domain: "zoraxy.arozos.com", + Model: "Network Gateway", + UUID: nodeUUID, + Vendor: "imuslab.com", + BuildVersion: version, + }, "") + if err != nil { + log.Println("Unable to startup mDNS service. Disabling mDNS services") + } else { + //Start initial scanning + go func() { hosts := mdnsScanner.Scan(30, "") previousmdnsScanResults = hosts - log.Println("mDNS scan result updated") - } + log.Println("mDNS Startup scan completed") + }() + + //Create a ticker to update mDNS results every 5 minutes + ticker := time.NewTicker(15 * time.Minute) + stopChan := make(chan bool) + go func() { + for { + select { + case <-stopChan: + ticker.Stop() + case <-ticker.C: + hosts := mdnsScanner.Scan(30, "") + previousmdnsScanResults = hosts + log.Println("mDNS scan result updated") + } + } + }() + mdnsTickerStop = stopChan } - }() - mdnsTickerStop = stopChan + } /* Global Area Network diff --git a/src/web/components/cert.html b/src/web/components/cert.html index fec1014..5f4b75e 100644 --- a/src/web/components/cert.html +++ b/src/web/components/cert.html @@ -1,3 +1,13 @@ +
For all routing not found in the proxy rules, request will be redirected to the proxy root server.
+The default routing point for all incoming traffics. For all routing not found in the proxy rules, request will be redirected to the proxy root server.
Enter the username and password for allowing them to access this proxy endpoint
@@ -40,15 +42,54 @@Exclude specific directories / paths which contains the following subpath prefix from authentication. Useful if you are hosting services require remote API access.
+Path Prefix | +Remove | +
---|---|
No Path Excluded | +