Internal change PiperOrigin-RevId: 157669357 Change-Id: I2cf6e3eb6edbbb0dbce58ae9e900b30de28268bf
diff --git a/import.sh b/import.sh index f6e20b3..56b5842 100644 --- a/import.sh +++ b/import.sh
@@ -8,7 +8,7 @@ do mkdir $top/$version cd $top/$version - for d in base build url + for d in base build net url do wget $prefix/$version/$d.tar.gz mkdir $top/$version/$d
diff --git a/src/base/optional.h b/src/base/optional.h new file mode 100644 index 0000000..cf65ad7 --- /dev/null +++ b/src/base/optional.h
@@ -0,0 +1,506 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_OPTIONAL_H_ +#define BASE_OPTIONAL_H_ + +#include <type_traits> + +#include "base/logging.h" +#include "base/template_util.h" + +namespace base { + +// Specification: +// http://en.cppreference.com/w/cpp/utility/optional/in_place_t +struct in_place_t {}; + +// Specification: +// http://en.cppreference.com/w/cpp/utility/optional/nullopt_t +struct nullopt_t { + constexpr explicit nullopt_t(int) {} +}; + +// Specification: +// http://en.cppreference.com/w/cpp/utility/optional/in_place +constexpr in_place_t in_place = {}; + +// Specification: +// http://en.cppreference.com/w/cpp/utility/optional/nullopt +constexpr nullopt_t nullopt(0); + +namespace internal { + +template <typename T, bool = base::is_trivially_destructible<T>::value> +struct OptionalStorage { + // Initializing |empty_| here instead of using default member initializing + // to avoid errors in g++ 4.8. + constexpr OptionalStorage() : empty_('\0') {} + + constexpr explicit OptionalStorage(const T& value) + : is_null_(false), value_(value) {} + + // TODO(alshabalin): Can't use 'constexpr' with std::move until C++14. + explicit OptionalStorage(T&& value) + : is_null_(false), value_(std::move(value)) {} + + // TODO(alshabalin): Can't use 'constexpr' with std::forward until C++14. + template <class... Args> + explicit OptionalStorage(base::in_place_t, Args&&... args) + : is_null_(false), value_(std::forward<Args>(args)...) {} + + // When T is not trivially destructible we must call its + // destructor before deallocating its memory. + ~OptionalStorage() { + if (!is_null_) + value_.~T(); + } + + bool is_null_ = true; + union { + // |empty_| exists so that the union will always be initialized, even when + // it doesn't contain a value. Union members must be initialized for the + // constructor to be 'constexpr'. + char empty_; + T value_; + }; +}; + +template <typename T> +struct OptionalStorage<T, true> { + // Initializing |empty_| here instead of using default member initializing + // to avoid errors in g++ 4.8. + constexpr OptionalStorage() : empty_('\0') {} + + constexpr explicit OptionalStorage(const T& value) + : is_null_(false), value_(value) {} + + // TODO(alshabalin): Can't use 'constexpr' with std::move until C++14. + explicit OptionalStorage(T&& value) + : is_null_(false), value_(std::move(value)) {} + + // TODO(alshabalin): Can't use 'constexpr' with std::forward until C++14. + template <class... Args> + explicit OptionalStorage(base::in_place_t, Args&&... args) + : is_null_(false), value_(std::forward<Args>(args)...) {} + + // When T is trivially destructible (i.e. its destructor does nothing) there + // is no need to call it. Explicitly defaulting the destructor means it's not + // user-provided. Those two together make this destructor trivial. + ~OptionalStorage() = default; + + bool is_null_ = true; + union { + // |empty_| exists so that the union will always be initialized, even when + // it doesn't contain a value. Union members must be initialized for the + // constructor to be 'constexpr'. + char empty_; + T value_; + }; +}; + +} // namespace internal + +// base::Optional is a Chromium version of the C++17 optional class: +// std::optional documentation: +// http://en.cppreference.com/w/cpp/utility/optional +// Chromium documentation: +// https://chromium.googlesource.com/chromium/src/+/master/docs/optional.md +// +// These are the differences between the specification and the implementation: +// - The constructor and emplace method using initializer_list are not +// implemented because 'initializer_list' is banned from Chromium. +// - Constructors do not use 'constexpr' as it is a C++14 extension. +// - 'constexpr' might be missing in some places for reasons specified locally. +// - No exceptions are thrown, because they are banned from Chromium. +// - All the non-members are in the 'base' namespace instead of 'std'. +template <typename T> +class Optional { + public: + using value_type = T; + + constexpr Optional() {} + + constexpr Optional(base::nullopt_t) {} + + Optional(const Optional& other) { + if (!other.storage_.is_null_) + Init(other.value()); + } + + Optional(Optional&& other) { + if (!other.storage_.is_null_) + Init(std::move(other.value())); + } + + constexpr Optional(const T& value) : storage_(value) {} + + // TODO(alshabalin): Can't use 'constexpr' with std::move until C++14. + Optional(T&& value) : storage_(std::move(value)) {} + + // TODO(alshabalin): Can't use 'constexpr' with std::forward until C++14. + template <class... Args> + explicit Optional(base::in_place_t, Args&&... args) + : storage_(base::in_place, std::forward<Args>(args)...) {} + + ~Optional() = default; + + Optional& operator=(base::nullopt_t) { + FreeIfNeeded(); + return *this; + } + + Optional& operator=(const Optional& other) { + if (other.storage_.is_null_) { + FreeIfNeeded(); + return *this; + } + + InitOrAssign(other.value()); + return *this; + } + + Optional& operator=(Optional&& other) { + if (other.storage_.is_null_) { + FreeIfNeeded(); + return *this; + } + + InitOrAssign(std::move(other.value())); + return *this; + } + + template <class U> + typename std::enable_if<std::is_same<std::decay<U>, T>::value, + Optional&>::type + operator=(U&& value) { + InitOrAssign(std::forward<U>(value)); + return *this; + } + + // TODO(mlamouri): can't use 'constexpr' with DCHECK. + const T* operator->() const { + DCHECK(!storage_.is_null_); + return &value(); + } + + // TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was + // meant to be 'constexpr const'. + T* operator->() { + DCHECK(!storage_.is_null_); + return &value(); + } + + constexpr const T& operator*() const& { return value(); } + + // TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was + // meant to be 'constexpr const'. + T& operator*() & { return value(); } + + constexpr const T&& operator*() const&& { return std::move(value()); } + + // TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was + // meant to be 'constexpr const'. + T&& operator*() && { return std::move(value()); } + + constexpr explicit operator bool() const { return !storage_.is_null_; } + + constexpr bool has_value() const { return !storage_.is_null_; } + + // TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was + // meant to be 'constexpr const'. + T& value() & { + DCHECK(!storage_.is_null_); + return storage_.value_; + } + + // TODO(mlamouri): can't use 'constexpr' with DCHECK. + const T& value() const& { + DCHECK(!storage_.is_null_); + return storage_.value_; + } + + // TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was + // meant to be 'constexpr const'. + T&& value() && { + DCHECK(!storage_.is_null_); + return std::move(storage_.value_); + } + + // TODO(mlamouri): can't use 'constexpr' with DCHECK. + const T&& value() const&& { + DCHECK(!storage_.is_null_); + return std::move(storage_.value_); + } + + template <class U> + constexpr T value_or(U&& default_value) const& { + // TODO(mlamouri): add the following assert when possible: + // static_assert(std::is_copy_constructible<T>::value, + // "T must be copy constructible"); + static_assert(std::is_convertible<U, T>::value, + "U must be convertible to T"); + return storage_.is_null_ ? static_cast<T>(std::forward<U>(default_value)) + : value(); + } + + template <class U> + T value_or(U&& default_value) && { + // TODO(mlamouri): add the following assert when possible: + // static_assert(std::is_move_constructible<T>::value, + // "T must be move constructible"); + static_assert(std::is_convertible<U, T>::value, + "U must be convertible to T"); + return storage_.is_null_ ? static_cast<T>(std::forward<U>(default_value)) + : std::move(value()); + } + + void swap(Optional& other) { + if (storage_.is_null_ && other.storage_.is_null_) + return; + + if (storage_.is_null_ != other.storage_.is_null_) { + if (storage_.is_null_) { + Init(std::move(other.storage_.value_)); + other.FreeIfNeeded(); + } else { + other.Init(std::move(storage_.value_)); + FreeIfNeeded(); + } + return; + } + + DCHECK(!storage_.is_null_ && !other.storage_.is_null_); + using std::swap; + swap(**this, *other); + } + + void reset() { + FreeIfNeeded(); + } + + template <class... Args> + void emplace(Args&&... args) { + FreeIfNeeded(); + Init(std::forward<Args>(args)...); + } + + private: + void Init(const T& value) { + DCHECK(storage_.is_null_); + new (&storage_.value_) T(value); + storage_.is_null_ = false; + } + + void Init(T&& value) { + DCHECK(storage_.is_null_); + new (&storage_.value_) T(std::move(value)); + storage_.is_null_ = false; + } + + template <class... Args> + void Init(Args&&... args) { + DCHECK(storage_.is_null_); + new (&storage_.value_) T(std::forward<Args>(args)...); + storage_.is_null_ = false; + } + + void InitOrAssign(const T& value) { + if (storage_.is_null_) + Init(value); + else + storage_.value_ = value; + } + + void InitOrAssign(T&& value) { + if (storage_.is_null_) + Init(std::move(value)); + else + storage_.value_ = std::move(value); + } + + void FreeIfNeeded() { + if (storage_.is_null_) + return; + storage_.value_.~T(); + storage_.is_null_ = true; + } + + internal::OptionalStorage<T> storage_; +}; + +template <class T> +constexpr bool operator==(const Optional<T>& lhs, const Optional<T>& rhs) { + return !!lhs != !!rhs ? false : lhs == nullopt || (*lhs == *rhs); +} + +template <class T> +constexpr bool operator!=(const Optional<T>& lhs, const Optional<T>& rhs) { + return !(lhs == rhs); +} + +template <class T> +constexpr bool operator<(const Optional<T>& lhs, const Optional<T>& rhs) { + return rhs == nullopt ? false : (lhs == nullopt ? true : *lhs < *rhs); +} + +template <class T> +constexpr bool operator<=(const Optional<T>& lhs, const Optional<T>& rhs) { + return !(rhs < lhs); +} + +template <class T> +constexpr bool operator>(const Optional<T>& lhs, const Optional<T>& rhs) { + return rhs < lhs; +} + +template <class T> +constexpr bool operator>=(const Optional<T>& lhs, const Optional<T>& rhs) { + return !(lhs < rhs); +} + +template <class T> +constexpr bool operator==(const Optional<T>& opt, base::nullopt_t) { + return !opt; +} + +template <class T> +constexpr bool operator==(base::nullopt_t, const Optional<T>& opt) { + return !opt; +} + +template <class T> +constexpr bool operator!=(const Optional<T>& opt, base::nullopt_t) { + return !!opt; +} + +template <class T> +constexpr bool operator!=(base::nullopt_t, const Optional<T>& opt) { + return !!opt; +} + +template <class T> +constexpr bool operator<(const Optional<T>& opt, base::nullopt_t) { + return false; +} + +template <class T> +constexpr bool operator<(base::nullopt_t, const Optional<T>& opt) { + return !!opt; +} + +template <class T> +constexpr bool operator<=(const Optional<T>& opt, base::nullopt_t) { + return !opt; +} + +template <class T> +constexpr bool operator<=(base::nullopt_t, const Optional<T>& opt) { + return true; +} + +template <class T> +constexpr bool operator>(const Optional<T>& opt, base::nullopt_t) { + return !!opt; +} + +template <class T> +constexpr bool operator>(base::nullopt_t, const Optional<T>& opt) { + return false; +} + +template <class T> +constexpr bool operator>=(const Optional<T>& opt, base::nullopt_t) { + return true; +} + +template <class T> +constexpr bool operator>=(base::nullopt_t, const Optional<T>& opt) { + return !opt; +} + +template <class T> +constexpr bool operator==(const Optional<T>& opt, const T& value) { + return opt != nullopt ? *opt == value : false; +} + +template <class T> +constexpr bool operator==(const T& value, const Optional<T>& opt) { + return opt == value; +} + +template <class T> +constexpr bool operator!=(const Optional<T>& opt, const T& value) { + return !(opt == value); +} + +template <class T> +constexpr bool operator!=(const T& value, const Optional<T>& opt) { + return !(opt == value); +} + +template <class T> +constexpr bool operator<(const Optional<T>& opt, const T& value) { + return opt != nullopt ? *opt < value : true; +} + +template <class T> +constexpr bool operator<(const T& value, const Optional<T>& opt) { + return opt != nullopt ? value < *opt : false; +} + +template <class T> +constexpr bool operator<=(const Optional<T>& opt, const T& value) { + return !(opt > value); +} + +template <class T> +constexpr bool operator<=(const T& value, const Optional<T>& opt) { + return !(value > opt); +} + +template <class T> +constexpr bool operator>(const Optional<T>& opt, const T& value) { + return value < opt; +} + +template <class T> +constexpr bool operator>(const T& value, const Optional<T>& opt) { + return opt < value; +} + +template <class T> +constexpr bool operator>=(const Optional<T>& opt, const T& value) { + return !(opt < value); +} + +template <class T> +constexpr bool operator>=(const T& value, const Optional<T>& opt) { + return !(value < opt); +} + +template <class T> +constexpr Optional<typename std::decay<T>::type> make_optional(T&& value) { + return Optional<typename std::decay<T>::type>(std::forward<T>(value)); +} + +template <class T> +void swap(Optional<T>& lhs, Optional<T>& rhs) { + lhs.swap(rhs); +} + +} // namespace base + +namespace std { + +template <class T> +struct hash<base::Optional<T>> { + size_t operator()(const base::Optional<T>& opt) const { + return opt == base::nullopt ? 0 : std::hash<T>()(*opt); + } +}; + +} // namespace std + +#endif // BASE_OPTIONAL_H_
diff --git a/src/net/base/lookup_string_in_fixed_set.cc b/src/net/base/lookup_string_in_fixed_set.cc new file mode 100644 index 0000000..5c145f8 --- /dev/null +++ b/src/net/base/lookup_string_in_fixed_set.cc
@@ -0,0 +1,198 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "net/base/lookup_string_in_fixed_set.h" + +#include "base/logging.h" + +namespace net { + +namespace { + +// Read next offset from |pos|, increment |offset| by that amount, and increment +// |pos| either to point to the start of the next encoded offset in its node, or +// nullptr, if there are no remaining offsets. +// +// Returns true if an offset could be read; false otherwise. +inline bool GetNextOffset(const unsigned char** pos, + const unsigned char** offset) { + if (*pos == nullptr) + return false; + + size_t bytes_consumed; + switch (**pos & 0x60) { + case 0x60: // Read three byte offset + *offset += (((*pos)[0] & 0x1F) << 16) | ((*pos)[1] << 8) | (*pos)[2]; + bytes_consumed = 3; + break; + case 0x40: // Read two byte offset + *offset += (((*pos)[0] & 0x1F) << 8) | (*pos)[1]; + bytes_consumed = 2; + break; + default: + *offset += (*pos)[0] & 0x3F; + bytes_consumed = 1; + } + if ((**pos & 0x80) != 0) { + *pos = nullptr; + } else { + *pos += bytes_consumed; + } + return true; +} + +// Check if byte at |offset| is last in label. +bool IsEOL(const unsigned char* offset) { + return (*offset & 0x80) != 0; +} + +// Check if byte at |offset| matches key. This version matches both end-of-label +// chars and not-end-of-label chars. +bool IsMatch(const unsigned char* offset, char key) { + return (*offset & 0x7F) == key; +} + +// Read return value at |offset|, if it is a return value. Returns true if a +// return value could be read, false otherwise. +bool GetReturnValue(const unsigned char* offset, int* return_value) { + // Return values are always encoded as end-of-label chars (so the high bit is + // set). So byte values in the inclusive range [0x80, 0x9F] encode the return + // values 0 through 31 (though make_dafsa.py doesn't currently encode values + // higher than 7). The following code does that translation. + if ((*offset & 0xE0) == 0x80) { + *return_value = *offset & 0x1F; + return true; + } + return false; +} + +} // namespace + +FixedSetIncrementalLookup::FixedSetIncrementalLookup(const unsigned char* graph, + size_t length) + : pos_(graph), end_(graph + length), pos_is_label_character_(false) {} + +FixedSetIncrementalLookup::FixedSetIncrementalLookup( + const FixedSetIncrementalLookup& other) = default; + +FixedSetIncrementalLookup& FixedSetIncrementalLookup::operator=( + const FixedSetIncrementalLookup& other) = default; + +FixedSetIncrementalLookup::~FixedSetIncrementalLookup() {} + +bool FixedSetIncrementalLookup::Advance(char input) { + if (!pos_) { + // A previous input exhausted the graph, so there are no possible matches. + return false; + } + + // Only ASCII printable chars are supported by the current DAFSA format -- the + // high bit (values 0x80-0xFF) is reserved as a label-end signifier, and the + // low values (values 0x00-0x1F) are reserved to encode the return values. So + // values outside this range will never be in the dictionary. + if (input >= 0x20) { + if (pos_is_label_character_) { + // Currently processing a label, so it is only necessary to check the byte + // at |pos_| to see if it encodes a character matching |input|. + bool is_last_char_in_label = IsEOL(pos_); + bool is_match = IsMatch(pos_, input); + if (is_match) { + // If this is not the last character in the label, the next byte should + // be interpreted as a character or return value. Otherwise, the next + // byte should be interpreted as a list of child node offsets. + ++pos_; + DCHECK(pos_ < end_); + pos_is_label_character_ = !is_last_char_in_label; + return true; + } + } else { + const unsigned char* offset = pos_; + // Read offsets from |pos_| until the label of the child node at |offset| + // matches |input|, or until there are no more offsets. + while (GetNextOffset(&pos_, &offset)) { + DCHECK(offset < end_); + DCHECK((pos_ == nullptr) || (pos_ < end_)); + + // |offset| points to a DAFSA node that is a child of the original node. + // + // The low 7 bits of a node encodes a character value; the high bit + // indicates whether it's the last character in the label. + // + // Note that |*offset| could also be a result code value, but these are + // really just out-of-range ASCII values, encoded the same way as + // characters. Since |input| was already validated as a printable ASCII + // value ASCII value, IsMatch will never return true if |offset| is a + // result code. + bool is_last_char_in_label = IsEOL(offset); + bool is_match = IsMatch(offset, input); + + if (is_match) { + // If this is not the last character in the label, the next byte + // should be interpreted as a character or return value. Otherwise, + // the next byte should be interpreted as a list of child node + // offsets. + pos_ = offset + 1; + DCHECK(pos_ < end_); + pos_is_label_character_ = !is_last_char_in_label; + return true; + } + } + } + } + + // If no match was found, then end of the DAFSA has been reached. + pos_ = nullptr; + pos_is_label_character_ = false; + return false; +} + +int FixedSetIncrementalLookup::GetResultForCurrentSequence() const { + int value = kDafsaNotFound; + // Look to see if there is a next character that's a return value. + if (pos_is_label_character_) { + // Currently processing a label, so it is only necessary to check the byte + // at |pos_| to see if encodes a return value. + GetReturnValue(pos_, &value); + } else { + // Otherwise, |pos_| is an offset list (or nullptr). Explore the list of + // child nodes (given by their offsets) to find one whose label is a result + // code. + // + // This search uses a temporary copy of |pos_|, since mutating |pos_| could + // skip over a node that would be important to a subsequent Advance() call. + const unsigned char* temp_pos = pos_; + + // Read offsets from |temp_pos| until either |temp_pos| is nullptr or until + // the byte at |offset| contains a result code (encoded as an ASCII + // character below 0x20). + const unsigned char* offset = pos_; + while (GetNextOffset(&temp_pos, &offset)) { + DCHECK(offset < end_); + DCHECK((temp_pos == nullptr) || temp_pos < end_); + if (GetReturnValue(offset, &value)) + break; + } + } + return value; +} + +int LookupStringInFixedSet(const unsigned char* graph, + size_t length, + const char* key, + size_t key_length) { + // Do an incremental lookup until either the end of the graph is reached, or + // until every character in |key| is consumed. + FixedSetIncrementalLookup lookup(graph, length); + const char* key_end = key + key_length; + while (key != key_end) { + if (!lookup.Advance(*key)) + return kDafsaNotFound; + key++; + } + // The entire input was consumed without reaching the end of the graph. Return + // the result code (if present) for the current position, or kDafsaNotFound. + return lookup.GetResultForCurrentSequence(); +} + +} // namespace net
diff --git a/src/net/base/lookup_string_in_fixed_set.h b/src/net/base/lookup_string_in_fixed_set.h new file mode 100644 index 0000000..3da3856 --- /dev/null +++ b/src/net/base/lookup_string_in_fixed_set.h
@@ -0,0 +1,147 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_BASE_LOOKUP_STRING_IN_FIXED_SET_H_ +#define NET_BASE_LOOKUP_STRING_IN_FIXED_SET_H_ + +#include <stddef.h> + +#include "net/base/net_export.h" + +namespace net { + +enum { + kDafsaNotFound = -1, // key is not in set + kDafsaFound = 0, // key is in set + // The following return values are used by the implementation of + // GetDomainAndRegistry() and are probably not generally useful. + kDafsaExceptionRule = 1, // key excluded from set via exception + kDafsaWildcardRule = 2, // key matched a wildcard rule + kDafsaPrivateRule = 4, // key matched a private rule +}; + +// Looks up the string |key| with length |key_length| in a fixed set of +// strings. The set of strings must be known at compile time. It is converted to +// a graph structure named a DAFSA (Deterministic Acyclic Finite State +// Automaton) by the script make_dafsa.py during compilation. This permits +// efficient (in time and space) lookup. The graph generated by make_dafsa.py +// takes the form of a constant byte array which should be supplied via the +// |graph| and |length| parameters. The return value is kDafsaNotFound, +// kDafsaFound, or a bitmap consisting of one or more of kDafsaExceptionRule, +// kDafsaWildcardRule and kDafsaPrivateRule ORed together. +// +// TODO(nick): Replace this with FixedSetIncrementalLookup everywhere. +NET_EXPORT int LookupStringInFixedSet(const unsigned char* graph, + size_t length, + const char* key, + size_t key_length); + +// FixedSetIncrementalLookup provides efficient membership and prefix queries +// against a fixed set of strings. The set of strings must be known at compile +// time. The set is converted to a graph structure named a DAFSA (Deterministic +// Acyclic Finite State Automaton) by the script //net/tools/dafsa/make_dafsa.py +// during compilation. The conversion generates a C++ header file defining the +// encoded graph as a constant byte array. This class provides a fast, constant- +// space lookup operation against such byte arrays. +// +// The lookup proceeds incrementally, with input characters provided one at a +// time. This approach allow queries of the form: "given an input string, which +// prefixes of that string that appear in the fixed set?" As the matching +// prefixes (and their result codes) are enumerated, the most suitable match +// among them can be selected in a single pass. +// +// This class can also be used to perform suffix queries (instead of prefix +// queries) against a fixed set, so long as the DAFSA is constructed on reversed +// values, and the input is provided in reverse order. +// +// Example usage for simple membership query; |input| is a std::string: +// +// FixedSetIncrementalLookup lookup(kDafsa, sizeof(kDafsa)); +// for (char c : input) { +// if (!lookup.Advance(c)) +// return false; +// } +// return lookup.GetResultForCurrentSequence() != kDafsaNotFound; +// +// Example usage for 'find longest prefix in set with result code == 3' query: +// +// FixedSetIncrementalLookup prefix_lookup(kDafsa, sizeof(kDafsa)); +// size_t longest_match_end = 0; +// for (size_t i = 0; i < input.length(); ++i) { +// if (!prefix_lookup.Advance(input[i])) +// break; +// if (prefix_lookup.GetResultForCurrentSequence() == 3) +// longest_match_end = (i + 1); +// } +// return input.substr(0, longest_match_end); +// +class NET_EXPORT FixedSetIncrementalLookup { + public: + // Begin a lookup against the provided fixed set. |graph| and |length| + // describe a byte buffer generated by the make_dafsa.py script, as described + // in the class comment. + // + // FixedSetIncrementalLookup is initialized to a state corresponding to the + // empty input sequence. Calling GetResultForCurrentSequence() in the initial + // state would indicate whether the empty string appears in the fixed set. + // Characters can be added to the sequence by calling Advance(), and the + // lookup result can be checked after each addition by calling + // GetResultForCurrentSequence(). + FixedSetIncrementalLookup(const unsigned char* graph, size_t length); + + // FixedSetIncrementalLookup is copyable so that callers can save/restore + // their position in the search. This is for cases where branching or + // backtracking might be required (e.g. to probe for the presence of a + // designated wildcard character). + FixedSetIncrementalLookup(const FixedSetIncrementalLookup&); + FixedSetIncrementalLookup& operator=(const FixedSetIncrementalLookup&); + + ~FixedSetIncrementalLookup(); + + // Advance the query by adding a character to the input sequence. |input| can + // be any char value, but only ASCII characters will ever result in matches, + // since the fixed set itself is limited to ASCII strings. + // + // Returns true if the resulting input sequence either appears in the fixed + // set itself, or is a prefix of some longer string in the fixed set. Returns + // false otherwise, implying that the graph is exhausted and + // GetResultForCurrentSequence() will return kDafsaNotFound. + // + // Once Advance() has returned false, the caller can safely stop feeding more + // characters, as subsequent calls to Advance() will return false and have no + // effect. + bool Advance(char input); + + // Returns the result code corresponding to the input sequence provided thus + // far to Advance(). + // + // If the sequence does not appear in the fixed set, the return value is + // kDafsaNotFound. Otherwise, the value is a non-negative integer (currently + // limited to 0-7) corresponding to the result code for that string, as listed + // in the .gperf file from which the DAFSA was generated. For + // GetDomainAndRegistry DAFSAs, these values should be interpreted as a + // bitmask of kDafsaExceptionRule, kDafsaWildcardRule, and kDafsaPrivateRule. + // + // It is okay to call this function, and then extend the sequence further by + // calling Advance(). + int GetResultForCurrentSequence() const; + + private: + // Pointer to the current position in the graph indicating the current state + // of the automaton, or nullptr if the graph is exhausted. + const unsigned char* pos_; + + // Pointer just past the end of the graph. |pos_| should never get here. This + // is used only in DCHECKs. + const unsigned char* end_; + + // Contains the current decoder state. If true, |pos_| points to a label + // character or a return code. If false, |pos_| points to a sequence of + // offsets that indicate the child nodes of the current state. + bool pos_is_label_character_; +}; + +} // namespace net + +#endif // NET_BASE_LOOKUP_STRING_IN_FIXED_SET_H_
diff --git a/src/net/base/lookup_string_in_fixed_set_unittest.cc b/src/net/base/lookup_string_in_fixed_set_unittest.cc new file mode 100644 index 0000000..612f640 --- /dev/null +++ b/src/net/base/lookup_string_in_fixed_set_unittest.cc
@@ -0,0 +1,251 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "net/base/lookup_string_in_fixed_set.h" + +#include <string.h> + +#include <algorithm> +#include <limits> +#include <ostream> +#include <utility> +#include <vector> + +#include "base/base_paths.h" +#include "base/files/file_path.h" +#include "base/files/file_util.h" +#include "base/path_service.h" +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace net { +namespace { +namespace test1 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest1-inc.cc" +} +namespace test3 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest3-inc.cc" +} +namespace test4 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest4-inc.cc" +} +namespace test5 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest5-inc.cc" +} +namespace test6 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest6-inc.cc" +} + +struct Expectation { + const char* const key; + int value; +}; + +void PrintTo(const Expectation& expectation, std::ostream* os) { + *os << "{\"" << expectation.key << "\", " << expectation.value << "}"; +} + +class LookupStringInFixedSetTest : public testing::TestWithParam<Expectation> { + protected: + template <size_t N> + int LookupInGraph(const unsigned char(&graph)[N], const char* key) { + return LookupStringInFixedSet(graph, N, key, strlen(key)); + } +}; + +class Dafsa1Test : public LookupStringInFixedSetTest {}; + +TEST_P(Dafsa1Test, BasicTest) { + const Expectation& param = GetParam(); + EXPECT_EQ(param.value, LookupInGraph(test1::kDafsa, param.key)); +} + +const Expectation kBasicTestCases[] = { + {"", -1}, {"j", -1}, {"jp", 0}, {"jjp", -1}, {"jpp", -1}, + {"bar.jp", 2}, {"pref.bar.jp", 1}, {"c", 2}, {"b.c", 1}, {"priv.no", 4}, +}; + +// Helper function for EnumerateDafsaLanaguage. +void RecursivelyEnumerateDafsaLanguage(const FixedSetIncrementalLookup& lookup, + std::vector<char>* sequence, + std::vector<std::string>* language) { + int result = lookup.GetResultForCurrentSequence(); + if (result != kDafsaNotFound) { + std::string line(sequence->begin(), sequence->end()); + line += base::StringPrintf(", %d", result); + language->emplace_back(std::move(line)); + } + // Try appending each char value. + for (char c = std::numeric_limits<char>::min();; ++c) { + FixedSetIncrementalLookup continued_lookup = lookup; + if (continued_lookup.Advance(c)) { + sequence->push_back(c); + size_t saved_language_size = language->size(); + RecursivelyEnumerateDafsaLanguage(continued_lookup, sequence, language); + CHECK_LT(saved_language_size, language->size()) + << "DAFSA includes a branch to nowhere at node: " + << std::string(sequence->begin(), sequence->end()); + sequence->pop_back(); + } + if (c == std::numeric_limits<char>::max()) + break; + } +} + +// Uses FixedSetIncrementalLookup to build a vector of every string in the +// language of the DAFSA. +template <typename Graph> +std::vector<std::string> EnumerateDafsaLanguage(const Graph& graph) { + FixedSetIncrementalLookup query(graph, sizeof(Graph)); + std::vector<char> sequence; + std::vector<std::string> language; + RecursivelyEnumerateDafsaLanguage(query, &sequence, &language); + return language; +} + +INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest, + Dafsa1Test, + ::testing::ValuesIn(kBasicTestCases)); + +class Dafsa3Test : public LookupStringInFixedSetTest {}; + +// This DAFSA is constructed so that labels begin and end with unique +// characters, which makes it impossible to merge labels. Each inner node +// is about 100 bytes and a one byte offset can at most add 64 bytes to +// previous offset. Thus the paths must go over two byte offsets. +TEST_P(Dafsa3Test, TestDafsaTwoByteOffsets) { + const Expectation& param = GetParam(); + EXPECT_EQ(param.value, LookupInGraph(test3::kDafsa, param.key)); +} + +const Expectation kTwoByteOffsetTestCases[] = { + {"0________________________________________________________________________" + "____________________________0", + 0}, + {"7________________________________________________________________________" + "____________________________7", + 4}, + {"a________________________________________________________________________" + "____________________________8", + -1}, +}; + +INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest, + Dafsa3Test, + ::testing::ValuesIn(kTwoByteOffsetTestCases)); + +class Dafsa4Test : public LookupStringInFixedSetTest {}; + +// This DAFSA is constructed so that labels begin and end with unique +// characters, which makes it impossible to merge labels. The byte array +// has a size of ~54k. A two byte offset can add at most add 8k to the +// previous offset. Since we can skip only forward in memory, the nodes +// representing the return values must be located near the end of the byte +// array. The probability that we can reach from an arbitrary inner node to +// a return value without using a three byte offset is small (but not zero). +// The test is repeated with some different keys and with a reasonable +// probability at least one of the tested paths has go over a three byte +// offset. +TEST_P(Dafsa4Test, TestDafsaThreeByteOffsets) { + const Expectation& param = GetParam(); + EXPECT_EQ(param.value, LookupInGraph(test4::kDafsa, param.key)); +} + +const Expectation kThreeByteOffsetTestCases[] = { + {"Z6_______________________________________________________________________" + "_____________________________Z6", + 0}, + {"Z7_______________________________________________________________________" + "_____________________________Z7", + 4}, + {"Za_______________________________________________________________________" + "_____________________________Z8", + -1}, +}; + +INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest, + Dafsa4Test, + ::testing::ValuesIn(kThreeByteOffsetTestCases)); + +class Dafsa5Test : public LookupStringInFixedSetTest {}; + +// This DAFSA is constructed from words with similar prefixes but distinct +// suffixes. The DAFSA will then form a trie with the implicit source node +// as root. +TEST_P(Dafsa5Test, TestDafsaJoinedPrefixes) { + const Expectation& param = GetParam(); + EXPECT_EQ(param.value, LookupInGraph(test5::kDafsa, param.key)); +} + +const Expectation kJoinedPrefixesTestCases[] = { + {"ai", 0}, {"bj", 4}, {"aak", 0}, {"bbl", 4}, + {"aaa", -1}, {"bbb", -1}, {"aaaam", 0}, {"bbbbn", 0}, +}; + +INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest, + Dafsa5Test, + ::testing::ValuesIn(kJoinedPrefixesTestCases)); + +class Dafsa6Test : public LookupStringInFixedSetTest {}; + +// This DAFSA is constructed from words with similar suffixes but distinct +// prefixes. The DAFSA will then form a trie with the implicit sink node as +// root. +TEST_P(Dafsa6Test, TestDafsaJoinedSuffixes) { + const Expectation& param = GetParam(); + EXPECT_EQ(param.value, LookupInGraph(test6::kDafsa, param.key)); +} + +const Expectation kJoinedSuffixesTestCases[] = { + {"ia", 0}, {"jb", 4}, {"kaa", 0}, {"lbb", 4}, + {"aaa", -1}, {"bbb", -1}, {"maaaa", 0}, {"nbbbb", 0}, +}; + +INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest, + Dafsa6Test, + ::testing::ValuesIn(kJoinedSuffixesTestCases)); + +// Validates that the generated DAFSA contains exactly the same information as +// effective_tld_names_unittest1.gperf. +TEST(LookupStringInFixedSetTest, Dafsa1EnumerateLanguage) { + auto language = EnumerateDafsaLanguage(test1::kDafsa); + + // These are the lines of effective_tld_names_unittest1.gperf, in sorted + // order. + std::vector<std::string> expected_language = { + "ac.jp, 0", "b.c, 1", "bar.baz.com, 0", "bar.jp, 2", + "baz.bar.jp, 2", "c, 2", "jp, 0", "no, 0", + "pref.bar.jp, 1", "priv.no, 4", "private, 4", "xn--fiqs8s, 0", + }; + + EXPECT_EQ(expected_language, language); +} + +// Validates that the generated DAFSA contains exactly the same information as +// effective_tld_names_unittest5.gperf. +TEST(LookupStringInFixedSetTest, Dafsa5EnumerateLanguage) { + auto language = EnumerateDafsaLanguage(test5::kDafsa); + + std::vector<std::string> expected_language = { + "aaaam, 0", "aak, 0", "ai, 0", "bbbbn, 0", "bbl, 4", "bj, 4", + }; + + EXPECT_EQ(expected_language, language); +} + +// Validates that the generated DAFSA contains exactly the same information as +// effective_tld_names_unittest6.gperf. +TEST(LookupStringInFixedSetTest, Dafsa6EnumerateLanguage) { + auto language = EnumerateDafsaLanguage(test6::kDafsa); + + std::vector<std::string> expected_language = { + "ia, 0", "jb, 4", "kaa, 0", "lbb, 4", "maaaa, 0", "nbbbb, 0", + }; + + EXPECT_EQ(expected_language, language); +} + +} // namespace +} // namespace net
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names.dat b/src/net/base/registry_controlled_domains/effective_tld_names.dat new file mode 100644 index 0000000..7598355 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names.dat
@@ -0,0 +1,11941 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, +// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. + +// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. + +// ===BEGIN ICANN DOMAINS=== + +// ac : https://en.wikipedia.org/wiki/.ac +ac +com.ac +edu.ac +gov.ac +net.ac +mil.ac +org.ac + +// ad : https://en.wikipedia.org/wiki/.ad +ad +nom.ad + +// ae : https://en.wikipedia.org/wiki/.ae +// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php +ae +co.ae +net.ae +org.ae +sch.ae +ac.ae +gov.ae +mil.ae + +// aero : see https://www.information.aero/index.php?id=66 +aero +accident-investigation.aero +accident-prevention.aero +aerobatic.aero +aeroclub.aero +aerodrome.aero +agents.aero +aircraft.aero +airline.aero +airport.aero +air-surveillance.aero +airtraffic.aero +air-traffic-control.aero +ambulance.aero +amusement.aero +association.aero +author.aero +ballooning.aero +broker.aero +caa.aero +cargo.aero +catering.aero +certification.aero +championship.aero +charter.aero +civilaviation.aero +club.aero +conference.aero +consultant.aero +consulting.aero +control.aero +council.aero +crew.aero +design.aero +dgca.aero +educator.aero +emergency.aero +engine.aero +engineer.aero +entertainment.aero +equipment.aero +exchange.aero +express.aero +federation.aero +flight.aero +freight.aero +fuel.aero +gliding.aero +government.aero +groundhandling.aero +group.aero +hanggliding.aero +homebuilt.aero +insurance.aero +journal.aero +journalist.aero +leasing.aero +logistics.aero +magazine.aero +maintenance.aero +media.aero +microlight.aero +modelling.aero +navigation.aero +parachuting.aero +paragliding.aero +passenger-association.aero +pilot.aero +press.aero +production.aero +recreation.aero +repbody.aero +res.aero +research.aero +rotorcraft.aero +safety.aero +scientist.aero +services.aero +show.aero +skydiving.aero +software.aero +student.aero +trader.aero +trading.aero +trainer.aero +union.aero +workinggroup.aero +works.aero + +// af : http://www.nic.af/help.jsp +af +gov.af +com.af +org.af +net.af +edu.af + +// ag : http://www.nic.ag/prices.htm +ag +com.ag +org.ag +net.ag +co.ag +nom.ag + +// ai : http://nic.com.ai/ +ai +off.ai +com.ai +net.ai +org.ai + +// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 +al +com.al +edu.al +gov.al +mil.al +net.al +org.al + +// am : https://en.wikipedia.org/wiki/.am +am + +// ao : https://en.wikipedia.org/wiki/.ao +// http://www.dns.ao/REGISTR.DOC +ao +ed.ao +gv.ao +og.ao +co.ao +pb.ao +it.ao + +// aq : https://en.wikipedia.org/wiki/.aq +aq + +// ar : https://nic.ar/normativa-vigente.xhtml +ar +com.ar +edu.ar +gob.ar +gov.ar +int.ar +mil.ar +net.ar +org.ar +tur.ar + +// arpa : https://en.wikipedia.org/wiki/.arpa +// Confirmed by registry <iana-questions@icann.org> 2008-06-18 +arpa +e164.arpa +in-addr.arpa +ip6.arpa +iris.arpa +uri.arpa +urn.arpa + +// as : https://en.wikipedia.org/wiki/.as +as +gov.as + +// asia : https://en.wikipedia.org/wiki/.asia +asia + +// at : https://en.wikipedia.org/wiki/.at +// Confirmed by registry <it@nic.at> 2008-06-17 +at +ac.at +co.at +gv.at +or.at + +// au : https://en.wikipedia.org/wiki/.au +// http://www.auda.org.au/ +au +// 2LDs +com.au +net.au +org.au +edu.au +gov.au +asn.au +id.au +// Historic 2LDs (closed to new registration, but sites still exist) +info.au +conf.au +oz.au +// CGDNs - http://www.cgdn.org.au/ +act.au +nsw.au +nt.au +qld.au +sa.au +tas.au +vic.au +wa.au +// 3LDs +act.edu.au +nsw.edu.au +nt.edu.au +qld.edu.au +sa.edu.au +tas.edu.au +vic.edu.au +wa.edu.au +// act.gov.au Bug 984824 - Removed at request of Greg Tankard +// nsw.gov.au Bug 547985 - Removed at request of <Shae.Donelan@services.nsw.gov.au> +// nt.gov.au Bug 940478 - Removed at request of Greg Connors <Greg.Connors@nt.gov.au> +qld.gov.au +sa.gov.au +tas.gov.au +vic.gov.au +wa.gov.au + +// aw : https://en.wikipedia.org/wiki/.aw +aw +com.aw + +// ax : https://en.wikipedia.org/wiki/.ax +ax + +// az : https://en.wikipedia.org/wiki/.az +az +com.az +net.az +int.az +gov.az +org.az +edu.az +info.az +pp.az +mil.az +name.az +pro.az +biz.az + +// ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf +ba +com.ba +edu.ba +gov.ba +mil.ba +net.ba +org.ba + +// bb : https://en.wikipedia.org/wiki/.bb +bb +biz.bb +co.bb +com.bb +edu.bb +gov.bb +info.bb +net.bb +org.bb +store.bb +tv.bb + +// bd : https://en.wikipedia.org/wiki/.bd +*.bd + +// be : https://en.wikipedia.org/wiki/.be +// Confirmed by registry <tech@dns.be> 2008-06-08 +be +ac.be + +// bf : https://en.wikipedia.org/wiki/.bf +bf +gov.bf + +// bg : https://en.wikipedia.org/wiki/.bg +// https://www.register.bg/user/static/rules/en/index.html +bg +a.bg +b.bg +c.bg +d.bg +e.bg +f.bg +g.bg +h.bg +i.bg +j.bg +k.bg +l.bg +m.bg +n.bg +o.bg +p.bg +q.bg +r.bg +s.bg +t.bg +u.bg +v.bg +w.bg +x.bg +y.bg +z.bg +0.bg +1.bg +2.bg +3.bg +4.bg +5.bg +6.bg +7.bg +8.bg +9.bg + +// bh : https://en.wikipedia.org/wiki/.bh +bh +com.bh +edu.bh +net.bh +org.bh +gov.bh + +// bi : https://en.wikipedia.org/wiki/.bi +// http://whois.nic.bi/ +bi +co.bi +com.bi +edu.bi +or.bi +org.bi + +// biz : https://en.wikipedia.org/wiki/.biz +biz + +// bj : https://en.wikipedia.org/wiki/.bj +bj +asso.bj +barreau.bj +gouv.bj + +// bm : http://www.bermudanic.bm/dnr-text.txt +bm +com.bm +edu.bm +gov.bm +net.bm +org.bm + +// bn : https://en.wikipedia.org/wiki/.bn +*.bn + +// bo : http://www.nic.bo/ +bo +com.bo +edu.bo +gov.bo +gob.bo +int.bo +org.bo +net.bo +mil.bo +tv.bo + +// br : http://registro.br/dominio/categoria.html +// Submitted by registry <fneves@registro.br> +br +adm.br +adv.br +agr.br +am.br +arq.br +art.br +ato.br +b.br +bio.br +blog.br +bmd.br +cim.br +cng.br +cnt.br +com.br +coop.br +ecn.br +eco.br +edu.br +emp.br +eng.br +esp.br +etc.br +eti.br +far.br +flog.br +fm.br +fnd.br +fot.br +fst.br +g12.br +ggf.br +gov.br +imb.br +ind.br +inf.br +jor.br +jus.br +leg.br +lel.br +mat.br +med.br +mil.br +mp.br +mus.br +net.br +*.nom.br +not.br +ntr.br +odo.br +org.br +ppg.br +pro.br +psc.br +psi.br +qsl.br +radio.br +rec.br +slg.br +srv.br +taxi.br +teo.br +tmp.br +trd.br +tur.br +tv.br +vet.br +vlog.br +wiki.br +zlg.br + +// bs : http://www.nic.bs/rules.html +bs +com.bs +net.bs +org.bs +edu.bs +gov.bs + +// bt : https://en.wikipedia.org/wiki/.bt +bt +com.bt +edu.bt +gov.bt +net.bt +org.bt + +// bv : No registrations at this time. +// Submitted by registry <jarle@uninett.no> +bv + +// bw : https://en.wikipedia.org/wiki/.bw +// http://www.gobin.info/domainname/bw.doc +// list of other 2nd level tlds ? +bw +co.bw +org.bw + +// by : https://en.wikipedia.org/wiki/.by +// http://tld.by/rules_2006_en.html +// list of other 2nd level tlds ? +by +gov.by +mil.by +// Official information does not indicate that com.by is a reserved +// second-level domain, but it's being used as one (see www.google.com.by and +// www.yahoo.com.by, for example), so we list it here for safety's sake. +com.by + +// http://hoster.by/ +of.by + +// bz : https://en.wikipedia.org/wiki/.bz +// http://www.belizenic.bz/ +bz +com.bz +net.bz +org.bz +edu.bz +gov.bz + +// ca : https://en.wikipedia.org/wiki/.ca +ca +// ca geographical names +ab.ca +bc.ca +mb.ca +nb.ca +nf.ca +nl.ca +ns.ca +nt.ca +nu.ca +on.ca +pe.ca +qc.ca +sk.ca +yk.ca +// gc.ca: https://en.wikipedia.org/wiki/.gc.ca +// see also: http://registry.gc.ca/en/SubdomainFAQ +gc.ca + +// cat : https://en.wikipedia.org/wiki/.cat +cat + +// cc : https://en.wikipedia.org/wiki/.cc +cc + +// cd : https://en.wikipedia.org/wiki/.cd +// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 +cd +gov.cd + +// cf : https://en.wikipedia.org/wiki/.cf +cf + +// cg : https://en.wikipedia.org/wiki/.cg +cg + +// ch : https://en.wikipedia.org/wiki/.ch +ch + +// ci : https://en.wikipedia.org/wiki/.ci +// http://www.nic.ci/index.php?page=charte +ci +org.ci +or.ci +com.ci +co.ci +edu.ci +ed.ci +ac.ci +net.ci +go.ci +asso.ci +aéroport.ci +int.ci +presse.ci +md.ci +gouv.ci + +// ck : https://en.wikipedia.org/wiki/.ck +*.ck +!www.ck + +// cl : https://en.wikipedia.org/wiki/.cl +cl +gov.cl +gob.cl +co.cl +mil.cl + +// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927 +cm +co.cm +com.cm +gov.cm +net.cm + +// cn : https://en.wikipedia.org/wiki/.cn +// Submitted by registry <tanyaling@cnnic.cn> +cn +ac.cn +com.cn +edu.cn +gov.cn +net.cn +org.cn +mil.cn +公司.cn +网络.cn +網絡.cn +// cn geographic names +ah.cn +bj.cn +cq.cn +fj.cn +gd.cn +gs.cn +gz.cn +gx.cn +ha.cn +hb.cn +he.cn +hi.cn +hl.cn +hn.cn +jl.cn +js.cn +jx.cn +ln.cn +nm.cn +nx.cn +qh.cn +sc.cn +sd.cn +sh.cn +sn.cn +sx.cn +tj.cn +xj.cn +xz.cn +yn.cn +zj.cn +hk.cn +mo.cn +tw.cn + +// co : https://en.wikipedia.org/wiki/.co +// Submitted by registry <tecnico@uniandes.edu.co> +co +arts.co +com.co +edu.co +firm.co +gov.co +info.co +int.co +mil.co +net.co +nom.co +org.co +rec.co +web.co + +// com : https://en.wikipedia.org/wiki/.com +com + +// coop : https://en.wikipedia.org/wiki/.coop +coop + +// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do +cr +ac.cr +co.cr +ed.cr +fi.cr +go.cr +or.cr +sa.cr + +// cu : https://en.wikipedia.org/wiki/.cu +cu +com.cu +edu.cu +org.cu +net.cu +gov.cu +inf.cu + +// cv : https://en.wikipedia.org/wiki/.cv +cv + +// cw : http://www.una.cw/cw_registry/ +// Confirmed by registry <registry@una.net> 2013-03-26 +cw +com.cw +edu.cw +net.cw +org.cw + +// cx : https://en.wikipedia.org/wiki/.cx +// list of other 2nd level tlds ? +cx +gov.cx + +// cy : http://www.nic.cy/ +// Submitted by registry Panayiotou Fotia <cydns@ucy.ac.cy> +cy +ac.cy +biz.cy +com.cy +ekloges.cy +gov.cy +ltd.cy +name.cy +net.cy +org.cy +parliament.cy +press.cy +pro.cy +tm.cy + +// cz : https://en.wikipedia.org/wiki/.cz +cz + +// de : https://en.wikipedia.org/wiki/.de +// Confirmed by registry <ops@denic.de> (with technical +// reservations) 2008-07-01 +de + +// dj : https://en.wikipedia.org/wiki/.dj +dj + +// dk : https://en.wikipedia.org/wiki/.dk +// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17 +dk + +// dm : https://en.wikipedia.org/wiki/.dm +dm +com.dm +net.dm +org.dm +edu.dm +gov.dm + +// do : https://en.wikipedia.org/wiki/.do +do +art.do +com.do +edu.do +gob.do +gov.do +mil.do +net.do +org.do +sld.do +web.do + +// dz : https://en.wikipedia.org/wiki/.dz +dz +com.dz +org.dz +net.dz +gov.dz +edu.dz +asso.dz +pol.dz +art.dz + +// ec : http://www.nic.ec/reg/paso1.asp +// Submitted by registry <vabboud@nic.ec> +ec +com.ec +info.ec +net.ec +fin.ec +k12.ec +med.ec +pro.ec +org.ec +edu.ec +gov.ec +gob.ec +mil.ec + +// edu : https://en.wikipedia.org/wiki/.edu +edu + +// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B +ee +edu.ee +gov.ee +riik.ee +lib.ee +med.ee +com.ee +pri.ee +aip.ee +org.ee +fie.ee + +// eg : https://en.wikipedia.org/wiki/.eg +eg +com.eg +edu.eg +eun.eg +gov.eg +mil.eg +name.eg +net.eg +org.eg +sci.eg + +// er : https://en.wikipedia.org/wiki/.er +*.er + +// es : https://www.nic.es/site_ingles/ingles/dominios/index.html +es +com.es +nom.es +org.es +gob.es +edu.es + +// et : https://en.wikipedia.org/wiki/.et +et +com.et +gov.et +org.et +edu.et +biz.et +name.et +info.et +net.et + +// eu : https://en.wikipedia.org/wiki/.eu +eu + +// fi : https://en.wikipedia.org/wiki/.fi +fi +// aland.fi : https://en.wikipedia.org/wiki/.ax +// This domain is being phased out in favor of .ax. As there are still many +// domains under aland.fi, we still keep it on the list until aland.fi is +// completely removed. +// TODO: Check for updates (expected to be phased out around Q1/2009) +aland.fi + +// fj : https://en.wikipedia.org/wiki/.fj +*.fj + +// fk : https://en.wikipedia.org/wiki/.fk +*.fk + +// fm : https://en.wikipedia.org/wiki/.fm +fm + +// fo : https://en.wikipedia.org/wiki/.fo +fo + +// fr : http://www.afnic.fr/ +// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs +fr +com.fr +asso.fr +nom.fr +prd.fr +presse.fr +tm.fr +// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels +aeroport.fr +assedic.fr +avocat.fr +avoues.fr +cci.fr +chambagri.fr +chirurgiens-dentistes.fr +experts-comptables.fr +geometre-expert.fr +gouv.fr +greta.fr +huissier-justice.fr +medecin.fr +notaires.fr +pharmacien.fr +port.fr +veterinaire.fr + +// ga : https://en.wikipedia.org/wiki/.ga +ga + +// gb : This registry is effectively dormant +// Submitted by registry <Damien.Shaw@ja.net> +gb + +// gd : https://en.wikipedia.org/wiki/.gd +gd + +// ge : http://www.nic.net.ge/policy_en.pdf +ge +com.ge +edu.ge +gov.ge +org.ge +mil.ge +net.ge +pvt.ge + +// gf : https://en.wikipedia.org/wiki/.gf +gf + +// gg : http://www.channelisles.net/register-domains/ +// Confirmed by registry <nigel@channelisles.net> 2013-11-28 +gg +co.gg +net.gg +org.gg + +// gh : https://en.wikipedia.org/wiki/.gh +// see also: http://www.nic.gh/reg_now.php +// Although domains directly at second level are not possible at the moment, +// they have been possible for some time and may come back. +gh +com.gh +edu.gh +gov.gh +org.gh +mil.gh + +// gi : http://www.nic.gi/rules.html +gi +com.gi +ltd.gi +gov.gi +mod.gi +edu.gi +org.gi + +// gl : https://en.wikipedia.org/wiki/.gl +// http://nic.gl +gl +co.gl +com.gl +edu.gl +net.gl +org.gl + +// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm +gm + +// gn : http://psg.com/dns/gn/gn.txt +// Submitted by registry <randy@psg.com> +gn +ac.gn +com.gn +edu.gn +gov.gn +org.gn +net.gn + +// gov : https://en.wikipedia.org/wiki/.gov +gov + +// gp : http://www.nic.gp/index.php?lang=en +gp +com.gp +net.gp +mobi.gp +edu.gp +org.gp +asso.gp + +// gq : https://en.wikipedia.org/wiki/.gq +gq + +// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html +// Submitted by registry <segred@ics.forth.gr> +gr +com.gr +edu.gr +net.gr +org.gr +gov.gr + +// gs : https://en.wikipedia.org/wiki/.gs +gs + +// gt : http://www.gt/politicas_de_registro.html +gt +com.gt +edu.gt +gob.gt +ind.gt +mil.gt +net.gt +org.gt + +// gu : http://gadao.gov.gu/registration.txt +*.gu + +// gw : https://en.wikipedia.org/wiki/.gw +gw + +// gy : https://en.wikipedia.org/wiki/.gy +// http://registry.gy/ +gy +co.gy +com.gy +edu.gy +gov.gy +net.gy +org.gy + +// hk : https://www.hkdnr.hk +// Submitted by registry <hk.tech@hkirc.hk> +hk +com.hk +edu.hk +gov.hk +idv.hk +net.hk +org.hk +公司.hk +教育.hk +敎育.hk +政府.hk +個人.hk +个人.hk +箇人.hk +網络.hk +网络.hk +组織.hk +網絡.hk +网絡.hk +组织.hk +組織.hk +組织.hk + +// hm : https://en.wikipedia.org/wiki/.hm +hm + +// hn : http://www.nic.hn/politicas/ps02,,05.html +hn +com.hn +edu.hn +org.hn +net.hn +mil.hn +gob.hn + +// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf +hr +iz.hr +from.hr +name.hr +com.hr + +// ht : http://www.nic.ht/info/charte.cfm +ht +com.ht +shop.ht +firm.ht +info.ht +adult.ht +net.ht +pro.ht +org.ht +med.ht +art.ht +coop.ht +pol.ht +asso.ht +edu.ht +rel.ht +gouv.ht +perso.ht + +// hu : http://www.domain.hu/domain/English/sld.html +// Confirmed by registry <pasztor@iszt.hu> 2008-06-12 +hu +co.hu +info.hu +org.hu +priv.hu +sport.hu +tm.hu +2000.hu +agrar.hu +bolt.hu +casino.hu +city.hu +erotica.hu +erotika.hu +film.hu +forum.hu +games.hu +hotel.hu +ingatlan.hu +jogasz.hu +konyvelo.hu +lakas.hu +media.hu +news.hu +reklam.hu +sex.hu +shop.hu +suli.hu +szex.hu +tozsde.hu +utazas.hu +video.hu + +// id : https://register.pandi.or.id/ +id +ac.id +biz.id +co.id +desa.id +go.id +mil.id +my.id +net.id +or.id +sch.id +web.id + +// ie : https://en.wikipedia.org/wiki/.ie +ie +gov.ie + +// il : http://www.isoc.org.il/domains/ +il +ac.il +co.il +gov.il +idf.il +k12.il +muni.il +net.il +org.il + +// im : https://www.nic.im/ +// Submitted by registry <info@nic.im> +im +ac.im +co.im +com.im +ltd.co.im +net.im +org.im +plc.co.im +tt.im +tv.im + +// in : https://en.wikipedia.org/wiki/.in +// see also: https://registry.in/Policies +// Please note, that nic.in is not an official eTLD, but used by most +// government institutions. +in +co.in +firm.in +net.in +org.in +gen.in +ind.in +nic.in +ac.in +edu.in +res.in +gov.in +mil.in + +// info : https://en.wikipedia.org/wiki/.info +info + +// int : https://en.wikipedia.org/wiki/.int +// Confirmed by registry <iana-questions@icann.org> 2008-06-18 +int +eu.int + +// io : http://www.nic.io/rules.html +// list of other 2nd level tlds ? +io +com.io + +// iq : http://www.cmc.iq/english/iq/iqregister1.htm +iq +gov.iq +edu.iq +mil.iq +com.iq +org.iq +net.iq + +// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules +// Also see http://www.nic.ir/Internationalized_Domain_Names +// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16 +ir +ac.ir +co.ir +gov.ir +id.ir +net.ir +org.ir +sch.ir +// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH) +ایران.ir +// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH) +ايران.ir + +// is : http://www.isnic.is/domain/rules.php +// Confirmed by registry <marius@isgate.is> 2008-12-06 +is +net.is +com.is +edu.is +gov.is +org.is +int.is + +// it : https://en.wikipedia.org/wiki/.it +it +gov.it +edu.it +// Reserved geo-names: +// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf +// There is also a list of reserved geo-names corresponding to Italian municipalities +// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here. +// Regions +abr.it +abruzzo.it +aosta-valley.it +aostavalley.it +bas.it +basilicata.it +cal.it +calabria.it +cam.it +campania.it +emilia-romagna.it +emiliaromagna.it +emr.it +friuli-v-giulia.it +friuli-ve-giulia.it +friuli-vegiulia.it +friuli-venezia-giulia.it +friuli-veneziagiulia.it +friuli-vgiulia.it +friuliv-giulia.it +friulive-giulia.it +friulivegiulia.it +friulivenezia-giulia.it +friuliveneziagiulia.it +friulivgiulia.it +fvg.it +laz.it +lazio.it +lig.it +liguria.it +lom.it +lombardia.it +lombardy.it +lucania.it +mar.it +marche.it +mol.it +molise.it +piedmont.it +piemonte.it +pmn.it +pug.it +puglia.it +sar.it +sardegna.it +sardinia.it +sic.it +sicilia.it +sicily.it +taa.it +tos.it +toscana.it +trentino-a-adige.it +trentino-aadige.it +trentino-alto-adige.it +trentino-altoadige.it +trentino-s-tirol.it +trentino-stirol.it +trentino-sud-tirol.it +trentino-sudtirol.it +trentino-sued-tirol.it +trentino-suedtirol.it +trentinoa-adige.it +trentinoaadige.it +trentinoalto-adige.it +trentinoaltoadige.it +trentinos-tirol.it +trentinostirol.it +trentinosud-tirol.it +trentinosudtirol.it +trentinosued-tirol.it +trentinosuedtirol.it +tuscany.it +umb.it +umbria.it +val-d-aosta.it +val-daosta.it +vald-aosta.it +valdaosta.it +valle-aosta.it +valle-d-aosta.it +valle-daosta.it +valleaosta.it +valled-aosta.it +valledaosta.it +vallee-aoste.it +valleeaoste.it +vao.it +vda.it +ven.it +veneto.it +// Provinces +ag.it +agrigento.it +al.it +alessandria.it +alto-adige.it +altoadige.it +an.it +ancona.it +andria-barletta-trani.it +andria-trani-barletta.it +andriabarlettatrani.it +andriatranibarletta.it +ao.it +aosta.it +aoste.it +ap.it +aq.it +aquila.it +ar.it +arezzo.it +ascoli-piceno.it +ascolipiceno.it +asti.it +at.it +av.it +avellino.it +ba.it +balsan.it +bari.it +barletta-trani-andria.it +barlettatraniandria.it +belluno.it +benevento.it +bergamo.it +bg.it +bi.it +biella.it +bl.it +bn.it +bo.it +bologna.it +bolzano.it +bozen.it +br.it +brescia.it +brindisi.it +bs.it +bt.it +bz.it +ca.it +cagliari.it +caltanissetta.it +campidano-medio.it +campidanomedio.it +campobasso.it +carbonia-iglesias.it +carboniaiglesias.it +carrara-massa.it +carraramassa.it +caserta.it +catania.it +catanzaro.it +cb.it +ce.it +cesena-forli.it +cesenaforli.it +ch.it +chieti.it +ci.it +cl.it +cn.it +co.it +como.it +cosenza.it +cr.it +cremona.it +crotone.it +cs.it +ct.it +cuneo.it +cz.it +dell-ogliastra.it +dellogliastra.it +en.it +enna.it +fc.it +fe.it +fermo.it +ferrara.it +fg.it +fi.it +firenze.it +florence.it +fm.it +foggia.it +forli-cesena.it +forlicesena.it +fr.it +frosinone.it +ge.it +genoa.it +genova.it +go.it +gorizia.it +gr.it +grosseto.it +iglesias-carbonia.it +iglesiascarbonia.it +im.it +imperia.it +is.it +isernia.it +kr.it +la-spezia.it +laquila.it +laspezia.it +latina.it +lc.it +le.it +lecce.it +lecco.it +li.it +livorno.it +lo.it +lodi.it +lt.it +lu.it +lucca.it +macerata.it +mantova.it +massa-carrara.it +massacarrara.it +matera.it +mb.it +mc.it +me.it +medio-campidano.it +mediocampidano.it +messina.it +mi.it +milan.it +milano.it +mn.it +mo.it +modena.it +monza-brianza.it +monza-e-della-brianza.it +monza.it +monzabrianza.it +monzaebrianza.it +monzaedellabrianza.it +ms.it +mt.it +na.it +naples.it +napoli.it +no.it +novara.it +nu.it +nuoro.it +og.it +ogliastra.it +olbia-tempio.it +olbiatempio.it +or.it +oristano.it +ot.it +pa.it +padova.it +padua.it +palermo.it +parma.it +pavia.it +pc.it +pd.it +pe.it +perugia.it +pesaro-urbino.it +pesarourbino.it +pescara.it +pg.it +pi.it +piacenza.it +pisa.it +pistoia.it +pn.it +po.it +pordenone.it +potenza.it +pr.it +prato.it +pt.it +pu.it +pv.it +pz.it +ra.it +ragusa.it +ravenna.it +rc.it +re.it +reggio-calabria.it +reggio-emilia.it +reggiocalabria.it +reggioemilia.it +rg.it +ri.it +rieti.it +rimini.it +rm.it +rn.it +ro.it +roma.it +rome.it +rovigo.it +sa.it +salerno.it +sassari.it +savona.it +si.it +siena.it +siracusa.it +so.it +sondrio.it +sp.it +sr.it +ss.it +suedtirol.it +sv.it +ta.it +taranto.it +te.it +tempio-olbia.it +tempioolbia.it +teramo.it +terni.it +tn.it +to.it +torino.it +tp.it +tr.it +trani-andria-barletta.it +trani-barletta-andria.it +traniandriabarletta.it +tranibarlettaandria.it +trapani.it +trentino.it +trento.it +treviso.it +trieste.it +ts.it +turin.it +tv.it +ud.it +udine.it +urbino-pesaro.it +urbinopesaro.it +va.it +varese.it +vb.it +vc.it +ve.it +venezia.it +venice.it +verbania.it +vercelli.it +verona.it +vi.it +vibo-valentia.it +vibovalentia.it +vicenza.it +viterbo.it +vr.it +vs.it +vt.it +vv.it + +// je : http://www.channelisles.net/register-domains/ +// Confirmed by registry <nigel@channelisles.net> 2013-11-28 +je +co.je +net.je +org.je + +// jm : http://www.com.jm/register.html +*.jm + +// jo : http://www.dns.jo/Registration_policy.aspx +jo +com.jo +org.jo +net.jo +edu.jo +sch.jo +gov.jo +mil.jo +name.jo + +// jobs : https://en.wikipedia.org/wiki/.jobs +jobs + +// jp : https://en.wikipedia.org/wiki/.jp +// http://jprs.co.jp/en/jpdomain.html +// Submitted by registry <info@jprs.jp> +jp +// jp organizational type names +ac.jp +ad.jp +co.jp +ed.jp +go.jp +gr.jp +lg.jp +ne.jp +or.jp +// jp prefecture type names +aichi.jp +akita.jp +aomori.jp +chiba.jp +ehime.jp +fukui.jp +fukuoka.jp +fukushima.jp +gifu.jp +gunma.jp +hiroshima.jp +hokkaido.jp +hyogo.jp +ibaraki.jp +ishikawa.jp +iwate.jp +kagawa.jp +kagoshima.jp +kanagawa.jp +kochi.jp +kumamoto.jp +kyoto.jp +mie.jp +miyagi.jp +miyazaki.jp +nagano.jp +nagasaki.jp +nara.jp +niigata.jp +oita.jp +okayama.jp +okinawa.jp +osaka.jp +saga.jp +saitama.jp +shiga.jp +shimane.jp +shizuoka.jp +tochigi.jp +tokushima.jp +tokyo.jp +tottori.jp +toyama.jp +wakayama.jp +yamagata.jp +yamaguchi.jp +yamanashi.jp +栃木.jp +愛知.jp +愛媛.jp +兵庫.jp +熊本.jp +茨城.jp +北海道.jp +千葉.jp +和歌山.jp +長崎.jp +長野.jp +新潟.jp +青森.jp +静岡.jp +東京.jp +石川.jp +埼玉.jp +三重.jp +京都.jp +佐賀.jp +大分.jp +大阪.jp +奈良.jp +宮城.jp +宮崎.jp +富山.jp +山口.jp +山形.jp +山梨.jp +岩手.jp +岐阜.jp +岡山.jp +島根.jp +広島.jp +徳島.jp +沖縄.jp +滋賀.jp +神奈川.jp +福井.jp +福岡.jp +福島.jp +秋田.jp +群馬.jp +香川.jp +高知.jp +鳥取.jp +鹿児島.jp +// jp geographic type names +// http://jprs.jp/doc/rule/saisoku-1.html +*.kawasaki.jp +*.kitakyushu.jp +*.kobe.jp +*.nagoya.jp +*.sapporo.jp +*.sendai.jp +*.yokohama.jp +!city.kawasaki.jp +!city.kitakyushu.jp +!city.kobe.jp +!city.nagoya.jp +!city.sapporo.jp +!city.sendai.jp +!city.yokohama.jp +// 4th level registration +aisai.aichi.jp +ama.aichi.jp +anjo.aichi.jp +asuke.aichi.jp +chiryu.aichi.jp +chita.aichi.jp +fuso.aichi.jp +gamagori.aichi.jp +handa.aichi.jp +hazu.aichi.jp +hekinan.aichi.jp +higashiura.aichi.jp +ichinomiya.aichi.jp +inazawa.aichi.jp +inuyama.aichi.jp +isshiki.aichi.jp +iwakura.aichi.jp +kanie.aichi.jp +kariya.aichi.jp +kasugai.aichi.jp +kira.aichi.jp +kiyosu.aichi.jp +komaki.aichi.jp +konan.aichi.jp +kota.aichi.jp +mihama.aichi.jp +miyoshi.aichi.jp +nishio.aichi.jp +nisshin.aichi.jp +obu.aichi.jp +oguchi.aichi.jp +oharu.aichi.jp +okazaki.aichi.jp +owariasahi.aichi.jp +seto.aichi.jp +shikatsu.aichi.jp +shinshiro.aichi.jp +shitara.aichi.jp +tahara.aichi.jp +takahama.aichi.jp +tobishima.aichi.jp +toei.aichi.jp +togo.aichi.jp +tokai.aichi.jp +tokoname.aichi.jp +toyoake.aichi.jp +toyohashi.aichi.jp +toyokawa.aichi.jp +toyone.aichi.jp +toyota.aichi.jp +tsushima.aichi.jp +yatomi.aichi.jp +akita.akita.jp +daisen.akita.jp +fujisato.akita.jp +gojome.akita.jp +hachirogata.akita.jp +happou.akita.jp +higashinaruse.akita.jp +honjo.akita.jp +honjyo.akita.jp +ikawa.akita.jp +kamikoani.akita.jp +kamioka.akita.jp +katagami.akita.jp +kazuno.akita.jp +kitaakita.akita.jp +kosaka.akita.jp +kyowa.akita.jp +misato.akita.jp +mitane.akita.jp +moriyoshi.akita.jp +nikaho.akita.jp +noshiro.akita.jp +odate.akita.jp +oga.akita.jp +ogata.akita.jp +semboku.akita.jp +yokote.akita.jp +yurihonjo.akita.jp +aomori.aomori.jp +gonohe.aomori.jp +hachinohe.aomori.jp +hashikami.aomori.jp +hiranai.aomori.jp +hirosaki.aomori.jp +itayanagi.aomori.jp +kuroishi.aomori.jp +misawa.aomori.jp +mutsu.aomori.jp +nakadomari.aomori.jp +noheji.aomori.jp +oirase.aomori.jp +owani.aomori.jp +rokunohe.aomori.jp +sannohe.aomori.jp +shichinohe.aomori.jp +shingo.aomori.jp +takko.aomori.jp +towada.aomori.jp +tsugaru.aomori.jp +tsuruta.aomori.jp +abiko.chiba.jp +asahi.chiba.jp +chonan.chiba.jp +chosei.chiba.jp +choshi.chiba.jp +chuo.chiba.jp +funabashi.chiba.jp +futtsu.chiba.jp +hanamigawa.chiba.jp +ichihara.chiba.jp +ichikawa.chiba.jp +ichinomiya.chiba.jp +inzai.chiba.jp +isumi.chiba.jp +kamagaya.chiba.jp +kamogawa.chiba.jp +kashiwa.chiba.jp +katori.chiba.jp +katsuura.chiba.jp +kimitsu.chiba.jp +kisarazu.chiba.jp +kozaki.chiba.jp +kujukuri.chiba.jp +kyonan.chiba.jp +matsudo.chiba.jp +midori.chiba.jp +mihama.chiba.jp +minamiboso.chiba.jp +mobara.chiba.jp +mutsuzawa.chiba.jp +nagara.chiba.jp +nagareyama.chiba.jp +narashino.chiba.jp +narita.chiba.jp +noda.chiba.jp +oamishirasato.chiba.jp +omigawa.chiba.jp +onjuku.chiba.jp +otaki.chiba.jp +sakae.chiba.jp +sakura.chiba.jp +shimofusa.chiba.jp +shirako.chiba.jp +shiroi.chiba.jp +shisui.chiba.jp +sodegaura.chiba.jp +sosa.chiba.jp +tako.chiba.jp +tateyama.chiba.jp +togane.chiba.jp +tohnosho.chiba.jp +tomisato.chiba.jp +urayasu.chiba.jp +yachimata.chiba.jp +yachiyo.chiba.jp +yokaichiba.chiba.jp +yokoshibahikari.chiba.jp +yotsukaido.chiba.jp +ainan.ehime.jp +honai.ehime.jp +ikata.ehime.jp +imabari.ehime.jp +iyo.ehime.jp +kamijima.ehime.jp +kihoku.ehime.jp +kumakogen.ehime.jp +masaki.ehime.jp +matsuno.ehime.jp +matsuyama.ehime.jp +namikata.ehime.jp +niihama.ehime.jp +ozu.ehime.jp +saijo.ehime.jp +seiyo.ehime.jp +shikokuchuo.ehime.jp +tobe.ehime.jp +toon.ehime.jp +uchiko.ehime.jp +uwajima.ehime.jp +yawatahama.ehime.jp +echizen.fukui.jp +eiheiji.fukui.jp +fukui.fukui.jp +ikeda.fukui.jp +katsuyama.fukui.jp +mihama.fukui.jp +minamiechizen.fukui.jp +obama.fukui.jp +ohi.fukui.jp +ono.fukui.jp +sabae.fukui.jp +sakai.fukui.jp +takahama.fukui.jp +tsuruga.fukui.jp +wakasa.fukui.jp +ashiya.fukuoka.jp +buzen.fukuoka.jp +chikugo.fukuoka.jp +chikuho.fukuoka.jp +chikujo.fukuoka.jp +chikushino.fukuoka.jp +chikuzen.fukuoka.jp +chuo.fukuoka.jp +dazaifu.fukuoka.jp +fukuchi.fukuoka.jp +hakata.fukuoka.jp +higashi.fukuoka.jp +hirokawa.fukuoka.jp +hisayama.fukuoka.jp +iizuka.fukuoka.jp +inatsuki.fukuoka.jp +kaho.fukuoka.jp +kasuga.fukuoka.jp +kasuya.fukuoka.jp +kawara.fukuoka.jp +keisen.fukuoka.jp +koga.fukuoka.jp +kurate.fukuoka.jp +kurogi.fukuoka.jp +kurume.fukuoka.jp +minami.fukuoka.jp +miyako.fukuoka.jp +miyama.fukuoka.jp +miyawaka.fukuoka.jp +mizumaki.fukuoka.jp +munakata.fukuoka.jp +nakagawa.fukuoka.jp +nakama.fukuoka.jp +nishi.fukuoka.jp +nogata.fukuoka.jp +ogori.fukuoka.jp +okagaki.fukuoka.jp +okawa.fukuoka.jp +oki.fukuoka.jp +omuta.fukuoka.jp +onga.fukuoka.jp +onojo.fukuoka.jp +oto.fukuoka.jp +saigawa.fukuoka.jp +sasaguri.fukuoka.jp +shingu.fukuoka.jp +shinyoshitomi.fukuoka.jp +shonai.fukuoka.jp +soeda.fukuoka.jp +sue.fukuoka.jp +tachiarai.fukuoka.jp +tagawa.fukuoka.jp +takata.fukuoka.jp +toho.fukuoka.jp +toyotsu.fukuoka.jp +tsuiki.fukuoka.jp +ukiha.fukuoka.jp +umi.fukuoka.jp +usui.fukuoka.jp +yamada.fukuoka.jp +yame.fukuoka.jp +yanagawa.fukuoka.jp +yukuhashi.fukuoka.jp +aizubange.fukushima.jp +aizumisato.fukushima.jp +aizuwakamatsu.fukushima.jp +asakawa.fukushima.jp +bandai.fukushima.jp +date.fukushima.jp +fukushima.fukushima.jp +furudono.fukushima.jp +futaba.fukushima.jp +hanawa.fukushima.jp +higashi.fukushima.jp +hirata.fukushima.jp +hirono.fukushima.jp +iitate.fukushima.jp +inawashiro.fukushima.jp +ishikawa.fukushima.jp +iwaki.fukushima.jp +izumizaki.fukushima.jp +kagamiishi.fukushima.jp +kaneyama.fukushima.jp +kawamata.fukushima.jp +kitakata.fukushima.jp +kitashiobara.fukushima.jp +koori.fukushima.jp +koriyama.fukushima.jp +kunimi.fukushima.jp +miharu.fukushima.jp +mishima.fukushima.jp +namie.fukushima.jp +nango.fukushima.jp +nishiaizu.fukushima.jp +nishigo.fukushima.jp +okuma.fukushima.jp +omotego.fukushima.jp +ono.fukushima.jp +otama.fukushima.jp +samegawa.fukushima.jp +shimogo.fukushima.jp +shirakawa.fukushima.jp +showa.fukushima.jp +soma.fukushima.jp +sukagawa.fukushima.jp +taishin.fukushima.jp +tamakawa.fukushima.jp +tanagura.fukushima.jp +tenei.fukushima.jp +yabuki.fukushima.jp +yamato.fukushima.jp +yamatsuri.fukushima.jp +yanaizu.fukushima.jp +yugawa.fukushima.jp +anpachi.gifu.jp +ena.gifu.jp +gifu.gifu.jp +ginan.gifu.jp +godo.gifu.jp +gujo.gifu.jp +hashima.gifu.jp +hichiso.gifu.jp +hida.gifu.jp +higashishirakawa.gifu.jp +ibigawa.gifu.jp +ikeda.gifu.jp +kakamigahara.gifu.jp +kani.gifu.jp +kasahara.gifu.jp +kasamatsu.gifu.jp +kawaue.gifu.jp +kitagata.gifu.jp +mino.gifu.jp +minokamo.gifu.jp +mitake.gifu.jp +mizunami.gifu.jp +motosu.gifu.jp +nakatsugawa.gifu.jp +ogaki.gifu.jp +sakahogi.gifu.jp +seki.gifu.jp +sekigahara.gifu.jp +shirakawa.gifu.jp +tajimi.gifu.jp +takayama.gifu.jp +tarui.gifu.jp +toki.gifu.jp +tomika.gifu.jp +wanouchi.gifu.jp +yamagata.gifu.jp +yaotsu.gifu.jp +yoro.gifu.jp +annaka.gunma.jp +chiyoda.gunma.jp +fujioka.gunma.jp +higashiagatsuma.gunma.jp +isesaki.gunma.jp +itakura.gunma.jp +kanna.gunma.jp +kanra.gunma.jp +katashina.gunma.jp +kawaba.gunma.jp +kiryu.gunma.jp +kusatsu.gunma.jp +maebashi.gunma.jp +meiwa.gunma.jp +midori.gunma.jp +minakami.gunma.jp +naganohara.gunma.jp +nakanojo.gunma.jp +nanmoku.gunma.jp +numata.gunma.jp +oizumi.gunma.jp +ora.gunma.jp +ota.gunma.jp +shibukawa.gunma.jp +shimonita.gunma.jp +shinto.gunma.jp +showa.gunma.jp +takasaki.gunma.jp +takayama.gunma.jp +tamamura.gunma.jp +tatebayashi.gunma.jp +tomioka.gunma.jp +tsukiyono.gunma.jp +tsumagoi.gunma.jp +ueno.gunma.jp +yoshioka.gunma.jp +asaminami.hiroshima.jp +daiwa.hiroshima.jp +etajima.hiroshima.jp +fuchu.hiroshima.jp +fukuyama.hiroshima.jp +hatsukaichi.hiroshima.jp +higashihiroshima.hiroshima.jp +hongo.hiroshima.jp +jinsekikogen.hiroshima.jp +kaita.hiroshima.jp +kui.hiroshima.jp +kumano.hiroshima.jp +kure.hiroshima.jp +mihara.hiroshima.jp +miyoshi.hiroshima.jp +naka.hiroshima.jp +onomichi.hiroshima.jp +osakikamijima.hiroshima.jp +otake.hiroshima.jp +saka.hiroshima.jp +sera.hiroshima.jp +seranishi.hiroshima.jp +shinichi.hiroshima.jp +shobara.hiroshima.jp +takehara.hiroshima.jp +abashiri.hokkaido.jp +abira.hokkaido.jp +aibetsu.hokkaido.jp +akabira.hokkaido.jp +akkeshi.hokkaido.jp +asahikawa.hokkaido.jp +ashibetsu.hokkaido.jp +ashoro.hokkaido.jp +assabu.hokkaido.jp +atsuma.hokkaido.jp +bibai.hokkaido.jp +biei.hokkaido.jp +bifuka.hokkaido.jp +bihoro.hokkaido.jp +biratori.hokkaido.jp +chippubetsu.hokkaido.jp +chitose.hokkaido.jp +date.hokkaido.jp +ebetsu.hokkaido.jp +embetsu.hokkaido.jp +eniwa.hokkaido.jp +erimo.hokkaido.jp +esan.hokkaido.jp +esashi.hokkaido.jp +fukagawa.hokkaido.jp +fukushima.hokkaido.jp +furano.hokkaido.jp +furubira.hokkaido.jp +haboro.hokkaido.jp +hakodate.hokkaido.jp +hamatonbetsu.hokkaido.jp +hidaka.hokkaido.jp +higashikagura.hokkaido.jp +higashikawa.hokkaido.jp +hiroo.hokkaido.jp +hokuryu.hokkaido.jp +hokuto.hokkaido.jp +honbetsu.hokkaido.jp +horokanai.hokkaido.jp +horonobe.hokkaido.jp +ikeda.hokkaido.jp +imakane.hokkaido.jp +ishikari.hokkaido.jp +iwamizawa.hokkaido.jp +iwanai.hokkaido.jp +kamifurano.hokkaido.jp +kamikawa.hokkaido.jp +kamishihoro.hokkaido.jp +kamisunagawa.hokkaido.jp +kamoenai.hokkaido.jp +kayabe.hokkaido.jp +kembuchi.hokkaido.jp +kikonai.hokkaido.jp +kimobetsu.hokkaido.jp +kitahiroshima.hokkaido.jp +kitami.hokkaido.jp +kiyosato.hokkaido.jp +koshimizu.hokkaido.jp +kunneppu.hokkaido.jp +kuriyama.hokkaido.jp +kuromatsunai.hokkaido.jp +kushiro.hokkaido.jp +kutchan.hokkaido.jp +kyowa.hokkaido.jp +mashike.hokkaido.jp +matsumae.hokkaido.jp +mikasa.hokkaido.jp +minamifurano.hokkaido.jp +mombetsu.hokkaido.jp +moseushi.hokkaido.jp +mukawa.hokkaido.jp +muroran.hokkaido.jp +naie.hokkaido.jp +nakagawa.hokkaido.jp +nakasatsunai.hokkaido.jp +nakatombetsu.hokkaido.jp +nanae.hokkaido.jp +nanporo.hokkaido.jp +nayoro.hokkaido.jp +nemuro.hokkaido.jp +niikappu.hokkaido.jp +niki.hokkaido.jp +nishiokoppe.hokkaido.jp +noboribetsu.hokkaido.jp +numata.hokkaido.jp +obihiro.hokkaido.jp +obira.hokkaido.jp +oketo.hokkaido.jp +okoppe.hokkaido.jp +otaru.hokkaido.jp +otobe.hokkaido.jp +otofuke.hokkaido.jp +otoineppu.hokkaido.jp +oumu.hokkaido.jp +ozora.hokkaido.jp +pippu.hokkaido.jp +rankoshi.hokkaido.jp +rebun.hokkaido.jp +rikubetsu.hokkaido.jp +rishiri.hokkaido.jp +rishirifuji.hokkaido.jp +saroma.hokkaido.jp +sarufutsu.hokkaido.jp +shakotan.hokkaido.jp +shari.hokkaido.jp +shibecha.hokkaido.jp +shibetsu.hokkaido.jp +shikabe.hokkaido.jp +shikaoi.hokkaido.jp +shimamaki.hokkaido.jp +shimizu.hokkaido.jp +shimokawa.hokkaido.jp +shinshinotsu.hokkaido.jp +shintoku.hokkaido.jp +shiranuka.hokkaido.jp +shiraoi.hokkaido.jp +shiriuchi.hokkaido.jp +sobetsu.hokkaido.jp +sunagawa.hokkaido.jp +taiki.hokkaido.jp +takasu.hokkaido.jp +takikawa.hokkaido.jp +takinoue.hokkaido.jp +teshikaga.hokkaido.jp +tobetsu.hokkaido.jp +tohma.hokkaido.jp +tomakomai.hokkaido.jp +tomari.hokkaido.jp +toya.hokkaido.jp +toyako.hokkaido.jp +toyotomi.hokkaido.jp +toyoura.hokkaido.jp +tsubetsu.hokkaido.jp +tsukigata.hokkaido.jp +urakawa.hokkaido.jp +urausu.hokkaido.jp +uryu.hokkaido.jp +utashinai.hokkaido.jp +wakkanai.hokkaido.jp +wassamu.hokkaido.jp +yakumo.hokkaido.jp +yoichi.hokkaido.jp +aioi.hyogo.jp +akashi.hyogo.jp +ako.hyogo.jp +amagasaki.hyogo.jp +aogaki.hyogo.jp +asago.hyogo.jp +ashiya.hyogo.jp +awaji.hyogo.jp +fukusaki.hyogo.jp +goshiki.hyogo.jp +harima.hyogo.jp +himeji.hyogo.jp +ichikawa.hyogo.jp +inagawa.hyogo.jp +itami.hyogo.jp +kakogawa.hyogo.jp +kamigori.hyogo.jp +kamikawa.hyogo.jp +kasai.hyogo.jp +kasuga.hyogo.jp +kawanishi.hyogo.jp +miki.hyogo.jp +minamiawaji.hyogo.jp +nishinomiya.hyogo.jp +nishiwaki.hyogo.jp +ono.hyogo.jp +sanda.hyogo.jp +sannan.hyogo.jp +sasayama.hyogo.jp +sayo.hyogo.jp +shingu.hyogo.jp +shinonsen.hyogo.jp +shiso.hyogo.jp +sumoto.hyogo.jp +taishi.hyogo.jp +taka.hyogo.jp +takarazuka.hyogo.jp +takasago.hyogo.jp +takino.hyogo.jp +tamba.hyogo.jp +tatsuno.hyogo.jp +toyooka.hyogo.jp +yabu.hyogo.jp +yashiro.hyogo.jp +yoka.hyogo.jp +yokawa.hyogo.jp +ami.ibaraki.jp +asahi.ibaraki.jp +bando.ibaraki.jp +chikusei.ibaraki.jp +daigo.ibaraki.jp +fujishiro.ibaraki.jp +hitachi.ibaraki.jp +hitachinaka.ibaraki.jp +hitachiomiya.ibaraki.jp +hitachiota.ibaraki.jp +ibaraki.ibaraki.jp +ina.ibaraki.jp +inashiki.ibaraki.jp +itako.ibaraki.jp +iwama.ibaraki.jp +joso.ibaraki.jp +kamisu.ibaraki.jp +kasama.ibaraki.jp +kashima.ibaraki.jp +kasumigaura.ibaraki.jp +koga.ibaraki.jp +miho.ibaraki.jp +mito.ibaraki.jp +moriya.ibaraki.jp +naka.ibaraki.jp +namegata.ibaraki.jp +oarai.ibaraki.jp +ogawa.ibaraki.jp +omitama.ibaraki.jp +ryugasaki.ibaraki.jp +sakai.ibaraki.jp +sakuragawa.ibaraki.jp +shimodate.ibaraki.jp +shimotsuma.ibaraki.jp +shirosato.ibaraki.jp +sowa.ibaraki.jp +suifu.ibaraki.jp +takahagi.ibaraki.jp +tamatsukuri.ibaraki.jp +tokai.ibaraki.jp +tomobe.ibaraki.jp +tone.ibaraki.jp +toride.ibaraki.jp +tsuchiura.ibaraki.jp +tsukuba.ibaraki.jp +uchihara.ibaraki.jp +ushiku.ibaraki.jp +yachiyo.ibaraki.jp +yamagata.ibaraki.jp +yawara.ibaraki.jp +yuki.ibaraki.jp +anamizu.ishikawa.jp +hakui.ishikawa.jp +hakusan.ishikawa.jp +kaga.ishikawa.jp +kahoku.ishikawa.jp +kanazawa.ishikawa.jp +kawakita.ishikawa.jp +komatsu.ishikawa.jp +nakanoto.ishikawa.jp +nanao.ishikawa.jp +nomi.ishikawa.jp +nonoichi.ishikawa.jp +noto.ishikawa.jp +shika.ishikawa.jp +suzu.ishikawa.jp +tsubata.ishikawa.jp +tsurugi.ishikawa.jp +uchinada.ishikawa.jp +wajima.ishikawa.jp +fudai.iwate.jp +fujisawa.iwate.jp +hanamaki.iwate.jp +hiraizumi.iwate.jp +hirono.iwate.jp +ichinohe.iwate.jp +ichinoseki.iwate.jp +iwaizumi.iwate.jp +iwate.iwate.jp +joboji.iwate.jp +kamaishi.iwate.jp +kanegasaki.iwate.jp +karumai.iwate.jp +kawai.iwate.jp +kitakami.iwate.jp +kuji.iwate.jp +kunohe.iwate.jp +kuzumaki.iwate.jp +miyako.iwate.jp +mizusawa.iwate.jp +morioka.iwate.jp +ninohe.iwate.jp +noda.iwate.jp +ofunato.iwate.jp +oshu.iwate.jp +otsuchi.iwate.jp +rikuzentakata.iwate.jp +shiwa.iwate.jp +shizukuishi.iwate.jp +sumita.iwate.jp +tanohata.iwate.jp +tono.iwate.jp +yahaba.iwate.jp +yamada.iwate.jp +ayagawa.kagawa.jp +higashikagawa.kagawa.jp +kanonji.kagawa.jp +kotohira.kagawa.jp +manno.kagawa.jp +marugame.kagawa.jp +mitoyo.kagawa.jp +naoshima.kagawa.jp +sanuki.kagawa.jp +tadotsu.kagawa.jp +takamatsu.kagawa.jp +tonosho.kagawa.jp +uchinomi.kagawa.jp +utazu.kagawa.jp +zentsuji.kagawa.jp +akune.kagoshima.jp +amami.kagoshima.jp +hioki.kagoshima.jp +isa.kagoshima.jp +isen.kagoshima.jp +izumi.kagoshima.jp +kagoshima.kagoshima.jp +kanoya.kagoshima.jp +kawanabe.kagoshima.jp +kinko.kagoshima.jp +kouyama.kagoshima.jp +makurazaki.kagoshima.jp +matsumoto.kagoshima.jp +minamitane.kagoshima.jp +nakatane.kagoshima.jp +nishinoomote.kagoshima.jp +satsumasendai.kagoshima.jp +soo.kagoshima.jp +tarumizu.kagoshima.jp +yusui.kagoshima.jp +aikawa.kanagawa.jp +atsugi.kanagawa.jp +ayase.kanagawa.jp +chigasaki.kanagawa.jp +ebina.kanagawa.jp +fujisawa.kanagawa.jp +hadano.kanagawa.jp +hakone.kanagawa.jp +hiratsuka.kanagawa.jp +isehara.kanagawa.jp +kaisei.kanagawa.jp +kamakura.kanagawa.jp +kiyokawa.kanagawa.jp +matsuda.kanagawa.jp +minamiashigara.kanagawa.jp +miura.kanagawa.jp +nakai.kanagawa.jp +ninomiya.kanagawa.jp +odawara.kanagawa.jp +oi.kanagawa.jp +oiso.kanagawa.jp +sagamihara.kanagawa.jp +samukawa.kanagawa.jp +tsukui.kanagawa.jp +yamakita.kanagawa.jp +yamato.kanagawa.jp +yokosuka.kanagawa.jp +yugawara.kanagawa.jp +zama.kanagawa.jp +zushi.kanagawa.jp +aki.kochi.jp +geisei.kochi.jp +hidaka.kochi.jp +higashitsuno.kochi.jp +ino.kochi.jp +kagami.kochi.jp +kami.kochi.jp +kitagawa.kochi.jp +kochi.kochi.jp +mihara.kochi.jp +motoyama.kochi.jp +muroto.kochi.jp +nahari.kochi.jp +nakamura.kochi.jp +nankoku.kochi.jp +nishitosa.kochi.jp +niyodogawa.kochi.jp +ochi.kochi.jp +okawa.kochi.jp +otoyo.kochi.jp +otsuki.kochi.jp +sakawa.kochi.jp +sukumo.kochi.jp +susaki.kochi.jp +tosa.kochi.jp +tosashimizu.kochi.jp +toyo.kochi.jp +tsuno.kochi.jp +umaji.kochi.jp +yasuda.kochi.jp +yusuhara.kochi.jp +amakusa.kumamoto.jp +arao.kumamoto.jp +aso.kumamoto.jp +choyo.kumamoto.jp +gyokuto.kumamoto.jp +kamiamakusa.kumamoto.jp +kikuchi.kumamoto.jp +kumamoto.kumamoto.jp +mashiki.kumamoto.jp +mifune.kumamoto.jp +minamata.kumamoto.jp +minamioguni.kumamoto.jp +nagasu.kumamoto.jp +nishihara.kumamoto.jp +oguni.kumamoto.jp +ozu.kumamoto.jp +sumoto.kumamoto.jp +takamori.kumamoto.jp +uki.kumamoto.jp +uto.kumamoto.jp +yamaga.kumamoto.jp +yamato.kumamoto.jp +yatsushiro.kumamoto.jp +ayabe.kyoto.jp +fukuchiyama.kyoto.jp +higashiyama.kyoto.jp +ide.kyoto.jp +ine.kyoto.jp +joyo.kyoto.jp +kameoka.kyoto.jp +kamo.kyoto.jp +kita.kyoto.jp +kizu.kyoto.jp +kumiyama.kyoto.jp +kyotamba.kyoto.jp +kyotanabe.kyoto.jp +kyotango.kyoto.jp +maizuru.kyoto.jp +minami.kyoto.jp +minamiyamashiro.kyoto.jp +miyazu.kyoto.jp +muko.kyoto.jp +nagaokakyo.kyoto.jp +nakagyo.kyoto.jp +nantan.kyoto.jp +oyamazaki.kyoto.jp +sakyo.kyoto.jp +seika.kyoto.jp +tanabe.kyoto.jp +uji.kyoto.jp +ujitawara.kyoto.jp +wazuka.kyoto.jp +yamashina.kyoto.jp +yawata.kyoto.jp +asahi.mie.jp +inabe.mie.jp +ise.mie.jp +kameyama.mie.jp +kawagoe.mie.jp +kiho.mie.jp +kisosaki.mie.jp +kiwa.mie.jp +komono.mie.jp +kumano.mie.jp +kuwana.mie.jp +matsusaka.mie.jp +meiwa.mie.jp +mihama.mie.jp +minamiise.mie.jp +misugi.mie.jp +miyama.mie.jp +nabari.mie.jp +shima.mie.jp +suzuka.mie.jp +tado.mie.jp +taiki.mie.jp +taki.mie.jp +tamaki.mie.jp +toba.mie.jp +tsu.mie.jp +udono.mie.jp +ureshino.mie.jp +watarai.mie.jp +yokkaichi.mie.jp +furukawa.miyagi.jp +higashimatsushima.miyagi.jp +ishinomaki.miyagi.jp +iwanuma.miyagi.jp +kakuda.miyagi.jp +kami.miyagi.jp +kawasaki.miyagi.jp +marumori.miyagi.jp +matsushima.miyagi.jp +minamisanriku.miyagi.jp +misato.miyagi.jp +murata.miyagi.jp +natori.miyagi.jp +ogawara.miyagi.jp +ohira.miyagi.jp +onagawa.miyagi.jp +osaki.miyagi.jp +rifu.miyagi.jp +semine.miyagi.jp +shibata.miyagi.jp +shichikashuku.miyagi.jp +shikama.miyagi.jp +shiogama.miyagi.jp +shiroishi.miyagi.jp +tagajo.miyagi.jp +taiwa.miyagi.jp +tome.miyagi.jp +tomiya.miyagi.jp +wakuya.miyagi.jp +watari.miyagi.jp +yamamoto.miyagi.jp +zao.miyagi.jp +aya.miyazaki.jp +ebino.miyazaki.jp +gokase.miyazaki.jp +hyuga.miyazaki.jp +kadogawa.miyazaki.jp +kawaminami.miyazaki.jp +kijo.miyazaki.jp +kitagawa.miyazaki.jp +kitakata.miyazaki.jp +kitaura.miyazaki.jp +kobayashi.miyazaki.jp +kunitomi.miyazaki.jp +kushima.miyazaki.jp +mimata.miyazaki.jp +miyakonojo.miyazaki.jp +miyazaki.miyazaki.jp +morotsuka.miyazaki.jp +nichinan.miyazaki.jp +nishimera.miyazaki.jp +nobeoka.miyazaki.jp +saito.miyazaki.jp +shiiba.miyazaki.jp +shintomi.miyazaki.jp +takaharu.miyazaki.jp +takanabe.miyazaki.jp +takazaki.miyazaki.jp +tsuno.miyazaki.jp +achi.nagano.jp +agematsu.nagano.jp +anan.nagano.jp +aoki.nagano.jp +asahi.nagano.jp +azumino.nagano.jp +chikuhoku.nagano.jp +chikuma.nagano.jp +chino.nagano.jp +fujimi.nagano.jp +hakuba.nagano.jp +hara.nagano.jp +hiraya.nagano.jp +iida.nagano.jp +iijima.nagano.jp +iiyama.nagano.jp +iizuna.nagano.jp +ikeda.nagano.jp +ikusaka.nagano.jp +ina.nagano.jp +karuizawa.nagano.jp +kawakami.nagano.jp +kiso.nagano.jp +kisofukushima.nagano.jp +kitaaiki.nagano.jp +komagane.nagano.jp +komoro.nagano.jp +matsukawa.nagano.jp +matsumoto.nagano.jp +miasa.nagano.jp +minamiaiki.nagano.jp +minamimaki.nagano.jp +minamiminowa.nagano.jp +minowa.nagano.jp +miyada.nagano.jp +miyota.nagano.jp +mochizuki.nagano.jp +nagano.nagano.jp +nagawa.nagano.jp +nagiso.nagano.jp +nakagawa.nagano.jp +nakano.nagano.jp +nozawaonsen.nagano.jp +obuse.nagano.jp +ogawa.nagano.jp +okaya.nagano.jp +omachi.nagano.jp +omi.nagano.jp +ookuwa.nagano.jp +ooshika.nagano.jp +otaki.nagano.jp +otari.nagano.jp +sakae.nagano.jp +sakaki.nagano.jp +saku.nagano.jp +sakuho.nagano.jp +shimosuwa.nagano.jp +shinanomachi.nagano.jp +shiojiri.nagano.jp +suwa.nagano.jp +suzaka.nagano.jp +takagi.nagano.jp +takamori.nagano.jp +takayama.nagano.jp +tateshina.nagano.jp +tatsuno.nagano.jp +togakushi.nagano.jp +togura.nagano.jp +tomi.nagano.jp +ueda.nagano.jp +wada.nagano.jp +yamagata.nagano.jp +yamanouchi.nagano.jp +yasaka.nagano.jp +yasuoka.nagano.jp +chijiwa.nagasaki.jp +futsu.nagasaki.jp +goto.nagasaki.jp +hasami.nagasaki.jp +hirado.nagasaki.jp +iki.nagasaki.jp +isahaya.nagasaki.jp +kawatana.nagasaki.jp +kuchinotsu.nagasaki.jp +matsuura.nagasaki.jp +nagasaki.nagasaki.jp +obama.nagasaki.jp +omura.nagasaki.jp +oseto.nagasaki.jp +saikai.nagasaki.jp +sasebo.nagasaki.jp +seihi.nagasaki.jp +shimabara.nagasaki.jp +shinkamigoto.nagasaki.jp +togitsu.nagasaki.jp +tsushima.nagasaki.jp +unzen.nagasaki.jp +ando.nara.jp +gose.nara.jp +heguri.nara.jp +higashiyoshino.nara.jp +ikaruga.nara.jp +ikoma.nara.jp +kamikitayama.nara.jp +kanmaki.nara.jp +kashiba.nara.jp +kashihara.nara.jp +katsuragi.nara.jp +kawai.nara.jp +kawakami.nara.jp +kawanishi.nara.jp +koryo.nara.jp +kurotaki.nara.jp +mitsue.nara.jp +miyake.nara.jp +nara.nara.jp +nosegawa.nara.jp +oji.nara.jp +ouda.nara.jp +oyodo.nara.jp +sakurai.nara.jp +sango.nara.jp +shimoichi.nara.jp +shimokitayama.nara.jp +shinjo.nara.jp +soni.nara.jp +takatori.nara.jp +tawaramoto.nara.jp +tenkawa.nara.jp +tenri.nara.jp +uda.nara.jp +yamatokoriyama.nara.jp +yamatotakada.nara.jp +yamazoe.nara.jp +yoshino.nara.jp +aga.niigata.jp +agano.niigata.jp +gosen.niigata.jp +itoigawa.niigata.jp +izumozaki.niigata.jp +joetsu.niigata.jp +kamo.niigata.jp +kariwa.niigata.jp +kashiwazaki.niigata.jp +minamiuonuma.niigata.jp +mitsuke.niigata.jp +muika.niigata.jp +murakami.niigata.jp +myoko.niigata.jp +nagaoka.niigata.jp +niigata.niigata.jp +ojiya.niigata.jp +omi.niigata.jp +sado.niigata.jp +sanjo.niigata.jp +seiro.niigata.jp +seirou.niigata.jp +sekikawa.niigata.jp +shibata.niigata.jp +tagami.niigata.jp +tainai.niigata.jp +tochio.niigata.jp +tokamachi.niigata.jp +tsubame.niigata.jp +tsunan.niigata.jp +uonuma.niigata.jp +yahiko.niigata.jp +yoita.niigata.jp +yuzawa.niigata.jp +beppu.oita.jp +bungoono.oita.jp +bungotakada.oita.jp +hasama.oita.jp +hiji.oita.jp +himeshima.oita.jp +hita.oita.jp +kamitsue.oita.jp +kokonoe.oita.jp +kuju.oita.jp +kunisaki.oita.jp +kusu.oita.jp +oita.oita.jp +saiki.oita.jp +taketa.oita.jp +tsukumi.oita.jp +usa.oita.jp +usuki.oita.jp +yufu.oita.jp +akaiwa.okayama.jp +asakuchi.okayama.jp +bizen.okayama.jp +hayashima.okayama.jp +ibara.okayama.jp +kagamino.okayama.jp +kasaoka.okayama.jp +kibichuo.okayama.jp +kumenan.okayama.jp +kurashiki.okayama.jp +maniwa.okayama.jp +misaki.okayama.jp +nagi.okayama.jp +niimi.okayama.jp +nishiawakura.okayama.jp +okayama.okayama.jp +satosho.okayama.jp +setouchi.okayama.jp +shinjo.okayama.jp +shoo.okayama.jp +soja.okayama.jp +takahashi.okayama.jp +tamano.okayama.jp +tsuyama.okayama.jp +wake.okayama.jp +yakage.okayama.jp +aguni.okinawa.jp +ginowan.okinawa.jp +ginoza.okinawa.jp +gushikami.okinawa.jp +haebaru.okinawa.jp +higashi.okinawa.jp +hirara.okinawa.jp +iheya.okinawa.jp +ishigaki.okinawa.jp +ishikawa.okinawa.jp +itoman.okinawa.jp +izena.okinawa.jp +kadena.okinawa.jp +kin.okinawa.jp +kitadaito.okinawa.jp +kitanakagusuku.okinawa.jp +kumejima.okinawa.jp +kunigami.okinawa.jp +minamidaito.okinawa.jp +motobu.okinawa.jp +nago.okinawa.jp +naha.okinawa.jp +nakagusuku.okinawa.jp +nakijin.okinawa.jp +nanjo.okinawa.jp +nishihara.okinawa.jp +ogimi.okinawa.jp +okinawa.okinawa.jp +onna.okinawa.jp +shimoji.okinawa.jp +taketomi.okinawa.jp +tarama.okinawa.jp +tokashiki.okinawa.jp +tomigusuku.okinawa.jp +tonaki.okinawa.jp +urasoe.okinawa.jp +uruma.okinawa.jp +yaese.okinawa.jp +yomitan.okinawa.jp +yonabaru.okinawa.jp +yonaguni.okinawa.jp +zamami.okinawa.jp +abeno.osaka.jp +chihayaakasaka.osaka.jp +chuo.osaka.jp +daito.osaka.jp +fujiidera.osaka.jp +habikino.osaka.jp +hannan.osaka.jp +higashiosaka.osaka.jp +higashisumiyoshi.osaka.jp +higashiyodogawa.osaka.jp +hirakata.osaka.jp +ibaraki.osaka.jp +ikeda.osaka.jp +izumi.osaka.jp +izumiotsu.osaka.jp +izumisano.osaka.jp +kadoma.osaka.jp +kaizuka.osaka.jp +kanan.osaka.jp +kashiwara.osaka.jp +katano.osaka.jp +kawachinagano.osaka.jp +kishiwada.osaka.jp +kita.osaka.jp +kumatori.osaka.jp +matsubara.osaka.jp +minato.osaka.jp +minoh.osaka.jp +misaki.osaka.jp +moriguchi.osaka.jp +neyagawa.osaka.jp +nishi.osaka.jp +nose.osaka.jp +osakasayama.osaka.jp +sakai.osaka.jp +sayama.osaka.jp +sennan.osaka.jp +settsu.osaka.jp +shijonawate.osaka.jp +shimamoto.osaka.jp +suita.osaka.jp +tadaoka.osaka.jp +taishi.osaka.jp +tajiri.osaka.jp +takaishi.osaka.jp +takatsuki.osaka.jp +tondabayashi.osaka.jp +toyonaka.osaka.jp +toyono.osaka.jp +yao.osaka.jp +ariake.saga.jp +arita.saga.jp +fukudomi.saga.jp +genkai.saga.jp +hamatama.saga.jp +hizen.saga.jp +imari.saga.jp +kamimine.saga.jp +kanzaki.saga.jp +karatsu.saga.jp +kashima.saga.jp +kitagata.saga.jp +kitahata.saga.jp +kiyama.saga.jp +kouhoku.saga.jp +kyuragi.saga.jp +nishiarita.saga.jp +ogi.saga.jp +omachi.saga.jp +ouchi.saga.jp +saga.saga.jp +shiroishi.saga.jp +taku.saga.jp +tara.saga.jp +tosu.saga.jp +yoshinogari.saga.jp +arakawa.saitama.jp +asaka.saitama.jp +chichibu.saitama.jp +fujimi.saitama.jp +fujimino.saitama.jp +fukaya.saitama.jp +hanno.saitama.jp +hanyu.saitama.jp +hasuda.saitama.jp +hatogaya.saitama.jp +hatoyama.saitama.jp +hidaka.saitama.jp +higashichichibu.saitama.jp +higashimatsuyama.saitama.jp +honjo.saitama.jp +ina.saitama.jp +iruma.saitama.jp +iwatsuki.saitama.jp +kamiizumi.saitama.jp +kamikawa.saitama.jp +kamisato.saitama.jp +kasukabe.saitama.jp +kawagoe.saitama.jp +kawaguchi.saitama.jp +kawajima.saitama.jp +kazo.saitama.jp +kitamoto.saitama.jp +koshigaya.saitama.jp +kounosu.saitama.jp +kuki.saitama.jp +kumagaya.saitama.jp +matsubushi.saitama.jp +minano.saitama.jp +misato.saitama.jp +miyashiro.saitama.jp +miyoshi.saitama.jp +moroyama.saitama.jp +nagatoro.saitama.jp +namegawa.saitama.jp +niiza.saitama.jp +ogano.saitama.jp +ogawa.saitama.jp +ogose.saitama.jp +okegawa.saitama.jp +omiya.saitama.jp +otaki.saitama.jp +ranzan.saitama.jp +ryokami.saitama.jp +saitama.saitama.jp +sakado.saitama.jp +satte.saitama.jp +sayama.saitama.jp +shiki.saitama.jp +shiraoka.saitama.jp +soka.saitama.jp +sugito.saitama.jp +toda.saitama.jp +tokigawa.saitama.jp +tokorozawa.saitama.jp +tsurugashima.saitama.jp +urawa.saitama.jp +warabi.saitama.jp +yashio.saitama.jp +yokoze.saitama.jp +yono.saitama.jp +yorii.saitama.jp +yoshida.saitama.jp +yoshikawa.saitama.jp +yoshimi.saitama.jp +aisho.shiga.jp +gamo.shiga.jp +higashiomi.shiga.jp +hikone.shiga.jp +koka.shiga.jp +konan.shiga.jp +kosei.shiga.jp +koto.shiga.jp +kusatsu.shiga.jp +maibara.shiga.jp +moriyama.shiga.jp +nagahama.shiga.jp +nishiazai.shiga.jp +notogawa.shiga.jp +omihachiman.shiga.jp +otsu.shiga.jp +ritto.shiga.jp +ryuoh.shiga.jp +takashima.shiga.jp +takatsuki.shiga.jp +torahime.shiga.jp +toyosato.shiga.jp +yasu.shiga.jp +akagi.shimane.jp +ama.shimane.jp +gotsu.shimane.jp +hamada.shimane.jp +higashiizumo.shimane.jp +hikawa.shimane.jp +hikimi.shimane.jp +izumo.shimane.jp +kakinoki.shimane.jp +masuda.shimane.jp +matsue.shimane.jp +misato.shimane.jp +nishinoshima.shimane.jp +ohda.shimane.jp +okinoshima.shimane.jp +okuizumo.shimane.jp +shimane.shimane.jp +tamayu.shimane.jp +tsuwano.shimane.jp +unnan.shimane.jp +yakumo.shimane.jp +yasugi.shimane.jp +yatsuka.shimane.jp +arai.shizuoka.jp +atami.shizuoka.jp +fuji.shizuoka.jp +fujieda.shizuoka.jp +fujikawa.shizuoka.jp +fujinomiya.shizuoka.jp +fukuroi.shizuoka.jp +gotemba.shizuoka.jp +haibara.shizuoka.jp +hamamatsu.shizuoka.jp +higashiizu.shizuoka.jp +ito.shizuoka.jp +iwata.shizuoka.jp +izu.shizuoka.jp +izunokuni.shizuoka.jp +kakegawa.shizuoka.jp +kannami.shizuoka.jp +kawanehon.shizuoka.jp +kawazu.shizuoka.jp +kikugawa.shizuoka.jp +kosai.shizuoka.jp +makinohara.shizuoka.jp +matsuzaki.shizuoka.jp +minamiizu.shizuoka.jp +mishima.shizuoka.jp +morimachi.shizuoka.jp +nishiizu.shizuoka.jp +numazu.shizuoka.jp +omaezaki.shizuoka.jp +shimada.shizuoka.jp +shimizu.shizuoka.jp +shimoda.shizuoka.jp +shizuoka.shizuoka.jp +susono.shizuoka.jp +yaizu.shizuoka.jp +yoshida.shizuoka.jp +ashikaga.tochigi.jp +bato.tochigi.jp +haga.tochigi.jp +ichikai.tochigi.jp +iwafune.tochigi.jp +kaminokawa.tochigi.jp +kanuma.tochigi.jp +karasuyama.tochigi.jp +kuroiso.tochigi.jp +mashiko.tochigi.jp +mibu.tochigi.jp +moka.tochigi.jp +motegi.tochigi.jp +nasu.tochigi.jp +nasushiobara.tochigi.jp +nikko.tochigi.jp +nishikata.tochigi.jp +nogi.tochigi.jp +ohira.tochigi.jp +ohtawara.tochigi.jp +oyama.tochigi.jp +sakura.tochigi.jp +sano.tochigi.jp +shimotsuke.tochigi.jp +shioya.tochigi.jp +takanezawa.tochigi.jp +tochigi.tochigi.jp +tsuga.tochigi.jp +ujiie.tochigi.jp +utsunomiya.tochigi.jp +yaita.tochigi.jp +aizumi.tokushima.jp +anan.tokushima.jp +ichiba.tokushima.jp +itano.tokushima.jp +kainan.tokushima.jp +komatsushima.tokushima.jp +matsushige.tokushima.jp +mima.tokushima.jp +minami.tokushima.jp +miyoshi.tokushima.jp +mugi.tokushima.jp +nakagawa.tokushima.jp +naruto.tokushima.jp +sanagochi.tokushima.jp +shishikui.tokushima.jp +tokushima.tokushima.jp +wajiki.tokushima.jp +adachi.tokyo.jp +akiruno.tokyo.jp +akishima.tokyo.jp +aogashima.tokyo.jp +arakawa.tokyo.jp +bunkyo.tokyo.jp +chiyoda.tokyo.jp +chofu.tokyo.jp +chuo.tokyo.jp +edogawa.tokyo.jp +fuchu.tokyo.jp +fussa.tokyo.jp +hachijo.tokyo.jp +hachioji.tokyo.jp +hamura.tokyo.jp +higashikurume.tokyo.jp +higashimurayama.tokyo.jp +higashiyamato.tokyo.jp +hino.tokyo.jp +hinode.tokyo.jp +hinohara.tokyo.jp +inagi.tokyo.jp +itabashi.tokyo.jp +katsushika.tokyo.jp +kita.tokyo.jp +kiyose.tokyo.jp +kodaira.tokyo.jp +koganei.tokyo.jp +kokubunji.tokyo.jp +komae.tokyo.jp +koto.tokyo.jp +kouzushima.tokyo.jp +kunitachi.tokyo.jp +machida.tokyo.jp +meguro.tokyo.jp +minato.tokyo.jp +mitaka.tokyo.jp +mizuho.tokyo.jp +musashimurayama.tokyo.jp +musashino.tokyo.jp +nakano.tokyo.jp +nerima.tokyo.jp +ogasawara.tokyo.jp +okutama.tokyo.jp +ome.tokyo.jp +oshima.tokyo.jp +ota.tokyo.jp +setagaya.tokyo.jp +shibuya.tokyo.jp +shinagawa.tokyo.jp +shinjuku.tokyo.jp +suginami.tokyo.jp +sumida.tokyo.jp +tachikawa.tokyo.jp +taito.tokyo.jp +tama.tokyo.jp +toshima.tokyo.jp +chizu.tottori.jp +hino.tottori.jp +kawahara.tottori.jp +koge.tottori.jp +kotoura.tottori.jp +misasa.tottori.jp +nanbu.tottori.jp +nichinan.tottori.jp +sakaiminato.tottori.jp +tottori.tottori.jp +wakasa.tottori.jp +yazu.tottori.jp +yonago.tottori.jp +asahi.toyama.jp +fuchu.toyama.jp +fukumitsu.toyama.jp +funahashi.toyama.jp +himi.toyama.jp +imizu.toyama.jp +inami.toyama.jp +johana.toyama.jp +kamiichi.toyama.jp +kurobe.toyama.jp +nakaniikawa.toyama.jp +namerikawa.toyama.jp +nanto.toyama.jp +nyuzen.toyama.jp +oyabe.toyama.jp +taira.toyama.jp +takaoka.toyama.jp +tateyama.toyama.jp +toga.toyama.jp +tonami.toyama.jp +toyama.toyama.jp +unazuki.toyama.jp +uozu.toyama.jp +yamada.toyama.jp +arida.wakayama.jp +aridagawa.wakayama.jp +gobo.wakayama.jp +hashimoto.wakayama.jp +hidaka.wakayama.jp +hirogawa.wakayama.jp +inami.wakayama.jp +iwade.wakayama.jp +kainan.wakayama.jp +kamitonda.wakayama.jp +katsuragi.wakayama.jp +kimino.wakayama.jp +kinokawa.wakayama.jp +kitayama.wakayama.jp +koya.wakayama.jp +koza.wakayama.jp +kozagawa.wakayama.jp +kudoyama.wakayama.jp +kushimoto.wakayama.jp +mihama.wakayama.jp +misato.wakayama.jp +nachikatsuura.wakayama.jp +shingu.wakayama.jp +shirahama.wakayama.jp +taiji.wakayama.jp +tanabe.wakayama.jp +wakayama.wakayama.jp +yuasa.wakayama.jp +yura.wakayama.jp +asahi.yamagata.jp +funagata.yamagata.jp +higashine.yamagata.jp +iide.yamagata.jp +kahoku.yamagata.jp +kaminoyama.yamagata.jp +kaneyama.yamagata.jp +kawanishi.yamagata.jp +mamurogawa.yamagata.jp +mikawa.yamagata.jp +murayama.yamagata.jp +nagai.yamagata.jp +nakayama.yamagata.jp +nanyo.yamagata.jp +nishikawa.yamagata.jp +obanazawa.yamagata.jp +oe.yamagata.jp +oguni.yamagata.jp +ohkura.yamagata.jp +oishida.yamagata.jp +sagae.yamagata.jp +sakata.yamagata.jp +sakegawa.yamagata.jp +shinjo.yamagata.jp +shirataka.yamagata.jp +shonai.yamagata.jp +takahata.yamagata.jp +tendo.yamagata.jp +tozawa.yamagata.jp +tsuruoka.yamagata.jp +yamagata.yamagata.jp +yamanobe.yamagata.jp +yonezawa.yamagata.jp +yuza.yamagata.jp +abu.yamaguchi.jp +hagi.yamaguchi.jp +hikari.yamaguchi.jp +hofu.yamaguchi.jp +iwakuni.yamaguchi.jp +kudamatsu.yamaguchi.jp +mitou.yamaguchi.jp +nagato.yamaguchi.jp +oshima.yamaguchi.jp +shimonoseki.yamaguchi.jp +shunan.yamaguchi.jp +tabuse.yamaguchi.jp +tokuyama.yamaguchi.jp +toyota.yamaguchi.jp +ube.yamaguchi.jp +yuu.yamaguchi.jp +chuo.yamanashi.jp +doshi.yamanashi.jp +fuefuki.yamanashi.jp +fujikawa.yamanashi.jp +fujikawaguchiko.yamanashi.jp +fujiyoshida.yamanashi.jp +hayakawa.yamanashi.jp +hokuto.yamanashi.jp +ichikawamisato.yamanashi.jp +kai.yamanashi.jp +kofu.yamanashi.jp +koshu.yamanashi.jp +kosuge.yamanashi.jp +minami-alps.yamanashi.jp +minobu.yamanashi.jp +nakamichi.yamanashi.jp +nanbu.yamanashi.jp +narusawa.yamanashi.jp +nirasaki.yamanashi.jp +nishikatsura.yamanashi.jp +oshino.yamanashi.jp +otsuki.yamanashi.jp +showa.yamanashi.jp +tabayama.yamanashi.jp +tsuru.yamanashi.jp +uenohara.yamanashi.jp +yamanakako.yamanashi.jp +yamanashi.yamanashi.jp + +// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 +*.ke + +// kg : http://www.domain.kg/dmn_n.html +kg +org.kg +net.kg +com.kg +edu.kg +gov.kg +mil.kg + +// kh : http://www.mptc.gov.kh/dns_registration.htm +*.kh + +// ki : http://www.ki/dns/index.html +ki +edu.ki +biz.ki +net.ki +org.ki +gov.ki +info.ki +com.ki + +// km : https://en.wikipedia.org/wiki/.km +// http://www.domaine.km/documents/charte.doc +km +org.km +nom.km +gov.km +prd.km +tm.km +edu.km +mil.km +ass.km +com.km +// These are only mentioned as proposed suggestions at domaine.km, but +// https://en.wikipedia.org/wiki/.km says they're available for registration: +coop.km +asso.km +presse.km +medecin.km +notaires.km +pharmaciens.km +veterinaire.km +gouv.km + +// kn : https://en.wikipedia.org/wiki/.kn +// http://www.dot.kn/domainRules.html +kn +net.kn +org.kn +edu.kn +gov.kn + +// kp : http://www.kcce.kp/en_index.php +kp +com.kp +edu.kp +gov.kp +org.kp +rep.kp +tra.kp + +// kr : https://en.wikipedia.org/wiki/.kr +// see also: http://domain.nida.or.kr/eng/registration.jsp +kr +ac.kr +co.kr +es.kr +go.kr +hs.kr +kg.kr +mil.kr +ms.kr +ne.kr +or.kr +pe.kr +re.kr +sc.kr +// kr geographical names +busan.kr +chungbuk.kr +chungnam.kr +daegu.kr +daejeon.kr +gangwon.kr +gwangju.kr +gyeongbuk.kr +gyeonggi.kr +gyeongnam.kr +incheon.kr +jeju.kr +jeonbuk.kr +jeonnam.kr +seoul.kr +ulsan.kr + +// kw : https://en.wikipedia.org/wiki/.kw +*.kw + +// ky : http://www.icta.ky/da_ky_reg_dom.php +// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17 +ky +edu.ky +gov.ky +com.ky +org.ky +net.ky + +// kz : https://en.wikipedia.org/wiki/.kz +// see also: http://www.nic.kz/rules/index.jsp +kz +org.kz +edu.kz +net.kz +gov.kz +mil.kz +com.kz + +// la : https://en.wikipedia.org/wiki/.la +// Submitted by registry <gavin.brown@nic.la> +la +int.la +net.la +info.la +edu.la +gov.la +per.la +com.la +org.la + +// lb : https://en.wikipedia.org/wiki/.lb +// Submitted by registry <randy@psg.com> +lb +com.lb +edu.lb +gov.lb +net.lb +org.lb + +// lc : https://en.wikipedia.org/wiki/.lc +// see also: http://www.nic.lc/rules.htm +lc +com.lc +net.lc +co.lc +org.lc +edu.lc +gov.lc + +// li : https://en.wikipedia.org/wiki/.li +li + +// lk : http://www.nic.lk/seclevpr.html +lk +gov.lk +sch.lk +net.lk +int.lk +com.lk +org.lk +edu.lk +ngo.lk +soc.lk +web.lk +ltd.lk +assn.lk +grp.lk +hotel.lk +ac.lk + +// lr : http://psg.com/dns/lr/lr.txt +// Submitted by registry <randy@psg.com> +lr +com.lr +edu.lr +gov.lr +org.lr +net.lr + +// ls : https://en.wikipedia.org/wiki/.ls +ls +co.ls +org.ls + +// lt : https://en.wikipedia.org/wiki/.lt +lt +// gov.lt : http://www.gov.lt/index_en.php +gov.lt + +// lu : http://www.dns.lu/en/ +lu + +// lv : http://www.nic.lv/DNS/En/generic.php +lv +com.lv +edu.lv +gov.lv +org.lv +mil.lv +id.lv +net.lv +asn.lv +conf.lv + +// ly : http://www.nic.ly/regulations.php +ly +com.ly +net.ly +gov.ly +plc.ly +edu.ly +sch.ly +med.ly +org.ly +id.ly + +// ma : https://en.wikipedia.org/wiki/.ma +// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf +ma +co.ma +net.ma +gov.ma +org.ma +ac.ma +press.ma + +// mc : http://www.nic.mc/ +mc +tm.mc +asso.mc + +// md : https://en.wikipedia.org/wiki/.md +md + +// me : https://en.wikipedia.org/wiki/.me +me +co.me +net.me +org.me +edu.me +ac.me +gov.me +its.me +priv.me + +// mg : http://nic.mg/nicmg/?page_id=39 +mg +org.mg +nom.mg +gov.mg +prd.mg +tm.mg +edu.mg +mil.mg +com.mg +co.mg + +// mh : https://en.wikipedia.org/wiki/.mh +mh + +// mil : https://en.wikipedia.org/wiki/.mil +mil + +// mk : https://en.wikipedia.org/wiki/.mk +// see also: http://dns.marnet.net.mk/postapka.php +mk +com.mk +org.mk +net.mk +edu.mk +gov.mk +inf.mk +name.mk + +// ml : http://www.gobin.info/domainname/ml-template.doc +// see also: https://en.wikipedia.org/wiki/.ml +ml +com.ml +edu.ml +gouv.ml +gov.ml +net.ml +org.ml +presse.ml + +// mm : https://en.wikipedia.org/wiki/.mm +*.mm + +// mn : https://en.wikipedia.org/wiki/.mn +mn +gov.mn +edu.mn +org.mn + +// mo : http://www.monic.net.mo/ +mo +com.mo +net.mo +org.mo +edu.mo +gov.mo + +// mobi : https://en.wikipedia.org/wiki/.mobi +mobi + +// mp : http://www.dot.mp/ +// Confirmed by registry <dcamacho@saipan.com> 2008-06-17 +mp + +// mq : https://en.wikipedia.org/wiki/.mq +mq + +// mr : https://en.wikipedia.org/wiki/.mr +mr +gov.mr + +// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf +ms +com.ms +edu.ms +gov.ms +net.ms +org.ms + +// mt : https://www.nic.org.mt/go/policy +// Submitted by registry <help@nic.org.mt> +mt +com.mt +edu.mt +net.mt +org.mt + +// mu : https://en.wikipedia.org/wiki/.mu +mu +com.mu +net.mu +org.mu +gov.mu +ac.mu +co.mu +or.mu + +// museum : http://about.museum/naming/ +// http://index.museum/ +museum +academy.museum +agriculture.museum +air.museum +airguard.museum +alabama.museum +alaska.museum +amber.museum +ambulance.museum +american.museum +americana.museum +americanantiques.museum +americanart.museum +amsterdam.museum +and.museum +annefrank.museum +anthro.museum +anthropology.museum +antiques.museum +aquarium.museum +arboretum.museum +archaeological.museum +archaeology.museum +architecture.museum +art.museum +artanddesign.museum +artcenter.museum +artdeco.museum +arteducation.museum +artgallery.museum +arts.museum +artsandcrafts.museum +asmatart.museum +assassination.museum +assisi.museum +association.museum +astronomy.museum +atlanta.museum +austin.museum +australia.museum +automotive.museum +aviation.museum +axis.museum +badajoz.museum +baghdad.museum +bahn.museum +bale.museum +baltimore.museum +barcelona.museum +baseball.museum +basel.museum +baths.museum +bauern.museum +beauxarts.museum +beeldengeluid.museum +bellevue.museum +bergbau.museum +berkeley.museum +berlin.museum +bern.museum +bible.museum +bilbao.museum +bill.museum +birdart.museum +birthplace.museum +bonn.museum +boston.museum +botanical.museum +botanicalgarden.museum +botanicgarden.museum +botany.museum +brandywinevalley.museum +brasil.museum +bristol.museum +british.museum +britishcolumbia.museum +broadcast.museum +brunel.museum +brussel.museum +brussels.museum +bruxelles.museum +building.museum +burghof.museum +bus.museum +bushey.museum +cadaques.museum +california.museum +cambridge.museum +can.museum +canada.museum +capebreton.museum +carrier.museum +cartoonart.museum +casadelamoneda.museum +castle.museum +castres.museum +celtic.museum +center.museum +chattanooga.museum +cheltenham.museum +chesapeakebay.museum +chicago.museum +children.museum +childrens.museum +childrensgarden.museum +chiropractic.museum +chocolate.museum +christiansburg.museum +cincinnati.museum +cinema.museum +circus.museum +civilisation.museum +civilization.museum +civilwar.museum +clinton.museum +clock.museum +coal.museum +coastaldefence.museum +cody.museum +coldwar.museum +collection.museum +colonialwilliamsburg.museum +coloradoplateau.museum +columbia.museum +columbus.museum +communication.museum +communications.museum +community.museum +computer.museum +computerhistory.museum +comunicações.museum +contemporary.museum +contemporaryart.museum +convent.museum +copenhagen.museum +corporation.museum +correios-e-telecomunicações.museum +corvette.museum +costume.museum +countryestate.museum +county.museum +crafts.museum +cranbrook.museum +creation.museum +cultural.museum +culturalcenter.museum +culture.museum +cyber.museum +cymru.museum +dali.museum +dallas.museum +database.museum +ddr.museum +decorativearts.museum +delaware.museum +delmenhorst.museum +denmark.museum +depot.museum +design.museum +detroit.museum +dinosaur.museum +discovery.museum +dolls.museum +donostia.museum +durham.museum +eastafrica.museum +eastcoast.museum +education.museum +educational.museum +egyptian.museum +eisenbahn.museum +elburg.museum +elvendrell.museum +embroidery.museum +encyclopedic.museum +england.museum +entomology.museum +environment.museum +environmentalconservation.museum +epilepsy.museum +essex.museum +estate.museum +ethnology.museum +exeter.museum +exhibition.museum +family.museum +farm.museum +farmequipment.museum +farmers.museum +farmstead.museum +field.museum +figueres.museum +filatelia.museum +film.museum +fineart.museum +finearts.museum +finland.museum +flanders.museum +florida.museum +force.museum +fortmissoula.museum +fortworth.museum +foundation.museum +francaise.museum +frankfurt.museum +franziskaner.museum +freemasonry.museum +freiburg.museum +fribourg.museum +frog.museum +fundacio.museum +furniture.museum +gallery.museum +garden.museum +gateway.museum +geelvinck.museum +gemological.museum +geology.museum +georgia.museum +giessen.museum +glas.museum +glass.museum +gorge.museum +grandrapids.museum +graz.museum +guernsey.museum +halloffame.museum +hamburg.museum +handson.museum +harvestcelebration.museum +hawaii.museum +health.museum +heimatunduhren.museum +hellas.museum +helsinki.museum +hembygdsforbund.museum +heritage.museum +histoire.museum +historical.museum +historicalsociety.museum +historichouses.museum +historisch.museum +historisches.museum +history.museum +historyofscience.museum +horology.museum +house.museum +humanities.museum +illustration.museum +imageandsound.museum +indian.museum +indiana.museum +indianapolis.museum +indianmarket.museum +intelligence.museum +interactive.museum +iraq.museum +iron.museum +isleofman.museum +jamison.museum +jefferson.museum +jerusalem.museum +jewelry.museum +jewish.museum +jewishart.museum +jfk.museum +journalism.museum +judaica.museum +judygarland.museum +juedisches.museum +juif.museum +karate.museum +karikatur.museum +kids.museum +koebenhavn.museum +koeln.museum +kunst.museum +kunstsammlung.museum +kunstunddesign.museum +labor.museum +labour.museum +lajolla.museum +lancashire.museum +landes.museum +lans.museum +läns.museum +larsson.museum +lewismiller.museum +lincoln.museum +linz.museum +living.museum +livinghistory.museum +localhistory.museum +london.museum +losangeles.museum +louvre.museum +loyalist.museum +lucerne.museum +luxembourg.museum +luzern.museum +mad.museum +madrid.museum +mallorca.museum +manchester.museum +mansion.museum +mansions.museum +manx.museum +marburg.museum +maritime.museum +maritimo.museum +maryland.museum +marylhurst.museum +media.museum +medical.museum +medizinhistorisches.museum +meeres.museum +memorial.museum +mesaverde.museum +michigan.museum +midatlantic.museum +military.museum +mill.museum +miners.museum +mining.museum +minnesota.museum +missile.museum +missoula.museum +modern.museum +moma.museum +money.museum +monmouth.museum +monticello.museum +montreal.museum +moscow.museum +motorcycle.museum +muenchen.museum +muenster.museum +mulhouse.museum +muncie.museum +museet.museum +museumcenter.museum +museumvereniging.museum +music.museum +national.museum +nationalfirearms.museum +nationalheritage.museum +nativeamerican.museum +naturalhistory.museum +naturalhistorymuseum.museum +naturalsciences.museum +nature.museum +naturhistorisches.museum +natuurwetenschappen.museum +naumburg.museum +naval.museum +nebraska.museum +neues.museum +newhampshire.museum +newjersey.museum +newmexico.museum +newport.museum +newspaper.museum +newyork.museum +niepce.museum +norfolk.museum +north.museum +nrw.museum +nuernberg.museum +nuremberg.museum +nyc.museum +nyny.museum +oceanographic.museum +oceanographique.museum +omaha.museum +online.museum +ontario.museum +openair.museum +oregon.museum +oregontrail.museum +otago.museum +oxford.museum +pacific.museum +paderborn.museum +palace.museum +paleo.museum +palmsprings.museum +panama.museum +paris.museum +pasadena.museum +pharmacy.museum +philadelphia.museum +philadelphiaarea.museum +philately.museum +phoenix.museum +photography.museum +pilots.museum +pittsburgh.museum +planetarium.museum +plantation.museum +plants.museum +plaza.museum +portal.museum +portland.museum +portlligat.museum +posts-and-telecommunications.museum +preservation.museum +presidio.museum +press.museum +project.museum +public.museum +pubol.museum +quebec.museum +railroad.museum +railway.museum +research.museum +resistance.museum +riodejaneiro.museum +rochester.museum +rockart.museum +roma.museum +russia.museum +saintlouis.museum +salem.museum +salvadordali.museum +salzburg.museum +sandiego.museum +sanfrancisco.museum +santabarbara.museum +santacruz.museum +santafe.museum +saskatchewan.museum +satx.museum +savannahga.museum +schlesisches.museum +schoenbrunn.museum +schokoladen.museum +school.museum +schweiz.museum +science.museum +scienceandhistory.museum +scienceandindustry.museum +sciencecenter.museum +sciencecenters.museum +science-fiction.museum +sciencehistory.museum +sciences.museum +sciencesnaturelles.museum +scotland.museum +seaport.museum +settlement.museum +settlers.museum +shell.museum +sherbrooke.museum +sibenik.museum +silk.museum +ski.museum +skole.museum +society.museum +sologne.museum +soundandvision.museum +southcarolina.museum +southwest.museum +space.museum +spy.museum +square.museum +stadt.museum +stalbans.museum +starnberg.museum +state.museum +stateofdelaware.museum +station.museum +steam.museum +steiermark.museum +stjohn.museum +stockholm.museum +stpetersburg.museum +stuttgart.museum +suisse.museum +surgeonshall.museum +surrey.museum +svizzera.museum +sweden.museum +sydney.museum +tank.museum +tcm.museum +technology.museum +telekommunikation.museum +television.museum +texas.museum +textile.museum +theater.museum +time.museum +timekeeping.museum +topology.museum +torino.museum +touch.museum +town.museum +transport.museum +tree.museum +trolley.museum +trust.museum +trustee.museum +uhren.museum +ulm.museum +undersea.museum +university.museum +usa.museum +usantiques.museum +usarts.museum +uscountryestate.museum +usculture.museum +usdecorativearts.museum +usgarden.museum +ushistory.museum +ushuaia.museum +uslivinghistory.museum +utah.museum +uvic.museum +valley.museum +vantaa.museum +versailles.museum +viking.museum +village.museum +virginia.museum +virtual.museum +virtuel.museum +vlaanderen.museum +volkenkunde.museum +wales.museum +wallonie.museum +war.museum +washingtondc.museum +watchandclock.museum +watch-and-clock.museum +western.museum +westfalen.museum +whaling.museum +wildlife.museum +williamsburg.museum +windmill.museum +workshop.museum +york.museum +yorkshire.museum +yosemite.museum +youth.museum +zoological.museum +zoology.museum +ירושלים.museum +иком.museum + +// mv : https://en.wikipedia.org/wiki/.mv +// "mv" included because, contra Wikipedia, google.mv exists. +mv +aero.mv +biz.mv +com.mv +coop.mv +edu.mv +gov.mv +info.mv +int.mv +mil.mv +museum.mv +name.mv +net.mv +org.mv +pro.mv + +// mw : http://www.registrar.mw/ +mw +ac.mw +biz.mw +co.mw +com.mw +coop.mw +edu.mw +gov.mw +int.mw +museum.mw +net.mw +org.mw + +// mx : http://www.nic.mx/ +// Submitted by registry <farias@nic.mx> +mx +com.mx +org.mx +gob.mx +edu.mx +net.mx + +// my : http://www.mynic.net.my/ +my +com.my +net.my +org.my +gov.my +edu.my +mil.my +name.my + +// mz : http://www.uem.mz/ +// Submitted by registry <antonio@uem.mz> +mz +ac.mz +adv.mz +co.mz +edu.mz +gov.mz +mil.mz +net.mz +org.mz + +// na : http://www.na-nic.com.na/ +// http://www.info.na/domain/ +na +info.na +pro.na +name.na +school.na +or.na +dr.na +us.na +mx.na +ca.na +in.na +cc.na +tv.na +ws.na +mobi.na +co.na +com.na +org.na + +// name : has 2nd-level tlds, but there's no list of them +name + +// nc : http://www.cctld.nc/ +nc +asso.nc + +// ne : https://en.wikipedia.org/wiki/.ne +ne + +// net : https://en.wikipedia.org/wiki/.net +net + +// nf : https://en.wikipedia.org/wiki/.nf +nf +com.nf +net.nf +per.nf +rec.nf +web.nf +arts.nf +firm.nf +info.nf +other.nf +store.nf + +// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds +ng +com.ng +edu.ng +gov.ng +i.ng +mil.ng +mobi.ng +name.ng +net.ng +org.ng +sch.ng + +// ni : http://www.nic.ni/ +ni +ac.ni +biz.ni +co.ni +com.ni +edu.ni +gob.ni +in.ni +info.ni +int.ni +mil.ni +net.ni +nom.ni +org.ni +web.ni + +// nl : https://en.wikipedia.org/wiki/.nl +// https://www.sidn.nl/ +// ccTLD for the Netherlands +nl + +// BV.nl will be a registry for dutch BV's (besloten vennootschap) +bv.nl + +// no : http://www.norid.no/regelverk/index.en.html +// The Norwegian registry has declined to notify us of updates. The web pages +// referenced below are the official source of the data. There is also an +// announce mailing list: +// https://postlister.uninett.no/sympa/info/norid-diskusjon +no +// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html +fhs.no +vgs.no +fylkesbibl.no +folkebibl.no +museum.no +idrett.no +priv.no +// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html +mil.no +stat.no +dep.no +kommune.no +herad.no +// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html +// counties +aa.no +ah.no +bu.no +fm.no +hl.no +hm.no +jan-mayen.no +mr.no +nl.no +nt.no +of.no +ol.no +oslo.no +rl.no +sf.no +st.no +svalbard.no +tm.no +tr.no +va.no +vf.no +// primary and lower secondary schools per county +gs.aa.no +gs.ah.no +gs.bu.no +gs.fm.no +gs.hl.no +gs.hm.no +gs.jan-mayen.no +gs.mr.no +gs.nl.no +gs.nt.no +gs.of.no +gs.ol.no +gs.oslo.no +gs.rl.no +gs.sf.no +gs.st.no +gs.svalbard.no +gs.tm.no +gs.tr.no +gs.va.no +gs.vf.no +// cities +akrehamn.no +åkrehamn.no +algard.no +ålgård.no +arna.no +brumunddal.no +bryne.no +bronnoysund.no +brønnøysund.no +drobak.no +drøbak.no +egersund.no +fetsund.no +floro.no +florø.no +fredrikstad.no +hokksund.no +honefoss.no +hønefoss.no +jessheim.no +jorpeland.no +jørpeland.no +kirkenes.no +kopervik.no +krokstadelva.no +langevag.no +langevåg.no +leirvik.no +mjondalen.no +mjøndalen.no +mo-i-rana.no +mosjoen.no +mosjøen.no +nesoddtangen.no +orkanger.no +osoyro.no +osøyro.no +raholt.no +råholt.no +sandnessjoen.no +sandnessjøen.no +skedsmokorset.no +slattum.no +spjelkavik.no +stathelle.no +stavern.no +stjordalshalsen.no +stjørdalshalsen.no +tananger.no +tranby.no +vossevangen.no +// communities +afjord.no +åfjord.no +agdenes.no +al.no +ål.no +alesund.no +ålesund.no +alstahaug.no +alta.no +áltá.no +alaheadju.no +álaheadju.no +alvdal.no +amli.no +åmli.no +amot.no +åmot.no +andebu.no +andoy.no +andøy.no +andasuolo.no +ardal.no +årdal.no +aremark.no +arendal.no +ås.no +aseral.no +åseral.no +asker.no +askim.no +askvoll.no +askoy.no +askøy.no +asnes.no +åsnes.no +audnedaln.no +aukra.no +aure.no +aurland.no +aurskog-holand.no +aurskog-høland.no +austevoll.no +austrheim.no +averoy.no +averøy.no +balestrand.no +ballangen.no +balat.no +bálát.no +balsfjord.no +bahccavuotna.no +báhccavuotna.no +bamble.no +bardu.no +beardu.no +beiarn.no +bajddar.no +bájddar.no +baidar.no +báidár.no +berg.no +bergen.no +berlevag.no +berlevåg.no +bearalvahki.no +bearalváhki.no +bindal.no +birkenes.no +bjarkoy.no +bjarkøy.no +bjerkreim.no +bjugn.no +bodo.no +bodø.no +badaddja.no +bådåddjå.no +budejju.no +bokn.no +bremanger.no +bronnoy.no +brønnøy.no +bygland.no +bykle.no +barum.no +bærum.no +bo.telemark.no +bø.telemark.no +bo.nordland.no +bø.nordland.no +bievat.no +bievát.no +bomlo.no +bømlo.no +batsfjord.no +båtsfjord.no +bahcavuotna.no +báhcavuotna.no +dovre.no +drammen.no +drangedal.no +dyroy.no +dyrøy.no +donna.no +dønna.no +eid.no +eidfjord.no +eidsberg.no +eidskog.no +eidsvoll.no +eigersund.no +elverum.no +enebakk.no +engerdal.no +etne.no +etnedal.no +evenes.no +evenassi.no +evenášši.no +evje-og-hornnes.no +farsund.no +fauske.no +fuossko.no +fuoisku.no +fedje.no +fet.no +finnoy.no +finnøy.no +fitjar.no +fjaler.no +fjell.no +flakstad.no +flatanger.no +flekkefjord.no +flesberg.no +flora.no +fla.no +flå.no +folldal.no +forsand.no +fosnes.no +frei.no +frogn.no +froland.no +frosta.no +frana.no +fræna.no +froya.no +frøya.no +fusa.no +fyresdal.no +forde.no +førde.no +gamvik.no +gangaviika.no +gáŋgaviika.no +gaular.no +gausdal.no +gildeskal.no +gildeskål.no +giske.no +gjemnes.no +gjerdrum.no +gjerstad.no +gjesdal.no +gjovik.no +gjøvik.no +gloppen.no +gol.no +gran.no +grane.no +granvin.no +gratangen.no +grimstad.no +grong.no +kraanghke.no +kråanghke.no +grue.no +gulen.no +hadsel.no +halden.no +halsa.no +hamar.no +hamaroy.no +habmer.no +hábmer.no +hapmir.no +hápmir.no +hammerfest.no +hammarfeasta.no +hámmárfeasta.no +haram.no +hareid.no +harstad.no +hasvik.no +aknoluokta.no +ákŋoluokta.no +hattfjelldal.no +aarborte.no +haugesund.no +hemne.no +hemnes.no +hemsedal.no +heroy.more-og-romsdal.no +herøy.møre-og-romsdal.no +heroy.nordland.no +herøy.nordland.no +hitra.no +hjartdal.no +hjelmeland.no +hobol.no +hobøl.no +hof.no +hol.no +hole.no +holmestrand.no +holtalen.no +holtålen.no +hornindal.no +horten.no +hurdal.no +hurum.no +hvaler.no +hyllestad.no +hagebostad.no +hægebostad.no +hoyanger.no +høyanger.no +hoylandet.no +høylandet.no +ha.no +hå.no +ibestad.no +inderoy.no +inderøy.no +iveland.no +jevnaker.no +jondal.no +jolster.no +jølster.no +karasjok.no +karasjohka.no +kárášjohka.no +karlsoy.no +galsa.no +gálsá.no +karmoy.no +karmøy.no +kautokeino.no +guovdageaidnu.no +klepp.no +klabu.no +klæbu.no +kongsberg.no +kongsvinger.no +kragero.no +kragerø.no +kristiansand.no +kristiansund.no +krodsherad.no +krødsherad.no +kvalsund.no +rahkkeravju.no +ráhkkerávju.no +kvam.no +kvinesdal.no +kvinnherad.no +kviteseid.no +kvitsoy.no +kvitsøy.no +kvafjord.no +kvæfjord.no +giehtavuoatna.no +kvanangen.no +kvænangen.no +navuotna.no +návuotna.no +kafjord.no +kåfjord.no +gaivuotna.no +gáivuotna.no +larvik.no +lavangen.no +lavagis.no +loabat.no +loabát.no +lebesby.no +davvesiida.no +leikanger.no +leirfjord.no +leka.no +leksvik.no +lenvik.no +leangaviika.no +leaŋgaviika.no +lesja.no +levanger.no +lier.no +lierne.no +lillehammer.no +lillesand.no +lindesnes.no +lindas.no +lindås.no +lom.no +loppa.no +lahppi.no +láhppi.no +lund.no +lunner.no +luroy.no +lurøy.no +luster.no +lyngdal.no +lyngen.no +ivgu.no +lardal.no +lerdal.no +lærdal.no +lodingen.no +lødingen.no +lorenskog.no +lørenskog.no +loten.no +løten.no +malvik.no +masoy.no +måsøy.no +muosat.no +muosát.no +mandal.no +marker.no +marnardal.no +masfjorden.no +meland.no +meldal.no +melhus.no +meloy.no +meløy.no +meraker.no +meråker.no +moareke.no +moåreke.no +midsund.no +midtre-gauldal.no +modalen.no +modum.no +molde.no +moskenes.no +moss.no +mosvik.no +malselv.no +målselv.no +malatvuopmi.no +málatvuopmi.no +namdalseid.no +aejrie.no +namsos.no +namsskogan.no +naamesjevuemie.no +nååmesjevuemie.no +laakesvuemie.no +nannestad.no +narvik.no +narviika.no +naustdal.no +nedre-eiker.no +nes.akershus.no +nes.buskerud.no +nesna.no +nesodden.no +nesseby.no +unjarga.no +unjárga.no +nesset.no +nissedal.no +nittedal.no +nord-aurdal.no +nord-fron.no +nord-odal.no +norddal.no +nordkapp.no +davvenjarga.no +davvenjárga.no +nordre-land.no +nordreisa.no +raisa.no +ráisa.no +nore-og-uvdal.no +notodden.no +naroy.no +nærøy.no +notteroy.no +nøtterøy.no +odda.no +oksnes.no +øksnes.no +oppdal.no +oppegard.no +oppegård.no +orkdal.no +orland.no +ørland.no +orskog.no +ørskog.no +orsta.no +ørsta.no +os.hedmark.no +os.hordaland.no +osen.no +osteroy.no +osterøy.no +ostre-toten.no +østre-toten.no +overhalla.no +ovre-eiker.no +øvre-eiker.no +oyer.no +øyer.no +oygarden.no +øygarden.no +oystre-slidre.no +øystre-slidre.no +porsanger.no +porsangu.no +porsáŋgu.no +porsgrunn.no +radoy.no +radøy.no +rakkestad.no +rana.no +ruovat.no +randaberg.no +rauma.no +rendalen.no +rennebu.no +rennesoy.no +rennesøy.no +rindal.no +ringebu.no +ringerike.no +ringsaker.no +rissa.no +risor.no +risør.no +roan.no +rollag.no +rygge.no +ralingen.no +rælingen.no +rodoy.no +rødøy.no +romskog.no +rømskog.no +roros.no +røros.no +rost.no +røst.no +royken.no +røyken.no +royrvik.no +røyrvik.no +rade.no +råde.no +salangen.no +siellak.no +saltdal.no +salat.no +sálát.no +sálat.no +samnanger.no +sande.more-og-romsdal.no +sande.møre-og-romsdal.no +sande.vestfold.no +sandefjord.no +sandnes.no +sandoy.no +sandøy.no +sarpsborg.no +sauda.no +sauherad.no +sel.no +selbu.no +selje.no +seljord.no +sigdal.no +siljan.no +sirdal.no +skaun.no +skedsmo.no +ski.no +skien.no +skiptvet.no +skjervoy.no +skjervøy.no +skierva.no +skiervá.no +skjak.no +skjåk.no +skodje.no +skanland.no +skånland.no +skanit.no +skánit.no +smola.no +smøla.no +snillfjord.no +snasa.no +snåsa.no +snoasa.no +snaase.no +snåase.no +sogndal.no +sokndal.no +sola.no +solund.no +songdalen.no +sortland.no +spydeberg.no +stange.no +stavanger.no +steigen.no +steinkjer.no +stjordal.no +stjørdal.no +stokke.no +stor-elvdal.no +stord.no +stordal.no +storfjord.no +omasvuotna.no +strand.no +stranda.no +stryn.no +sula.no +suldal.no +sund.no +sunndal.no +surnadal.no +sveio.no +svelvik.no +sykkylven.no +sogne.no +søgne.no +somna.no +sømna.no +sondre-land.no +søndre-land.no +sor-aurdal.no +sør-aurdal.no +sor-fron.no +sør-fron.no +sor-odal.no +sør-odal.no +sor-varanger.no +sør-varanger.no +matta-varjjat.no +mátta-várjjat.no +sorfold.no +sørfold.no +sorreisa.no +sørreisa.no +sorum.no +sørum.no +tana.no +deatnu.no +time.no +tingvoll.no +tinn.no +tjeldsund.no +dielddanuorri.no +tjome.no +tjøme.no +tokke.no +tolga.no +torsken.no +tranoy.no +tranøy.no +tromso.no +tromsø.no +tromsa.no +romsa.no +trondheim.no +troandin.no +trysil.no +trana.no +træna.no +trogstad.no +trøgstad.no +tvedestrand.no +tydal.no +tynset.no +tysfjord.no +divtasvuodna.no +divttasvuotna.no +tysnes.no +tysvar.no +tysvær.no +tonsberg.no +tønsberg.no +ullensaker.no +ullensvang.no +ulvik.no +utsira.no +vadso.no +vadsø.no +cahcesuolo.no +čáhcesuolo.no +vaksdal.no +valle.no +vang.no +vanylven.no +vardo.no +vardø.no +varggat.no +várggát.no +vefsn.no +vaapste.no +vega.no +vegarshei.no +vegårshei.no +vennesla.no +verdal.no +verran.no +vestby.no +vestnes.no +vestre-slidre.no +vestre-toten.no +vestvagoy.no +vestvågøy.no +vevelstad.no +vik.no +vikna.no +vindafjord.no +volda.no +voss.no +varoy.no +værøy.no +vagan.no +vågan.no +voagat.no +vagsoy.no +vågsøy.no +vaga.no +vågå.no +valer.ostfold.no +våler.østfold.no +valer.hedmark.no +våler.hedmark.no + +// np : http://www.mos.com.np/register.html +*.np + +// nr : http://cenpac.net.nr/dns/index.html +// Submitted by registry <technician@cenpac.net.nr> +nr +biz.nr +info.nr +gov.nr +edu.nr +org.nr +net.nr +com.nr + +// nu : https://en.wikipedia.org/wiki/.nu +nu + +// nz : https://en.wikipedia.org/wiki/.nz +// Submitted by registry <jay@nzrs.net.nz> +nz +ac.nz +co.nz +cri.nz +geek.nz +gen.nz +govt.nz +health.nz +iwi.nz +kiwi.nz +maori.nz +mil.nz +māori.nz +net.nz +org.nz +parliament.nz +school.nz + +// om : https://en.wikipedia.org/wiki/.om +om +co.om +com.om +edu.om +gov.om +med.om +museum.om +net.om +org.om +pro.om + +// onion : https://tools.ietf.org/html/rfc7686 +onion + +// org : https://en.wikipedia.org/wiki/.org +org + +// pa : http://www.nic.pa/ +// Some additional second level "domains" resolve directly as hostnames, such as +// pannet.pa, so we add a rule for "pa". +pa +ac.pa +gob.pa +com.pa +org.pa +sld.pa +edu.pa +net.pa +ing.pa +abo.pa +med.pa +nom.pa + +// pe : https://www.nic.pe/InformeFinalComision.pdf +pe +edu.pe +gob.pe +nom.pe +mil.pe +org.pe +com.pe +net.pe + +// pf : http://www.gobin.info/domainname/formulaire-pf.pdf +pf +com.pf +org.pf +edu.pf + +// pg : https://en.wikipedia.org/wiki/.pg +*.pg + +// ph : http://www.domains.ph/FAQ2.asp +// Submitted by registry <jed@email.com.ph> +ph +com.ph +net.ph +org.ph +gov.ph +edu.ph +ngo.ph +mil.ph +i.ph + +// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK +pk +com.pk +net.pk +edu.pk +org.pk +fam.pk +biz.pk +web.pk +gov.pk +gob.pk +gok.pk +gon.pk +gop.pk +gos.pk +info.pk + +// pl http://www.dns.pl/english/index.html +// Submitted by registry +pl +com.pl +net.pl +org.pl +// pl functional domains (http://www.dns.pl/english/index.html) +aid.pl +agro.pl +atm.pl +auto.pl +biz.pl +edu.pl +gmina.pl +gsm.pl +info.pl +mail.pl +miasta.pl +media.pl +mil.pl +nieruchomosci.pl +nom.pl +pc.pl +powiat.pl +priv.pl +realestate.pl +rel.pl +sex.pl +shop.pl +sklep.pl +sos.pl +szkola.pl +targi.pl +tm.pl +tourism.pl +travel.pl +turystyka.pl +// Government domains +gov.pl +ap.gov.pl +ic.gov.pl +is.gov.pl +us.gov.pl +kmpsp.gov.pl +kppsp.gov.pl +kwpsp.gov.pl +psp.gov.pl +wskr.gov.pl +kwp.gov.pl +mw.gov.pl +ug.gov.pl +um.gov.pl +umig.gov.pl +ugim.gov.pl +upow.gov.pl +uw.gov.pl +starostwo.gov.pl +pa.gov.pl +po.gov.pl +psse.gov.pl +pup.gov.pl +rzgw.gov.pl +sa.gov.pl +so.gov.pl +sr.gov.pl +wsa.gov.pl +sko.gov.pl +uzs.gov.pl +wiih.gov.pl +winb.gov.pl +pinb.gov.pl +wios.gov.pl +witd.gov.pl +wzmiuw.gov.pl +piw.gov.pl +wiw.gov.pl +griw.gov.pl +wif.gov.pl +oum.gov.pl +sdn.gov.pl +zp.gov.pl +uppo.gov.pl +mup.gov.pl +wuoz.gov.pl +konsulat.gov.pl +oirm.gov.pl +// pl regional domains (http://www.dns.pl/english/index.html) +augustow.pl +babia-gora.pl +bedzin.pl +beskidy.pl +bialowieza.pl +bialystok.pl +bielawa.pl +bieszczady.pl +boleslawiec.pl +bydgoszcz.pl +bytom.pl +cieszyn.pl +czeladz.pl +czest.pl +dlugoleka.pl +elblag.pl +elk.pl +glogow.pl +gniezno.pl +gorlice.pl +grajewo.pl +ilawa.pl +jaworzno.pl +jelenia-gora.pl +jgora.pl +kalisz.pl +kazimierz-dolny.pl +karpacz.pl +kartuzy.pl +kaszuby.pl +katowice.pl +kepno.pl +ketrzyn.pl +klodzko.pl +kobierzyce.pl +kolobrzeg.pl +konin.pl +konskowola.pl +kutno.pl +lapy.pl +lebork.pl +legnica.pl +lezajsk.pl +limanowa.pl +lomza.pl +lowicz.pl +lubin.pl +lukow.pl +malbork.pl +malopolska.pl +mazowsze.pl +mazury.pl +mielec.pl +mielno.pl +mragowo.pl +naklo.pl +nowaruda.pl +nysa.pl +olawa.pl +olecko.pl +olkusz.pl +olsztyn.pl +opoczno.pl +opole.pl +ostroda.pl +ostroleka.pl +ostrowiec.pl +ostrowwlkp.pl +pila.pl +pisz.pl +podhale.pl +podlasie.pl +polkowice.pl +pomorze.pl +pomorskie.pl +prochowice.pl +pruszkow.pl +przeworsk.pl +pulawy.pl +radom.pl +rawa-maz.pl +rybnik.pl +rzeszow.pl +sanok.pl +sejny.pl +slask.pl +slupsk.pl +sosnowiec.pl +stalowa-wola.pl +skoczow.pl +starachowice.pl +stargard.pl +suwalki.pl +swidnica.pl +swiebodzin.pl +swinoujscie.pl +szczecin.pl +szczytno.pl +tarnobrzeg.pl +tgory.pl +turek.pl +tychy.pl +ustka.pl +walbrzych.pl +warmia.pl +warszawa.pl +waw.pl +wegrow.pl +wielun.pl +wlocl.pl +wloclawek.pl +wodzislaw.pl +wolomin.pl +wroclaw.pl +zachpomor.pl +zagan.pl +zarow.pl +zgora.pl +zgorzelec.pl + +// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +pm + +// pn : http://www.government.pn/PnRegistry/policies.htm +pn +gov.pn +co.pn +org.pn +edu.pn +net.pn + +// post : https://en.wikipedia.org/wiki/.post +post + +// pr : http://www.nic.pr/index.asp?f=1 +pr +com.pr +net.pr +org.pr +gov.pr +edu.pr +isla.pr +pro.pr +biz.pr +info.pr +name.pr +// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr +est.pr +prof.pr +ac.pr + +// pro : http://registry.pro/get-pro +pro +aaa.pro +aca.pro +acct.pro +avocat.pro +bar.pro +cpa.pro +eng.pro +jur.pro +law.pro +med.pro +recht.pro + +// ps : https://en.wikipedia.org/wiki/.ps +// http://www.nic.ps/registration/policy.html#reg +ps +edu.ps +gov.ps +sec.ps +plo.ps +com.ps +org.ps +net.ps + +// pt : http://online.dns.pt/dns/start_dns +pt +net.pt +gov.pt +org.pt +edu.pt +int.pt +publ.pt +com.pt +nome.pt + +// pw : https://en.wikipedia.org/wiki/.pw +pw +co.pw +ne.pw +or.pw +ed.pw +go.pw +belau.pw + +// py : http://www.nic.py/pautas.html#seccion_9 +// Submitted by registry +py +com.py +coop.py +edu.py +gov.py +mil.py +net.py +org.py + +// qa : http://domains.qa/en/ +qa +com.qa +edu.qa +gov.qa +mil.qa +name.qa +net.qa +org.qa +sch.qa + +// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs +re +asso.re +com.re +nom.re + +// ro : http://www.rotld.ro/ +ro +arts.ro +com.ro +firm.ro +info.ro +nom.ro +nt.ro +org.ro +rec.ro +store.ro +tm.ro +www.ro + +// rs : https://www.rnids.rs/en/domains/national-domains +rs +ac.rs +co.rs +edu.rs +gov.rs +in.rs +org.rs + +// ru : https://cctld.ru/en/domains/domens_ru/reserved/ +ru +ac.ru +edu.ru +gov.ru +int.ru +mil.ru +test.ru + +// rw : http://www.nic.rw/cgi-bin/policy.pl +rw +gov.rw +net.rw +edu.rw +ac.rw +com.rw +co.rw +int.rw +mil.rw +gouv.rw + +// sa : http://www.nic.net.sa/ +sa +com.sa +net.sa +org.sa +gov.sa +med.sa +pub.sa +edu.sa +sch.sa + +// sb : http://www.sbnic.net.sb/ +// Submitted by registry <lee.humphries@telekom.com.sb> +sb +com.sb +edu.sb +gov.sb +net.sb +org.sb + +// sc : http://www.nic.sc/ +sc +com.sc +gov.sc +net.sc +org.sc +edu.sc + +// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm +// Submitted by registry <admin@isoc.sd> +sd +com.sd +net.sd +org.sd +edu.sd +med.sd +tv.sd +gov.sd +info.sd + +// se : https://en.wikipedia.org/wiki/.se +// Submitted by registry <patrik.wallstrom@iis.se> +se +a.se +ac.se +b.se +bd.se +brand.se +c.se +d.se +e.se +f.se +fh.se +fhsk.se +fhv.se +g.se +h.se +i.se +k.se +komforb.se +kommunalforbund.se +komvux.se +l.se +lanbib.se +m.se +n.se +naturbruksgymn.se +o.se +org.se +p.se +parti.se +pp.se +press.se +r.se +s.se +t.se +tm.se +u.se +w.se +x.se +y.se +z.se + +// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines +sg +com.sg +net.sg +org.sg +gov.sg +edu.sg +per.sg + +// sh : http://www.nic.sh/registrar.html +sh +com.sh +net.sh +gov.sh +org.sh +mil.sh + +// si : https://en.wikipedia.org/wiki/.si +si + +// sj : No registrations at this time. +// Submitted by registry <jarle@uninett.no> +sj + +// sk : https://en.wikipedia.org/wiki/.sk +// list of 2nd level domains ? +sk + +// sl : http://www.nic.sl +// Submitted by registry <adam@neoip.com> +sl +com.sl +net.sl +edu.sl +gov.sl +org.sl + +// sm : https://en.wikipedia.org/wiki/.sm +sm + +// sn : https://en.wikipedia.org/wiki/.sn +sn +art.sn +com.sn +edu.sn +gouv.sn +org.sn +perso.sn +univ.sn + +// so : http://www.soregistry.com/ +so +com.so +net.so +org.so + +// sr : https://en.wikipedia.org/wiki/.sr +sr + +// st : http://www.nic.st/html/policyrules/ +st +co.st +com.st +consulado.st +edu.st +embaixada.st +gov.st +mil.st +net.st +org.st +principe.st +saotome.st +store.st + +// su : https://en.wikipedia.org/wiki/.su +su + +// sv : http://www.svnet.org.sv/niveldos.pdf +sv +com.sv +edu.sv +gob.sv +org.sv +red.sv + +// sx : https://en.wikipedia.org/wiki/.sx +// Submitted by registry <jcvignes@openregistry.com> +sx +gov.sx + +// sy : https://en.wikipedia.org/wiki/.sy +// see also: http://www.gobin.info/domainname/sy.doc +sy +edu.sy +gov.sy +net.sy +mil.sy +com.sy +org.sy + +// sz : https://en.wikipedia.org/wiki/.sz +// http://www.sispa.org.sz/ +sz +co.sz +ac.sz +org.sz + +// tc : https://en.wikipedia.org/wiki/.tc +tc + +// td : https://en.wikipedia.org/wiki/.td +td + +// tel: https://en.wikipedia.org/wiki/.tel +// http://www.telnic.org/ +tel + +// tf : https://en.wikipedia.org/wiki/.tf +tf + +// tg : https://en.wikipedia.org/wiki/.tg +// http://www.nic.tg/ +tg + +// th : https://en.wikipedia.org/wiki/.th +// Submitted by registry <krit@thains.co.th> +th +ac.th +co.th +go.th +in.th +mi.th +net.th +or.th + +// tj : http://www.nic.tj/policy.html +tj +ac.tj +biz.tj +co.tj +com.tj +edu.tj +go.tj +gov.tj +int.tj +mil.tj +name.tj +net.tj +nic.tj +org.tj +test.tj +web.tj + +// tk : https://en.wikipedia.org/wiki/.tk +tk + +// tl : https://en.wikipedia.org/wiki/.tl +tl +gov.tl + +// tm : http://www.nic.tm/local.html +tm +com.tm +co.tm +org.tm +net.tm +nom.tm +gov.tm +mil.tm +edu.tm + +// tn : https://en.wikipedia.org/wiki/.tn +// http://whois.ati.tn/ +tn +com.tn +ens.tn +fin.tn +gov.tn +ind.tn +intl.tn +nat.tn +net.tn +org.tn +info.tn +perso.tn +tourism.tn +edunet.tn +rnrt.tn +rns.tn +rnu.tn +mincom.tn +agrinet.tn +defense.tn +turen.tn + +// to : https://en.wikipedia.org/wiki/.to +// Submitted by registry <egullich@colo.to> +to +com.to +gov.to +net.to +org.to +edu.to +mil.to + +// subTLDs: https://www.nic.tr/forms/eng/policies.pdf +// and: https://www.nic.tr/forms/politikalar.pdf +// Submitted by <mehmetgurevin@gmail.com> +tr +com.tr +info.tr +biz.tr +net.tr +org.tr +web.tr +gen.tr +tv.tr +av.tr +dr.tr +bbs.tr +name.tr +tel.tr +gov.tr +bel.tr +pol.tr +mil.tr +k12.tr +edu.tr +kep.tr + +// Used by Northern Cyprus +nc.tr + +// Used by government agencies of Northern Cyprus +gov.nc.tr + +// travel : https://en.wikipedia.org/wiki/.travel +travel + +// tt : http://www.nic.tt/ +tt +co.tt +com.tt +org.tt +net.tt +biz.tt +info.tt +pro.tt +int.tt +coop.tt +jobs.tt +mobi.tt +travel.tt +museum.tt +aero.tt +name.tt +gov.tt +edu.tt + +// tv : https://en.wikipedia.org/wiki/.tv +// Not listing any 2LDs as reserved since none seem to exist in practice, +// Wikipedia notwithstanding. +tv + +// tw : https://en.wikipedia.org/wiki/.tw +tw +edu.tw +gov.tw +mil.tw +com.tw +net.tw +org.tw +idv.tw +game.tw +ebiz.tw +club.tw +網路.tw +組織.tw +商業.tw + +// tz : http://www.tznic.or.tz/index.php/domains +// Submitted by registry <manager@tznic.or.tz> +tz +ac.tz +co.tz +go.tz +hotel.tz +info.tz +me.tz +mil.tz +mobi.tz +ne.tz +or.tz +sc.tz +tv.tz + +// ua : https://hostmaster.ua/policy/?ua +// Submitted by registry <dk@cctld.ua> +ua +// ua 2LD +com.ua +edu.ua +gov.ua +in.ua +net.ua +org.ua +// ua geographic names +// https://hostmaster.ua/2ld/ +cherkassy.ua +cherkasy.ua +chernigov.ua +chernihiv.ua +chernivtsi.ua +chernovtsy.ua +ck.ua +cn.ua +cr.ua +crimea.ua +cv.ua +dn.ua +dnepropetrovsk.ua +dnipropetrovsk.ua +dominic.ua +donetsk.ua +dp.ua +if.ua +ivano-frankivsk.ua +kh.ua +kharkiv.ua +kharkov.ua +kherson.ua +khmelnitskiy.ua +khmelnytskyi.ua +kiev.ua +kirovograd.ua +km.ua +kr.ua +krym.ua +ks.ua +kv.ua +kyiv.ua +lg.ua +lt.ua +lugansk.ua +lutsk.ua +lv.ua +lviv.ua +mk.ua +mykolaiv.ua +nikolaev.ua +od.ua +odesa.ua +odessa.ua +pl.ua +poltava.ua +rivne.ua +rovno.ua +rv.ua +sb.ua +sebastopol.ua +sevastopol.ua +sm.ua +sumy.ua +te.ua +ternopil.ua +uz.ua +uzhgorod.ua +vinnica.ua +vinnytsia.ua +vn.ua +volyn.ua +yalta.ua +zaporizhzhe.ua +zaporizhzhia.ua +zhitomir.ua +zhytomyr.ua +zp.ua +zt.ua + +// ug : https://www.registry.co.ug/ +ug +co.ug +or.ug +ac.ug +sc.ug +go.ug +ne.ug +com.ug +org.ug + +// uk : https://en.wikipedia.org/wiki/.uk +// Submitted by registry <Michael.Daly@nominet.org.uk> +uk +ac.uk +co.uk +gov.uk +ltd.uk +me.uk +net.uk +nhs.uk +org.uk +plc.uk +police.uk +*.sch.uk + +// us : https://en.wikipedia.org/wiki/.us +us +dni.us +fed.us +isa.us +kids.us +nsn.us +// us geographic names +ak.us +al.us +ar.us +as.us +az.us +ca.us +co.us +ct.us +dc.us +de.us +fl.us +ga.us +gu.us +hi.us +ia.us +id.us +il.us +in.us +ks.us +ky.us +la.us +ma.us +md.us +me.us +mi.us +mn.us +mo.us +ms.us +mt.us +nc.us +nd.us +ne.us +nh.us +nj.us +nm.us +nv.us +ny.us +oh.us +ok.us +or.us +pa.us +pr.us +ri.us +sc.us +sd.us +tn.us +tx.us +ut.us +vi.us +vt.us +va.us +wa.us +wi.us +wv.us +wy.us +// The registrar notes several more specific domains available in each state, +// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat +// haphazard; in some states these domains resolve as addresses, while in others +// only subdomains are available, or even nothing at all. We include the +// most common ones where it's clear that different sites are different +// entities. +k12.ak.us +k12.al.us +k12.ar.us +k12.as.us +k12.az.us +k12.ca.us +k12.co.us +k12.ct.us +k12.dc.us +k12.de.us +k12.fl.us +k12.ga.us +k12.gu.us +// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login +k12.ia.us +k12.id.us +k12.il.us +k12.in.us +k12.ks.us +k12.ky.us +k12.la.us +k12.ma.us +k12.md.us +k12.me.us +k12.mi.us +k12.mn.us +k12.mo.us +k12.ms.us +k12.mt.us +k12.nc.us +// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso <trossow@nd.gov> +k12.ne.us +k12.nh.us +k12.nj.us +k12.nm.us +k12.nv.us +k12.ny.us +k12.oh.us +k12.ok.us +k12.or.us +k12.pa.us +k12.pr.us +k12.ri.us +k12.sc.us +// k12.sd.us Bug 934131 - Removed at request of James Booze <James.Booze@k12.sd.us> +k12.tn.us +k12.tx.us +k12.ut.us +k12.vi.us +k12.vt.us +k12.va.us +k12.wa.us +k12.wi.us +// k12.wv.us Bug 947705 - Removed at request of Verne Britton <verne@wvnet.edu> +k12.wy.us +cc.ak.us +cc.al.us +cc.ar.us +cc.as.us +cc.az.us +cc.ca.us +cc.co.us +cc.ct.us +cc.dc.us +cc.de.us +cc.fl.us +cc.ga.us +cc.gu.us +cc.hi.us +cc.ia.us +cc.id.us +cc.il.us +cc.in.us +cc.ks.us +cc.ky.us +cc.la.us +cc.ma.us +cc.md.us +cc.me.us +cc.mi.us +cc.mn.us +cc.mo.us +cc.ms.us +cc.mt.us +cc.nc.us +cc.nd.us +cc.ne.us +cc.nh.us +cc.nj.us +cc.nm.us +cc.nv.us +cc.ny.us +cc.oh.us +cc.ok.us +cc.or.us +cc.pa.us +cc.pr.us +cc.ri.us +cc.sc.us +cc.sd.us +cc.tn.us +cc.tx.us +cc.ut.us +cc.vi.us +cc.vt.us +cc.va.us +cc.wa.us +cc.wi.us +cc.wv.us +cc.wy.us +lib.ak.us +lib.al.us +lib.ar.us +lib.as.us +lib.az.us +lib.ca.us +lib.co.us +lib.ct.us +lib.dc.us +// lib.de.us Issue #243 - Moved to Private section at request of Ed Moore <Ed.Moore@lib.de.us> +lib.fl.us +lib.ga.us +lib.gu.us +lib.hi.us +lib.ia.us +lib.id.us +lib.il.us +lib.in.us +lib.ks.us +lib.ky.us +lib.la.us +lib.ma.us +lib.md.us +lib.me.us +lib.mi.us +lib.mn.us +lib.mo.us +lib.ms.us +lib.mt.us +lib.nc.us +lib.nd.us +lib.ne.us +lib.nh.us +lib.nj.us +lib.nm.us +lib.nv.us +lib.ny.us +lib.oh.us +lib.ok.us +lib.or.us +lib.pa.us +lib.pr.us +lib.ri.us +lib.sc.us +lib.sd.us +lib.tn.us +lib.tx.us +lib.ut.us +lib.vi.us +lib.vt.us +lib.va.us +lib.wa.us +lib.wi.us +// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold <arnold@wvlc.lib.wv.us> +lib.wy.us +// k12.ma.us contains school districts in Massachusetts. The 4LDs are +// managed independently except for private (PVT), charter (CHTR) and +// parochial (PAROCH) schools. Those are delegated directly to the +// 5LD operators. <k12-ma-hostmaster _ at _ rsuc.gweep.net> +pvt.k12.ma.us +chtr.k12.ma.us +paroch.k12.ma.us + +// uy : http://www.nic.org.uy/ +uy +com.uy +edu.uy +gub.uy +mil.uy +net.uy +org.uy + +// uz : http://www.reg.uz/ +uz +co.uz +com.uz +net.uz +org.uz + +// va : https://en.wikipedia.org/wiki/.va +va + +// vc : https://en.wikipedia.org/wiki/.vc +// Submitted by registry <kshah@ca.afilias.info> +vc +com.vc +net.vc +org.vc +gov.vc +mil.vc +edu.vc + +// ve : https://registro.nic.ve/ +// Submitted by registry +ve +arts.ve +co.ve +com.ve +e12.ve +edu.ve +firm.ve +gob.ve +gov.ve +info.ve +int.ve +mil.ve +net.ve +org.ve +rec.ve +store.ve +tec.ve +web.ve + +// vg : https://en.wikipedia.org/wiki/.vg +vg + +// vi : http://www.nic.vi/newdomainform.htm +// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other +// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they +// are available for registration (which they do not seem to be). +vi +co.vi +com.vi +k12.vi +net.vi +org.vi + +// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp +vn +com.vn +net.vn +org.vn +edu.vn +gov.vn +int.vn +ac.vn +biz.vn +info.vn +name.vn +pro.vn +health.vn + +// vu : https://en.wikipedia.org/wiki/.vu +// http://www.vunic.vu/ +vu +com.vu +edu.vu +net.vu +org.vu + +// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +wf + +// ws : https://en.wikipedia.org/wiki/.ws +// http://samoanic.ws/index.dhtml +ws +com.ws +net.ws +org.ws +gov.ws +edu.ws + +// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf +yt + +// IDN ccTLDs +// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then +// U-label, and follow this format: +// // A-Label ("<Latin renderings>", <language name>[, variant info]) : <ISO 3166 ccTLD> +// // [sponsoring org] +// U-Label + +// xn--mgbaam7a8h ("Emerat", Arabic) : AE +// http://nic.ae/english/arabicdomain/rules.jsp +امارات + +// xn--y9a3aq ("hye", Armenian) : AM +// ISOC AM (operated by .am Registry) +հայ + +// xn--54b7fta0cc ("Bangla", Bangla) : BD +বাংলা + +// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY +// Operated by .by registry +бел + +// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN +// CNNIC +// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +中国 + +// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN +// CNNIC +// http://cnnic.cn/html/Dir/2005/10/11/3218.htm +中國 + +// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ +الجزائر + +// xn--wgbh1c ("Egypt/Masr", Arabic) : EG +// http://www.dotmasr.eg/ +مصر + +// xn--e1a4c ("eu", Cyrillic) : EU +ею + +// xn--node ("ge", Georgian Mkhedruli) : GE +გე + +// xn--qxam ("el", Greek) : GR +// Hellenic Ministry of Infrastructure, Transport, and Networks +ελ + +// xn--j6w193g ("Hong Kong", Chinese) : HK +// https://www2.hkirc.hk/register/rules.jsp +香港 + +// xn--h2brj9c ("Bharat", Devanagari) : IN +// India +भारत + +// xn--mgbbh1a71e ("Bharat", Arabic) : IN +// India +بھارت + +// xn--fpcrj9c3d ("Bharat", Telugu) : IN +// India +భారత్ + +// xn--gecrj9c ("Bharat", Gujarati) : IN +// India +ભારત + +// xn--s9brj9c ("Bharat", Gurmukhi) : IN +// India +ਭਾਰਤ + +// xn--45brj9c ("Bharat", Bengali) : IN +// India +ভারত + +// xn--xkc2dl3a5ee0h ("India", Tamil) : IN +// India +இந்தியா + +// xn--mgba3a4f16a ("Iran", Persian) : IR +ایران + +// xn--mgba3a4fra ("Iran", Arabic) : IR +ايران + +// xn--mgbtx2b ("Iraq", Arabic) : IQ +// Communications and Media Commission +عراق + +// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO +// National Information Technology Center (NITC) +// Royal Scientific Society, Al-Jubeiha +الاردن + +// xn--3e0b707e ("Republic of Korea", Hangul) : KR +한국 + +// xn--80ao21a ("Kaz", Kazakh) : KZ +қаз + +// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK +// http://nic.lk +ලංකා + +// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK +// http://nic.lk +இலங்கை + +// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA +المغرب + +// xn--d1alf ("mkd", Macedonian) : MK +// MARnet +мкд + +// xn--l1acc ("mon", Mongolian) : MN +мон + +// xn--mix891f ("Macao", Chinese, Traditional) : MO +// MONIC / HNET Asia (Registry Operator for .mo) +澳門 + +// xn--mix082f ("Macao", Chinese, Simplified) : MO +澳门 + +// xn--mgbx4cd0ab ("Malaysia", Malay) : MY +مليسيا + +// xn--mgb9awbf ("Oman", Arabic) : OM +عمان + +// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK +پاکستان + +// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK +پاكستان + +// xn--ygbi2ammx ("Falasteen", Arabic) : PS +// The Palestinian National Internet Naming Authority (PNINA) +// http://www.pnina.ps +فلسطين + +// xn--90a3ac ("srb", Cyrillic) : RS +// https://www.rnids.rs/en/domains/national-domains +срб +пр.срб +орг.срб +обр.срб +од.срб +упр.срб +ак.срб + +// xn--p1ai ("rf", Russian-Cyrillic) : RU +// http://www.cctld.ru/en/docs/rulesrf.php +рф + +// xn--wgbl6a ("Qatar", Arabic) : QA +// http://www.ict.gov.qa/ +قطر + +// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA +// http://www.nic.net.sa/ +السعودية + +// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA +السعودیة + +// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA +السعودیۃ + +// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA +السعوديه + +// xn--mgbpl2fh ("sudan", Arabic) : SD +// Operated by .sd registry +سودان + +// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG +新加坡 + +// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG +சிங்கப்பூர் + +// xn--ogbpf8fl ("Syria", Arabic) : SY +سورية + +// xn--mgbtf8fl ("Syria", Arabic, variant) : SY +سوريا + +// xn--o3cw4h ("Thai", Thai) : TH +// http://www.thnic.co.th +ไทย + +// xn--pgbs0dh ("Tunisia", Arabic) : TN +// http://nic.tn +تونس + +// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台灣 + +// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台湾 + +// xn--nnx388a ("Taiwan", Chinese, variant) : TW +臺灣 + +// xn--j1amh ("ukr", Cyrillic) : UA +укр + +// xn--mgb2ddes ("AlYemen", Arabic) : YE +اليمن + +// xxx : http://icmregistry.com +xxx + +// ye : http://www.y.net.ye/services/domain_name.htm +*.ye + +// za : http://www.zadna.org.za/content/page/domain-information +ac.za +agric.za +alt.za +co.za +edu.za +gov.za +grondar.za +law.za +mil.za +net.za +ngo.za +nis.za +nom.za +org.za +school.za +tm.za +web.za + +// zm : https://zicta.zm/ +// Submitted by registry <info@zicta.zm> +zm +ac.zm +biz.zm +co.zm +com.zm +edu.zm +gov.zm +info.zm +mil.zm +net.zm +org.zm +sch.zm + +// zw : https://www.potraz.gov.zw/ +// Confirmed by registry <bmtengwa@potraz.gov.zw> 2017-01-25 +zw +ac.zw +co.zw +gov.zw +mil.zw +org.zw + +// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2017-02-23T00:46:09Z + +// aaa : 2015-02-26 American Automobile Association, Inc. +aaa + +// aarp : 2015-05-21 AARP +aarp + +// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V. +abarth + +// abb : 2014-10-24 ABB Ltd +abb + +// abbott : 2014-07-24 Abbott Laboratories, Inc. +abbott + +// abbvie : 2015-07-30 AbbVie Inc. +abbvie + +// abc : 2015-07-30 Disney Enterprises, Inc. +abc + +// able : 2015-06-25 Able Inc. +able + +// abogado : 2014-04-24 Top Level Domain Holdings Limited +abogado + +// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre +abudhabi + +// academy : 2013-11-07 Half Oaks, LLC +academy + +// accenture : 2014-08-15 Accenture plc +accenture + +// accountant : 2014-11-20 dot Accountant Limited +accountant + +// accountants : 2014-03-20 Knob Town, LLC +accountants + +// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG +aco + +// active : 2014-05-01 The Active Network, Inc +active + +// actor : 2013-12-12 United TLD Holdco Ltd. +actor + +// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC) +adac + +// ads : 2014-12-04 Charleston Road Registry Inc. +ads + +// adult : 2014-10-16 ICM Registry AD LLC +adult + +// aeg : 2015-03-19 Aktiebolaget Electrolux +aeg + +// aetna : 2015-05-21 Aetna Life Insurance Company +aetna + +// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc. +afamilycompany + +// afl : 2014-10-02 Australian Football League +afl + +// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa +africa + +// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +agakhan + +// agency : 2013-11-14 Steel Falls, LLC +agency + +// aig : 2014-12-18 American International Group, Inc. +aig + +// aigo : 2015-08-06 aigo Digital Technology Co,Ltd. +aigo + +// airbus : 2015-07-30 Airbus S.A.S. +airbus + +// airforce : 2014-03-06 United TLD Holdco Ltd. +airforce + +// airtel : 2014-10-24 Bharti Airtel Limited +airtel + +// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation) +akdn + +// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V. +alfaromeo + +// alibaba : 2015-01-15 Alibaba Group Holding Limited +alibaba + +// alipay : 2015-01-15 Alibaba Group Holding Limited +alipay + +// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft +allfinanz + +// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company +allstate + +// ally : 2015-06-18 Ally Financial Inc. +ally + +// alsace : 2014-07-02 REGION D ALSACE +alsace + +// alstom : 2015-07-30 ALSTOM +alstom + +// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc. +americanexpress + +// americanfamily : 2015-07-23 AmFam, Inc. +americanfamily + +// amex : 2015-07-31 American Express Travel Related Services Company, Inc. +amex + +// amfam : 2015-07-23 AmFam, Inc. +amfam + +// amica : 2015-05-28 Amica Mutual Insurance Company +amica + +// amsterdam : 2014-07-24 Gemeente Amsterdam +amsterdam + +// analytics : 2014-12-18 Campus IP LLC +analytics + +// android : 2014-08-07 Charleston Road Registry Inc. +android + +// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +anquan + +// anz : 2015-07-31 Australia and New Zealand Banking Group Limited +anz + +// aol : 2015-09-17 AOL Inc. +aol + +// apartments : 2014-12-11 June Maple, LLC +apartments + +// app : 2015-05-14 Charleston Road Registry Inc. +app + +// apple : 2015-05-14 Apple Inc. +apple + +// aquarelle : 2014-07-24 Aquarelle.com +aquarelle + +// arab : 2015-11-12 League of Arab States +arab + +// aramco : 2014-11-20 Aramco Services Company +aramco + +// archi : 2014-02-06 STARTING DOT LIMITED +archi + +// army : 2014-03-06 United TLD Holdco Ltd. +army + +// art : 2016-03-24 UK Creative Ideas Limited +art + +// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E. +arte + +// asda : 2015-07-31 Wal-Mart Stores, Inc. +asda + +// associates : 2014-03-06 Baxter Hill, LLC +associates + +// athleta : 2015-07-30 The Gap, Inc. +athleta + +// attorney : 2014-03-20 +attorney + +// auction : 2014-03-20 +auction + +// audi : 2015-05-21 AUDI Aktiengesellschaft +audi + +// audible : 2015-06-25 Amazon EU S.à r.l. +audible + +// audio : 2014-03-20 Uniregistry, Corp. +audio + +// auspost : 2015-08-13 Australian Postal Corporation +auspost + +// author : 2014-12-18 Amazon EU S.à r.l. +author + +// auto : 2014-11-13 +auto + +// autos : 2014-01-09 DERAutos, LLC +autos + +// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca +avianca + +// aws : 2015-06-25 Amazon EU S.à r.l. +aws + +// axa : 2013-12-19 AXA SA +axa + +// azure : 2014-12-18 Microsoft Corporation +azure + +// baby : 2015-04-09 Johnson & Johnson Services, Inc. +baby + +// baidu : 2015-01-08 Baidu, Inc. +baidu + +// banamex : 2015-07-30 Citigroup Inc. +banamex + +// bananarepublic : 2015-07-31 The Gap, Inc. +bananarepublic + +// band : 2014-06-12 +band + +// bank : 2014-09-25 fTLD Registry Services LLC +bank + +// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +bar + +// barcelona : 2014-07-24 Municipi de Barcelona +barcelona + +// barclaycard : 2014-11-20 Barclays Bank PLC +barclaycard + +// barclays : 2014-11-20 Barclays Bank PLC +barclays + +// barefoot : 2015-06-11 Gallo Vineyards, Inc. +barefoot + +// bargains : 2013-11-14 Half Hallow, LLC +bargains + +// baseball : 2015-10-29 MLB Advanced Media DH, LLC +baseball + +// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA) +basketball + +// bauhaus : 2014-04-17 Werkhaus GmbH +bauhaus + +// bayern : 2014-01-23 Bayern Connect GmbH +bayern + +// bbc : 2014-12-18 British Broadcasting Corporation +bbc + +// bbt : 2015-07-23 BB&T Corporation +bbt + +// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A. +bbva + +// bcg : 2015-04-02 The Boston Consulting Group, Inc. +bcg + +// bcn : 2014-07-24 Municipi de Barcelona +bcn + +// beats : 2015-05-14 Beats Electronics, LLC +beats + +// beauty : 2015-12-03 L'Oréal +beauty + +// beer : 2014-01-09 Top Level Domain Holdings Limited +beer + +// bentley : 2014-12-18 Bentley Motors Limited +bentley + +// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG +berlin + +// best : 2013-12-19 BestTLD Pty Ltd +best + +// bestbuy : 2015-07-31 BBY Solutions, Inc. +bestbuy + +// bet : 2015-05-07 Afilias plc +bet + +// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited +bharti + +// bible : 2014-06-19 American Bible Society +bible + +// bid : 2013-12-19 dot Bid Limited +bid + +// bike : 2013-08-27 Grand Hollow, LLC +bike + +// bing : 2014-12-18 Microsoft Corporation +bing + +// bingo : 2014-12-04 Sand Cedar, LLC +bingo + +// bio : 2014-03-06 STARTING DOT LIMITED +bio + +// black : 2014-01-16 Afilias Limited +black + +// blackfriday : 2014-01-16 Uniregistry, Corp. +blackfriday + +// blanco : 2015-07-16 BLANCO GmbH + Co KG +blanco + +// blockbuster : 2015-07-30 Dish DBS Corporation +blockbuster + +// blog : 2015-05-14 +blog + +// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC +bloomberg + +// blue : 2013-11-07 Afilias Limited +blue + +// bms : 2014-10-30 Bristol-Myers Squibb Company +bms + +// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +bmw + +// bnl : 2014-07-24 Banca Nazionale del Lavoro +bnl + +// bnpparibas : 2014-05-29 BNP Paribas +bnpparibas + +// boats : 2014-12-04 DERBoats, LLC +boats + +// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH +boehringer + +// bofa : 2015-07-31 NMS Services, Inc. +bofa + +// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +bom + +// bond : 2014-06-05 Bond University Limited +bond + +// boo : 2014-01-30 Charleston Road Registry Inc. +boo + +// book : 2015-08-27 Amazon EU S.à r.l. +book + +// booking : 2015-07-16 Booking.com B.V. +booking + +// boots : 2015-01-08 THE BOOTS COMPANY PLC +boots + +// bosch : 2015-06-18 Robert Bosch GMBH +bosch + +// bostik : 2015-05-28 Bostik SA +bostik + +// boston : 2015-12-10 +boston + +// bot : 2014-12-18 Amazon EU S.à r.l. +bot + +// boutique : 2013-11-14 Over Galley, LLC +boutique + +// box : 2015-11-12 NS1 Limited +box + +// bradesco : 2014-12-18 Banco Bradesco S.A. +bradesco + +// bridgestone : 2014-12-18 Bridgestone Corporation +bridgestone + +// broadway : 2014-12-22 Celebrate Broadway, Inc. +broadway + +// broker : 2014-12-11 IG Group Holdings PLC +broker + +// brother : 2015-01-29 Brother Industries, Ltd. +brother + +// brussels : 2014-02-06 DNS.be vzw +brussels + +// budapest : 2013-11-21 Top Level Domain Holdings Limited +budapest + +// bugatti : 2015-07-23 Bugatti International SA +bugatti + +// build : 2013-11-07 Plan Bee LLC +build + +// builders : 2013-11-07 Atomic Madison, LLC +builders + +// business : 2013-11-07 Spring Cross, LLC +business + +// buy : 2014-12-18 Amazon EU S.à r.l. +buy + +// buzz : 2013-10-02 DOTSTRATEGY CO. +buzz + +// bzh : 2014-02-27 Association www.bzh +bzh + +// cab : 2013-10-24 Half Sunset, LLC +cab + +// cafe : 2015-02-11 Pioneer Canyon, LLC +cafe + +// cal : 2014-07-24 Charleston Road Registry Inc. +cal + +// call : 2014-12-18 Amazon EU S.à r.l. +call + +// calvinklein : 2015-07-30 PVH gTLD Holdings LLC +calvinklein + +// cam : 2016-04-21 AC Webconnecting Holding B.V. +cam + +// camera : 2013-08-27 Atomic Maple, LLC +camera + +// camp : 2013-11-07 Delta Dynamite, LLC +camp + +// cancerresearch : 2014-05-15 Australian Cancer Research Foundation +cancerresearch + +// canon : 2014-09-12 Canon Inc. +canon + +// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +capetown + +// capital : 2014-03-06 Delta Mill, LLC +capital + +// capitalone : 2015-08-06 Capital One Financial Corporation +capitalone + +// car : 2015-01-22 +car + +// caravan : 2013-12-12 Caravan International, Inc. +caravan + +// cards : 2013-12-05 Foggy Hollow, LLC +cards + +// care : 2014-03-06 Goose Cross +care + +// career : 2013-10-09 dotCareer LLC +career + +// careers : 2013-10-02 Wild Corner, LLC +careers + +// cars : 2014-11-13 +cars + +// cartier : 2014-06-23 Richemont DNS Inc. +cartier + +// casa : 2013-11-21 Top Level Domain Holdings Limited +casa + +// case : 2015-09-03 CNH Industrial N.V. +case + +// caseih : 2015-09-03 CNH Industrial N.V. +caseih + +// cash : 2014-03-06 Delta Lake, LLC +cash + +// casino : 2014-12-18 Binky Sky, LLC +casino + +// catering : 2013-12-05 New Falls. LLC +catering + +// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +catholic + +// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +cba + +// cbn : 2014-08-22 The Christian Broadcasting Network, Inc. +cbn + +// cbre : 2015-07-02 CBRE, Inc. +cbre + +// cbs : 2015-08-06 CBS Domains Inc. +cbs + +// ceb : 2015-04-09 The Corporate Executive Board Company +ceb + +// center : 2013-11-07 Tin Mill, LLC +center + +// ceo : 2013-11-07 CEOTLD Pty Ltd +ceo + +// cern : 2014-06-05 European Organization for Nuclear Research ("CERN") +cern + +// cfa : 2014-08-28 CFA Institute +cfa + +// cfd : 2014-12-11 IG Group Holdings PLC +cfd + +// chanel : 2015-04-09 Chanel International B.V. +chanel + +// channel : 2014-05-08 Charleston Road Registry Inc. +channel + +// chase : 2015-04-30 JPMorgan Chase & Co. +chase + +// chat : 2014-12-04 Sand Fields, LLC +chat + +// cheap : 2013-11-14 Sand Cover, LLC +cheap + +// chintai : 2015-06-11 CHINTAI Corporation +chintai + +// chloe : 2014-10-16 Richemont DNS Inc. +chloe + +// christmas : 2013-11-21 Uniregistry, Corp. +christmas + +// chrome : 2014-07-24 Charleston Road Registry Inc. +chrome + +// chrysler : 2015-07-30 FCA US LLC. +chrysler + +// church : 2014-02-06 Holly Fields, LLC +church + +// cipriani : 2015-02-19 Hotel Cipriani Srl +cipriani + +// circle : 2014-12-18 Amazon EU S.à r.l. +circle + +// cisco : 2014-12-22 Cisco Technology, Inc. +cisco + +// citadel : 2015-07-23 Citadel Domain LLC +citadel + +// citi : 2015-07-30 Citigroup Inc. +citi + +// citic : 2014-01-09 CITIC Group Corporation +citic + +// city : 2014-05-29 Snow Sky, LLC +city + +// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc. +cityeats + +// claims : 2014-03-20 Black Corner, LLC +claims + +// cleaning : 2013-12-05 Fox Shadow, LLC +cleaning + +// click : 2014-06-05 Uniregistry, Corp. +click + +// clinic : 2014-03-20 Goose Park, LLC +clinic + +// clinique : 2015-10-01 The Estée Lauder Companies Inc. +clinique + +// clothing : 2013-08-27 Steel Lake, LLC +clothing + +// cloud : 2015-04-16 ARUBA S.p.A. +cloud + +// club : 2013-11-08 .CLUB DOMAINS, LLC +club + +// clubmed : 2015-06-25 Club Méditerranée S.A. +clubmed + +// coach : 2014-10-09 Koko Island, LLC +coach + +// codes : 2013-10-31 Puff Willow, LLC +codes + +// coffee : 2013-10-17 Trixy Cover, LLC +coffee + +// college : 2014-01-16 XYZ.COM LLC +college + +// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH +cologne + +// comcast : 2015-07-23 Comcast IP Holdings I, LLC +comcast + +// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +commbank + +// community : 2013-12-05 Fox Orchard, LLC +community + +// company : 2013-11-07 Silver Avenue, LLC +company + +// compare : 2015-10-08 iSelect Ltd +compare + +// computer : 2013-10-24 Pine Mill, LLC +computer + +// comsec : 2015-01-08 VeriSign, Inc. +comsec + +// condos : 2013-12-05 Pine House, LLC +condos + +// construction : 2013-09-16 Fox Dynamite, LLC +construction + +// consulting : 2013-12-05 +consulting + +// contact : 2015-01-08 Top Level Spectrum, Inc. +contact + +// contractors : 2013-09-10 Magic Woods, LLC +contractors + +// cooking : 2013-11-21 Top Level Domain Holdings Limited +cooking + +// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +cookingchannel + +// cool : 2013-11-14 Koko Lake, LLC +cool + +// corsica : 2014-09-25 Collectivité Territoriale de Corse +corsica + +// country : 2013-12-19 Top Level Domain Holdings Limited +country + +// coupon : 2015-02-26 Amazon EU S.à r.l. +coupon + +// coupons : 2015-03-26 Black Island, LLC +coupons + +// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD +courses + +// credit : 2014-03-20 Snow Shadow, LLC +credit + +// creditcard : 2014-03-20 Binky Frostbite, LLC +creditcard + +// creditunion : 2015-01-22 CUNA Performance Resources, LLC +creditunion + +// cricket : 2014-10-09 dot Cricket Limited +cricket + +// crown : 2014-10-24 Crown Equipment Corporation +crown + +// crs : 2014-04-03 Federated Co-operatives Limited +crs + +// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd. +cruise + +// cruises : 2013-12-05 Spring Way, LLC +cruises + +// csc : 2014-09-25 Alliance-One Services, Inc. +csc + +// cuisinella : 2014-04-03 SALM S.A.S. +cuisinella + +// cymru : 2014-05-08 Nominet UK +cymru + +// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd. +cyou + +// dabur : 2014-02-06 Dabur India Limited +dabur + +// dad : 2014-01-23 Charleston Road Registry Inc. +dad + +// dance : 2013-10-24 United TLD Holdco Ltd. +dance + +// data : 2016-06-02 Dish DBS Corporation +data + +// date : 2014-11-20 dot Date Limited +date + +// dating : 2013-12-05 Pine Fest, LLC +dating + +// datsun : 2014-03-27 NISSAN MOTOR CO., LTD. +datsun + +// day : 2014-01-30 Charleston Road Registry Inc. +day + +// dclk : 2014-11-20 Charleston Road Registry Inc. +dclk + +// dds : 2015-05-07 Top Level Domain Holdings Limited +dds + +// deal : 2015-06-25 Amazon EU S.à r.l. +deal + +// dealer : 2014-12-22 Dealer Dot Com, Inc. +dealer + +// deals : 2014-05-22 Sand Sunset, LLC +deals + +// degree : 2014-03-06 +degree + +// delivery : 2014-09-11 Steel Station, LLC +delivery + +// dell : 2014-10-24 Dell Inc. +dell + +// deloitte : 2015-07-31 Deloitte Touche Tohmatsu +deloitte + +// delta : 2015-02-19 Delta Air Lines, Inc. +delta + +// democrat : 2013-10-24 United TLD Holdco Ltd. +democrat + +// dental : 2014-03-20 Tin Birch, LLC +dental + +// dentist : 2014-03-20 +dentist + +// desi : 2013-11-14 Desi Networks LLC +desi + +// design : 2014-11-07 Top Level Design, LLC +design + +// dev : 2014-10-16 Charleston Road Registry Inc. +dev + +// dhl : 2015-07-23 Deutsche Post AG +dhl + +// diamonds : 2013-09-22 John Edge, LLC +diamonds + +// diet : 2014-06-26 Uniregistry, Corp. +diet + +// digital : 2014-03-06 Dash Park, LLC +digital + +// direct : 2014-04-10 Half Trail, LLC +direct + +// directory : 2013-09-20 Extra Madison, LLC +directory + +// discount : 2014-03-06 Holly Hill, LLC +discount + +// discover : 2015-07-23 Discover Financial Services +discover + +// dish : 2015-07-30 Dish DBS Corporation +dish + +// diy : 2015-11-05 Lifestyle Domain Holdings, Inc. +diy + +// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd. +dnp + +// docs : 2014-10-16 Charleston Road Registry Inc. +docs + +// doctor : 2016-06-02 Brice Trail, LLC +doctor + +// dodge : 2015-07-30 FCA US LLC. +dodge + +// dog : 2014-12-04 Koko Mill, LLC +dog + +// doha : 2014-09-18 Communications Regulatory Authority (CRA) +doha + +// domains : 2013-10-17 Sugar Cross, LLC +domains + +// dot : 2015-05-21 Dish DBS Corporation +dot + +// download : 2014-11-20 dot Support Limited +download + +// drive : 2015-03-05 Charleston Road Registry Inc. +drive + +// dtv : 2015-06-04 Dish DBS Corporation +dtv + +// dubai : 2015-01-01 Dubai Smart Government Department +dubai + +// duck : 2015-07-23 Johnson Shareholdings, Inc. +duck + +// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company +dunlop + +// duns : 2015-08-06 The Dun & Bradstreet Corporation +duns + +// dupont : 2015-06-25 E. I. du Pont de Nemours and Company +dupont + +// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +durban + +// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +dvag + +// dvr : 2016-05-26 Hughes Satellite Systems Corporation +dvr + +// earth : 2014-12-04 Interlink Co., Ltd. +earth + +// eat : 2014-01-23 Charleston Road Registry Inc. +eat + +// eco : 2016-07-08 Big Room Inc. +eco + +// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V. +edeka + +// education : 2013-11-07 Brice Way, LLC +education + +// email : 2013-10-31 Spring Madison, LLC +email + +// emerck : 2014-04-03 Merck KGaA +emerck + +// energy : 2014-09-11 Binky Birch, LLC +energy + +// engineer : 2014-03-06 United TLD Holdco Ltd. +engineer + +// engineering : 2014-03-06 Romeo Canyon +engineering + +// enterprises : 2013-09-20 Snow Oaks, LLC +enterprises + +// epost : 2015-07-23 Deutsche Post AG +epost + +// epson : 2014-12-04 Seiko Epson Corporation +epson + +// equipment : 2013-08-27 Corn Station, LLC +equipment + +// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson +ericsson + +// erni : 2014-04-03 ERNI Group Holding AG +erni + +// esq : 2014-05-08 Charleston Road Registry Inc. +esq + +// estate : 2013-08-27 Trixy Park, LLC +estate + +// esurance : 2015-07-23 Esurance Insurance Company +esurance + +// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +etisalat + +// eurovision : 2014-04-24 European Broadcasting Union (EBU) +eurovision + +// eus : 2013-12-12 Puntueus Fundazioa +eus + +// events : 2013-12-05 Pioneer Maple, LLC +events + +// everbank : 2014-05-15 EverBank +everbank + +// exchange : 2014-03-06 Spring Falls, LLC +exchange + +// expert : 2013-11-21 Magic Pass, LLC +expert + +// exposed : 2013-12-05 Victor Beach, LLC +exposed + +// express : 2015-02-11 Sea Sunset, LLC +express + +// extraspace : 2015-05-14 Extra Space Storage LLC +extraspace + +// fage : 2014-12-18 Fage International S.A. +fage + +// fail : 2014-03-06 Atomic Pipe, LLC +fail + +// fairwinds : 2014-11-13 FairWinds Partners, LLC +fairwinds + +// faith : 2014-11-20 dot Faith Limited +faith + +// family : 2015-04-02 +family + +// fan : 2014-03-06 +fan + +// fans : 2014-11-07 Asiamix Digital Limited +fans + +// farm : 2013-11-07 Just Maple, LLC +farm + +// farmers : 2015-07-09 Farmers Insurance Exchange +farmers + +// fashion : 2014-07-03 Top Level Domain Holdings Limited +fashion + +// fast : 2014-12-18 Amazon EU S.à r.l. +fast + +// fedex : 2015-08-06 Federal Express Corporation +fedex + +// feedback : 2013-12-19 Top Level Spectrum, Inc. +feedback + +// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V. +ferrari + +// ferrero : 2014-12-18 Ferrero Trading Lux S.A. +ferrero + +// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V. +fiat + +// fidelity : 2015-07-30 Fidelity Brokerage Services LLC +fidelity + +// fido : 2015-08-06 Rogers Communications Partnership +fido + +// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd +film + +// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br +final + +// finance : 2014-03-20 Cotton Cypress, LLC +finance + +// financial : 2014-03-06 Just Cover, LLC +financial + +// fire : 2015-06-25 Amazon EU S.à r.l. +fire + +// firestone : 2014-12-18 Bridgestone Corporation +firestone + +// firmdale : 2014-03-27 Firmdale Holdings Limited +firmdale + +// fish : 2013-12-12 Fox Woods, LLC +fish + +// fishing : 2013-11-21 Top Level Domain Holdings Limited +fishing + +// fit : 2014-11-07 Top Level Domain Holdings Limited +fit + +// fitness : 2014-03-06 Brice Orchard, LLC +fitness + +// flickr : 2015-04-02 Yahoo! Domain Services Inc. +flickr + +// flights : 2013-12-05 Fox Station, LLC +flights + +// flir : 2015-07-23 FLIR Systems, Inc. +flir + +// florist : 2013-11-07 Half Cypress, LLC +florist + +// flowers : 2014-10-09 Uniregistry, Corp. +flowers + +// fly : 2014-05-08 Charleston Road Registry Inc. +fly + +// foo : 2014-01-23 Charleston Road Registry Inc. +foo + +// food : 2016-04-21 Lifestyle Domain Holdings, Inc. +food + +// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc. +foodnetwork + +// football : 2014-12-18 Foggy Farms, LLC +football + +// ford : 2014-11-13 Ford Motor Company +ford + +// forex : 2014-12-11 IG Group Holdings PLC +forex + +// forsale : 2014-05-22 +forsale + +// forum : 2015-04-02 Fegistry, LLC +forum + +// foundation : 2013-12-05 John Dale, LLC +foundation + +// fox : 2015-09-11 FOX Registry, LLC +fox + +// free : 2015-12-10 Amazon EU S.à r.l. +free + +// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH +fresenius + +// frl : 2014-05-15 FRLregistry B.V. +frl + +// frogans : 2013-12-19 OP3FT +frogans + +// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc. +frontdoor + +// frontier : 2015-02-05 Frontier Communications Corporation +frontier + +// ftr : 2015-07-16 Frontier Communications Corporation +ftr + +// fujitsu : 2015-07-30 Fujitsu Limited +fujitsu + +// fujixerox : 2015-07-23 Xerox DNHC LLC +fujixerox + +// fun : 2016-01-14 +fun + +// fund : 2014-03-20 John Castle, LLC +fund + +// furniture : 2014-03-20 Lone Fields, LLC +furniture + +// futbol : 2013-09-20 +futbol + +// fyi : 2015-04-02 Silver Tigers, LLC +fyi + +// gal : 2013-11-07 Asociación puntoGAL +gal + +// gallery : 2013-09-13 Sugar House, LLC +gallery + +// gallo : 2015-06-11 Gallo Vineyards, Inc. +gallo + +// gallup : 2015-02-19 Gallup, Inc. +gallup + +// game : 2015-05-28 Uniregistry, Corp. +game + +// games : 2015-05-28 +games + +// gap : 2015-07-31 The Gap, Inc. +gap + +// garden : 2014-06-26 Top Level Domain Holdings Limited +garden + +// gbiz : 2014-07-17 Charleston Road Registry Inc. +gbiz + +// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems" +gdn + +// gea : 2014-12-04 GEA Group Aktiengesellschaft +gea + +// gent : 2014-01-23 COMBELL GROUP NV/SA +gent + +// genting : 2015-03-12 Resorts World Inc Pte. Ltd. +genting + +// george : 2015-07-31 Wal-Mart Stores, Inc. +george + +// ggee : 2014-01-09 GMO Internet, Inc. +ggee + +// gift : 2013-10-17 Uniregistry, Corp. +gift + +// gifts : 2014-07-03 Goose Sky, LLC +gifts + +// gives : 2014-03-06 United TLD Holdco Ltd. +gives + +// giving : 2014-11-13 Giving Limited +giving + +// glade : 2015-07-23 Johnson Shareholdings, Inc. +glade + +// glass : 2013-11-07 Black Cover, LLC +glass + +// gle : 2014-07-24 Charleston Road Registry Inc. +gle + +// global : 2014-04-17 Dot GLOBAL AS +global + +// globo : 2013-12-19 Globo Comunicação e Participações S.A +globo + +// gmail : 2014-05-01 Charleston Road Registry Inc. +gmail + +// gmbh : 2016-01-29 Extra Dynamite, LLC +gmbh + +// gmo : 2014-01-09 GMO Internet, Inc. +gmo + +// gmx : 2014-04-24 1&1 Mail & Media GmbH +gmx + +// godaddy : 2015-07-23 Go Daddy East, LLC +godaddy + +// gold : 2015-01-22 June Edge, LLC +gold + +// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +goldpoint + +// golf : 2014-12-18 Lone falls, LLC +golf + +// goo : 2014-12-18 NTT Resonant Inc. +goo + +// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company +goodhands + +// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company +goodyear + +// goog : 2014-11-20 Charleston Road Registry Inc. +goog + +// google : 2014-07-24 Charleston Road Registry Inc. +google + +// gop : 2014-01-16 Republican State Leadership Committee, Inc. +gop + +// got : 2014-12-18 Amazon EU S.à r.l. +got + +// grainger : 2015-05-07 Grainger Registry Services, LLC +grainger + +// graphics : 2013-09-13 Over Madison, LLC +graphics + +// gratis : 2014-03-20 Pioneer Tigers, LLC +gratis + +// green : 2014-05-08 Afilias Limited +green + +// gripe : 2014-03-06 Corn Sunset, LLC +gripe + +// grocery : 2016-06-16 Wal-Mart Stores, Inc. +grocery + +// group : 2014-08-15 Romeo Town, LLC +group + +// guardian : 2015-07-30 The Guardian Life Insurance Company of America +guardian + +// gucci : 2014-11-13 Guccio Gucci S.p.a. +gucci + +// guge : 2014-08-28 Charleston Road Registry Inc. +guge + +// guide : 2013-09-13 Snow Moon, LLC +guide + +// guitars : 2013-11-14 Uniregistry, Corp. +guitars + +// guru : 2013-08-27 Pioneer Cypress, LLC +guru + +// hair : 2015-12-03 L'Oréal +hair + +// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH +hamburg + +// hangout : 2014-11-13 Charleston Road Registry Inc. +hangout + +// haus : 2013-12-05 +haus + +// hbo : 2015-07-30 HBO Registry Services, Inc. +hbo + +// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED +hdfc + +// hdfcbank : 2015-02-12 HDFC Bank Limited +hdfcbank + +// health : 2015-02-11 DotHealth, LLC +health + +// healthcare : 2014-06-12 Silver Glen, LLC +healthcare + +// help : 2014-06-26 Uniregistry, Corp. +help + +// helsinki : 2015-02-05 City of Helsinki +helsinki + +// here : 2014-02-06 Charleston Road Registry Inc. +here + +// hermes : 2014-07-10 HERMES INTERNATIONAL +hermes + +// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc. +hgtv + +// hiphop : 2014-03-06 Uniregistry, Corp. +hiphop + +// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc. +hisamitsu + +// hitachi : 2014-10-31 Hitachi, Ltd. +hitachi + +// hiv : 2014-03-13 +hiv + +// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited +hkt + +// hockey : 2015-03-19 Half Willow, LLC +hockey + +// holdings : 2013-08-27 John Madison, LLC +holdings + +// holiday : 2013-11-07 Goose Woods, LLC +holiday + +// homedepot : 2015-04-02 Homer TLC, Inc. +homedepot + +// homegoods : 2015-07-16 The TJX Companies, Inc. +homegoods + +// homes : 2014-01-09 DERHomes, LLC +homes + +// homesense : 2015-07-16 The TJX Companies, Inc. +homesense + +// honda : 2014-12-18 Honda Motor Co., Ltd. +honda + +// honeywell : 2015-07-23 Honeywell GTLD LLC +honeywell + +// horse : 2013-11-21 Top Level Domain Holdings Limited +horse + +// hospital : 2016-10-20 Ruby Pike, LLC +hospital + +// host : 2014-04-17 DotHost Inc. +host + +// hosting : 2014-05-29 Uniregistry, Corp. +hosting + +// hot : 2015-08-27 Amazon EU S.à r.l. +hot + +// hoteles : 2015-03-05 Travel Reservations SRL +hoteles + +// hotels : 2016-04-07 Booking.com B.V. +hotels + +// hotmail : 2014-12-18 Microsoft Corporation +hotmail + +// house : 2013-11-07 Sugar Park, LLC +house + +// how : 2014-01-23 Charleston Road Registry Inc. +how + +// hsbc : 2014-10-24 HSBC Holdings PLC +hsbc + +// htc : 2015-04-02 HTC corporation +htc + +// hughes : 2015-07-30 Hughes Satellite Systems Corporation +hughes + +// hyatt : 2015-07-30 Hyatt GTLD, L.L.C. +hyatt + +// hyundai : 2015-07-09 Hyundai Motor Company +hyundai + +// ibm : 2014-07-31 International Business Machines Corporation +ibm + +// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited +icbc + +// ice : 2014-10-30 IntercontinentalExchange, Inc. +ice + +// icu : 2015-01-08 One.com A/S +icu + +// ieee : 2015-07-23 IEEE Global LLC +ieee + +// ifm : 2014-01-30 ifm electronic gmbh +ifm + +// ikano : 2015-07-09 Ikano S.A. +ikano + +// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +imamat + +// imdb : 2015-06-25 Amazon EU S.à r.l. +imdb + +// immo : 2014-07-10 Auburn Bloom, LLC +immo + +// immobilien : 2013-11-07 United TLD Holdco Ltd. +immobilien + +// industries : 2013-12-05 Outer House, LLC +industries + +// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD. +infiniti + +// ing : 2014-01-23 Charleston Road Registry Inc. +ing + +// ink : 2013-12-05 Top Level Design, LLC +ink + +// institute : 2013-11-07 Outer Maple, LLC +institute + +// insurance : 2015-02-19 fTLD Registry Services LLC +insurance + +// insure : 2014-03-20 Pioneer Willow, LLC +insure + +// intel : 2015-08-06 Intel Corporation +intel + +// international : 2013-11-07 Wild Way, LLC +international + +// intuit : 2015-07-30 Intuit Administrative Services, Inc. +intuit + +// investments : 2014-03-20 Holly Glen, LLC +investments + +// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A. +ipiranga + +// irish : 2014-08-07 Dot-Irish LLC +irish + +// iselect : 2015-02-11 iSelect Ltd +iselect + +// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation) +ismaili + +// ist : 2014-08-28 Istanbul Metropolitan Municipality +ist + +// istanbul : 2014-08-28 Istanbul Metropolitan Municipality +istanbul + +// itau : 2014-10-02 Itau Unibanco Holding S.A. +itau + +// itv : 2015-07-09 ITV Services Limited +itv + +// iveco : 2015-09-03 CNH Industrial N.V. +iveco + +// iwc : 2014-06-23 Richemont DNS Inc. +iwc + +// jaguar : 2014-11-13 Jaguar Land Rover Ltd +jaguar + +// java : 2014-06-19 Oracle Corporation +java + +// jcb : 2014-11-20 JCB Co., Ltd. +jcb + +// jcp : 2015-04-23 JCP Media, Inc. +jcp + +// jeep : 2015-07-30 FCA US LLC. +jeep + +// jetzt : 2014-01-09 +jetzt + +// jewelry : 2015-03-05 Wild Bloom, LLC +jewelry + +// jio : 2015-04-02 Affinity Names, Inc. +jio + +// jlc : 2014-12-04 Richemont DNS Inc. +jlc + +// jll : 2015-04-02 Jones Lang LaSalle Incorporated +jll + +// jmp : 2015-03-26 Matrix IP LLC +jmp + +// jnj : 2015-06-18 Johnson & Johnson Services, Inc. +jnj + +// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry +joburg + +// jot : 2014-12-18 Amazon EU S.à r.l. +jot + +// joy : 2014-12-18 Amazon EU S.à r.l. +joy + +// jpmorgan : 2015-04-30 JPMorgan Chase & Co. +jpmorgan + +// jprs : 2014-09-18 Japan Registry Services Co., Ltd. +jprs + +// juegos : 2014-03-20 Uniregistry, Corp. +juegos + +// juniper : 2015-07-30 JUNIPER NETWORKS, INC. +juniper + +// kaufen : 2013-11-07 United TLD Holdco Ltd. +kaufen + +// kddi : 2014-09-12 KDDI CORPORATION +kddi + +// kerryhotels : 2015-04-30 Kerry Trading Co. Limited +kerryhotels + +// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited +kerrylogistics + +// kerryproperties : 2015-04-09 Kerry Trading Co. Limited +kerryproperties + +// kfh : 2014-12-04 Kuwait Finance House +kfh + +// kia : 2015-07-09 KIA MOTORS CORPORATION +kia + +// kim : 2013-09-23 Afilias Limited +kim + +// kinder : 2014-11-07 Ferrero Trading Lux S.A. +kinder + +// kindle : 2015-06-25 Amazon EU S.à r.l. +kindle + +// kitchen : 2013-09-20 Just Goodbye, LLC +kitchen + +// kiwi : 2013-09-20 DOT KIWI LIMITED +kiwi + +// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH +koeln + +// komatsu : 2015-01-08 Komatsu Ltd. +komatsu + +// kosher : 2015-08-20 Kosher Marketing Assets LLC +kosher + +// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft) +kpmg + +// kpn : 2015-01-08 Koninklijke KPN N.V. +kpn + +// krd : 2013-12-05 KRG Department of Information Technology +krd + +// kred : 2013-12-19 KredTLD Pty Ltd +kred + +// kuokgroup : 2015-04-09 Kerry Trading Co. Limited +kuokgroup + +// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen +kyoto + +// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA +lacaixa + +// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC +ladbrokes + +// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A. +lamborghini + +// lamer : 2015-10-01 The Estée Lauder Companies Inc. +lamer + +// lancaster : 2015-02-12 LANCASTER +lancaster + +// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V. +lancia + +// lancome : 2015-07-23 L'Oréal +lancome + +// land : 2013-09-10 Pine Moon, LLC +land + +// landrover : 2014-11-13 Jaguar Land Rover Ltd +landrover + +// lanxess : 2015-07-30 LANXESS Corporation +lanxess + +// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated +lasalle + +// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico +lat + +// latino : 2015-07-30 Dish DBS Corporation +latino + +// latrobe : 2014-06-16 La Trobe University +latrobe + +// law : 2015-01-22 Minds + Machines Group Limited +law + +// lawyer : 2014-03-20 +lawyer + +// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant") +lds + +// lease : 2014-03-06 Victor Trail, LLC +lease + +// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc +leclerc + +// lefrak : 2015-07-16 LeFrak Organization, Inc. +lefrak + +// legal : 2014-10-16 Blue Falls, LLC +legal + +// lego : 2015-07-16 LEGO Juris A/S +lego + +// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION +lexus + +// lgbt : 2014-05-08 Afilias Limited +lgbt + +// liaison : 2014-10-02 Liaison Technologies, Incorporated +liaison + +// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +lidl + +// life : 2014-02-06 Trixy Oaks, LLC +life + +// lifeinsurance : 2015-01-15 American Council of Life Insurers +lifeinsurance + +// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc. +lifestyle + +// lighting : 2013-08-27 John McCook, LLC +lighting + +// like : 2014-12-18 Amazon EU S.à r.l. +like + +// lilly : 2015-07-31 Eli Lilly and Company +lilly + +// limited : 2014-03-06 Big Fest, LLC +limited + +// limo : 2013-10-17 Hidden Frostbite, LLC +limo + +// lincoln : 2014-11-13 Ford Motor Company +lincoln + +// linde : 2014-12-04 Linde Aktiengesellschaft +linde + +// link : 2013-11-14 Uniregistry, Corp. +link + +// lipsy : 2015-06-25 Lipsy Ltd +lipsy + +// live : 2014-12-04 +live + +// living : 2015-07-30 Lifestyle Domain Holdings, Inc. +living + +// lixil : 2015-03-19 LIXIL Group Corporation +lixil + +// loan : 2014-11-20 dot Loan Limited +loan + +// loans : 2014-03-20 June Woods, LLC +loans + +// locker : 2015-06-04 Dish DBS Corporation +locker + +// locus : 2015-06-25 Locus Analytics LLC +locus + +// loft : 2015-07-30 Annco, Inc. +loft + +// lol : 2015-01-30 Uniregistry, Corp. +lol + +// london : 2013-11-14 Dot London Domains Limited +london + +// lotte : 2014-11-07 Lotte Holdings Co., Ltd. +lotte + +// lotto : 2014-04-10 Afilias Limited +lotto + +// love : 2014-12-22 Merchant Law Group LLP +love + +// lpl : 2015-07-30 LPL Holdings, Inc. +lpl + +// lplfinancial : 2015-07-30 LPL Holdings, Inc. +lplfinancial + +// ltd : 2014-09-25 Over Corner, LLC +ltd + +// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA +ltda + +// lundbeck : 2015-08-06 H. Lundbeck A/S +lundbeck + +// lupin : 2014-11-07 LUPIN LIMITED +lupin + +// luxe : 2014-01-09 Top Level Domain Holdings Limited +luxe + +// luxury : 2013-10-17 Luxury Partners, LLC +luxury + +// macys : 2015-07-31 Macys, Inc. +macys + +// madrid : 2014-05-01 Comunidad de Madrid +madrid + +// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF) +maif + +// maison : 2013-12-05 Victor Frostbite, LLC +maison + +// makeup : 2015-01-15 L'Oréal +makeup + +// man : 2014-12-04 MAN SE +man + +// management : 2013-11-07 John Goodbye, LLC +management + +// mango : 2013-10-24 PUNTO FA S.L. +mango + +// map : 2016-06-09 Charleston Road Registry Inc. +map + +// market : 2014-03-06 +market + +// marketing : 2013-11-07 Fern Pass, LLC +marketing + +// markets : 2014-12-11 IG Group Holdings PLC +markets + +// marriott : 2014-10-09 Marriott Worldwide Corporation +marriott + +// marshalls : 2015-07-16 The TJX Companies, Inc. +marshalls + +// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V. +maserati + +// mattel : 2015-08-06 Mattel Sites, Inc. +mattel + +// mba : 2015-04-02 Lone Hollow, LLC +mba + +// mcd : 2015-07-30 McDonald’s Corporation +mcd + +// mcdonalds : 2015-07-30 McDonald’s Corporation +mcdonalds + +// mckinsey : 2015-07-31 McKinsey Holdings, Inc. +mckinsey + +// med : 2015-08-06 Medistry LLC +med + +// media : 2014-03-06 Grand Glen, LLC +media + +// meet : 2014-01-16 +meet + +// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation +melbourne + +// meme : 2014-01-30 Charleston Road Registry Inc. +meme + +// memorial : 2014-10-16 Dog Beach, LLC +memorial + +// men : 2015-02-26 Exclusive Registry Limited +men + +// menu : 2013-09-11 Wedding TLD2, LLC +menu + +// meo : 2014-11-07 PT Comunicacoes S.A. +meo + +// merckmsd : 2016-07-14 MSD Registry Holdings, Inc. +merckmsd + +// metlife : 2015-05-07 MetLife Services and Solutions, LLC +metlife + +// miami : 2013-12-19 Top Level Domain Holdings Limited +miami + +// microsoft : 2014-12-18 Microsoft Corporation +microsoft + +// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft +mini + +// mint : 2015-07-30 Intuit Administrative Services, Inc. +mint + +// mit : 2015-07-02 Massachusetts Institute of Technology +mit + +// mitsubishi : 2015-07-23 Mitsubishi Corporation +mitsubishi + +// mlb : 2015-05-21 MLB Advanced Media DH, LLC +mlb + +// mls : 2015-04-23 The Canadian Real Estate Association +mls + +// mma : 2014-11-07 MMA IARD +mma + +// mobile : 2016-06-02 Dish DBS Corporation +mobile + +// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L. +mobily + +// moda : 2013-11-07 United TLD Holdco Ltd. +moda + +// moe : 2013-11-13 Interlink Co., Ltd. +moe + +// moi : 2014-12-18 Amazon EU S.à r.l. +moi + +// mom : 2015-04-16 Uniregistry, Corp. +mom + +// monash : 2013-09-30 Monash University +monash + +// money : 2014-10-16 Outer McCook, LLC +money + +// monster : 2015-09-11 Monster Worldwide, Inc. +monster + +// montblanc : 2014-06-23 Richemont DNS Inc. +montblanc + +// mopar : 2015-07-30 FCA US LLC. +mopar + +// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant") +mormon + +// mortgage : 2014-03-20 +mortgage + +// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +moscow + +// moto : 2015-06-04 +moto + +// motorcycles : 2014-01-09 DERMotorcycles, LLC +motorcycles + +// mov : 2014-01-30 Charleston Road Registry Inc. +mov + +// movie : 2015-02-05 New Frostbite, LLC +movie + +// movistar : 2014-10-16 Telefónica S.A. +movistar + +// msd : 2015-07-23 MSD Registry Holdings, Inc. +msd + +// mtn : 2014-12-04 MTN Dubai Limited +mtn + +// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation +mtpc + +// mtr : 2015-03-12 MTR Corporation Limited +mtr + +// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC +mutual + +// nab : 2015-08-20 National Australia Bank Limited +nab + +// nadex : 2014-12-11 IG Group Holdings PLC +nadex + +// nagoya : 2013-10-24 GMO Registry, Inc. +nagoya + +// nationwide : 2015-07-23 Nationwide Mutual Insurance Company +nationwide + +// natura : 2015-03-12 NATURA COSMÉTICOS S.A. +natura + +// navy : 2014-03-06 United TLD Holdco Ltd. +navy + +// nba : 2015-07-31 NBA REGISTRY, LLC +nba + +// nec : 2015-01-08 NEC Corporation +nec + +// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA +netbank + +// netflix : 2015-06-18 Netflix, Inc. +netflix + +// network : 2013-11-14 Trixy Manor, LLC +network + +// neustar : 2013-12-05 NeuStar, Inc. +neustar + +// new : 2014-01-30 Charleston Road Registry Inc. +new + +// newholland : 2015-09-03 CNH Industrial N.V. +newholland + +// news : 2014-12-18 +news + +// next : 2015-06-18 Next plc +next + +// nextdirect : 2015-06-18 Next plc +nextdirect + +// nexus : 2014-07-24 Charleston Road Registry Inc. +nexus + +// nfl : 2015-07-23 NFL Reg Ops LLC +nfl + +// ngo : 2014-03-06 Public Interest Registry +ngo + +// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK) +nhk + +// nico : 2014-12-04 DWANGO Co., Ltd. +nico + +// nike : 2015-07-23 NIKE, Inc. +nike + +// nikon : 2015-05-21 NIKON CORPORATION +nikon + +// ninja : 2013-11-07 United TLD Holdco Ltd. +ninja + +// nissan : 2014-03-27 NISSAN MOTOR CO., LTD. +nissan + +// nissay : 2015-10-29 Nippon Life Insurance Company +nissay + +// nokia : 2015-01-08 Nokia Corporation +nokia + +// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC +northwesternmutual + +// norton : 2014-12-04 Symantec Corporation +norton + +// now : 2015-06-25 Amazon EU S.à r.l. +now + +// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +nowruz + +// nowtv : 2015-05-14 Starbucks (HK) Limited +nowtv + +// nra : 2014-05-22 NRA Holdings Company, INC. +nra + +// nrw : 2013-11-21 Minds + Machines GmbH +nrw + +// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION +ntt + +// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications +nyc + +// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA +obi + +// observer : 2015-04-30 +observer + +// off : 2015-07-23 Johnson Shareholdings, Inc. +off + +// office : 2015-03-12 Microsoft Corporation +office + +// okinawa : 2013-12-05 BusinessRalliart Inc. +okinawa + +// olayan : 2015-05-14 Crescent Holding GmbH +olayan + +// olayangroup : 2015-05-14 Crescent Holding GmbH +olayangroup + +// oldnavy : 2015-07-31 The Gap, Inc. +oldnavy + +// ollo : 2015-06-04 Dish DBS Corporation +ollo + +// omega : 2015-01-08 The Swatch Group Ltd +omega + +// one : 2014-11-07 One.com A/S +one + +// ong : 2014-03-06 Public Interest Registry +ong + +// onl : 2013-09-16 I-Registry Ltd. +onl + +// online : 2015-01-15 DotOnline Inc. +online + +// onyourside : 2015-07-23 Nationwide Mutual Insurance Company +onyourside + +// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED +ooo + +// open : 2015-07-31 American Express Travel Related Services Company, Inc. +open + +// oracle : 2014-06-19 Oracle Corporation +oracle + +// orange : 2015-03-12 Orange Brand Services Limited +orange + +// organic : 2014-03-27 Afilias Limited +organic + +// orientexpress : 2015-02-05 +orientexpress + +// origins : 2015-10-01 The Estée Lauder Companies Inc. +origins + +// osaka : 2014-09-04 Interlink Co., Ltd. +osaka + +// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd. +otsuka + +// ott : 2015-06-04 Dish DBS Corporation +ott + +// ovh : 2014-01-16 OVH SAS +ovh + +// page : 2014-12-04 Charleston Road Registry Inc. +page + +// pamperedchef : 2015-02-05 The Pampered Chef, Ltd. +pamperedchef + +// panasonic : 2015-07-30 Panasonic Corporation +panasonic + +// panerai : 2014-11-07 Richemont DNS Inc. +panerai + +// paris : 2014-01-30 City of Paris +paris + +// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +pars + +// partners : 2013-12-05 Magic Glen, LLC +partners + +// parts : 2013-12-05 Sea Goodbye, LLC +parts + +// party : 2014-09-11 Blue Sky Registry Limited +party + +// passagens : 2015-03-05 Travel Reservations SRL +passagens + +// pay : 2015-08-27 Amazon EU S.à r.l. +pay + +// pccw : 2015-05-14 PCCW Enterprises Limited +pccw + +// pet : 2015-05-07 Afilias plc +pet + +// pfizer : 2015-09-11 Pfizer Inc. +pfizer + +// pharmacy : 2014-06-19 National Association of Boards of Pharmacy +pharmacy + +// phd : 2016-07-28 Charleston Road Registry Inc. +phd + +// philips : 2014-11-07 Koninklijke Philips N.V. +philips + +// phone : 2016-06-02 Dish DBS Corporation +phone + +// photo : 2013-11-14 Uniregistry, Corp. +photo + +// photography : 2013-09-20 Sugar Glen, LLC +photography + +// photos : 2013-10-17 Sea Corner, LLC +photos + +// physio : 2014-05-01 PhysBiz Pty Ltd +physio + +// piaget : 2014-10-16 Richemont DNS Inc. +piaget + +// pics : 2013-11-14 Uniregistry, Corp. +pics + +// pictet : 2014-06-26 Pictet Europe S.A. +pictet + +// pictures : 2014-03-06 Foggy Sky, LLC +pictures + +// pid : 2015-01-08 Top Level Spectrum, Inc. +pid + +// pin : 2014-12-18 Amazon EU S.à r.l. +pin + +// ping : 2015-06-11 Ping Registry Provider, Inc. +ping + +// pink : 2013-10-01 Afilias Limited +pink + +// pioneer : 2015-07-16 Pioneer Corporation +pioneer + +// pizza : 2014-06-26 Foggy Moon, LLC +pizza + +// place : 2014-04-24 Snow Galley, LLC +place + +// play : 2015-03-05 Charleston Road Registry Inc. +play + +// playstation : 2015-07-02 Sony Computer Entertainment Inc. +playstation + +// plumbing : 2013-09-10 Spring Tigers, LLC +plumbing + +// plus : 2015-02-05 Sugar Mill, LLC +plus + +// pnc : 2015-07-02 PNC Domain Co., LLC +pnc + +// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +pohl + +// poker : 2014-07-03 Afilias Domains No. 5 Limited +poker + +// politie : 2015-08-20 Politie Nederland +politie + +// porn : 2014-10-16 ICM Registry PN LLC +porn + +// pramerica : 2015-07-30 Prudential Financial, Inc. +pramerica + +// praxi : 2013-12-05 Praxi S.p.A. +praxi + +// press : 2014-04-03 DotPress Inc. +press + +// prime : 2015-06-25 Amazon EU S.à r.l. +prime + +// prod : 2014-01-23 Charleston Road Registry Inc. +prod + +// productions : 2013-12-05 Magic Birch, LLC +productions + +// prof : 2014-07-24 Charleston Road Registry Inc. +prof + +// progressive : 2015-07-23 Progressive Casualty Insurance Company +progressive + +// promo : 2014-12-18 +promo + +// properties : 2013-12-05 Big Pass, LLC +properties + +// property : 2014-05-22 Uniregistry, Corp. +property + +// protection : 2015-04-23 +protection + +// pru : 2015-07-30 Prudential Financial, Inc. +pru + +// prudential : 2015-07-30 Prudential Financial, Inc. +prudential + +// pub : 2013-12-12 United TLD Holdco Ltd. +pub + +// pwc : 2015-10-29 PricewaterhouseCoopers LLP +pwc + +// qpon : 2013-11-14 dotCOOL, Inc. +qpon + +// quebec : 2013-12-19 PointQuébec Inc +quebec + +// quest : 2015-03-26 Quest ION Limited +quest + +// qvc : 2015-07-30 QVC, Inc. +qvc + +// racing : 2014-12-04 Premier Registry Limited +racing + +// radio : 2016-07-21 European Broadcasting Union (EBU) +radio + +// raid : 2015-07-23 Johnson Shareholdings, Inc. +raid + +// read : 2014-12-18 Amazon EU S.à r.l. +read + +// realestate : 2015-09-11 dotRealEstate LLC +realestate + +// realtor : 2014-05-29 Real Estate Domains LLC +realtor + +// realty : 2015-03-19 Fegistry, LLC +realty + +// recipes : 2013-10-17 Grand Island, LLC +recipes + +// red : 2013-11-07 Afilias Limited +red + +// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. +redstone + +// redumbrella : 2015-03-26 Travelers TLD, LLC +redumbrella + +// rehab : 2014-03-06 United TLD Holdco Ltd. +rehab + +// reise : 2014-03-13 +reise + +// reisen : 2014-03-06 New Cypress, LLC +reisen + +// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc. +reit + +// reliance : 2015-04-02 Reliance Industries Limited +reliance + +// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd. +ren + +// rent : 2014-12-04 DERRent, LLC +rent + +// rentals : 2013-12-05 Big Hollow,LLC +rentals + +// repair : 2013-11-07 Lone Sunset, LLC +repair + +// report : 2013-12-05 Binky Glen, LLC +report + +// republican : 2014-03-20 United TLD Holdco Ltd. +republican + +// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +rest + +// restaurant : 2014-07-03 Snow Avenue, LLC +restaurant + +// review : 2014-11-20 dot Review Limited +review + +// reviews : 2013-09-13 +reviews + +// rexroth : 2015-06-18 Robert Bosch GMBH +rexroth + +// rich : 2013-11-21 I-Registry Ltd. +rich + +// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited +richardli + +// ricoh : 2014-11-20 Ricoh Company, Ltd. +ricoh + +// rightathome : 2015-07-23 Johnson Shareholdings, Inc. +rightathome + +// ril : 2015-04-02 Reliance Industries Limited +ril + +// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO +rio + +// rip : 2014-07-10 United TLD Holdco Ltd. +rip + +// rmit : 2015-11-19 Royal Melbourne Institute of Technology +rmit + +// rocher : 2014-12-18 Ferrero Trading Lux S.A. +rocher + +// rocks : 2013-11-14 +rocks + +// rodeo : 2013-12-19 Top Level Domain Holdings Limited +rodeo + +// rogers : 2015-08-06 Rogers Communications Partnership +rogers + +// room : 2014-12-18 Amazon EU S.à r.l. +room + +// rsvp : 2014-05-08 Charleston Road Registry Inc. +rsvp + +// rugby : 2016-12-15 World Rugby Strategic Developments Limited +rugby + +// ruhr : 2013-10-02 regiodot GmbH & Co. KG +ruhr + +// run : 2015-03-19 Snow Park, LLC +run + +// rwe : 2015-04-02 RWE AG +rwe + +// ryukyu : 2014-01-09 BusinessRalliart Inc. +ryukyu + +// saarland : 2013-12-12 dotSaarland GmbH +saarland + +// safe : 2014-12-18 Amazon EU S.à r.l. +safe + +// safety : 2015-01-08 Safety Registry Services, LLC. +safety + +// sakura : 2014-12-18 SAKURA Internet Inc. +sakura + +// sale : 2014-10-16 +sale + +// salon : 2014-12-11 Outer Orchard, LLC +salon + +// samsclub : 2015-07-31 Wal-Mart Stores, Inc. +samsclub + +// samsung : 2014-04-03 SAMSUNG SDS CO., LTD +samsung + +// sandvik : 2014-11-13 Sandvik AB +sandvik + +// sandvikcoromant : 2014-11-07 Sandvik AB +sandvikcoromant + +// sanofi : 2014-10-09 Sanofi +sanofi + +// sap : 2014-03-27 SAP AG +sap + +// sapo : 2014-11-07 PT Comunicacoes S.A. +sapo + +// sarl : 2014-07-03 Delta Orchard, LLC +sarl + +// sas : 2015-04-02 Research IP LLC +sas + +// save : 2015-06-25 Amazon EU S.à r.l. +save + +// saxo : 2014-10-31 Saxo Bank A/S +saxo + +// sbi : 2015-03-12 STATE BANK OF INDIA +sbi + +// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION +sbs + +// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ) +sca + +// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB") +scb + +// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG +schaeffler + +// schmidt : 2014-04-03 SALM S.A.S. +schmidt + +// scholarships : 2014-04-24 Scholarships.com, LLC +scholarships + +// school : 2014-12-18 Little Galley, LLC +school + +// schule : 2014-03-06 Outer Moon, LLC +schule + +// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG +schwarz + +// science : 2014-09-11 dot Science Limited +science + +// scjohnson : 2015-07-23 Johnson Shareholdings, Inc. +scjohnson + +// scor : 2014-10-31 SCOR SE +scor + +// scot : 2014-01-23 Dot Scot Registry Limited +scot + +// search : 2016-06-09 Charleston Road Registry Inc. +search + +// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal) +seat + +// secure : 2015-08-27 Amazon EU S.à r.l. +secure + +// security : 2015-05-14 +security + +// seek : 2014-12-04 Seek Limited +seek + +// select : 2015-10-08 iSelect Ltd +select + +// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A. +sener + +// services : 2014-02-27 Fox Castle, LLC +services + +// ses : 2015-07-23 SES +ses + +// seven : 2015-08-06 Seven West Media Ltd +seven + +// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG +sew + +// sex : 2014-11-13 ICM Registry SX LLC +sex + +// sexy : 2013-09-11 Uniregistry, Corp. +sexy + +// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR +sfr + +// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited +shangrila + +// sharp : 2014-05-01 Sharp Corporation +sharp + +// shaw : 2015-04-23 Shaw Cablesystems G.P. +shaw + +// shell : 2015-07-30 Shell Information Technology International Inc +shell + +// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +shia + +// shiksha : 2013-11-14 Afilias Limited +shiksha + +// shoes : 2013-10-02 Binky Galley, LLC +shoes + +// shop : 2016-04-08 GMO Registry, Inc. +shop + +// shopping : 2016-03-31 +shopping + +// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +shouji + +// show : 2015-03-05 Snow Beach, LLC +show + +// showtime : 2015-08-06 CBS Domains Inc. +showtime + +// shriram : 2014-01-23 Shriram Capital Ltd. +shriram + +// silk : 2015-06-25 Amazon EU S.à r.l. +silk + +// sina : 2015-03-12 Sina Corporation +sina + +// singles : 2013-08-27 Fern Madison, LLC +singles + +// site : 2015-01-15 DotSite Inc. +site + +// ski : 2015-04-09 STARTING DOT LIMITED +ski + +// skin : 2015-01-15 L'Oréal +skin + +// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch +sky + +// skype : 2014-12-18 Microsoft Corporation +skype + +// sling : 2015-07-30 Hughes Satellite Systems Corporation +sling + +// smart : 2015-07-09 Smart Communications, Inc. (SMART) +smart + +// smile : 2014-12-18 Amazon EU S.à r.l. +smile + +// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F +sncf + +// soccer : 2015-03-26 Foggy Shadow, LLC +soccer + +// social : 2013-11-07 United TLD Holdco Ltd. +social + +// softbank : 2015-07-02 SoftBank Corp. +softbank + +// software : 2014-03-20 +software + +// sohu : 2013-12-19 Sohu.com Limited +sohu + +// solar : 2013-11-07 Ruby Town, LLC +solar + +// solutions : 2013-11-07 Silver Cover, LLC +solutions + +// song : 2015-02-26 Amazon EU S.à r.l. +song + +// sony : 2015-01-08 Sony Corporation +sony + +// soy : 2014-01-23 Charleston Road Registry Inc. +soy + +// space : 2014-04-03 DotSpace Inc. +space + +// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG +spiegel + +// spot : 2015-02-26 Amazon EU S.à r.l. +spot + +// spreadbetting : 2014-12-11 IG Group Holdings PLC +spreadbetting + +// srl : 2015-05-07 mySRL GmbH +srl + +// srt : 2015-07-30 FCA US LLC. +srt + +// stada : 2014-11-13 STADA Arzneimittel AG +stada + +// staples : 2015-07-30 Staples, Inc. +staples + +// star : 2015-01-08 Star India Private Limited +star + +// starhub : 2015-02-05 StarHub Ltd +starhub + +// statebank : 2015-03-12 STATE BANK OF INDIA +statebank + +// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company +statefarm + +// statoil : 2014-12-04 Statoil ASA +statoil + +// stc : 2014-10-09 Saudi Telecom Company +stc + +// stcgroup : 2014-10-09 Saudi Telecom Company +stcgroup + +// stockholm : 2014-12-18 Stockholms kommun +stockholm + +// storage : 2014-12-22 Self Storage Company LLC +storage + +// store : 2015-04-09 DotStore Inc. +store + +// stream : 2016-01-08 dot Stream Limited +stream + +// studio : 2015-02-11 +studio + +// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD +study + +// style : 2014-12-04 Binky Moon, LLC +style + +// sucks : 2014-12-22 Vox Populi Registry Inc. +sucks + +// supplies : 2013-12-19 Atomic Fields, LLC +supplies + +// supply : 2013-12-19 Half Falls, LLC +supply + +// support : 2013-10-24 Grand Orchard, LLC +support + +// surf : 2014-01-09 Top Level Domain Holdings Limited +surf + +// surgery : 2014-03-20 Tin Avenue, LLC +surgery + +// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION +suzuki + +// swatch : 2015-01-08 The Swatch Group Ltd +swatch + +// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited +swiftcover + +// swiss : 2014-10-16 Swiss Confederation +swiss + +// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet +sydney + +// symantec : 2014-12-04 Symantec Corporation +symantec + +// systems : 2013-11-07 Dash Cypress, LLC +systems + +// tab : 2014-12-04 Tabcorp Holdings Limited +tab + +// taipei : 2014-07-10 Taipei City Government +taipei + +// talk : 2015-04-09 Amazon EU S.à r.l. +talk + +// taobao : 2015-01-15 Alibaba Group Holding Limited +taobao + +// target : 2015-07-31 Target Domain Holdings, LLC +target + +// tatamotors : 2015-03-12 Tata Motors Ltd +tatamotors + +// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" +tatar + +// tattoo : 2013-08-30 Uniregistry, Corp. +tattoo + +// tax : 2014-03-20 Storm Orchard, LLC +tax + +// taxi : 2015-03-19 Pine Falls, LLC +taxi + +// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +tci + +// tdk : 2015-06-11 TDK Corporation +tdk + +// team : 2015-03-05 Atomic Lake, LLC +team + +// tech : 2015-01-30 Dot Tech LLC +tech + +// technology : 2013-09-13 Auburn Falls +technology + +// telecity : 2015-02-19 TelecityGroup International Limited +telecity + +// telefonica : 2014-10-16 Telefónica S.A. +telefonica + +// temasek : 2014-08-07 Temasek Holdings (Private) Limited +temasek + +// tennis : 2014-12-04 Cotton Bloom, LLC +tennis + +// teva : 2015-07-02 Teva Pharmaceutical Industries Limited +teva + +// thd : 2015-04-02 Homer TLC, Inc. +thd + +// theater : 2015-03-19 Blue Tigers, LLC +theater + +// theatre : 2015-05-07 +theatre + +// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America +tiaa + +// tickets : 2015-02-05 Accent Media Limited +tickets + +// tienda : 2013-11-14 Victor Manor, LLC +tienda + +// tiffany : 2015-01-30 Tiffany and Company +tiffany + +// tips : 2013-09-20 Corn Willow, LLC +tips + +// tires : 2014-11-07 Dog Edge, LLC +tires + +// tirol : 2014-04-24 punkt Tirol GmbH +tirol + +// tjmaxx : 2015-07-16 The TJX Companies, Inc. +tjmaxx + +// tjx : 2015-07-16 The TJX Companies, Inc. +tjx + +// tkmaxx : 2015-07-16 The TJX Companies, Inc. +tkmaxx + +// tmall : 2015-01-15 Alibaba Group Holding Limited +tmall + +// today : 2013-09-20 Pearl Woods, LLC +today + +// tokyo : 2013-11-13 GMO Registry, Inc. +tokyo + +// tools : 2013-11-21 Pioneer North, LLC +tools + +// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd. +top + +// toray : 2014-12-18 Toray Industries, Inc. +toray + +// toshiba : 2014-04-10 TOSHIBA Corporation +toshiba + +// total : 2015-08-06 Total SA +total + +// tours : 2015-01-22 Sugar Station, LLC +tours + +// town : 2014-03-06 Koko Moon, LLC +town + +// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION +toyota + +// toys : 2014-03-06 Pioneer Orchard, LLC +toys + +// trade : 2014-01-23 Elite Registry Limited +trade + +// trading : 2014-12-11 IG Group Holdings PLC +trading + +// training : 2013-11-07 Wild Willow, LLC +training + +// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc. +travelchannel + +// travelers : 2015-03-26 Travelers TLD, LLC +travelers + +// travelersinsurance : 2015-03-26 Travelers TLD, LLC +travelersinsurance + +// trust : 2014-10-16 +trust + +// trv : 2015-03-26 Travelers TLD, LLC +trv + +// tube : 2015-06-11 Latin American Telecom LLC +tube + +// tui : 2014-07-03 TUI AG +tui + +// tunes : 2015-02-26 Amazon EU S.à r.l. +tunes + +// tushu : 2014-12-18 Amazon EU S.à r.l. +tushu + +// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED +tvs + +// ubank : 2015-08-20 National Australia Bank Limited +ubank + +// ubs : 2014-12-11 UBS AG +ubs + +// uconnect : 2015-07-30 FCA US LLC. +uconnect + +// unicom : 2015-10-15 China United Network Communications Corporation Limited +unicom + +// university : 2014-03-06 Little Station, LLC +university + +// uno : 2013-09-11 Dot Latin LLC +uno + +// uol : 2014-05-01 UBN INTERNET LTDA. +uol + +// ups : 2015-06-25 UPS Market Driver, Inc. +ups + +// vacations : 2013-12-05 Atomic Tigers, LLC +vacations + +// vana : 2014-12-11 Lifestyle Domain Holdings, Inc. +vana + +// vanguard : 2015-09-03 The Vanguard Group, Inc. +vanguard + +// vegas : 2014-01-16 Dot Vegas, Inc. +vegas + +// ventures : 2013-08-27 Binky Lake, LLC +ventures + +// verisign : 2015-08-13 VeriSign, Inc. +verisign + +// versicherung : 2014-03-20 +versicherung + +// vet : 2014-03-06 +vet + +// viajes : 2013-10-17 Black Madison, LLC +viajes + +// video : 2014-10-16 +video + +// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +vig + +// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd. +viking + +// villas : 2013-12-05 New Sky, LLC +villas + +// vin : 2015-06-18 Holly Shadow, LLC +vin + +// vip : 2015-01-22 Minds + Machines Group Limited +vip + +// virgin : 2014-09-25 Virgin Enterprises Limited +virgin + +// visa : 2015-07-30 Visa Worldwide Pte. Limited +visa + +// vision : 2013-12-05 Koko Station, LLC +vision + +// vista : 2014-09-18 Vistaprint Limited +vista + +// vistaprint : 2014-09-18 Vistaprint Limited +vistaprint + +// viva : 2014-11-07 Saudi Telecom Company +viva + +// vivo : 2015-07-31 Telefonica Brasil S.A. +vivo + +// vlaanderen : 2014-02-06 DNS.be vzw +vlaanderen + +// vodka : 2013-12-19 Top Level Domain Holdings Limited +vodka + +// volkswagen : 2015-05-14 Volkswagen Group of America Inc. +volkswagen + +// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag +volvo + +// vote : 2013-11-21 Monolith Registry LLC +vote + +// voting : 2013-11-13 Valuetainment Corp. +voting + +// voto : 2013-11-21 Monolith Registry LLC +voto + +// voyage : 2013-08-27 Ruby House, LLC +voyage + +// vuelos : 2015-03-05 Travel Reservations SRL +vuelos + +// wales : 2014-05-08 Nominet UK +wales + +// walmart : 2015-07-31 Wal-Mart Stores, Inc. +walmart + +// walter : 2014-11-13 Sandvik AB +walter + +// wang : 2013-10-24 Zodiac Leo Limited +wang + +// wanggou : 2014-12-18 Amazon EU S.à r.l. +wanggou + +// warman : 2015-06-18 Weir Group IP Limited +warman + +// watch : 2013-11-14 Sand Shadow, LLC +watch + +// watches : 2014-12-22 Richemont DNS Inc. +watches + +// weather : 2015-01-08 The Weather Channel, LLC +weather + +// weatherchannel : 2015-03-12 The Weather Channel, LLC +weatherchannel + +// webcam : 2014-01-23 dot Webcam Limited +webcam + +// weber : 2015-06-04 Saint-Gobain Weber SA +weber + +// website : 2014-04-03 DotWebsite Inc. +website + +// wed : 2013-10-01 Atgron, Inc. +wed + +// wedding : 2014-04-24 Top Level Domain Holdings Limited +wedding + +// weibo : 2015-03-05 Sina Corporation +weibo + +// weir : 2015-01-29 Weir Group IP Limited +weir + +// whoswho : 2014-02-20 Who's Who Registry +whoswho + +// wien : 2013-10-28 punkt.wien GmbH +wien + +// wiki : 2013-11-07 Top Level Design, LLC +wiki + +// williamhill : 2014-03-13 William Hill Organization Limited +williamhill + +// win : 2014-11-20 First Registry Limited +win + +// windows : 2014-12-18 Microsoft Corporation +windows + +// wine : 2015-06-18 June Station, LLC +wine + +// winners : 2015-07-16 The TJX Companies, Inc. +winners + +// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC +wme + +// wolterskluwer : 2015-08-06 Wolters Kluwer N.V. +wolterskluwer + +// woodside : 2015-07-09 Woodside Petroleum Limited +woodside + +// work : 2013-12-19 Top Level Domain Holdings Limited +work + +// works : 2013-11-14 Little Dynamite, LLC +works + +// world : 2014-06-12 Bitter Fields, LLC +world + +// wow : 2015-10-08 Amazon EU S.à r.l. +wow + +// wtc : 2013-12-19 World Trade Centers Association, Inc. +wtc + +// wtf : 2014-03-06 Hidden Way, LLC +wtf + +// xbox : 2014-12-18 Microsoft Corporation +xbox + +// xerox : 2014-10-24 Xerox DNHC LLC +xerox + +// xfinity : 2015-07-09 Comcast IP Holdings I, LLC +xfinity + +// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +xihuan + +// xin : 2014-12-11 Elegant Leader Limited +xin + +// xn--11b4c3d : 2015-01-15 VeriSign Sarl +कॉम + +// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l. +セール + +// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd. +佛山 + +// xn--30rr7y : 2014-06-12 Excellent First Limited +慈善 + +// xn--3bst00m : 2013-09-13 Eagle Horizon Limited +集团 + +// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED +在线 + +// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd. +大众汽车 + +// xn--3pxu8k : 2015-01-15 VeriSign Sarl +点看 + +// xn--42c2d9a : 2015-01-15 VeriSign Sarl +คอม + +// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited +八卦 + +// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment +موقع + +// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center +公益 + +// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) +公司 + +// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited +香格里拉 + +// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited +网站 + +// xn--6frz82g : 2013-09-23 Afilias Limited +移动 + +// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited +我爱你 + +// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +москва + +// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +католик + +// xn--80asehdb : 2013-07-14 CORE Association +онлайн + +// xn--80aswg : 2013-07-14 CORE Association +сайт + +// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited +联通 + +// xn--9dbq2a : 2015-01-15 VeriSign Sarl +קום + +// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED +时尚 + +// xn--9krt00a : 2015-03-12 Sina Corporation +微博 + +// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited +淡马锡 + +// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l. +ファッション + +// xn--c1avg : 2013-11-14 Public Interest Registry +орг + +// xn--c2br7g : 2015-01-15 VeriSign Sarl +नेट + +// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l. +ストア + +// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD +삼성 + +// xn--czr694b : 2014-01-16 Dot Trademark TLD Holding Company Limited +商标 + +// xn--czrs0t : 2013-12-19 Wild Island, LLC +商店 + +// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited +商城 + +// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet” +дети + +// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l. +ポイント + +// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社 +新闻 + +// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited +工行 + +// xn--fct429k : 2015-04-09 Amazon EU S.à r.l. +家電 + +// xn--fhbei : 2015-01-15 VeriSign Sarl +كوم + +// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED +中文网 + +// xn--fiq64b : 2013-10-14 CITIC Group Corporation +中信 + +// xn--fjq720a : 2014-05-22 Will Bloom, LLC +娱乐 + +// xn--flw351e : 2014-07-31 Charleston Road Registry Inc. +谷歌 + +// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited +電訊盈科 + +// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited +购物 + +// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l. +クラウド + +// xn--gk3at1e : 2015-10-08 Amazon EU S.à r.l. +通販 + +// xn--hxt814e : 2014-05-15 Zodiac Libra Limited +网店 + +// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry +संगठन + +// xn--imr513n : 2014-12-11 Dot Trademark TLD Holding Company Limited +餐厅 + +// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center) +网络 + +// xn--j1aef : 2015-01-15 VeriSign Sarl +ком + +// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation +诺基亚 + +// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l. +食品 + +// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V. +飞利浦 + +// xn--kpu716f : 2014-12-22 Richemont DNS Inc. +手表 + +// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd +手机 + +// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company +ارامكو + +// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH +العليان + +// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat) +اتصالات + +// xn--mgbab2bd : 2013-10-31 CORE Association +بازار + +// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L. +موبايلي + +// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre +ابوظبي + +// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +كاثوليك + +// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. +همراه + +// xn--mk1bu44c : 2015-01-15 VeriSign Sarl +닷컴 + +// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd. +政府 + +// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd. +شبكة + +// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House +بيتك + +// xn--ngbrx : 2015-11-12 League of Arab States +عرب + +// xn--nqv7f : 2013-11-14 Public Interest Registry +机构 + +// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry +组织机构 + +// xn--nyqy26a : 2014-11-07 Stable Tone Limited +健康 + +// xn--p1acf : 2013-12-12 Rusnames Limited +рус + +// xn--pbt977c : 2014-12-22 Richemont DNS Inc. +珠宝 + +// xn--pssy2u : 2015-01-15 VeriSign Sarl +大拿 + +// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc. +みんな + +// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc. +グーグル + +// xn--rhqv96g : 2013-09-11 Stable Tone Limited +世界 + +// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l. +書籍 + +// xn--ses554g : 2014-01-16 +网址 + +// xn--t60b56a : 2015-01-15 VeriSign Sarl +닷넷 + +// xn--tckwe : 2015-01-15 VeriSign Sarl +コム + +// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +天主教 + +// xn--unup4y : 2013-07-14 Spring Fields, LLC +游戏 + +// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +vermögensberater + +// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG +vermögensberatung + +// xn--vhquv : 2013-08-27 Dash McCook, LLC +企业 + +// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd. +信息 + +// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited +嘉里大酒店 + +// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited +嘉里 + +// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd. +广东 + +// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center +政务 + +// xperia : 2015-05-14 Sony Mobile Communications AB +xperia + +// xyz : 2013-12-05 XYZ.COM LLC +xyz + +// yachts : 2014-01-09 DERYachts, LLC +yachts + +// yahoo : 2015-04-02 Yahoo! Domain Services Inc. +yahoo + +// yamaxun : 2014-12-18 Amazon EU S.à r.l. +yamaxun + +// yandex : 2014-04-10 YANDEX, LLC +yandex + +// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD. +yodobashi + +// yoga : 2014-05-29 Top Level Domain Holdings Limited +yoga + +// yokohama : 2013-12-12 GMO Registry, Inc. +yokohama + +// you : 2015-04-09 Amazon EU S.à r.l. +you + +// youtube : 2014-05-01 Charleston Road Registry Inc. +youtube + +// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD. +yun + +// zappos : 2015-06-25 Amazon EU S.à r.l. +zappos + +// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.) +zara + +// zero : 2014-12-18 Amazon EU S.à r.l. +zero + +// zip : 2014-05-08 Charleston Road Registry Inc. +zip + +// zippo : 2015-07-02 Zadco Company +zippo + +// zone : 2013-11-14 Outer Falls, LLC +zone + +// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich) +zuerich + + +// ===END ICANN DOMAINS=== +// ===BEGIN PRIVATE DOMAINS=== +// (Note: these are in alphabetical order by company name) + +// Agnat sp. z o.o. : https://domena.pl +// Submitted by Przemyslaw Plewa <it-admin@domena.pl> +beep.pl + +// Alces Software Ltd : http://alces-software.com +// Submitted by Mark J. Titorenko <mark.titorenko@alces-software.com> +*.compute.estate +*.alces.network + +// alwaysdata : https://www.alwaysdata.com +// Submitted by Cyril <admin@alwaysdata.com> +*.alwaysdata.net + +// Amazon CloudFront : https://aws.amazon.com/cloudfront/ +// Submitted by Donavan Miller <donavanm@amazon.com> +cloudfront.net + +// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/ +// Submitted by Luke Wells <psl-maintainers@amazon.com> +*.compute.amazonaws.com +*.compute-1.amazonaws.com +*.compute.amazonaws.com.cn +us-east-1.amazonaws.com + +// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ +// Submitted by Luke Wells <psl-maintainers@amazon.com> +elasticbeanstalk.cn-north-1.amazonaws.com.cn +*.elasticbeanstalk.com + +// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/ +// Submitted by Luke Wells <psl-maintainers@amazon.com> +*.elb.amazonaws.com +*.elb.amazonaws.com.cn + +// Amazon S3 : https://aws.amazon.com/s3/ +// Submitted by Luke Wells <psl-maintainers@amazon.com> +s3.amazonaws.com +s3-ap-northeast-1.amazonaws.com +s3-ap-northeast-2.amazonaws.com +s3-ap-south-1.amazonaws.com +s3-ap-southeast-1.amazonaws.com +s3-ap-southeast-2.amazonaws.com +s3-ca-central-1.amazonaws.com +s3-eu-central-1.amazonaws.com +s3-eu-west-1.amazonaws.com +s3-eu-west-2.amazonaws.com +s3-external-1.amazonaws.com +s3-fips-us-gov-west-1.amazonaws.com +s3-sa-east-1.amazonaws.com +s3-us-gov-west-1.amazonaws.com +s3-us-east-2.amazonaws.com +s3-us-west-1.amazonaws.com +s3-us-west-2.amazonaws.com +s3.ap-northeast-2.amazonaws.com +s3.ap-south-1.amazonaws.com +s3.cn-north-1.amazonaws.com.cn +s3.ca-central-1.amazonaws.com +s3.eu-central-1.amazonaws.com +s3.eu-west-2.amazonaws.com +s3.us-east-2.amazonaws.com +s3.dualstack.ap-northeast-1.amazonaws.com +s3.dualstack.ap-northeast-2.amazonaws.com +s3.dualstack.ap-south-1.amazonaws.com +s3.dualstack.ap-southeast-1.amazonaws.com +s3.dualstack.ap-southeast-2.amazonaws.com +s3.dualstack.ca-central-1.amazonaws.com +s3.dualstack.eu-central-1.amazonaws.com +s3.dualstack.eu-west-1.amazonaws.com +s3.dualstack.eu-west-2.amazonaws.com +s3.dualstack.sa-east-1.amazonaws.com +s3.dualstack.us-east-1.amazonaws.com +s3.dualstack.us-east-2.amazonaws.com +s3-website-us-east-1.amazonaws.com +s3-website-us-west-1.amazonaws.com +s3-website-us-west-2.amazonaws.com +s3-website-ap-northeast-1.amazonaws.com +s3-website-ap-southeast-1.amazonaws.com +s3-website-ap-southeast-2.amazonaws.com +s3-website-eu-west-1.amazonaws.com +s3-website-sa-east-1.amazonaws.com +s3-website.ap-northeast-2.amazonaws.com +s3-website.ap-south-1.amazonaws.com +s3-website.ca-central-1.amazonaws.com +s3-website.eu-central-1.amazonaws.com +s3-website.eu-west-2.amazonaws.com +s3-website.us-east-2.amazonaws.com + +// Amune : https://amune.org/ +// Submitted by Team Amune <cert@amune.org> +t3l3p0rt.net +tele.amune.org + +// Aptible : https://www.aptible.com/ +// Submitted by Thomas Orozco <thomas@aptible.com> +on-aptible.com + +// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/ +// Submitted by Hector Martin <marcan@euskalencounter.org> +user.party.eus + +// Association potager.org : https://potager.org/ +// Submitted by Lunar <jardiniers@potager.org> +pimienta.org +poivron.org +potager.org +sweetpepper.org + +// ASUSTOR Inc. : http://www.asustor.com +// Submitted by Vincent Tseng <vincenttseng@asustor.com> +myasustor.com + +// AVM : https://avm.de +// Submitted by Andreas Weise <a.weise@avm.de> +myfritz.net + +// AW AdvisorWebsites.com Software Inc : https://advisorwebsites.com +// Submitted by James Kennedy <domains@advisorwebsites.com> +*.awdev.ca +*.advisor.ws + +// backplane : https://www.backplane.io +// Submitted by Anthony Voutas <anthony@backplane.io> +backplaneapp.io + +// BetaInABox +// Submitted by Adrian <adrian@betainabox.com> +betainabox.com + +// BinaryLane : http://www.binarylane.com +// Submitted by Nathan O'Sullivan <nathan@mammoth.com.au> +bnr.la + +// Boxfuse : https://boxfuse.com +// Submitted by Axel Fontaine <axel@boxfuse.com> +boxfuse.io + +// BrowserSafetyMark +// Submitted by Dave Tharp <browsersafetymark.io@quicinc.com> +browsersafetymark.io + +// callidomus: https://www.callidomus.com/ +// Submitted by Marcus Popp <admin@callidomus.com> +mycd.eu + +// CentralNic : http://www.centralnic.com/names/domains +// Submitted by registry <gavin.brown@centralnic.com> +ae.org +ar.com +br.com +cn.com +com.de +com.se +de.com +eu.com +gb.com +gb.net +hu.com +hu.net +jp.net +jpn.com +kr.com +mex.com +no.com +qc.com +ru.com +sa.com +se.com +se.net +uk.com +uk.net +us.com +uy.com +za.bz +za.com + +// Africa.com Web Solutions Ltd : https://registry.africa.com +// Submitted by Gavin Brown <gavin.brown@centralnic.com> +africa.com + +// iDOT Services Limited : http://www.domain.gr.com +// Submitted by Gavin Brown <gavin.brown@centralnic.com> +gr.com + +// Radix FZC : http://domains.in.net +// Submitted by Gavin Brown <gavin.brown@centralnic.com> +in.net + +// US REGISTRY LLC : http://us.org +// Submitted by Gavin Brown <gavin.brown@centralnic.com> +us.org + +// co.com Registry, LLC : https://registry.co.com +// Submitted by Gavin Brown <gavin.brown@centralnic.com> +co.com + +// c.la : http://www.c.la/ +c.la + +// certmgr.org : https://certmgr.org +// Submitted by B. Blechschmidt <hostmaster@certmgr.org> +certmgr.org + +// Citrix : https://citrix.com +// Submitted by Alex Stoddard <alex.stoddard@citrix.com> +xenapponazure.com + +// ClearVox : http://www.clearvox.nl/ +// Submitted by Leon Rowland <leon@clearvox.nl> +virtueeldomein.nl + +// Cloud66 : https://www.cloud66.com/ +// Submitted by Khash Sajadi <khash@cloud66.com> +c66.me + +// cloudControl : https://www.cloudcontrol.com/ +// Submitted by Tobias Wilken <tw@cloudcontrol.com> +cloudcontrolled.com +cloudcontrolapp.com + +// co.ca : http://registry.co.ca/ +co.ca + +// i-registry s.r.o. : http://www.i-registry.cz/ +// Submitted by Martin Semrad <semrad@i-registry.cz> +co.cz + +// CDN77.com : http://www.cdn77.com +// Submitted by Jan Krpes <jan.krpes@cdn77.com> +c.cdn77.org +cdn77-ssl.net +r.cdn77.net +rsc.cdn77.org +ssl.origin.cdn77-secure.org + +// Cloud DNS Ltd : http://www.cloudns.net +// Submitted by Aleksander Hristov <noc@cloudns.net> +cloudns.asia +cloudns.biz +cloudns.club +cloudns.cc +cloudns.eu +cloudns.in +cloudns.info +cloudns.org +cloudns.pro +cloudns.pw +cloudns.us + +// CoDNS B.V. +co.nl +co.no + +// Commerce Guys, SAS +// Submitted by Damien Tournoud <damien@commerceguys.com> +// CHROMIUM - Disabled as per https://code.google.com/p/chromium/issues/detail?id=459802 +// *.platform.sh + +// COSIMO GmbH http://www.cosimo.de +// Submitted by Rene Marticke <rmarticke@cosimo.de> +dyn.cosidns.de +dynamisches-dns.de +dnsupdater.de +internet-dns.de +l-o-g-i-n.de +dynamic-dns.info +feste-ip.net +knx-server.net +static-access.net + +// Craynic, s.r.o. : http://www.craynic.com/ +// Submitted by Ales Krajnik <ales.krajnik@craynic.com> +realm.cz + +// Cryptonomic : https://cryptonomic.net/ +// Submitted by Andrew Cady <public-suffix-list@cryptonomic.net> +*.cryptonomic.net + +// Cupcake : https://cupcake.io/ +// Submitted by Jonathan Rudenberg <jonathan@cupcake.io> +cupcake.is + +// cyon GmbH : https://www.cyon.ch/ +// Submitted by Dominic Luechinger <dol@cyon.ch> +cyon.link +cyon.site + +// Daplie, Inc : https://daplie.com +// Submitted by AJ ONeal <aj@daplie.com> +daplie.me +localhost.daplie.me + +// Dansk.net : http://www.dansk.net/ +// Submitted by Anani Voule <digital@digital.co.dk> +biz.dk +co.dk +firm.dk +reg.dk +store.dk + +// deSEC : https://desec.io/ +// Submitted by Peter Thomassen <peter@desec.io> +dedyn.io + +// DNShome : https://www.dnshome.de/ +// Submitted by Norbert Auler <mail@dnshome.de> +dnshome.de + +// DreamHost : http://www.dreamhost.com/ +// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com> +dreamhosters.com + +// Drobo : http://www.drobo.com/ +// Submitted by Ricardo Padilha <rpadilha@drobo.com> +mydrobo.com + +// Drud Holdings, LLC. : https://www.drud.com/ +// Submitted by Kevin Bridges <kevin@drud.com> +drud.io +drud.us + +// DuckDNS : http://www.duckdns.org/ +// Submitted by Richard Harper <richard@duckdns.org> +duckdns.org + +// dy.fi : http://dy.fi/ +// Submitted by Heikki Hannikainen <hessu@hes.iki.fi> +dy.fi +tunk.org + +// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ +dyndns-at-home.com +dyndns-at-work.com +dyndns-blog.com +dyndns-free.com +dyndns-home.com +dyndns-ip.com +dyndns-mail.com +dyndns-office.com +dyndns-pics.com +dyndns-remote.com +dyndns-server.com +dyndns-web.com +dyndns-wiki.com +dyndns-work.com +dyndns.biz +dyndns.info +dyndns.org +dyndns.tv +at-band-camp.net +ath.cx +barrel-of-knowledge.info +barrell-of-knowledge.info +better-than.tv +blogdns.com +blogdns.net +blogdns.org +blogsite.org +boldlygoingnowhere.org +broke-it.net +buyshouses.net +cechire.com +dnsalias.com +dnsalias.net +dnsalias.org +dnsdojo.com +dnsdojo.net +dnsdojo.org +does-it.net +doesntexist.com +doesntexist.org +dontexist.com +dontexist.net +dontexist.org +doomdns.com +doomdns.org +dvrdns.org +dyn-o-saur.com +dynalias.com +dynalias.net +dynalias.org +dynathome.net +dyndns.ws +endofinternet.net +endofinternet.org +endoftheinternet.org +est-a-la-maison.com +est-a-la-masion.com +est-le-patron.com +est-mon-blogueur.com +for-better.biz +for-more.biz +for-our.info +for-some.biz +for-the.biz +forgot.her.name +forgot.his.name +from-ak.com +from-al.com +from-ar.com +from-az.net +from-ca.com +from-co.net +from-ct.com +from-dc.com +from-de.com +from-fl.com +from-ga.com +from-hi.com +from-ia.com +from-id.com +from-il.com +from-in.com +from-ks.com +from-ky.com +from-la.net +from-ma.com +from-md.com +from-me.org +from-mi.com +from-mn.com +from-mo.com +from-ms.com +from-mt.com +from-nc.com +from-nd.com +from-ne.com +from-nh.com +from-nj.com +from-nm.com +from-nv.com +from-ny.net +from-oh.com +from-ok.com +from-or.com +from-pa.com +from-pr.com +from-ri.com +from-sc.com +from-sd.com +from-tn.com +from-tx.com +from-ut.com +from-va.com +from-vt.com +from-wa.com +from-wi.com +from-wv.com +from-wy.com +ftpaccess.cc +fuettertdasnetz.de +game-host.org +game-server.cc +getmyip.com +gets-it.net +go.dyndns.org +gotdns.com +gotdns.org +groks-the.info +groks-this.info +ham-radio-op.net +here-for-more.info +hobby-site.com +hobby-site.org +home.dyndns.org +homedns.org +homeftp.net +homeftp.org +homeip.net +homelinux.com +homelinux.net +homelinux.org +homeunix.com +homeunix.net +homeunix.org +iamallama.com +in-the-band.net +is-a-anarchist.com +is-a-blogger.com +is-a-bookkeeper.com +is-a-bruinsfan.org +is-a-bulls-fan.com +is-a-candidate.org +is-a-caterer.com +is-a-celticsfan.org +is-a-chef.com +is-a-chef.net +is-a-chef.org +is-a-conservative.com +is-a-cpa.com +is-a-cubicle-slave.com +is-a-democrat.com +is-a-designer.com +is-a-doctor.com +is-a-financialadvisor.com +is-a-geek.com +is-a-geek.net +is-a-geek.org +is-a-green.com +is-a-guru.com +is-a-hard-worker.com +is-a-hunter.com +is-a-knight.org +is-a-landscaper.com +is-a-lawyer.com +is-a-liberal.com +is-a-libertarian.com +is-a-linux-user.org +is-a-llama.com +is-a-musician.com +is-a-nascarfan.com +is-a-nurse.com +is-a-painter.com +is-a-patsfan.org +is-a-personaltrainer.com +is-a-photographer.com +is-a-player.com +is-a-republican.com +is-a-rockstar.com +is-a-socialist.com +is-a-soxfan.org +is-a-student.com +is-a-teacher.com +is-a-techie.com +is-a-therapist.com +is-an-accountant.com +is-an-actor.com +is-an-actress.com +is-an-anarchist.com +is-an-artist.com +is-an-engineer.com +is-an-entertainer.com +is-by.us +is-certified.com +is-found.org +is-gone.com +is-into-anime.com +is-into-cars.com +is-into-cartoons.com +is-into-games.com +is-leet.com +is-lost.org +is-not-certified.com +is-saved.org +is-slick.com +is-uberleet.com +is-very-bad.org +is-very-evil.org +is-very-good.org +is-very-nice.org +is-very-sweet.org +is-with-theband.com +isa-geek.com +isa-geek.net +isa-geek.org +isa-hockeynut.com +issmarterthanyou.com +isteingeek.de +istmein.de +kicks-ass.net +kicks-ass.org +knowsitall.info +land-4-sale.us +lebtimnetz.de +leitungsen.de +likes-pie.com +likescandy.com +merseine.nu +mine.nu +misconfused.org +mypets.ws +myphotos.cc +neat-url.com +office-on-the.net +on-the-web.tv +podzone.net +podzone.org +readmyblog.org +saves-the-whales.com +scrapper-site.net +scrapping.cc +selfip.biz +selfip.com +selfip.info +selfip.net +selfip.org +sells-for-less.com +sells-for-u.com +sells-it.net +sellsyourhome.org +servebbs.com +servebbs.net +servebbs.org +serveftp.net +serveftp.org +servegame.org +shacknet.nu +simple-url.com +space-to-rent.com +stuff-4-sale.org +stuff-4-sale.us +teaches-yoga.com +thruhere.net +traeumtgerade.de +webhop.biz +webhop.info +webhop.net +webhop.org +worse-than.tv +writesthisblog.com + +// ddnss.de : https://www.ddnss.de/ +// Submitted by Robert Niedziela <webmaster@ddnss.de> +ddnss.de +dyn.ddnss.de +dyndns.ddnss.de +dyndns1.de +dyn-ip24.de +home-webserver.de +dyn.home-webserver.de +myhome-server.de +ddnss.org + +// dynv6 : https://dynv6.com +// Submitted by Dominik Menke <dom@digineo.de> 2016-01-18 +dynv6.net + +// E4YOU spol. s.r.o. : https://e4you.cz/ +// Submitted by Vladimir Dudr <info@e4you.cz> +e4.cz + +// Enonic : http://enonic.com/ +// Submitted by Erik Kaareng-Sunde <esu@enonic.com> +enonic.io +customer.enonic.io + +// EU.org https://eu.org/ +// Submitted by Pierre Beyssac <hostmaster@eu.org> +eu.org +al.eu.org +asso.eu.org +at.eu.org +au.eu.org +be.eu.org +bg.eu.org +ca.eu.org +cd.eu.org +ch.eu.org +cn.eu.org +cy.eu.org +cz.eu.org +de.eu.org +dk.eu.org +edu.eu.org +ee.eu.org +es.eu.org +fi.eu.org +fr.eu.org +gr.eu.org +hr.eu.org +hu.eu.org +ie.eu.org +il.eu.org +in.eu.org +int.eu.org +is.eu.org +it.eu.org +jp.eu.org +kr.eu.org +lt.eu.org +lu.eu.org +lv.eu.org +mc.eu.org +me.eu.org +mk.eu.org +mt.eu.org +my.eu.org +net.eu.org +ng.eu.org +nl.eu.org +no.eu.org +nz.eu.org +paris.eu.org +pl.eu.org +pt.eu.org +q-a.eu.org +ro.eu.org +ru.eu.org +se.eu.org +si.eu.org +sk.eu.org +tr.eu.org +uk.eu.org +us.eu.org + +// Evennode : http://www.evennode.com/ +// Submitted by Michal Kralik <support@evennode.com> +eu-1.evennode.com +eu-2.evennode.com +eu-3.evennode.com +us-1.evennode.com +us-2.evennode.com +us-3.evennode.com + +// Facebook, Inc. +// Submitted by Peter Ruibal <public-suffix@fb.com> +apps.fbsbx.com + +// FAITID : https://faitid.org/ +// Submitted by Maxim Alzoba <tech.contact@faitid.org> +// https://www.flexireg.net/stat_info +ru.net +adygeya.ru +bashkiria.ru +bir.ru +cbg.ru +com.ru +dagestan.ru +grozny.ru +kalmykia.ru +kustanai.ru +marine.ru +mordovia.ru +msk.ru +mytis.ru +nalchik.ru +nov.ru +pyatigorsk.ru +spb.ru +vladikavkaz.ru +vladimir.ru +abkhazia.su +adygeya.su +aktyubinsk.su +arkhangelsk.su +armenia.su +ashgabad.su +azerbaijan.su +balashov.su +bashkiria.su +bryansk.su +bukhara.su +chimkent.su +dagestan.su +east-kazakhstan.su +exnet.su +georgia.su +grozny.su +ivanovo.su +jambyl.su +kalmykia.su +kaluga.su +karacol.su +karaganda.su +karelia.su +khakassia.su +krasnodar.su +kurgan.su +kustanai.su +lenug.su +mangyshlak.su +mordovia.su +msk.su +murmansk.su +nalchik.su +navoi.su +north-kazakhstan.su +nov.su +obninsk.su +penza.su +pokrovsk.su +sochi.su +spb.su +tashkent.su +termez.su +togliatti.su +troitsk.su +tselinograd.su +tula.su +tuva.su +vladikavkaz.su +vladimir.su +vologda.su + +// Fastly Inc. : http://www.fastly.com/ +// Submitted by Fastly Security <security@fastly.com> +fastlylb.net +map.fastlylb.net +freetls.fastly.net +map.fastly.net +a.prod.fastly.net +global.prod.fastly.net +a.ssl.fastly.net +b.ssl.fastly.net +global.ssl.fastly.net + +// Featherhead : https://featherhead.xyz/ +// Submitted by Simon Menke <simon@featherhead.xyz> +fhapp.xyz + +// Fedora : https://fedoraproject.org/ +// submitted by Patrick Uiterwijk <puiterwijk@fedoraproject.org> +fedorainfracloud.org +fedorapeople.org +cloud.fedoraproject.org + +// Firebase, Inc. +// Submitted by Chris Raynor <chris@firebase.com> +firebaseapp.com + +// Flynn : https://flynn.io +// Submitted by Jonathan Rudenberg <jonathan@flynn.io> +flynnhub.com + +// Freebox : http://www.freebox.fr +// Submitted by Romain Fliedel <rfliedel@freebox.fr> +freebox-os.com +freeboxos.com +fbx-os.fr +fbxos.fr +freebox-os.fr +freeboxos.fr + +// Fusion Intranet : https://www.fusion-intranet.com +// Submitted by Matthias Burtscher <matthias.burtscher@fusonic.net> +myfusion.cloud + +// Futureweb OG : http://www.futureweb.at +// Submitted by Andreas Schnederle-Wagner <schnederle@futureweb.at> +futurehosting.at +futuremailing.at +*.ex.ortsinfo.at +*.kunden.ortsinfo.at +*.statics.cloud + +// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains +// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk> +service.gov.uk + +// GitHub, Inc. +// Submitted by Patrick Toomey <security@github.com> +github.io +githubusercontent.com +githubcloud.com +*.api.githubcloud.com +*.ext.githubcloud.com +gist.githubcloud.com +*.githubcloudusercontent.com + +// GitLab, Inc. +// Submitted by Alex Hanselka <alex@gitlab.com> +gitlab.io + +// UKHomeOffice : https://www.gov.uk/government/organisations/home-office +// Submitted by Jon Shanks <jon.shanks@digital.homeoffice.gov.uk> +homeoffice.gov.uk + +// GlobeHosting, Inc. +// Submitted by Zoltan Egresi <egresi@globehosting.com> +ro.im +shop.ro + +// GoIP DNS Services : http://www.goip.de +// Submitted by Christian Poulter <milchstrasse@goip.de> +goip.de + +// Google, Inc. +// Submitted by Eduardo Vela <evn@google.com> +*.0emm.com +appspot.com +blogspot.ae +blogspot.al +blogspot.am +blogspot.ba +blogspot.be +blogspot.bg +blogspot.bj +blogspot.ca +blogspot.cf +blogspot.ch +blogspot.cl +blogspot.co.at +blogspot.co.id +blogspot.co.il +blogspot.co.ke +blogspot.co.nz +blogspot.co.uk +blogspot.co.za +blogspot.com +blogspot.com.ar +blogspot.com.au +blogspot.com.br +blogspot.com.by +blogspot.com.co +blogspot.com.cy +blogspot.com.ee +blogspot.com.eg +blogspot.com.es +blogspot.com.mt +blogspot.com.ng +blogspot.com.tr +blogspot.com.uy +blogspot.cv +blogspot.cz +blogspot.de +blogspot.dk +blogspot.fi +blogspot.fr +blogspot.gr +blogspot.hk +blogspot.hr +blogspot.hu +blogspot.ie +blogspot.in +blogspot.is +blogspot.it +blogspot.jp +blogspot.kr +blogspot.li +blogspot.lt +blogspot.lu +blogspot.md +blogspot.mk +blogspot.mr +blogspot.mx +blogspot.my +blogspot.nl +blogspot.no +blogspot.pe +blogspot.pt +blogspot.qa +blogspot.re +blogspot.ro +blogspot.rs +blogspot.ru +blogspot.se +blogspot.sg +blogspot.si +blogspot.sk +blogspot.sn +blogspot.td +blogspot.tw +blogspot.ug +blogspot.vn +cloudfunctions.net +codespot.com +googleapis.com +googlecode.com +pagespeedmobilizer.com +publishproxy.com +withgoogle.com +withyoutube.com + +// Hashbang : https://hashbang.sh +hashbang.sh + +// Hasura : https://hasura.io +// Submitted by Shahidh K Muhammed <shahidh@hasura.io> +hasura-app.io + +// Hepforge : https://www.hepforge.org +// Submitted by David Grellscheid <admin@hepforge.org> +hepforge.org + +// Heroku : https://www.heroku.com/ +// Submitted by Tom Maher <tmaher@heroku.com> +herokuapp.com +herokussl.com + +// Ici la Lune : http://www.icilalune.com/ +// Submitted by Simon Morvan <simon@icilalune.com> +moonscale.net + +// iki.fi +// Submitted by Hannu Aronsson <haa@iki.fi> +iki.fi + +// info.at : http://www.info.at/ +biz.at +info.at + +// Interlegis : http://www.interlegis.leg.br +// Submitted by Gabriel Ferreira <registrobr@interlegis.leg.br> +ac.leg.br +al.leg.br +am.leg.br +ap.leg.br +ba.leg.br +ce.leg.br +df.leg.br +es.leg.br +go.leg.br +ma.leg.br +mg.leg.br +ms.leg.br +mt.leg.br +pa.leg.br +pb.leg.br +pe.leg.br +pi.leg.br +pr.leg.br +rj.leg.br +rn.leg.br +ro.leg.br +rr.leg.br +rs.leg.br +sc.leg.br +se.leg.br +sp.leg.br +to.leg.br + +// IPiFony Systems, Inc. : https://www.ipifony.com/ +// Submitted by Matthew Hardeman <mhardeman@ipifony.com> +ipifony.net + +// Joyent : https://www.joyent.com/ +// Submitted by Brian Bennett <brian.bennett@joyent.com> +*.triton.zone +*.cns.joyent.com + +// JS.ORG : http://dns.js.org +// Submitted by Stefan Keim <admin@js.org> +js.org + +// Keyweb AG : https://www.keyweb.de +// Submitted by Martin Dannehl <postmaster@keymachine.de> +keymachine.de + +// KnightPoint Systems, LLC : http://www.knightpoint.com/ +// Submitted by Roy Keene <rkeene@knightpoint.com> +knightpoint.systems + +// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf +co.krd +edu.krd + +// Magento Commerce +// Submitted by Damien Tournoud <dtournoud@magento.cloud> +*.magentosite.cloud + +// Meteor Development Group : https://www.meteor.com/hosting +// Submitted by Pierre Carrier <pierre@meteor.com> +meteorapp.com +eu.meteorapp.com + +// Michau Enterprises Limited : http://www.co.pl/ +co.pl + +// Microsoft : http://microsoft.com +// Submitted by Barry Dorrans <bdorrans@microsoft.com> +azurewebsites.net +azure-mobile.net +cloudapp.net + +// Mozilla Foundation : https://mozilla.org/ +// Submitted by glob <glob@mozilla.com> +bmoattachments.org + +// Neustar Inc. +// Submitted by Trung Tran <Trung.Tran@neustar.biz> +4u.com + +// ngrok : https://ngrok.com/ +// Submitted by Alan Shreve <alan@ngrok.com> +ngrok.io + +// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ +// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net> +nfshost.com + +// nsupdate.info : https://www.nsupdate.info/ +// Submitted by Thomas Waldmann <info@nsupdate.info> +nsupdate.info +nerdpol.ovh + +// No-IP.com : https://noip.com/ +// Submitted by Deven Reza <publicsuffixlist@noip.com> +blogsyte.com +brasilia.me +cable-modem.org +ciscofreak.com +collegefan.org +couchpotatofries.org +damnserver.com +ddns.me +ditchyourip.com +dnsfor.me +dnsiskinky.com +dvrcam.info +dynns.com +eating-organic.net +fantasyleague.cc +geekgalaxy.com +golffan.us +health-carereform.com +homesecuritymac.com +homesecuritypc.com +hopto.me +ilovecollege.info +loginto.me +mlbfan.org +mmafan.biz +myactivedirectory.com +mydissent.net +myeffect.net +mymediapc.net +mypsx.net +mysecuritycamera.com +mysecuritycamera.net +mysecuritycamera.org +net-freaks.com +nflfan.org +nhlfan.net +no-ip.ca +no-ip.co.uk +no-ip.net +noip.us +onthewifi.com +pgafan.net +point2this.com +pointto.us +privatizehealthinsurance.net +quicksytes.com +read-books.org +securitytactics.com +serveexchange.com +servehumour.com +servep2p.com +servesarcasm.com +stufftoread.com +ufcfan.org +unusualperson.com +workisboring.com +3utilities.com +bounceme.net +ddns.net +ddnsking.com +gotdns.ch +hopto.org +myftp.biz +myftp.org +myvnc.com +no-ip.biz +no-ip.info +no-ip.org +noip.me +redirectme.net +servebeer.com +serveblog.net +servecounterstrike.com +serveftp.com +servegame.com +servehalflife.com +servehttp.com +serveirc.com +serveminecraft.net +servemp3.com +servepics.com +servequake.com +sytes.net +webhop.me +zapto.org + +// NYC.mn : http://www.information.nyc.mn +// Submitted by Matthew Brown <mattbrown@nyc.mn> +nyc.mn + +// Octopodal Solutions, LLC. : https://ulterius.io/ +// Submitted by Andrew Sampson <andrew@ulterius.io> +cya.gg + +// One Fold Media : http://www.onefoldmedia.com/ +// Submitted by Eddie Jones <eddie@onefoldmedia.com> +nid.io + +// OpenCraft GmbH : http://opencraft.com/ +// Submitted by Sven Marnach <sven@opencraft.com> +opencraft.hosting + +// Opera Software, A.S.A. +// Submitted by Yngve Pettersen <yngve@opera.com> +operaunite.com + +// OutSystems +// Submitted by Duarte Santos <domain-admin@outsystemscloud.com> +outsystemscloud.com + +// OwnProvider : http://www.ownprovider.com +// Submitted by Jan Moennich <jan.moennich@ownprovider.com> +ownprovider.com + +// oy.lc +// Submitted by Charly Coste <changaco@changaco.oy.lc> +oy.lc + +// Pagefog : https://pagefog.com/ +// Submitted by Derek Myers <derek@pagefog.com> +pgfog.com + +// Pagefront : https://www.pagefronthq.com/ +// Submitted by Jason Kriss <jason@pagefronthq.com> +pagefrontapp.com + +// .pl domains (grandfathered) +art.pl +gliwice.pl +krakow.pl +poznan.pl +wroc.pl +zakopane.pl + +// Pantheon Systems, Inc. : https://pantheon.io/ +// Submitted by Gary Dylina <gary@pantheon.io> +pantheonsite.io +gotpantheon.com + +// Peplink | Pepwave : http://peplink.com/ +// Submitted by Steve Leung <steveleung@peplink.com> +mypep.link + +// Planet-Work : https://www.planet-work.com/ +// Submitted by Frédéric VANNIÈRE <f.vanniere@planet-work.com> +on-web.fr + +// prgmr.com : https://prgmr.com/ +// Submitted by Sarah Newman <owner@prgmr.com> +xen.prgmr.com + +// priv.at : http://www.nic.priv.at/ +// Submitted by registry <lendl@nic.at> +priv.at + +// Protonet GmbH : http://protonet.io +// Submitted by Martin Meier <admin@protonet.io> +protonet.io + +// Publication Presse Communication SARL : https://ppcom.fr +// Submitted by Yaacov Akiba Slama <admin@chirurgiens-dentistes-en-france.fr> +chirurgiens-dentistes-en-france.fr + +// QA2 +// Submitted by Daniel Dent (https://www.danieldent.com/) +qa2.com + +// QNAP System Inc : https://www.qnap.com +// Submitted by Nick Chang <nickchang@qnap.com> +dev-myqnapcloud.com +alpha-myqnapcloud.com +myqnapcloud.com + +// Rackmaze LLC : https://www.rackmaze.com +// Submitted by Kirill Pertsev <kika@rackmaze.com> +rackmaze.com +rackmaze.net + +// Red Hat, Inc. OpenShift : https://openshift.redhat.com/ +// Submitted by Tim Kramer <tkramer@rhcloud.com> +rhcloud.com + +// RethinkDB : https://www.rethinkdb.com/ +// Submitted by Chris Kastorff <info@rethinkdb.com> +hzc.io + +// Revitalised Limited : http://www.revitalised.co.uk +// Submitted by Jack Price <jack@revitalised.co.uk> +wellbeingzone.eu +ptplus.fit +wellbeingzone.co.uk + +// Sandstorm Development Group, Inc. : https://sandcats.io/ +// Submitted by Asheesh Laroia <asheesh@sandstorm.io> +sandcats.io + +// SBE network solutions GmbH : https://www.sbe.de/ +// Submitted by Norman Meilick <nm@sbe.de> +logoip.de +logoip.com + +// Securepoint GmbH : https://www.securepoint.de +// Submitted by Erik Anders <erik.anders@securepoint.de> +firewall-gateway.com +firewall-gateway.de +my-gateway.de +my-router.de +spdns.de +spdns.eu +firewall-gateway.net +my-firewall.org +myfirewall.org +spdns.org + +// Service Online LLC : http://drs.ua/ +// Submitted by Serhii Bulakh <support@drs.ua> +biz.ua +co.ua +pp.ua + +// ShiftEdit : https://shiftedit.net/ +// Submitted by Adam Jimenez <adam@shiftcreate.com> +shiftedit.io + +// Shopblocks : http://www.shopblocks.com/ +// Submitted by Alex Bowers <alex@shopblocks.com> +myshopblocks.com + +// SinaAppEngine : http://sae.sina.com.cn/ +// Submitted by SinaAppEngine <saesupport@sinacloud.com> +1kapp.com +appchizi.com +applinzi.com +sinaapp.com +vipsinaapp.com + +// Skyhat : http://www.skyhat.io +// Submitted by Shante Adam <shante@skyhat.io> +bounty-full.com +alpha.bounty-full.com +beta.bounty-full.com + +// staticland : https://static.land +// Submitted by Seth Vincent <sethvincent@gmail.com> +static.land +dev.static.land +sites.static.land + +// SourceLair PC : https://www.sourcelair.com +// Submitted by Antonis Kalipetis <akalipetis@sourcelair.com> +apps.lair.io +*.stolos.io + +// SpaceKit : https://www.spacekit.io/ +// Submitted by Reza Akhavan <spacekit.io@gmail.com> +spacekit.io + +// Stackspace : https://www.stackspace.io/ +// Submitted by Lina He <info@stackspace.io> +stackspace.space + +// Storj Labs Inc. : https://storj.io/ +// Submitted by Philip Hutchins <hostmaster@storj.io> +storj.farm + +// Synology, Inc. : https://www.synology.com/ +// Submitted by Rony Weng <ronyweng@synology.com> +diskstation.me +dscloud.biz +dscloud.me +dscloud.mobi +dsmynas.com +dsmynas.net +dsmynas.org +familyds.com +familyds.net +familyds.org +i234.me +myds.me +synology.me +vpnplus.to + +// TAIFUN Software AG : http://taifun-software.de +// Submitted by Bjoern Henke <dev-server@taifun-software.de> +taifun-dns.de + +// TASK geographical domains (www.task.gda.pl/uslugi/dns) +gda.pl +gdansk.pl +gdynia.pl +med.pl +sopot.pl + +// TownNews.com : http://www.townnews.com +// Submitted by Dustin Ward <dward@townnews.com> +bloxcms.com +townnews-staging.com + +// TransIP : htts://www.transip.nl +// Submitted by Rory Breuk <rbreuk@transip.nl> +*.transurl.be +*.transurl.eu +*.transurl.nl + +// TuxFamily : http://tuxfamily.org +// Submitted by TuxFamily administrators <adm@staff.tuxfamily.org> +tuxfamily.org + +// TwoDNS : https://www.twodns.de/ +// Submitted by TwoDNS-Support <support@two-dns.de> +dd-dns.de +diskstation.eu +diskstation.org +dray-dns.de +draydns.de +dyn-vpn.de +dynvpn.de +mein-vigor.de +my-vigor.de +my-wan.de +syno-ds.de +synology-diskstation.de +synology-ds.de + +// Uberspace : https://uberspace.de +// Submitted by Moritz Werner <mwerner@jonaspasche.com> +uber.space + +// UDR Limited : http://www.udr.hk.com +// Submitted by registry <hostmaster@udr.hk.com> +hk.com +hk.org +ltd.hk +inc.hk + +// .US +// Submitted by Ed Moore <Ed.Moore@lib.de.us> +lib.de.us + +// Viprinet Europe GmbH : http://www.viprinet.com +// Submitted by Simon Kissel <hostmaster@viprinet.com> +router.management + +// Western Digital Technologies, Inc : https://www.wdc.com +// Submitted by Jung Jin <jungseok.jin@wdc.com> +remotewd.com + +// Wikimedia Labs : https://wikitech.wikimedia.org +// Submitted by Yuvi Panda <yuvipanda@wikimedia.org> +wmflabs.org + +// XS4ALL Internet bv: https://www.xs4all.nl/ +// Submitted by Daniel Mostertman <unixbeheer+publicsuffix@xs4all.net> +xs4all.space + +// Yola : https://www.yola.com/ +// Submitted by Stefano Rivera <stefano@yola.com> +yolasite.com + +// Yombo : https://yombo.net +// Submitted by Mitch Schwenk <mitch@yombo.net> +ybo.faith +yombo.me +homelink.one +ybo.party +ybo.review +ybo.science +ybo.trade + +// ZaNiC : http://www.za.net/ +// Submitted by registry <hostmaster@nic.za.net> +za.net +za.org + +// Zeit, Inc. : https://zeit.domains/ +// Submitted by Olli Vanhoja <olli@zeit.co> +now.sh + +// 1GB LLC : https://www.1gb.ua/ +// Submitted by 1GB LLC <noc@1gb.com.ua> +cc.ua +inf.ua +ltd.ua + +// ===END PRIVATE DOMAINS===
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names.gperf b/src/net/base/registry_controlled_domains/effective_tld_names.gperf new file mode 100644 index 0000000..ba49a41 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names.gperf
@@ -0,0 +1,8142 @@ +%{ +// Copyright 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file is generated by net/tools/tld_cleanup/. +// DO NOT MANUALLY EDIT! +%} +struct DomainRule { + int name_offset; + int type; // flags: 1: exception, 2: wildcard, 4: private +}; +%% +0.bg, 0 +0emm.com, 6 +1.bg, 0 +1kapp.com, 4 +2.bg, 0 +2000.hu, 0 +3.bg, 0 +3utilities.com, 4 +4.bg, 0 +4u.com, 4 +5.bg, 0 +6.bg, 0 +7.bg, 0 +8.bg, 0 +9.bg, 0 +a.bg, 0 +a.prod.fastly.net, 4 +a.se, 0 +a.ssl.fastly.net, 4 +aa.no, 0 +aaa, 0 +aaa.pro, 0 +aarborte.no, 0 +aarp, 0 +ab.ca, 0 +abarth, 0 +abashiri.hokkaido.jp, 0 +abb, 0 +abbott, 0 +abbvie, 0 +abc, 0 +abeno.osaka.jp, 0 +abiko.chiba.jp, 0 +abira.hokkaido.jp, 0 +abkhazia.su, 4 +able, 0 +abo.pa, 0 +abogado, 0 +abr.it, 0 +abruzzo.it, 0 +abu.yamaguchi.jp, 0 +abudhabi, 0 +ac, 0 +ac.ae, 0 +ac.at, 0 +ac.be, 0 +ac.ci, 0 +ac.cn, 0 +ac.cr, 0 +ac.cy, 0 +ac.gn, 0 +ac.id, 0 +ac.il, 0 +ac.im, 0 +ac.in, 0 +ac.ir, 0 +ac.jp, 0 +ac.kr, 0 +ac.leg.br, 4 +ac.lk, 0 +ac.ma, 0 +ac.me, 0 +ac.mu, 0 +ac.mw, 0 +ac.mz, 0 +ac.ni, 0 +ac.nz, 0 +ac.pa, 0 +ac.pr, 0 +ac.rs, 0 +ac.ru, 0 +ac.rw, 0 +ac.se, 0 +ac.sz, 0 +ac.th, 0 +ac.tj, 0 +ac.tz, 0 +ac.ug, 0 +ac.uk, 0 +ac.vn, 0 +ac.za, 0 +ac.zm, 0 +ac.zw, 0 +aca.pro, 0 +academy, 0 +academy.museum, 0 +accenture, 0 +accident-investigation.aero, 0 +accident-prevention.aero, 0 +accountant, 0 +accountants, 0 +acct.pro, 0 +achi.nagano.jp, 0 +aco, 0 +act.au, 0 +act.edu.au, 0 +active, 0 +actor, 0 +ad, 0 +ad.jp, 0 +adac, 0 +adachi.tokyo.jp, 0 +adm.br, 0 +ads, 0 +adult, 0 +adult.ht, 0 +adv.br, 0 +adv.mz, 0 +advisor.ws, 6 +adygeya.ru, 4 +adygeya.su, 4 +ae, 0 +ae.org, 4 +aeg, 0 +aejrie.no, 0 +aero, 0 +aero.mv, 0 +aero.tt, 0 +aerobatic.aero, 0 +aeroclub.aero, 0 +aerodrome.aero, 0 +aeroport.fr, 0 +aetna, 0 +af, 0 +afamilycompany, 0 +afjord.no, 0 +afl, 0 +africa, 0 +africa.com, 4 +ag, 0 +ag.it, 0 +aga.niigata.jp, 0 +agakhan, 0 +agano.niigata.jp, 0 +agdenes.no, 0 +agematsu.nagano.jp, 0 +agency, 0 +agents.aero, 0 +agr.br, 0 +agrar.hu, 0 +agric.za, 0 +agriculture.museum, 0 +agrigento.it, 0 +agrinet.tn, 0 +agro.pl, 0 +aguni.okinawa.jp, 0 +ah.cn, 0 +ah.no, 0 +ai, 0 +aibetsu.hokkaido.jp, 0 +aichi.jp, 0 +aid.pl, 0 +aig, 0 +aigo, 0 +aikawa.kanagawa.jp, 0 +ainan.ehime.jp, 0 +aioi.hyogo.jp, 0 +aip.ee, 0 +air-surveillance.aero, 0 +air-traffic-control.aero, 0 +air.museum, 0 +airbus, 0 +aircraft.aero, 0 +airforce, 0 +airguard.museum, 0 +airline.aero, 0 +airport.aero, 0 +airtel, 0 +airtraffic.aero, 0 +aisai.aichi.jp, 0 +aisho.shiga.jp, 0 +aizubange.fukushima.jp, 0 +aizumi.tokushima.jp, 0 +aizumisato.fukushima.jp, 0 +aizuwakamatsu.fukushima.jp, 0 +ak.us, 0 +akabira.hokkaido.jp, 0 +akagi.shimane.jp, 0 +akaiwa.okayama.jp, 0 +akashi.hyogo.jp, 0 +akdn, 0 +aki.kochi.jp, 0 +akiruno.tokyo.jp, 0 +akishima.tokyo.jp, 0 +akita.akita.jp, 0 +akita.jp, 0 +akkeshi.hokkaido.jp, 0 +aknoluokta.no, 0 +ako.hyogo.jp, 0 +akrehamn.no, 0 +aktyubinsk.su, 4 +akune.kagoshima.jp, 0 +al, 0 +al.eu.org, 4 +al.it, 0 +al.leg.br, 4 +al.no, 0 +al.us, 0 +alabama.museum, 0 +alaheadju.no, 0 +aland.fi, 0 +alaska.museum, 0 +alces.network, 6 +alessandria.it, 0 +alesund.no, 0 +alfaromeo, 0 +algard.no, 0 +alibaba, 0 +alipay, 0 +allfinanz, 0 +allstate, 0 +ally, 0 +alpha-myqnapcloud.com, 4 +alpha.bounty-full.com, 4 +alsace, 0 +alstahaug.no, 0 +alstom, 0 +alt.za, 0 +alta.no, 0 +alto-adige.it, 0 +altoadige.it, 0 +alvdal.no, 0 +alwaysdata.net, 6 +am, 0 +am.br, 0 +am.leg.br, 4 +ama.aichi.jp, 0 +ama.shimane.jp, 0 +amagasaki.hyogo.jp, 0 +amakusa.kumamoto.jp, 0 +amami.kagoshima.jp, 0 +amber.museum, 0 +ambulance.aero, 0 +ambulance.museum, 0 +american.museum, 0 +americana.museum, 0 +americanantiques.museum, 0 +americanart.museum, 0 +americanexpress, 0 +americanfamily, 0 +amex, 0 +amfam, 0 +ami.ibaraki.jp, 0 +amica, 0 +amli.no, 0 +amot.no, 0 +amsterdam, 0 +amsterdam.museum, 0 +amusement.aero, 0 +an.it, 0 +analytics, 0 +anamizu.ishikawa.jp, 0 +anan.nagano.jp, 0 +anan.tokushima.jp, 0 +ancona.it, 0 +and.museum, 0 +andasuolo.no, 0 +andebu.no, 0 +ando.nara.jp, 0 +andoy.no, 0 +andria-barletta-trani.it, 0 +andria-trani-barletta.it, 0 +andriabarlettatrani.it, 0 +andriatranibarletta.it, 0 +android, 0 +anjo.aichi.jp, 0 +annaka.gunma.jp, 0 +annefrank.museum, 0 +anpachi.gifu.jp, 0 +anquan, 0 +anthro.museum, 0 +anthropology.museum, 0 +antiques.museum, 0 +anz, 0 +ao, 0 +ao.it, 0 +aogaki.hyogo.jp, 0 +aogashima.tokyo.jp, 0 +aoki.nagano.jp, 0 +aol, 0 +aomori.aomori.jp, 0 +aomori.jp, 0 +aosta-valley.it, 0 +aosta.it, 0 +aostavalley.it, 0 +aoste.it, 0 +ap.gov.pl, 0 +ap.it, 0 +ap.leg.br, 4 +apartments, 0 +api.githubcloud.com, 6 +app, 0 +appchizi.com, 4 +apple, 0 +applinzi.com, 4 +apps.fbsbx.com, 4 +apps.lair.io, 4 +appspot.com, 4 +aq, 0 +aq.it, 0 +aquarelle, 0 +aquarium.museum, 0 +aquila.it, 0 +ar, 0 +ar.com, 4 +ar.it, 0 +ar.us, 0 +arab, 0 +arai.shizuoka.jp, 0 +arakawa.saitama.jp, 0 +arakawa.tokyo.jp, 0 +aramco, 0 +arao.kumamoto.jp, 0 +arboretum.museum, 0 +archaeological.museum, 0 +archaeology.museum, 0 +archi, 0 +architecture.museum, 0 +ardal.no, 0 +aremark.no, 0 +arendal.no, 0 +arezzo.it, 0 +ariake.saga.jp, 0 +arida.wakayama.jp, 0 +aridagawa.wakayama.jp, 0 +arita.saga.jp, 0 +arkhangelsk.su, 4 +armenia.su, 4 +army, 0 +arna.no, 0 +arpa, 0 +arq.br, 0 +art, 0 +art.br, 0 +art.do, 0 +art.dz, 0 +art.ht, 0 +art.museum, 0 +art.pl, 4 +art.sn, 0 +artanddesign.museum, 0 +artcenter.museum, 0 +artdeco.museum, 0 +arte, 0 +arteducation.museum, 0 +artgallery.museum, 0 +arts.co, 0 +arts.museum, 0 +arts.nf, 0 +arts.ro, 0 +arts.ve, 0 +artsandcrafts.museum, 0 +as, 0 +as.us, 0 +asago.hyogo.jp, 0 +asahi.chiba.jp, 0 +asahi.ibaraki.jp, 0 +asahi.mie.jp, 0 +asahi.nagano.jp, 0 +asahi.toyama.jp, 0 +asahi.yamagata.jp, 0 +asahikawa.hokkaido.jp, 0 +asaka.saitama.jp, 0 +asakawa.fukushima.jp, 0 +asakuchi.okayama.jp, 0 +asaminami.hiroshima.jp, 0 +ascoli-piceno.it, 0 +ascolipiceno.it, 0 +asda, 0 +aseral.no, 0 +ashgabad.su, 4 +ashibetsu.hokkaido.jp, 0 +ashikaga.tochigi.jp, 0 +ashiya.fukuoka.jp, 0 +ashiya.hyogo.jp, 0 +ashoro.hokkaido.jp, 0 +asia, 0 +asker.no, 0 +askim.no, 0 +askoy.no, 0 +askvoll.no, 0 +asmatart.museum, 0 +asn.au, 0 +asn.lv, 0 +asnes.no, 0 +aso.kumamoto.jp, 0 +ass.km, 0 +assabu.hokkaido.jp, 0 +assassination.museum, 0 +assedic.fr, 0 +assisi.museum, 0 +assn.lk, 0 +asso.bj, 0 +asso.ci, 0 +asso.dz, 0 +asso.eu.org, 4 +asso.fr, 0 +asso.gp, 0 +asso.ht, 0 +asso.km, 0 +asso.mc, 0 +asso.nc, 0 +asso.re, 0 +associates, 0 +association.aero, 0 +association.museum, 0 +asti.it, 0 +astronomy.museum, 0 +asuke.aichi.jp, 0 +at, 0 +at-band-camp.net, 4 +at.eu.org, 4 +at.it, 0 +atami.shizuoka.jp, 0 +ath.cx, 4 +athleta, 0 +atlanta.museum, 0 +atm.pl, 0 +ato.br, 0 +atsugi.kanagawa.jp, 0 +atsuma.hokkaido.jp, 0 +attorney, 0 +au, 0 +au.eu.org, 4 +auction, 0 +audi, 0 +audible, 0 +audio, 0 +audnedaln.no, 0 +augustow.pl, 0 +aukra.no, 0 +aure.no, 0 +aurland.no, 0 +aurskog-holand.no, 0 +auspost, 0 +austevoll.no, 0 +austin.museum, 0 +australia.museum, 0 +austrheim.no, 0 +author, 0 +author.aero, 0 +auto, 0 +auto.pl, 0 +automotive.museum, 0 +autos, 0 +av.it, 0 +av.tr, 0 +avellino.it, 0 +averoy.no, 0 +avianca, 0 +aviation.museum, 0 +avocat.fr, 0 +avocat.pro, 0 +avoues.fr, 0 +aw, 0 +awaji.hyogo.jp, 0 +awdev.ca, 6 +aws, 0 +ax, 0 +axa, 0 +axis.museum, 0 +aya.miyazaki.jp, 0 +ayabe.kyoto.jp, 0 +ayagawa.kagawa.jp, 0 +ayase.kanagawa.jp, 0 +az, 0 +az.us, 0 +azerbaijan.su, 4 +azumino.nagano.jp, 0 +azure, 0 +azure-mobile.net, 4 +azurewebsites.net, 4 +b.bg, 0 +b.br, 0 +b.se, 0 +b.ssl.fastly.net, 4 +ba, 0 +ba.it, 0 +ba.leg.br, 4 +babia-gora.pl, 0 +baby, 0 +backplaneapp.io, 4 +badaddja.no, 0 +badajoz.museum, 0 +baghdad.museum, 0 +bahcavuotna.no, 0 +bahccavuotna.no, 0 +bahn.museum, 0 +baidar.no, 0 +baidu, 0 +bajddar.no, 0 +balashov.su, 4 +balat.no, 0 +bale.museum, 0 +balestrand.no, 0 +ballangen.no, 0 +ballooning.aero, 0 +balsan.it, 0 +balsfjord.no, 0 +baltimore.museum, 0 +bamble.no, 0 +banamex, 0 +bananarepublic, 0 +band, 0 +bandai.fukushima.jp, 0 +bando.ibaraki.jp, 0 +bank, 0 +bar, 0 +bar.pro, 0 +barcelona, 0 +barcelona.museum, 0 +barclaycard, 0 +barclays, 0 +bardu.no, 0 +barefoot, 0 +bargains, 0 +bari.it, 0 +barletta-trani-andria.it, 0 +barlettatraniandria.it, 0 +barreau.bj, 0 +barrel-of-knowledge.info, 4 +barrell-of-knowledge.info, 4 +barum.no, 0 +bas.it, 0 +baseball, 0 +baseball.museum, 0 +basel.museum, 0 +bashkiria.ru, 4 +bashkiria.su, 4 +basilicata.it, 0 +basketball, 0 +baths.museum, 0 +bato.tochigi.jp, 0 +batsfjord.no, 0 +bauern.museum, 0 +bauhaus, 0 +bayern, 0 +bb, 0 +bbc, 0 +bbs.tr, 0 +bbt, 0 +bbva, 0 +bc.ca, 0 +bcg, 0 +bcn, 0 +bd, 2 +bd.se, 0 +be, 0 +be.eu.org, 4 +bearalvahki.no, 0 +beardu.no, 0 +beats, 0 +beauty, 0 +beauxarts.museum, 0 +bedzin.pl, 0 +beeldengeluid.museum, 0 +beep.pl, 4 +beer, 0 +beiarn.no, 0 +bel.tr, 0 +belau.pw, 0 +bellevue.museum, 0 +belluno.it, 0 +benevento.it, 0 +bentley, 0 +beppu.oita.jp, 0 +berg.no, 0 +bergamo.it, 0 +bergbau.museum, 0 +bergen.no, 0 +berkeley.museum, 0 +berlevag.no, 0 +berlin, 0 +berlin.museum, 0 +bern.museum, 0 +beskidy.pl, 0 +best, 0 +bestbuy, 0 +bet, 0 +beta.bounty-full.com, 4 +betainabox.com, 4 +better-than.tv, 4 +bf, 0 +bg, 0 +bg.eu.org, 4 +bg.it, 0 +bh, 0 +bharti, 0 +bi, 0 +bi.it, 0 +bialowieza.pl, 0 +bialystok.pl, 0 +bibai.hokkaido.jp, 0 +bible, 0 +bible.museum, 0 +bid, 0 +biei.hokkaido.jp, 0 +bielawa.pl, 0 +biella.it, 0 +bieszczady.pl, 0 +bievat.no, 0 +bifuka.hokkaido.jp, 0 +bihoro.hokkaido.jp, 0 +bike, 0 +bilbao.museum, 0 +bill.museum, 0 +bindal.no, 0 +bing, 0 +bingo, 0 +bio, 0 +bio.br, 0 +bir.ru, 4 +biratori.hokkaido.jp, 0 +birdart.museum, 0 +birkenes.no, 0 +birthplace.museum, 0 +biz, 0 +biz.at, 4 +biz.az, 0 +biz.bb, 0 +biz.cy, 0 +biz.dk, 4 +biz.et, 0 +biz.id, 0 +biz.ki, 0 +biz.mv, 0 +biz.mw, 0 +biz.ni, 0 +biz.nr, 0 +biz.pk, 0 +biz.pl, 0 +biz.pr, 0 +biz.tj, 0 +biz.tr, 0 +biz.tt, 0 +biz.ua, 4 +biz.vn, 0 +biz.zm, 0 +bizen.okayama.jp, 0 +bj, 0 +bj.cn, 0 +bjarkoy.no, 0 +bjerkreim.no, 0 +bjugn.no, 0 +bl.it, 0 +black, 0 +blackfriday, 0 +blanco, 0 +blockbuster, 0 +blog, 0 +blog.br, 0 +blogdns.com, 4 +blogdns.net, 4 +blogdns.org, 4 +blogsite.org, 4 +blogspot.ae, 4 +blogspot.al, 4 +blogspot.am, 4 +blogspot.ba, 4 +blogspot.be, 4 +blogspot.bg, 4 +blogspot.bj, 4 +blogspot.ca, 4 +blogspot.cf, 4 +blogspot.ch, 4 +blogspot.cl, 4 +blogspot.co.at, 4 +blogspot.co.id, 4 +blogspot.co.il, 4 +blogspot.co.ke, 4 +blogspot.co.nz, 4 +blogspot.co.uk, 4 +blogspot.co.za, 4 +blogspot.com, 4 +blogspot.com.ar, 4 +blogspot.com.au, 4 +blogspot.com.br, 4 +blogspot.com.by, 4 +blogspot.com.co, 4 +blogspot.com.cy, 4 +blogspot.com.ee, 4 +blogspot.com.eg, 4 +blogspot.com.es, 4 +blogspot.com.mt, 4 +blogspot.com.ng, 4 +blogspot.com.tr, 4 +blogspot.com.uy, 4 +blogspot.cv, 4 +blogspot.cz, 4 +blogspot.de, 4 +blogspot.dk, 4 +blogspot.fi, 4 +blogspot.fr, 4 +blogspot.gr, 4 +blogspot.hk, 4 +blogspot.hr, 4 +blogspot.hu, 4 +blogspot.ie, 4 +blogspot.in, 4 +blogspot.is, 4 +blogspot.it, 4 +blogspot.jp, 4 +blogspot.kr, 4 +blogspot.li, 4 +blogspot.lt, 4 +blogspot.lu, 4 +blogspot.md, 4 +blogspot.mk, 4 +blogspot.mr, 4 +blogspot.mx, 4 +blogspot.my, 4 +blogspot.nl, 4 +blogspot.no, 4 +blogspot.pe, 4 +blogspot.pt, 4 +blogspot.qa, 4 +blogspot.re, 4 +blogspot.ro, 4 +blogspot.rs, 4 +blogspot.ru, 4 +blogspot.se, 4 +blogspot.sg, 4 +blogspot.si, 4 +blogspot.sk, 4 +blogspot.sn, 4 +blogspot.td, 4 +blogspot.tw, 4 +blogspot.ug, 4 +blogspot.vn, 4 +blogsyte.com, 4 +bloomberg, 0 +bloxcms.com, 4 +blue, 0 +bm, 0 +bmd.br, 0 +bmoattachments.org, 4 +bms, 0 +bmw, 0 +bn, 2 +bn.it, 0 +bnl, 0 +bnpparibas, 0 +bnr.la, 4 +bo, 0 +bo.it, 0 +bo.nordland.no, 0 +bo.telemark.no, 0 +boats, 0 +bodo.no, 0 +boehringer, 0 +bofa, 0 +bokn.no, 0 +boldlygoingnowhere.org, 4 +boleslawiec.pl, 0 +bologna.it, 0 +bolt.hu, 0 +bolzano.it, 0 +bom, 0 +bomlo.no, 0 +bond, 0 +bonn.museum, 0 +boo, 0 +book, 0 +booking, 0 +boots, 0 +bosch, 0 +bostik, 0 +boston, 0 +boston.museum, 0 +bot, 0 +botanical.museum, 0 +botanicalgarden.museum, 0 +botanicgarden.museum, 0 +botany.museum, 0 +bounceme.net, 4 +bounty-full.com, 4 +boutique, 0 +box, 0 +boxfuse.io, 4 +bozen.it, 0 +br, 0 +br.com, 4 +br.it, 0 +bradesco, 0 +brand.se, 0 +brandywinevalley.museum, 0 +brasil.museum, 0 +brasilia.me, 4 +bremanger.no, 0 +brescia.it, 0 +bridgestone, 0 +brindisi.it, 0 +bristol.museum, 0 +british.museum, 0 +britishcolumbia.museum, 0 +broadcast.museum, 0 +broadway, 0 +broke-it.net, 4 +broker, 0 +broker.aero, 0 +bronnoy.no, 0 +bronnoysund.no, 0 +brother, 0 +browsersafetymark.io, 4 +brumunddal.no, 0 +brunel.museum, 0 +brussel.museum, 0 +brussels, 0 +brussels.museum, 0 +bruxelles.museum, 0 +bryansk.su, 4 +bryne.no, 0 +bs, 0 +bs.it, 0 +bt, 0 +bt.it, 0 +bu.no, 0 +budapest, 0 +budejju.no, 0 +bugatti, 0 +build, 0 +builders, 0 +building.museum, 0 +bukhara.su, 4 +bungoono.oita.jp, 0 +bungotakada.oita.jp, 0 +bunkyo.tokyo.jp, 0 +burghof.museum, 0 +bus.museum, 0 +busan.kr, 0 +bushey.museum, 0 +business, 0 +buy, 0 +buyshouses.net, 4 +buzen.fukuoka.jp, 0 +buzz, 0 +bv, 0 +bv.nl, 0 +bw, 0 +by, 0 +bydgoszcz.pl, 0 +bygland.no, 0 +bykle.no, 0 +bytom.pl, 0 +bz, 0 +bz.it, 0 +bzh, 0 +c.bg, 0 +c.cdn77.org, 4 +c.la, 4 +c.se, 0 +c66.me, 4 +ca, 0 +ca.eu.org, 4 +ca.it, 0 +ca.na, 0 +ca.us, 0 +caa.aero, 0 +cab, 0 +cable-modem.org, 4 +cadaques.museum, 0 +cafe, 0 +cagliari.it, 0 +cahcesuolo.no, 0 +cal, 0 +cal.it, 0 +calabria.it, 0 +california.museum, 0 +call, 0 +caltanissetta.it, 0 +calvinklein, 0 +cam, 0 +cam.it, 0 +cambridge.museum, 0 +camera, 0 +camp, 0 +campania.it, 0 +campidano-medio.it, 0 +campidanomedio.it, 0 +campobasso.it, 0 +can.museum, 0 +canada.museum, 0 +cancerresearch, 0 +canon, 0 +capebreton.museum, 0 +capetown, 0 +capital, 0 +capitalone, 0 +car, 0 +caravan, 0 +carbonia-iglesias.it, 0 +carboniaiglesias.it, 0 +cards, 0 +care, 0 +career, 0 +careers, 0 +cargo.aero, 0 +carrara-massa.it, 0 +carraramassa.it, 0 +carrier.museum, 0 +cars, 0 +cartier, 0 +cartoonart.museum, 0 +casa, 0 +casadelamoneda.museum, 0 +case, 0 +caseih, 0 +caserta.it, 0 +cash, 0 +casino, 0 +casino.hu, 0 +castle.museum, 0 +castres.museum, 0 +cat, 0 +catania.it, 0 +catanzaro.it, 0 +catering, 0 +catering.aero, 0 +catholic, 0 +cb.it, 0 +cba, 0 +cbg.ru, 4 +cbn, 0 +cbre, 0 +cbs, 0 +cc, 0 +cc.ak.us, 0 +cc.al.us, 0 +cc.ar.us, 0 +cc.as.us, 0 +cc.az.us, 0 +cc.ca.us, 0 +cc.co.us, 0 +cc.ct.us, 0 +cc.dc.us, 0 +cc.de.us, 0 +cc.fl.us, 0 +cc.ga.us, 0 +cc.gu.us, 0 +cc.hi.us, 0 +cc.ia.us, 0 +cc.id.us, 0 +cc.il.us, 0 +cc.in.us, 0 +cc.ks.us, 0 +cc.ky.us, 0 +cc.la.us, 0 +cc.ma.us, 0 +cc.md.us, 0 +cc.me.us, 0 +cc.mi.us, 0 +cc.mn.us, 0 +cc.mo.us, 0 +cc.ms.us, 0 +cc.mt.us, 0 +cc.na, 0 +cc.nc.us, 0 +cc.nd.us, 0 +cc.ne.us, 0 +cc.nh.us, 0 +cc.nj.us, 0 +cc.nm.us, 0 +cc.nv.us, 0 +cc.ny.us, 0 +cc.oh.us, 0 +cc.ok.us, 0 +cc.or.us, 0 +cc.pa.us, 0 +cc.pr.us, 0 +cc.ri.us, 0 +cc.sc.us, 0 +cc.sd.us, 0 +cc.tn.us, 0 +cc.tx.us, 0 +cc.ua, 4 +cc.ut.us, 0 +cc.va.us, 0 +cc.vi.us, 0 +cc.vt.us, 0 +cc.wa.us, 0 +cc.wi.us, 0 +cc.wv.us, 0 +cc.wy.us, 0 +cci.fr, 0 +cd, 0 +cd.eu.org, 4 +cdn77-ssl.net, 4 +ce.it, 0 +ce.leg.br, 4 +ceb, 0 +cechire.com, 4 +celtic.museum, 0 +center, 0 +center.museum, 0 +ceo, 0 +cern, 0 +certification.aero, 0 +certmgr.org, 4 +cesena-forli.it, 0 +cesenaforli.it, 0 +cf, 0 +cfa, 0 +cfd, 0 +cg, 0 +ch, 0 +ch.eu.org, 4 +ch.it, 0 +chambagri.fr, 0 +championship.aero, 0 +chanel, 0 +channel, 0 +charter.aero, 0 +chase, 0 +chat, 0 +chattanooga.museum, 0 +cheap, 0 +cheltenham.museum, 0 +cherkassy.ua, 0 +cherkasy.ua, 0 +chernigov.ua, 0 +chernihiv.ua, 0 +chernivtsi.ua, 0 +chernovtsy.ua, 0 +chesapeakebay.museum, 0 +chiba.jp, 0 +chicago.museum, 0 +chichibu.saitama.jp, 0 +chieti.it, 0 +chigasaki.kanagawa.jp, 0 +chihayaakasaka.osaka.jp, 0 +chijiwa.nagasaki.jp, 0 +chikugo.fukuoka.jp, 0 +chikuho.fukuoka.jp, 0 +chikuhoku.nagano.jp, 0 +chikujo.fukuoka.jp, 0 +chikuma.nagano.jp, 0 +chikusei.ibaraki.jp, 0 +chikushino.fukuoka.jp, 0 +chikuzen.fukuoka.jp, 0 +children.museum, 0 +childrens.museum, 0 +childrensgarden.museum, 0 +chimkent.su, 4 +chino.nagano.jp, 0 +chintai, 0 +chippubetsu.hokkaido.jp, 0 +chiropractic.museum, 0 +chirurgiens-dentistes-en-france.fr, 4 +chirurgiens-dentistes.fr, 0 +chiryu.aichi.jp, 0 +chita.aichi.jp, 0 +chitose.hokkaido.jp, 0 +chiyoda.gunma.jp, 0 +chiyoda.tokyo.jp, 0 +chizu.tottori.jp, 0 +chloe, 0 +chocolate.museum, 0 +chofu.tokyo.jp, 0 +chonan.chiba.jp, 0 +chosei.chiba.jp, 0 +choshi.chiba.jp, 0 +choyo.kumamoto.jp, 0 +christiansburg.museum, 0 +christmas, 0 +chrome, 0 +chrysler, 0 +chtr.k12.ma.us, 0 +chungbuk.kr, 0 +chungnam.kr, 0 +chuo.chiba.jp, 0 +chuo.fukuoka.jp, 0 +chuo.osaka.jp, 0 +chuo.tokyo.jp, 0 +chuo.yamanashi.jp, 0 +church, 0 +ci, 0 +ci.it, 0 +cieszyn.pl, 0 +cim.br, 0 +cincinnati.museum, 0 +cinema.museum, 0 +cipriani, 0 +circle, 0 +circus.museum, 0 +cisco, 0 +ciscofreak.com, 4 +citadel, 0 +citi, 0 +citic, 0 +city, 0 +city.hu, 0 +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 +cityeats, 0 +civilaviation.aero, 0 +civilisation.museum, 0 +civilization.museum, 0 +civilwar.museum, 0 +ck, 2 +ck.ua, 0 +cl, 0 +cl.it, 0 +claims, 0 +cleaning, 0 +click, 0 +clinic, 0 +clinique, 0 +clinton.museum, 0 +clock.museum, 0 +clothing, 0 +cloud, 0 +cloud.fedoraproject.org, 4 +cloudapp.net, 4 +cloudcontrolapp.com, 4 +cloudcontrolled.com, 4 +cloudfront.net, 4 +cloudfunctions.net, 4 +cloudns.asia, 4 +cloudns.biz, 4 +cloudns.cc, 4 +cloudns.club, 4 +cloudns.eu, 4 +cloudns.in, 4 +cloudns.info, 4 +cloudns.org, 4 +cloudns.pro, 4 +cloudns.pw, 4 +cloudns.us, 4 +club, 0 +club.aero, 0 +club.tw, 0 +clubmed, 0 +cm, 0 +cn, 0 +cn.com, 4 +cn.eu.org, 4 +cn.it, 0 +cn.ua, 0 +cng.br, 0 +cns.joyent.com, 6 +cnt.br, 0 +co, 0 +co.ae, 0 +co.ag, 0 +co.ao, 0 +co.at, 0 +co.bb, 0 +co.bi, 0 +co.bw, 0 +co.ca, 4 +co.ci, 0 +co.cl, 0 +co.cm, 0 +co.com, 4 +co.cr, 0 +co.cz, 4 +co.dk, 4 +co.gg, 0 +co.gl, 0 +co.gy, 0 +co.hu, 0 +co.id, 0 +co.il, 0 +co.im, 0 +co.in, 0 +co.ir, 0 +co.it, 0 +co.je, 0 +co.jp, 0 +co.kr, 0 +co.krd, 4 +co.lc, 0 +co.ls, 0 +co.ma, 0 +co.me, 0 +co.mg, 0 +co.mu, 0 +co.mw, 0 +co.mz, 0 +co.na, 0 +co.ni, 0 +co.nl, 4 +co.no, 4 +co.nz, 0 +co.om, 0 +co.pl, 4 +co.pn, 0 +co.pw, 0 +co.rs, 0 +co.rw, 0 +co.st, 0 +co.sz, 0 +co.th, 0 +co.tj, 0 +co.tm, 0 +co.tt, 0 +co.tz, 0 +co.ua, 4 +co.ug, 0 +co.uk, 0 +co.us, 0 +co.uz, 0 +co.ve, 0 +co.vi, 0 +co.za, 0 +co.zm, 0 +co.zw, 0 +coach, 0 +coal.museum, 0 +coastaldefence.museum, 0 +codes, 0 +codespot.com, 4 +cody.museum, 0 +coffee, 0 +coldwar.museum, 0 +collection.museum, 0 +college, 0 +collegefan.org, 4 +cologne, 0 +colonialwilliamsburg.museum, 0 +coloradoplateau.museum, 0 +columbia.museum, 0 +columbus.museum, 0 +com, 0 +com.ac, 0 +com.af, 0 +com.ag, 0 +com.ai, 0 +com.al, 0 +com.ar, 0 +com.au, 0 +com.aw, 0 +com.az, 0 +com.ba, 0 +com.bb, 0 +com.bh, 0 +com.bi, 0 +com.bm, 0 +com.bo, 0 +com.br, 0 +com.bs, 0 +com.bt, 0 +com.by, 0 +com.bz, 0 +com.ci, 0 +com.cm, 0 +com.cn, 0 +com.co, 0 +com.cu, 0 +com.cw, 0 +com.cy, 0 +com.de, 4 +com.dm, 0 +com.do, 0 +com.dz, 0 +com.ec, 0 +com.ee, 0 +com.eg, 0 +com.es, 0 +com.et, 0 +com.fr, 0 +com.ge, 0 +com.gh, 0 +com.gi, 0 +com.gl, 0 +com.gn, 0 +com.gp, 0 +com.gr, 0 +com.gt, 0 +com.gy, 0 +com.hk, 0 +com.hn, 0 +com.hr, 0 +com.ht, 0 +com.im, 0 +com.io, 0 +com.iq, 0 +com.is, 0 +com.jo, 0 +com.kg, 0 +com.ki, 0 +com.km, 0 +com.kp, 0 +com.ky, 0 +com.kz, 0 +com.la, 0 +com.lb, 0 +com.lc, 0 +com.lk, 0 +com.lr, 0 +com.lv, 0 +com.ly, 0 +com.mg, 0 +com.mk, 0 +com.ml, 0 +com.mo, 0 +com.ms, 0 +com.mt, 0 +com.mu, 0 +com.mv, 0 +com.mw, 0 +com.mx, 0 +com.my, 0 +com.na, 0 +com.nf, 0 +com.ng, 0 +com.ni, 0 +com.nr, 0 +com.om, 0 +com.pa, 0 +com.pe, 0 +com.pf, 0 +com.ph, 0 +com.pk, 0 +com.pl, 0 +com.pr, 0 +com.ps, 0 +com.pt, 0 +com.py, 0 +com.qa, 0 +com.re, 0 +com.ro, 0 +com.ru, 4 +com.rw, 0 +com.sa, 0 +com.sb, 0 +com.sc, 0 +com.sd, 0 +com.se, 4 +com.sg, 0 +com.sh, 0 +com.sl, 0 +com.sn, 0 +com.so, 0 +com.st, 0 +com.sv, 0 +com.sy, 0 +com.tj, 0 +com.tm, 0 +com.tn, 0 +com.to, 0 +com.tr, 0 +com.tt, 0 +com.tw, 0 +com.ua, 0 +com.ug, 0 +com.uy, 0 +com.uz, 0 +com.vc, 0 +com.ve, 0 +com.vi, 0 +com.vn, 0 +com.vu, 0 +com.ws, 0 +com.zm, 0 +comcast, 0 +commbank, 0 +communication.museum, 0 +communications.museum, 0 +community, 0 +community.museum, 0 +como.it, 0 +company, 0 +compare, 0 +compute-1.amazonaws.com, 6 +compute.amazonaws.com, 6 +compute.amazonaws.com.cn, 6 +compute.estate, 6 +computer, 0 +computer.museum, 0 +computerhistory.museum, 0 +comsec, 0 +condos, 0 +conf.au, 0 +conf.lv, 0 +conference.aero, 0 +construction, 0 +consulado.st, 0 +consultant.aero, 0 +consulting, 0 +consulting.aero, 0 +contact, 0 +contemporary.museum, 0 +contemporaryart.museum, 0 +contractors, 0 +control.aero, 0 +convent.museum, 0 +cooking, 0 +cookingchannel, 0 +cool, 0 +coop, 0 +coop.br, 0 +coop.ht, 0 +coop.km, 0 +coop.mv, 0 +coop.mw, 0 +coop.py, 0 +coop.tt, 0 +copenhagen.museum, 0 +corporation.museum, 0 +corsica, 0 +corvette.museum, 0 +cosenza.it, 0 +costume.museum, 0 +couchpotatofries.org, 4 +council.aero, 0 +country, 0 +countryestate.museum, 0 +county.museum, 0 +coupon, 0 +coupons, 0 +courses, 0 +cpa.pro, 0 +cq.cn, 0 +cr, 0 +cr.it, 0 +cr.ua, 0 +crafts.museum, 0 +cranbrook.museum, 0 +creation.museum, 0 +credit, 0 +creditcard, 0 +creditunion, 0 +cremona.it, 0 +crew.aero, 0 +cri.nz, 0 +cricket, 0 +crimea.ua, 0 +crotone.it, 0 +crown, 0 +crs, 0 +cruise, 0 +cruises, 0 +cryptonomic.net, 6 +cs.it, 0 +csc, 0 +ct.it, 0 +ct.us, 0 +cu, 0 +cuisinella, 0 +cultural.museum, 0 +culturalcenter.museum, 0 +culture.museum, 0 +cuneo.it, 0 +cupcake.is, 4 +customer.enonic.io, 4 +cv, 0 +cv.ua, 0 +cw, 0 +cx, 0 +cy, 0 +cy.eu.org, 4 +cya.gg, 4 +cyber.museum, 0 +cymru, 0 +cymru.museum, 0 +cyon.link, 4 +cyon.site, 4 +cyou, 0 +cz, 0 +cz.eu.org, 4 +cz.it, 0 +czeladz.pl, 0 +czest.pl, 0 +d.bg, 0 +d.se, 0 +dabur, 0 +dad, 0 +daegu.kr, 0 +daejeon.kr, 0 +dagestan.ru, 4 +dagestan.su, 4 +daigo.ibaraki.jp, 0 +daisen.akita.jp, 0 +daito.osaka.jp, 0 +daiwa.hiroshima.jp, 0 +dali.museum, 0 +dallas.museum, 0 +damnserver.com, 4 +dance, 0 +daplie.me, 4 +data, 0 +database.museum, 0 +date, 0 +date.fukushima.jp, 0 +date.hokkaido.jp, 0 +dating, 0 +datsun, 0 +davvenjarga.no, 0 +davvesiida.no, 0 +day, 0 +dazaifu.fukuoka.jp, 0 +dc.us, 0 +dclk, 0 +dd-dns.de, 4 +ddns.me, 4 +ddns.net, 4 +ddnsking.com, 4 +ddnss.de, 4 +ddnss.org, 4 +ddr.museum, 0 +dds, 0 +de, 0 +de.com, 4 +de.eu.org, 4 +de.us, 0 +deal, 0 +dealer, 0 +deals, 0 +deatnu.no, 0 +decorativearts.museum, 0 +dedyn.io, 4 +defense.tn, 0 +degree, 0 +delaware.museum, 0 +delivery, 0 +dell, 0 +dell-ogliastra.it, 0 +dellogliastra.it, 0 +delmenhorst.museum, 0 +deloitte, 0 +delta, 0 +democrat, 0 +denmark.museum, 0 +dental, 0 +dentist, 0 +dep.no, 0 +depot.museum, 0 +desa.id, 0 +desi, 0 +design, 0 +design.aero, 0 +design.museum, 0 +detroit.museum, 0 +dev, 0 +dev-myqnapcloud.com, 4 +dev.static.land, 4 +df.leg.br, 4 +dgca.aero, 0 +dhl, 0 +diamonds, 0 +dielddanuorri.no, 0 +diet, 0 +digital, 0 +dinosaur.museum, 0 +direct, 0 +directory, 0 +discount, 0 +discover, 0 +discovery.museum, 0 +dish, 0 +diskstation.eu, 4 +diskstation.me, 4 +diskstation.org, 4 +ditchyourip.com, 4 +divtasvuodna.no, 0 +divttasvuotna.no, 0 +diy, 0 +dj, 0 +dk, 0 +dk.eu.org, 4 +dlugoleka.pl, 0 +dm, 0 +dn.ua, 0 +dnepropetrovsk.ua, 0 +dni.us, 0 +dnipropetrovsk.ua, 0 +dnp, 0 +dnsalias.com, 4 +dnsalias.net, 4 +dnsalias.org, 4 +dnsdojo.com, 4 +dnsdojo.net, 4 +dnsdojo.org, 4 +dnsfor.me, 4 +dnshome.de, 4 +dnsiskinky.com, 4 +dnsupdater.de, 4 +do, 0 +docs, 0 +doctor, 0 +dodge, 0 +does-it.net, 4 +doesntexist.com, 4 +doesntexist.org, 4 +dog, 0 +doha, 0 +dolls.museum, 0 +domains, 0 +dominic.ua, 0 +donetsk.ua, 0 +donna.no, 0 +donostia.museum, 0 +dontexist.com, 4 +dontexist.net, 4 +dontexist.org, 4 +doomdns.com, 4 +doomdns.org, 4 +doshi.yamanashi.jp, 0 +dot, 0 +dovre.no, 0 +download, 0 +dp.ua, 0 +dr.na, 0 +dr.tr, 0 +drammen.no, 0 +drangedal.no, 0 +dray-dns.de, 4 +draydns.de, 4 +dreamhosters.com, 4 +drive, 0 +drobak.no, 0 +drud.io, 4 +drud.us, 4 +dscloud.biz, 4 +dscloud.me, 4 +dscloud.mobi, 4 +dsmynas.com, 4 +dsmynas.net, 4 +dsmynas.org, 4 +dtv, 0 +dubai, 0 +duck, 0 +duckdns.org, 4 +dunlop, 0 +duns, 0 +dupont, 0 +durban, 0 +durham.museum, 0 +dvag, 0 +dvr, 0 +dvrcam.info, 4 +dvrdns.org, 4 +dy.fi, 4 +dyn-ip24.de, 4 +dyn-o-saur.com, 4 +dyn-vpn.de, 4 +dyn.cosidns.de, 4 +dyn.ddnss.de, 4 +dyn.home-webserver.de, 4 +dynalias.com, 4 +dynalias.net, 4 +dynalias.org, 4 +dynamic-dns.info, 4 +dynamisches-dns.de, 4 +dynathome.net, 4 +dyndns-at-home.com, 4 +dyndns-at-work.com, 4 +dyndns-blog.com, 4 +dyndns-free.com, 4 +dyndns-home.com, 4 +dyndns-ip.com, 4 +dyndns-mail.com, 4 +dyndns-office.com, 4 +dyndns-pics.com, 4 +dyndns-remote.com, 4 +dyndns-server.com, 4 +dyndns-web.com, 4 +dyndns-wiki.com, 4 +dyndns-work.com, 4 +dyndns.biz, 4 +dyndns.ddnss.de, 4 +dyndns.info, 4 +dyndns.org, 4 +dyndns.tv, 4 +dyndns.ws, 4 +dyndns1.de, 4 +dynns.com, 4 +dynv6.net, 4 +dynvpn.de, 4 +dyroy.no, 0 +dz, 0 +e.bg, 0 +e.se, 0 +e12.ve, 0 +e164.arpa, 0 +e4.cz, 4 +earth, 0 +east-kazakhstan.su, 4 +eastafrica.museum, 0 +eastcoast.museum, 0 +eat, 0 +eating-organic.net, 4 +ebetsu.hokkaido.jp, 0 +ebina.kanagawa.jp, 0 +ebino.miyazaki.jp, 0 +ebiz.tw, 0 +ec, 0 +echizen.fukui.jp, 0 +ecn.br, 0 +eco, 0 +eco.br, 0 +ed.ao, 0 +ed.ci, 0 +ed.cr, 0 +ed.jp, 0 +ed.pw, 0 +edeka, 0 +edogawa.tokyo.jp, 0 +edu, 0 +edu.ac, 0 +edu.af, 0 +edu.al, 0 +edu.ar, 0 +edu.au, 0 +edu.az, 0 +edu.ba, 0 +edu.bb, 0 +edu.bh, 0 +edu.bi, 0 +edu.bm, 0 +edu.bo, 0 +edu.br, 0 +edu.bs, 0 +edu.bt, 0 +edu.bz, 0 +edu.ci, 0 +edu.cn, 0 +edu.co, 0 +edu.cu, 0 +edu.cw, 0 +edu.dm, 0 +edu.do, 0 +edu.dz, 0 +edu.ec, 0 +edu.ee, 0 +edu.eg, 0 +edu.es, 0 +edu.et, 0 +edu.eu.org, 4 +edu.ge, 0 +edu.gh, 0 +edu.gi, 0 +edu.gl, 0 +edu.gn, 0 +edu.gp, 0 +edu.gr, 0 +edu.gt, 0 +edu.gy, 0 +edu.hk, 0 +edu.hn, 0 +edu.ht, 0 +edu.in, 0 +edu.iq, 0 +edu.is, 0 +edu.it, 0 +edu.jo, 0 +edu.kg, 0 +edu.ki, 0 +edu.km, 0 +edu.kn, 0 +edu.kp, 0 +edu.krd, 4 +edu.ky, 0 +edu.kz, 0 +edu.la, 0 +edu.lb, 0 +edu.lc, 0 +edu.lk, 0 +edu.lr, 0 +edu.lv, 0 +edu.ly, 0 +edu.me, 0 +edu.mg, 0 +edu.mk, 0 +edu.ml, 0 +edu.mn, 0 +edu.mo, 0 +edu.ms, 0 +edu.mt, 0 +edu.mv, 0 +edu.mw, 0 +edu.mx, 0 +edu.my, 0 +edu.mz, 0 +edu.ng, 0 +edu.ni, 0 +edu.nr, 0 +edu.om, 0 +edu.pa, 0 +edu.pe, 0 +edu.pf, 0 +edu.ph, 0 +edu.pk, 0 +edu.pl, 0 +edu.pn, 0 +edu.pr, 0 +edu.ps, 0 +edu.pt, 0 +edu.py, 0 +edu.qa, 0 +edu.rs, 0 +edu.ru, 0 +edu.rw, 0 +edu.sa, 0 +edu.sb, 0 +edu.sc, 0 +edu.sd, 0 +edu.sg, 0 +edu.sl, 0 +edu.sn, 0 +edu.st, 0 +edu.sv, 0 +edu.sy, 0 +edu.tj, 0 +edu.tm, 0 +edu.to, 0 +edu.tr, 0 +edu.tt, 0 +edu.tw, 0 +edu.ua, 0 +edu.uy, 0 +edu.vc, 0 +edu.ve, 0 +edu.vn, 0 +edu.vu, 0 +edu.ws, 0 +edu.za, 0 +edu.zm, 0 +education, 0 +education.museum, 0 +educational.museum, 0 +educator.aero, 0 +edunet.tn, 0 +ee, 0 +ee.eu.org, 4 +eg, 0 +egersund.no, 0 +egyptian.museum, 0 +ehime.jp, 0 +eid.no, 0 +eidfjord.no, 0 +eidsberg.no, 0 +eidskog.no, 0 +eidsvoll.no, 0 +eigersund.no, 0 +eiheiji.fukui.jp, 0 +eisenbahn.museum, 0 +ekloges.cy, 0 +elasticbeanstalk.cn-north-1.amazonaws.com.cn, 4 +elasticbeanstalk.com, 6 +elb.amazonaws.com, 6 +elb.amazonaws.com.cn, 6 +elblag.pl, 0 +elburg.museum, 0 +elk.pl, 0 +elvendrell.museum, 0 +elverum.no, 0 +email, 0 +embaixada.st, 0 +embetsu.hokkaido.jp, 0 +embroidery.museum, 0 +emerck, 0 +emergency.aero, 0 +emilia-romagna.it, 0 +emiliaromagna.it, 0 +emp.br, 0 +emr.it, 0 +en.it, 0 +ena.gifu.jp, 0 +encyclopedic.museum, 0 +endofinternet.net, 4 +endofinternet.org, 4 +endoftheinternet.org, 4 +enebakk.no, 0 +energy, 0 +eng.br, 0 +eng.pro, 0 +engerdal.no, 0 +engine.aero, 0 +engineer, 0 +engineer.aero, 0 +engineering, 0 +england.museum, 0 +eniwa.hokkaido.jp, 0 +enna.it, 0 +enonic.io, 4 +ens.tn, 0 +enterprises, 0 +entertainment.aero, 0 +entomology.museum, 0 +environment.museum, 0 +environmentalconservation.museum, 0 +epilepsy.museum, 0 +epost, 0 +epson, 0 +equipment, 0 +equipment.aero, 0 +er, 2 +ericsson, 0 +erimo.hokkaido.jp, 0 +erni, 0 +erotica.hu, 0 +erotika.hu, 0 +es, 0 +es.eu.org, 4 +es.kr, 0 +es.leg.br, 4 +esan.hokkaido.jp, 0 +esashi.hokkaido.jp, 0 +esp.br, 0 +esq, 0 +essex.museum, 0 +est-a-la-maison.com, 4 +est-a-la-masion.com, 4 +est-le-patron.com, 4 +est-mon-blogueur.com, 4 +est.pr, 0 +estate, 0 +estate.museum, 0 +esurance, 0 +et, 0 +etajima.hiroshima.jp, 0 +etc.br, 0 +ethnology.museum, 0 +eti.br, 0 +etisalat, 0 +etne.no, 0 +etnedal.no, 0 +eu, 0 +eu-1.evennode.com, 4 +eu-2.evennode.com, 4 +eu-3.evennode.com, 4 +eu.com, 4 +eu.int, 0 +eu.meteorapp.com, 4 +eu.org, 4 +eun.eg, 0 +eurovision, 0 +eus, 0 +evenassi.no, 0 +evenes.no, 0 +events, 0 +everbank, 0 +evje-og-hornnes.no, 0 +ex.ortsinfo.at, 6 +exchange, 0 +exchange.aero, 0 +exeter.museum, 0 +exhibition.museum, 0 +exnet.su, 4 +expert, 0 +experts-comptables.fr, 0 +exposed, 0 +express, 0 +express.aero, 0 +ext.githubcloud.com, 6 +extraspace, 0 +f.bg, 0 +f.se, 0 +fage, 0 +fail, 0 +fairwinds, 0 +faith, 0 +fam.pk, 0 +family, 0 +family.museum, 0 +familyds.com, 4 +familyds.net, 4 +familyds.org, 4 +fan, 0 +fans, 0 +fantasyleague.cc, 4 +far.br, 0 +farm, 0 +farm.museum, 0 +farmequipment.museum, 0 +farmers, 0 +farmers.museum, 0 +farmstead.museum, 0 +farsund.no, 0 +fashion, 0 +fast, 0 +fastlylb.net, 4 +fauske.no, 0 +fbx-os.fr, 4 +fbxos.fr, 4 +fc.it, 0 +fe.it, 0 +fed.us, 0 +federation.aero, 0 +fedex, 0 +fedje.no, 0 +fedorainfracloud.org, 4 +fedorapeople.org, 4 +feedback, 0 +fermo.it, 0 +ferrara.it, 0 +ferrari, 0 +ferrero, 0 +feste-ip.net, 4 +fet.no, 0 +fetsund.no, 0 +fg.it, 0 +fh.se, 0 +fhapp.xyz, 4 +fhs.no, 0 +fhsk.se, 0 +fhv.se, 0 +fi, 0 +fi.cr, 0 +fi.eu.org, 4 +fi.it, 0 +fiat, 0 +fidelity, 0 +fido, 0 +fie.ee, 0 +field.museum, 0 +figueres.museum, 0 +filatelia.museum, 0 +film, 0 +film.hu, 0 +film.museum, 0 +fin.ec, 0 +fin.tn, 0 +final, 0 +finance, 0 +financial, 0 +fineart.museum, 0 +finearts.museum, 0 +finland.museum, 0 +finnoy.no, 0 +fire, 0 +firebaseapp.com, 4 +firenze.it, 0 +firestone, 0 +firewall-gateway.com, 4 +firewall-gateway.de, 4 +firewall-gateway.net, 4 +firm.co, 0 +firm.dk, 4 +firm.ht, 0 +firm.in, 0 +firm.nf, 0 +firm.ro, 0 +firm.ve, 0 +firmdale, 0 +fish, 0 +fishing, 0 +fit, 0 +fitjar.no, 0 +fitness, 0 +fj, 2 +fj.cn, 0 +fjaler.no, 0 +fjell.no, 0 +fk, 2 +fl.us, 0 +fla.no, 0 +flakstad.no, 0 +flanders.museum, 0 +flatanger.no, 0 +flekkefjord.no, 0 +flesberg.no, 0 +flickr, 0 +flight.aero, 0 +flights, 0 +flir, 0 +flog.br, 0 +flora.no, 0 +florence.it, 0 +florida.museum, 0 +florist, 0 +floro.no, 0 +flowers, 0 +fly, 0 +flynnhub.com, 4 +fm, 0 +fm.br, 0 +fm.it, 0 +fm.no, 0 +fnd.br, 0 +fo, 0 +foggia.it, 0 +folkebibl.no, 0 +folldal.no, 0 +foo, 0 +food, 0 +foodnetwork, 0 +football, 0 +for-better.biz, 4 +for-more.biz, 4 +for-our.info, 4 +for-some.biz, 4 +for-the.biz, 4 +force.museum, 0 +ford, 0 +forde.no, 0 +forex, 0 +forgot.her.name, 4 +forgot.his.name, 4 +forli-cesena.it, 0 +forlicesena.it, 0 +forsale, 0 +forsand.no, 0 +fortmissoula.museum, 0 +fortworth.museum, 0 +forum, 0 +forum.hu, 0 +fosnes.no, 0 +fot.br, 0 +foundation, 0 +foundation.museum, 0 +fox, 0 +fr, 0 +fr.eu.org, 4 +fr.it, 0 +frana.no, 0 +francaise.museum, 0 +frankfurt.museum, 0 +franziskaner.museum, 0 +fredrikstad.no, 0 +free, 0 +freebox-os.com, 4 +freebox-os.fr, 4 +freeboxos.com, 4 +freeboxos.fr, 4 +freemasonry.museum, 0 +freetls.fastly.net, 4 +frei.no, 0 +freiburg.museum, 0 +freight.aero, 0 +fresenius, 0 +fribourg.museum, 0 +friuli-v-giulia.it, 0 +friuli-ve-giulia.it, 0 +friuli-vegiulia.it, 0 +friuli-venezia-giulia.it, 0 +friuli-veneziagiulia.it, 0 +friuli-vgiulia.it, 0 +friuliv-giulia.it, 0 +friulive-giulia.it, 0 +friulivegiulia.it, 0 +friulivenezia-giulia.it, 0 +friuliveneziagiulia.it, 0 +friulivgiulia.it, 0 +frl, 0 +frog.museum, 0 +frogans, 0 +frogn.no, 0 +froland.no, 0 +from-ak.com, 4 +from-al.com, 4 +from-ar.com, 4 +from-az.net, 4 +from-ca.com, 4 +from-co.net, 4 +from-ct.com, 4 +from-dc.com, 4 +from-de.com, 4 +from-fl.com, 4 +from-ga.com, 4 +from-hi.com, 4 +from-ia.com, 4 +from-id.com, 4 +from-il.com, 4 +from-in.com, 4 +from-ks.com, 4 +from-ky.com, 4 +from-la.net, 4 +from-ma.com, 4 +from-md.com, 4 +from-me.org, 4 +from-mi.com, 4 +from-mn.com, 4 +from-mo.com, 4 +from-ms.com, 4 +from-mt.com, 4 +from-nc.com, 4 +from-nd.com, 4 +from-ne.com, 4 +from-nh.com, 4 +from-nj.com, 4 +from-nm.com, 4 +from-nv.com, 4 +from-ny.net, 4 +from-oh.com, 4 +from-ok.com, 4 +from-or.com, 4 +from-pa.com, 4 +from-pr.com, 4 +from-ri.com, 4 +from-sc.com, 4 +from-sd.com, 4 +from-tn.com, 4 +from-tx.com, 4 +from-ut.com, 4 +from-va.com, 4 +from-vt.com, 4 +from-wa.com, 4 +from-wi.com, 4 +from-wv.com, 4 +from-wy.com, 4 +from.hr, 0 +frontdoor, 0 +frontier, 0 +frosinone.it, 0 +frosta.no, 0 +froya.no, 0 +fst.br, 0 +ftpaccess.cc, 4 +ftr, 0 +fuchu.hiroshima.jp, 0 +fuchu.tokyo.jp, 0 +fuchu.toyama.jp, 0 +fudai.iwate.jp, 0 +fuefuki.yamanashi.jp, 0 +fuel.aero, 0 +fuettertdasnetz.de, 4 +fuji.shizuoka.jp, 0 +fujieda.shizuoka.jp, 0 +fujiidera.osaka.jp, 0 +fujikawa.shizuoka.jp, 0 +fujikawa.yamanashi.jp, 0 +fujikawaguchiko.yamanashi.jp, 0 +fujimi.nagano.jp, 0 +fujimi.saitama.jp, 0 +fujimino.saitama.jp, 0 +fujinomiya.shizuoka.jp, 0 +fujioka.gunma.jp, 0 +fujisato.akita.jp, 0 +fujisawa.iwate.jp, 0 +fujisawa.kanagawa.jp, 0 +fujishiro.ibaraki.jp, 0 +fujitsu, 0 +fujixerox, 0 +fujiyoshida.yamanashi.jp, 0 +fukagawa.hokkaido.jp, 0 +fukaya.saitama.jp, 0 +fukuchi.fukuoka.jp, 0 +fukuchiyama.kyoto.jp, 0 +fukudomi.saga.jp, 0 +fukui.fukui.jp, 0 +fukui.jp, 0 +fukumitsu.toyama.jp, 0 +fukuoka.jp, 0 +fukuroi.shizuoka.jp, 0 +fukusaki.hyogo.jp, 0 +fukushima.fukushima.jp, 0 +fukushima.hokkaido.jp, 0 +fukushima.jp, 0 +fukuyama.hiroshima.jp, 0 +fun, 0 +funabashi.chiba.jp, 0 +funagata.yamagata.jp, 0 +funahashi.toyama.jp, 0 +fund, 0 +fundacio.museum, 0 +fuoisku.no, 0 +fuossko.no, 0 +furano.hokkaido.jp, 0 +furniture, 0 +furniture.museum, 0 +furubira.hokkaido.jp, 0 +furudono.fukushima.jp, 0 +furukawa.miyagi.jp, 0 +fusa.no, 0 +fuso.aichi.jp, 0 +fussa.tokyo.jp, 0 +futaba.fukushima.jp, 0 +futbol, 0 +futsu.nagasaki.jp, 0 +futtsu.chiba.jp, 0 +futurehosting.at, 4 +futuremailing.at, 4 +fvg.it, 0 +fyi, 0 +fylkesbibl.no, 0 +fyresdal.no, 0 +g.bg, 0 +g.se, 0 +g12.br, 0 +ga, 0 +ga.us, 0 +gaivuotna.no, 0 +gal, 0 +gallery, 0 +gallery.museum, 0 +gallo, 0 +gallup, 0 +galsa.no, 0 +gamagori.aichi.jp, 0 +game, 0 +game-host.org, 4 +game-server.cc, 4 +game.tw, 0 +games, 0 +games.hu, 0 +gamo.shiga.jp, 0 +gamvik.no, 0 +gangaviika.no, 0 +gangwon.kr, 0 +gap, 0 +garden, 0 +garden.museum, 0 +gateway.museum, 0 +gaular.no, 0 +gausdal.no, 0 +gb, 0 +gb.com, 4 +gb.net, 4 +gbiz, 0 +gc.ca, 0 +gd, 0 +gd.cn, 0 +gda.pl, 4 +gdansk.pl, 4 +gdn, 0 +gdynia.pl, 4 +ge, 0 +ge.it, 0 +gea, 0 +geek.nz, 0 +geekgalaxy.com, 4 +geelvinck.museum, 0 +geisei.kochi.jp, 0 +gemological.museum, 0 +gen.in, 0 +gen.nz, 0 +gen.tr, 0 +genkai.saga.jp, 0 +genoa.it, 0 +genova.it, 0 +gent, 0 +genting, 0 +geology.museum, 0 +geometre-expert.fr, 0 +george, 0 +georgia.museum, 0 +georgia.su, 4 +getmyip.com, 4 +gets-it.net, 4 +gf, 0 +gg, 0 +ggee, 0 +ggf.br, 0 +gh, 0 +gi, 0 +giehtavuoatna.no, 0 +giessen.museum, 0 +gift, 0 +gifts, 0 +gifu.gifu.jp, 0 +gifu.jp, 0 +gildeskal.no, 0 +ginan.gifu.jp, 0 +ginowan.okinawa.jp, 0 +ginoza.okinawa.jp, 0 +giske.no, 0 +gist.githubcloud.com, 4 +github.io, 4 +githubcloud.com, 4 +githubcloudusercontent.com, 6 +githubusercontent.com, 4 +gitlab.io, 4 +gives, 0 +giving, 0 +gjemnes.no, 0 +gjerdrum.no, 0 +gjerstad.no, 0 +gjesdal.no, 0 +gjovik.no, 0 +gl, 0 +glade, 0 +glas.museum, 0 +glass, 0 +glass.museum, 0 +gle, 0 +gliding.aero, 0 +gliwice.pl, 4 +global, 0 +global.prod.fastly.net, 4 +global.ssl.fastly.net, 4 +globo, 0 +glogow.pl, 0 +gloppen.no, 0 +gm, 0 +gmail, 0 +gmbh, 0 +gmina.pl, 0 +gmo, 0 +gmx, 0 +gn, 0 +gniezno.pl, 0 +go.ci, 0 +go.cr, 0 +go.dyndns.org, 4 +go.id, 0 +go.it, 0 +go.jp, 0 +go.kr, 0 +go.leg.br, 4 +go.pw, 0 +go.th, 0 +go.tj, 0 +go.tz, 0 +go.ug, 0 +gob.ar, 0 +gob.bo, 0 +gob.cl, 0 +gob.do, 0 +gob.ec, 0 +gob.es, 0 +gob.gt, 0 +gob.hn, 0 +gob.mx, 0 +gob.ni, 0 +gob.pa, 0 +gob.pe, 0 +gob.pk, 0 +gob.sv, 0 +gob.ve, 0 +gobo.wakayama.jp, 0 +godaddy, 0 +godo.gifu.jp, 0 +goip.de, 4 +gojome.akita.jp, 0 +gok.pk, 0 +gokase.miyazaki.jp, 0 +gol.no, 0 +gold, 0 +goldpoint, 0 +golf, 0 +golffan.us, 4 +gon.pk, 0 +gonohe.aomori.jp, 0 +goo, 0 +goodhands, 0 +goodyear, 0 +goog, 0 +google, 0 +googleapis.com, 4 +googlecode.com, 4 +gop, 0 +gop.pk, 0 +gorge.museum, 0 +gorizia.it, 0 +gorlice.pl, 0 +gos.pk, 0 +gose.nara.jp, 0 +gosen.niigata.jp, 0 +goshiki.hyogo.jp, 0 +got, 0 +gotdns.ch, 4 +gotdns.com, 4 +gotdns.org, 4 +gotemba.shizuoka.jp, 0 +goto.nagasaki.jp, 0 +gotpantheon.com, 4 +gotsu.shimane.jp, 0 +gouv.bj, 0 +gouv.ci, 0 +gouv.fr, 0 +gouv.ht, 0 +gouv.km, 0 +gouv.ml, 0 +gouv.rw, 0 +gouv.sn, 0 +gov, 0 +gov.ac, 0 +gov.ae, 0 +gov.af, 0 +gov.al, 0 +gov.ar, 0 +gov.as, 0 +gov.au, 0 +gov.az, 0 +gov.ba, 0 +gov.bb, 0 +gov.bf, 0 +gov.bh, 0 +gov.bm, 0 +gov.bo, 0 +gov.br, 0 +gov.bs, 0 +gov.bt, 0 +gov.by, 0 +gov.bz, 0 +gov.cd, 0 +gov.cl, 0 +gov.cm, 0 +gov.cn, 0 +gov.co, 0 +gov.cu, 0 +gov.cx, 0 +gov.cy, 0 +gov.dm, 0 +gov.do, 0 +gov.dz, 0 +gov.ec, 0 +gov.ee, 0 +gov.eg, 0 +gov.et, 0 +gov.ge, 0 +gov.gh, 0 +gov.gi, 0 +gov.gn, 0 +gov.gr, 0 +gov.gy, 0 +gov.hk, 0 +gov.ie, 0 +gov.il, 0 +gov.in, 0 +gov.iq, 0 +gov.ir, 0 +gov.is, 0 +gov.it, 0 +gov.jo, 0 +gov.kg, 0 +gov.ki, 0 +gov.km, 0 +gov.kn, 0 +gov.kp, 0 +gov.ky, 0 +gov.kz, 0 +gov.la, 0 +gov.lb, 0 +gov.lc, 0 +gov.lk, 0 +gov.lr, 0 +gov.lt, 0 +gov.lv, 0 +gov.ly, 0 +gov.ma, 0 +gov.me, 0 +gov.mg, 0 +gov.mk, 0 +gov.ml, 0 +gov.mn, 0 +gov.mo, 0 +gov.mr, 0 +gov.ms, 0 +gov.mu, 0 +gov.mv, 0 +gov.mw, 0 +gov.my, 0 +gov.mz, 0 +gov.nc.tr, 0 +gov.ng, 0 +gov.nr, 0 +gov.om, 0 +gov.ph, 0 +gov.pk, 0 +gov.pl, 0 +gov.pn, 0 +gov.pr, 0 +gov.ps, 0 +gov.pt, 0 +gov.py, 0 +gov.qa, 0 +gov.rs, 0 +gov.ru, 0 +gov.rw, 0 +gov.sa, 0 +gov.sb, 0 +gov.sc, 0 +gov.sd, 0 +gov.sg, 0 +gov.sh, 0 +gov.sl, 0 +gov.st, 0 +gov.sx, 0 +gov.sy, 0 +gov.tj, 0 +gov.tl, 0 +gov.tm, 0 +gov.tn, 0 +gov.to, 0 +gov.tr, 0 +gov.tt, 0 +gov.tw, 0 +gov.ua, 0 +gov.uk, 0 +gov.vc, 0 +gov.ve, 0 +gov.vn, 0 +gov.ws, 0 +gov.za, 0 +gov.zm, 0 +gov.zw, 0 +government.aero, 0 +govt.nz, 0 +gp, 0 +gq, 0 +gr, 0 +gr.com, 4 +gr.eu.org, 4 +gr.it, 0 +gr.jp, 0 +grainger, 0 +grajewo.pl, 0 +gran.no, 0 +grandrapids.museum, 0 +grane.no, 0 +granvin.no, 0 +graphics, 0 +gratangen.no, 0 +gratis, 0 +graz.museum, 0 +green, 0 +greta.fr, 0 +grimstad.no, 0 +gripe, 0 +griw.gov.pl, 0 +grocery, 0 +groks-the.info, 4 +groks-this.info, 4 +grondar.za, 0 +grong.no, 0 +grosseto.it, 0 +groundhandling.aero, 0 +group, 0 +group.aero, 0 +grozny.ru, 4 +grozny.su, 4 +grp.lk, 0 +grue.no, 0 +gs, 0 +gs.aa.no, 0 +gs.ah.no, 0 +gs.bu.no, 0 +gs.cn, 0 +gs.fm.no, 0 +gs.hl.no, 0 +gs.hm.no, 0 +gs.jan-mayen.no, 0 +gs.mr.no, 0 +gs.nl.no, 0 +gs.nt.no, 0 +gs.of.no, 0 +gs.ol.no, 0 +gs.oslo.no, 0 +gs.rl.no, 0 +gs.sf.no, 0 +gs.st.no, 0 +gs.svalbard.no, 0 +gs.tm.no, 0 +gs.tr.no, 0 +gs.va.no, 0 +gs.vf.no, 0 +gsm.pl, 0 +gt, 0 +gu, 2 +gu.us, 0 +guardian, 0 +gub.uy, 0 +gucci, 0 +guernsey.museum, 0 +guge, 0 +guide, 0 +guitars, 0 +gujo.gifu.jp, 0 +gulen.no, 0 +gunma.jp, 0 +guovdageaidnu.no, 0 +guru, 0 +gushikami.okinawa.jp, 0 +gv.ao, 0 +gv.at, 0 +gw, 0 +gwangju.kr, 0 +gx.cn, 0 +gy, 0 +gyeongbuk.kr, 0 +gyeonggi.kr, 0 +gyeongnam.kr, 0 +gyokuto.kumamoto.jp, 0 +gz.cn, 0 +h.bg, 0 +h.se, 0 +ha.cn, 0 +ha.no, 0 +habikino.osaka.jp, 0 +habmer.no, 0 +haboro.hokkaido.jp, 0 +hachijo.tokyo.jp, 0 +hachinohe.aomori.jp, 0 +hachioji.tokyo.jp, 0 +hachirogata.akita.jp, 0 +hadano.kanagawa.jp, 0 +hadsel.no, 0 +haebaru.okinawa.jp, 0 +haga.tochigi.jp, 0 +hagebostad.no, 0 +hagi.yamaguchi.jp, 0 +haibara.shizuoka.jp, 0 +hair, 0 +hakata.fukuoka.jp, 0 +hakodate.hokkaido.jp, 0 +hakone.kanagawa.jp, 0 +hakuba.nagano.jp, 0 +hakui.ishikawa.jp, 0 +hakusan.ishikawa.jp, 0 +halden.no, 0 +halloffame.museum, 0 +halsa.no, 0 +ham-radio-op.net, 4 +hamada.shimane.jp, 0 +hamamatsu.shizuoka.jp, 0 +hamar.no, 0 +hamaroy.no, 0 +hamatama.saga.jp, 0 +hamatonbetsu.hokkaido.jp, 0 +hamburg, 0 +hamburg.museum, 0 +hammarfeasta.no, 0 +hammerfest.no, 0 +hamura.tokyo.jp, 0 +hanamaki.iwate.jp, 0 +hanamigawa.chiba.jp, 0 +hanawa.fukushima.jp, 0 +handa.aichi.jp, 0 +handson.museum, 0 +hanggliding.aero, 0 +hangout, 0 +hannan.osaka.jp, 0 +hanno.saitama.jp, 0 +hanyu.saitama.jp, 0 +hapmir.no, 0 +happou.akita.jp, 0 +hara.nagano.jp, 0 +haram.no, 0 +hareid.no, 0 +harima.hyogo.jp, 0 +harstad.no, 0 +harvestcelebration.museum, 0 +hasama.oita.jp, 0 +hasami.nagasaki.jp, 0 +hashbang.sh, 4 +hashikami.aomori.jp, 0 +hashima.gifu.jp, 0 +hashimoto.wakayama.jp, 0 +hasuda.saitama.jp, 0 +hasura-app.io, 4 +hasvik.no, 0 +hatogaya.saitama.jp, 0 +hatoyama.saitama.jp, 0 +hatsukaichi.hiroshima.jp, 0 +hattfjelldal.no, 0 +haugesund.no, 0 +haus, 0 +hawaii.museum, 0 +hayakawa.yamanashi.jp, 0 +hayashima.okayama.jp, 0 +hazu.aichi.jp, 0 +hb.cn, 0 +hbo, 0 +hdfc, 0 +hdfcbank, 0 +he.cn, 0 +health, 0 +health-carereform.com, 4 +health.museum, 0 +health.nz, 0 +health.vn, 0 +healthcare, 0 +heguri.nara.jp, 0 +heimatunduhren.museum, 0 +hekinan.aichi.jp, 0 +hellas.museum, 0 +help, 0 +helsinki, 0 +helsinki.museum, 0 +hembygdsforbund.museum, 0 +hemne.no, 0 +hemnes.no, 0 +hemsedal.no, 0 +hepforge.org, 4 +herad.no, 0 +here, 0 +here-for-more.info, 4 +heritage.museum, 0 +hermes, 0 +herokuapp.com, 4 +herokussl.com, 4 +heroy.more-og-romsdal.no, 0 +heroy.nordland.no, 0 +hgtv, 0 +hi.cn, 0 +hi.us, 0 +hichiso.gifu.jp, 0 +hida.gifu.jp, 0 +hidaka.hokkaido.jp, 0 +hidaka.kochi.jp, 0 +hidaka.saitama.jp, 0 +hidaka.wakayama.jp, 0 +higashi.fukuoka.jp, 0 +higashi.fukushima.jp, 0 +higashi.okinawa.jp, 0 +higashiagatsuma.gunma.jp, 0 +higashichichibu.saitama.jp, 0 +higashihiroshima.hiroshima.jp, 0 +higashiizu.shizuoka.jp, 0 +higashiizumo.shimane.jp, 0 +higashikagawa.kagawa.jp, 0 +higashikagura.hokkaido.jp, 0 +higashikawa.hokkaido.jp, 0 +higashikurume.tokyo.jp, 0 +higashimatsushima.miyagi.jp, 0 +higashimatsuyama.saitama.jp, 0 +higashimurayama.tokyo.jp, 0 +higashinaruse.akita.jp, 0 +higashine.yamagata.jp, 0 +higashiomi.shiga.jp, 0 +higashiosaka.osaka.jp, 0 +higashishirakawa.gifu.jp, 0 +higashisumiyoshi.osaka.jp, 0 +higashitsuno.kochi.jp, 0 +higashiura.aichi.jp, 0 +higashiyama.kyoto.jp, 0 +higashiyamato.tokyo.jp, 0 +higashiyodogawa.osaka.jp, 0 +higashiyoshino.nara.jp, 0 +hiji.oita.jp, 0 +hikari.yamaguchi.jp, 0 +hikawa.shimane.jp, 0 +hikimi.shimane.jp, 0 +hikone.shiga.jp, 0 +himeji.hyogo.jp, 0 +himeshima.oita.jp, 0 +himi.toyama.jp, 0 +hino.tokyo.jp, 0 +hino.tottori.jp, 0 +hinode.tokyo.jp, 0 +hinohara.tokyo.jp, 0 +hioki.kagoshima.jp, 0 +hiphop, 0 +hirado.nagasaki.jp, 0 +hiraizumi.iwate.jp, 0 +hirakata.osaka.jp, 0 +hiranai.aomori.jp, 0 +hirara.okinawa.jp, 0 +hirata.fukushima.jp, 0 +hiratsuka.kanagawa.jp, 0 +hiraya.nagano.jp, 0 +hirogawa.wakayama.jp, 0 +hirokawa.fukuoka.jp, 0 +hirono.fukushima.jp, 0 +hirono.iwate.jp, 0 +hiroo.hokkaido.jp, 0 +hirosaki.aomori.jp, 0 +hiroshima.jp, 0 +hisamitsu, 0 +hisayama.fukuoka.jp, 0 +histoire.museum, 0 +historical.museum, 0 +historicalsociety.museum, 0 +historichouses.museum, 0 +historisch.museum, 0 +historisches.museum, 0 +history.museum, 0 +historyofscience.museum, 0 +hita.oita.jp, 0 +hitachi, 0 +hitachi.ibaraki.jp, 0 +hitachinaka.ibaraki.jp, 0 +hitachiomiya.ibaraki.jp, 0 +hitachiota.ibaraki.jp, 0 +hitra.no, 0 +hiv, 0 +hizen.saga.jp, 0 +hjartdal.no, 0 +hjelmeland.no, 0 +hk, 0 +hk.cn, 0 +hk.com, 4 +hk.org, 4 +hkt, 0 +hl.cn, 0 +hl.no, 0 +hm, 0 +hm.no, 0 +hn, 0 +hn.cn, 0 +hobby-site.com, 4 +hobby-site.org, 4 +hobol.no, 0 +hockey, 0 +hof.no, 0 +hofu.yamaguchi.jp, 0 +hokkaido.jp, 0 +hokksund.no, 0 +hokuryu.hokkaido.jp, 0 +hokuto.hokkaido.jp, 0 +hokuto.yamanashi.jp, 0 +hol.no, 0 +holdings, 0 +hole.no, 0 +holiday, 0 +holmestrand.no, 0 +holtalen.no, 0 +home-webserver.de, 4 +home.dyndns.org, 4 +homebuilt.aero, 0 +homedepot, 0 +homedns.org, 4 +homeftp.net, 4 +homeftp.org, 4 +homegoods, 0 +homeip.net, 4 +homelink.one, 4 +homelinux.com, 4 +homelinux.net, 4 +homelinux.org, 4 +homeoffice.gov.uk, 4 +homes, 0 +homesecuritymac.com, 4 +homesecuritypc.com, 4 +homesense, 0 +homeunix.com, 4 +homeunix.net, 4 +homeunix.org, 4 +honai.ehime.jp, 0 +honbetsu.hokkaido.jp, 0 +honda, 0 +honefoss.no, 0 +honeywell, 0 +hongo.hiroshima.jp, 0 +honjo.akita.jp, 0 +honjo.saitama.jp, 0 +honjyo.akita.jp, 0 +hopto.me, 4 +hopto.org, 4 +hornindal.no, 0 +horokanai.hokkaido.jp, 0 +horology.museum, 0 +horonobe.hokkaido.jp, 0 +horse, 0 +horten.no, 0 +hospital, 0 +host, 0 +hosting, 0 +hot, 0 +hotel.hu, 0 +hotel.lk, 0 +hotel.tz, 0 +hoteles, 0 +hotels, 0 +hotmail, 0 +house, 0 +house.museum, 0 +how, 0 +hoyanger.no, 0 +hoylandet.no, 0 +hr, 0 +hr.eu.org, 4 +hs.kr, 0 +hsbc, 0 +ht, 0 +htc, 0 +hu, 0 +hu.com, 4 +hu.eu.org, 4 +hu.net, 4 +hughes, 0 +huissier-justice.fr, 0 +humanities.museum, 0 +hurdal.no, 0 +hurum.no, 0 +hvaler.no, 0 +hyatt, 0 +hyllestad.no, 0 +hyogo.jp, 0 +hyuga.miyazaki.jp, 0 +hyundai, 0 +hzc.io, 4 +i.bg, 0 +i.ng, 0 +i.ph, 0 +i.se, 0 +i234.me, 4 +ia.us, 0 +iamallama.com, 4 +ibara.okayama.jp, 0 +ibaraki.ibaraki.jp, 0 +ibaraki.jp, 0 +ibaraki.osaka.jp, 0 +ibestad.no, 0 +ibigawa.gifu.jp, 0 +ibm, 0 +ic.gov.pl, 0 +icbc, 0 +ice, 0 +ichiba.tokushima.jp, 0 +ichihara.chiba.jp, 0 +ichikai.tochigi.jp, 0 +ichikawa.chiba.jp, 0 +ichikawa.hyogo.jp, 0 +ichikawamisato.yamanashi.jp, 0 +ichinohe.iwate.jp, 0 +ichinomiya.aichi.jp, 0 +ichinomiya.chiba.jp, 0 +ichinoseki.iwate.jp, 0 +icu, 0 +id, 0 +id.au, 0 +id.ir, 0 +id.lv, 0 +id.ly, 0 +id.us, 0 +ide.kyoto.jp, 0 +idf.il, 0 +idrett.no, 0 +idv.hk, 0 +idv.tw, 0 +ie, 0 +ie.eu.org, 4 +ieee, 0 +if.ua, 0 +ifm, 0 +iglesias-carbonia.it, 0 +iglesiascarbonia.it, 0 +iheya.okinawa.jp, 0 +iida.nagano.jp, 0 +iide.yamagata.jp, 0 +iijima.nagano.jp, 0 +iitate.fukushima.jp, 0 +iiyama.nagano.jp, 0 +iizuka.fukuoka.jp, 0 +iizuna.nagano.jp, 0 +ikano, 0 +ikaruga.nara.jp, 0 +ikata.ehime.jp, 0 +ikawa.akita.jp, 0 +ikeda.fukui.jp, 0 +ikeda.gifu.jp, 0 +ikeda.hokkaido.jp, 0 +ikeda.nagano.jp, 0 +ikeda.osaka.jp, 0 +iki.fi, 4 +iki.nagasaki.jp, 0 +ikoma.nara.jp, 0 +ikusaka.nagano.jp, 0 +il, 0 +il.eu.org, 4 +il.us, 0 +ilawa.pl, 0 +illustration.museum, 0 +ilovecollege.info, 4 +im, 0 +im.it, 0 +imabari.ehime.jp, 0 +imageandsound.museum, 0 +imakane.hokkaido.jp, 0 +imamat, 0 +imari.saga.jp, 0 +imb.br, 0 +imdb, 0 +imizu.toyama.jp, 0 +immo, 0 +immobilien, 0 +imperia.it, 0 +in, 0 +in-addr.arpa, 0 +in-the-band.net, 4 +in.eu.org, 4 +in.na, 0 +in.net, 4 +in.ni, 0 +in.rs, 0 +in.th, 0 +in.ua, 0 +in.us, 0 +ina.ibaraki.jp, 0 +ina.nagano.jp, 0 +ina.saitama.jp, 0 +inabe.mie.jp, 0 +inagawa.hyogo.jp, 0 +inagi.tokyo.jp, 0 +inami.toyama.jp, 0 +inami.wakayama.jp, 0 +inashiki.ibaraki.jp, 0 +inatsuki.fukuoka.jp, 0 +inawashiro.fukushima.jp, 0 +inazawa.aichi.jp, 0 +inc.hk, 4 +incheon.kr, 0 +ind.br, 0 +ind.gt, 0 +ind.in, 0 +ind.tn, 0 +inderoy.no, 0 +indian.museum, 0 +indiana.museum, 0 +indianapolis.museum, 0 +indianmarket.museum, 0 +industries, 0 +ine.kyoto.jp, 0 +inf.br, 0 +inf.cu, 0 +inf.mk, 0 +inf.ua, 4 +infiniti, 0 +info, 0 +info.at, 4 +info.au, 0 +info.az, 0 +info.bb, 0 +info.co, 0 +info.ec, 0 +info.et, 0 +info.ht, 0 +info.hu, 0 +info.ki, 0 +info.la, 0 +info.mv, 0 +info.na, 0 +info.nf, 0 +info.ni, 0 +info.nr, 0 +info.pk, 0 +info.pl, 0 +info.pr, 0 +info.ro, 0 +info.sd, 0 +info.tn, 0 +info.tr, 0 +info.tt, 0 +info.tz, 0 +info.ve, 0 +info.vn, 0 +info.zm, 0 +ing, 0 +ing.pa, 0 +ingatlan.hu, 0 +ink, 0 +ino.kochi.jp, 0 +institute, 0 +insurance, 0 +insurance.aero, 0 +insure, 0 +int, 0 +int.ar, 0 +int.az, 0 +int.bo, 0 +int.ci, 0 +int.co, 0 +int.eu.org, 4 +int.is, 0 +int.la, 0 +int.lk, 0 +int.mv, 0 +int.mw, 0 +int.ni, 0 +int.pt, 0 +int.ru, 0 +int.rw, 0 +int.tj, 0 +int.tt, 0 +int.ve, 0 +int.vn, 0 +intel, 0 +intelligence.museum, 0 +interactive.museum, 0 +international, 0 +internet-dns.de, 4 +intl.tn, 0 +intuit, 0 +inuyama.aichi.jp, 0 +investments, 0 +inzai.chiba.jp, 0 +io, 0 +ip6.arpa, 0 +ipifony.net, 4 +ipiranga, 0 +iq, 0 +ir, 0 +iraq.museum, 0 +iris.arpa, 0 +irish, 0 +iron.museum, 0 +iruma.saitama.jp, 0 +is, 0 +is-a-anarchist.com, 4 +is-a-blogger.com, 4 +is-a-bookkeeper.com, 4 +is-a-bruinsfan.org, 4 +is-a-bulls-fan.com, 4 +is-a-candidate.org, 4 +is-a-caterer.com, 4 +is-a-celticsfan.org, 4 +is-a-chef.com, 4 +is-a-chef.net, 4 +is-a-chef.org, 4 +is-a-conservative.com, 4 +is-a-cpa.com, 4 +is-a-cubicle-slave.com, 4 +is-a-democrat.com, 4 +is-a-designer.com, 4 +is-a-doctor.com, 4 +is-a-financialadvisor.com, 4 +is-a-geek.com, 4 +is-a-geek.net, 4 +is-a-geek.org, 4 +is-a-green.com, 4 +is-a-guru.com, 4 +is-a-hard-worker.com, 4 +is-a-hunter.com, 4 +is-a-knight.org, 4 +is-a-landscaper.com, 4 +is-a-lawyer.com, 4 +is-a-liberal.com, 4 +is-a-libertarian.com, 4 +is-a-linux-user.org, 4 +is-a-llama.com, 4 +is-a-musician.com, 4 +is-a-nascarfan.com, 4 +is-a-nurse.com, 4 +is-a-painter.com, 4 +is-a-patsfan.org, 4 +is-a-personaltrainer.com, 4 +is-a-photographer.com, 4 +is-a-player.com, 4 +is-a-republican.com, 4 +is-a-rockstar.com, 4 +is-a-socialist.com, 4 +is-a-soxfan.org, 4 +is-a-student.com, 4 +is-a-teacher.com, 4 +is-a-techie.com, 4 +is-a-therapist.com, 4 +is-an-accountant.com, 4 +is-an-actor.com, 4 +is-an-actress.com, 4 +is-an-anarchist.com, 4 +is-an-artist.com, 4 +is-an-engineer.com, 4 +is-an-entertainer.com, 4 +is-by.us, 4 +is-certified.com, 4 +is-found.org, 4 +is-gone.com, 4 +is-into-anime.com, 4 +is-into-cars.com, 4 +is-into-cartoons.com, 4 +is-into-games.com, 4 +is-leet.com, 4 +is-lost.org, 4 +is-not-certified.com, 4 +is-saved.org, 4 +is-slick.com, 4 +is-uberleet.com, 4 +is-very-bad.org, 4 +is-very-evil.org, 4 +is-very-good.org, 4 +is-very-nice.org, 4 +is-very-sweet.org, 4 +is-with-theband.com, 4 +is.eu.org, 4 +is.gov.pl, 0 +is.it, 0 +isa-geek.com, 4 +isa-geek.net, 4 +isa-geek.org, 4 +isa-hockeynut.com, 4 +isa.kagoshima.jp, 0 +isa.us, 0 +isahaya.nagasaki.jp, 0 +ise.mie.jp, 0 +isehara.kanagawa.jp, 0 +iselect, 0 +isen.kagoshima.jp, 0 +isernia.it, 0 +isesaki.gunma.jp, 0 +ishigaki.okinawa.jp, 0 +ishikari.hokkaido.jp, 0 +ishikawa.fukushima.jp, 0 +ishikawa.jp, 0 +ishikawa.okinawa.jp, 0 +ishinomaki.miyagi.jp, 0 +isla.pr, 0 +isleofman.museum, 0 +ismaili, 0 +isshiki.aichi.jp, 0 +issmarterthanyou.com, 4 +ist, 0 +istanbul, 0 +isteingeek.de, 4 +istmein.de, 4 +isumi.chiba.jp, 0 +it, 0 +it.ao, 0 +it.eu.org, 4 +itabashi.tokyo.jp, 0 +itako.ibaraki.jp, 0 +itakura.gunma.jp, 0 +itami.hyogo.jp, 0 +itano.tokushima.jp, 0 +itau, 0 +itayanagi.aomori.jp, 0 +ito.shizuoka.jp, 0 +itoigawa.niigata.jp, 0 +itoman.okinawa.jp, 0 +its.me, 0 +itv, 0 +ivano-frankivsk.ua, 0 +ivanovo.su, 4 +iveco, 0 +iveland.no, 0 +ivgu.no, 0 +iwade.wakayama.jp, 0 +iwafune.tochigi.jp, 0 +iwaizumi.iwate.jp, 0 +iwaki.fukushima.jp, 0 +iwakuni.yamaguchi.jp, 0 +iwakura.aichi.jp, 0 +iwama.ibaraki.jp, 0 +iwamizawa.hokkaido.jp, 0 +iwanai.hokkaido.jp, 0 +iwanuma.miyagi.jp, 0 +iwata.shizuoka.jp, 0 +iwate.iwate.jp, 0 +iwate.jp, 0 +iwatsuki.saitama.jp, 0 +iwc, 0 +iwi.nz, 0 +iyo.ehime.jp, 0 +iz.hr, 0 +izena.okinawa.jp, 0 +izu.shizuoka.jp, 0 +izumi.kagoshima.jp, 0 +izumi.osaka.jp, 0 +izumiotsu.osaka.jp, 0 +izumisano.osaka.jp, 0 +izumizaki.fukushima.jp, 0 +izumo.shimane.jp, 0 +izumozaki.niigata.jp, 0 +izunokuni.shizuoka.jp, 0 +j.bg, 0 +jaguar, 0 +jambyl.su, 4 +jamison.museum, 0 +jan-mayen.no, 0 +java, 0 +jaworzno.pl, 0 +jcb, 0 +jcp, 0 +je, 0 +jeep, 0 +jefferson.museum, 0 +jeju.kr, 0 +jelenia-gora.pl, 0 +jeonbuk.kr, 0 +jeonnam.kr, 0 +jerusalem.museum, 0 +jessheim.no, 0 +jetzt, 0 +jevnaker.no, 0 +jewelry, 0 +jewelry.museum, 0 +jewish.museum, 0 +jewishart.museum, 0 +jfk.museum, 0 +jgora.pl, 0 +jinsekikogen.hiroshima.jp, 0 +jio, 0 +jl.cn, 0 +jlc, 0 +jll, 0 +jm, 2 +jmp, 0 +jnj, 0 +jo, 0 +joboji.iwate.jp, 0 +jobs, 0 +jobs.tt, 0 +joburg, 0 +joetsu.niigata.jp, 0 +jogasz.hu, 0 +johana.toyama.jp, 0 +jolster.no, 0 +jondal.no, 0 +jor.br, 0 +jorpeland.no, 0 +joso.ibaraki.jp, 0 +jot, 0 +journal.aero, 0 +journalism.museum, 0 +journalist.aero, 0 +joy, 0 +joyo.kyoto.jp, 0 +jp, 0 +jp.eu.org, 4 +jp.net, 4 +jpmorgan, 0 +jpn.com, 4 +jprs, 0 +js.cn, 0 +js.org, 4 +judaica.museum, 0 +judygarland.museum, 0 +juedisches.museum, 0 +juegos, 0 +juif.museum, 0 +juniper, 0 +jur.pro, 0 +jus.br, 0 +jx.cn, 0 +k.bg, 0 +k.se, 0 +k12.ak.us, 0 +k12.al.us, 0 +k12.ar.us, 0 +k12.as.us, 0 +k12.az.us, 0 +k12.ca.us, 0 +k12.co.us, 0 +k12.ct.us, 0 +k12.dc.us, 0 +k12.de.us, 0 +k12.ec, 0 +k12.fl.us, 0 +k12.ga.us, 0 +k12.gu.us, 0 +k12.ia.us, 0 +k12.id.us, 0 +k12.il, 0 +k12.il.us, 0 +k12.in.us, 0 +k12.ks.us, 0 +k12.ky.us, 0 +k12.la.us, 0 +k12.ma.us, 0 +k12.md.us, 0 +k12.me.us, 0 +k12.mi.us, 0 +k12.mn.us, 0 +k12.mo.us, 0 +k12.ms.us, 0 +k12.mt.us, 0 +k12.nc.us, 0 +k12.ne.us, 0 +k12.nh.us, 0 +k12.nj.us, 0 +k12.nm.us, 0 +k12.nv.us, 0 +k12.ny.us, 0 +k12.oh.us, 0 +k12.ok.us, 0 +k12.or.us, 0 +k12.pa.us, 0 +k12.pr.us, 0 +k12.ri.us, 0 +k12.sc.us, 0 +k12.tn.us, 0 +k12.tr, 0 +k12.tx.us, 0 +k12.ut.us, 0 +k12.va.us, 0 +k12.vi, 0 +k12.vi.us, 0 +k12.vt.us, 0 +k12.wa.us, 0 +k12.wi.us, 0 +k12.wy.us, 0 +kadena.okinawa.jp, 0 +kadogawa.miyazaki.jp, 0 +kadoma.osaka.jp, 0 +kafjord.no, 0 +kaga.ishikawa.jp, 0 +kagami.kochi.jp, 0 +kagamiishi.fukushima.jp, 0 +kagamino.okayama.jp, 0 +kagawa.jp, 0 +kagoshima.jp, 0 +kagoshima.kagoshima.jp, 0 +kaho.fukuoka.jp, 0 +kahoku.ishikawa.jp, 0 +kahoku.yamagata.jp, 0 +kai.yamanashi.jp, 0 +kainan.tokushima.jp, 0 +kainan.wakayama.jp, 0 +kaisei.kanagawa.jp, 0 +kaita.hiroshima.jp, 0 +kaizuka.osaka.jp, 0 +kakamigahara.gifu.jp, 0 +kakegawa.shizuoka.jp, 0 +kakinoki.shimane.jp, 0 +kakogawa.hyogo.jp, 0 +kakuda.miyagi.jp, 0 +kalisz.pl, 0 +kalmykia.ru, 4 +kalmykia.su, 4 +kaluga.su, 4 +kamagaya.chiba.jp, 0 +kamaishi.iwate.jp, 0 +kamakura.kanagawa.jp, 0 +kameoka.kyoto.jp, 0 +kameyama.mie.jp, 0 +kami.kochi.jp, 0 +kami.miyagi.jp, 0 +kamiamakusa.kumamoto.jp, 0 +kamifurano.hokkaido.jp, 0 +kamigori.hyogo.jp, 0 +kamiichi.toyama.jp, 0 +kamiizumi.saitama.jp, 0 +kamijima.ehime.jp, 0 +kamikawa.hokkaido.jp, 0 +kamikawa.hyogo.jp, 0 +kamikawa.saitama.jp, 0 +kamikitayama.nara.jp, 0 +kamikoani.akita.jp, 0 +kamimine.saga.jp, 0 +kaminokawa.tochigi.jp, 0 +kaminoyama.yamagata.jp, 0 +kamioka.akita.jp, 0 +kamisato.saitama.jp, 0 +kamishihoro.hokkaido.jp, 0 +kamisu.ibaraki.jp, 0 +kamisunagawa.hokkaido.jp, 0 +kamitonda.wakayama.jp, 0 +kamitsue.oita.jp, 0 +kamo.kyoto.jp, 0 +kamo.niigata.jp, 0 +kamoenai.hokkaido.jp, 0 +kamogawa.chiba.jp, 0 +kanagawa.jp, 0 +kanan.osaka.jp, 0 +kanazawa.ishikawa.jp, 0 +kanegasaki.iwate.jp, 0 +kaneyama.fukushima.jp, 0 +kaneyama.yamagata.jp, 0 +kani.gifu.jp, 0 +kanie.aichi.jp, 0 +kanmaki.nara.jp, 0 +kanna.gunma.jp, 0 +kannami.shizuoka.jp, 0 +kanonji.kagawa.jp, 0 +kanoya.kagoshima.jp, 0 +kanra.gunma.jp, 0 +kanuma.tochigi.jp, 0 +kanzaki.saga.jp, 0 +karacol.su, 4 +karaganda.su, 4 +karasjohka.no, 0 +karasjok.no, 0 +karasuyama.tochigi.jp, 0 +karate.museum, 0 +karatsu.saga.jp, 0 +karelia.su, 4 +karikatur.museum, 0 +kariwa.niigata.jp, 0 +kariya.aichi.jp, 0 +karlsoy.no, 0 +karmoy.no, 0 +karpacz.pl, 0 +kartuzy.pl, 0 +karuizawa.nagano.jp, 0 +karumai.iwate.jp, 0 +kasahara.gifu.jp, 0 +kasai.hyogo.jp, 0 +kasama.ibaraki.jp, 0 +kasamatsu.gifu.jp, 0 +kasaoka.okayama.jp, 0 +kashiba.nara.jp, 0 +kashihara.nara.jp, 0 +kashima.ibaraki.jp, 0 +kashima.saga.jp, 0 +kashiwa.chiba.jp, 0 +kashiwara.osaka.jp, 0 +kashiwazaki.niigata.jp, 0 +kasuga.fukuoka.jp, 0 +kasuga.hyogo.jp, 0 +kasugai.aichi.jp, 0 +kasukabe.saitama.jp, 0 +kasumigaura.ibaraki.jp, 0 +kasuya.fukuoka.jp, 0 +kaszuby.pl, 0 +katagami.akita.jp, 0 +katano.osaka.jp, 0 +katashina.gunma.jp, 0 +katori.chiba.jp, 0 +katowice.pl, 0 +katsuragi.nara.jp, 0 +katsuragi.wakayama.jp, 0 +katsushika.tokyo.jp, 0 +katsuura.chiba.jp, 0 +katsuyama.fukui.jp, 0 +kaufen, 0 +kautokeino.no, 0 +kawaba.gunma.jp, 0 +kawachinagano.osaka.jp, 0 +kawagoe.mie.jp, 0 +kawagoe.saitama.jp, 0 +kawaguchi.saitama.jp, 0 +kawahara.tottori.jp, 0 +kawai.iwate.jp, 0 +kawai.nara.jp, 0 +kawajima.saitama.jp, 0 +kawakami.nagano.jp, 0 +kawakami.nara.jp, 0 +kawakita.ishikawa.jp, 0 +kawamata.fukushima.jp, 0 +kawaminami.miyazaki.jp, 0 +kawanabe.kagoshima.jp, 0 +kawanehon.shizuoka.jp, 0 +kawanishi.hyogo.jp, 0 +kawanishi.nara.jp, 0 +kawanishi.yamagata.jp, 0 +kawara.fukuoka.jp, 0 +kawasaki.jp, 2 +kawasaki.miyagi.jp, 0 +kawatana.nagasaki.jp, 0 +kawaue.gifu.jp, 0 +kawazu.shizuoka.jp, 0 +kayabe.hokkaido.jp, 0 +kazimierz-dolny.pl, 0 +kazo.saitama.jp, 0 +kazuno.akita.jp, 0 +kddi, 0 +ke, 2 +keisen.fukuoka.jp, 0 +kembuchi.hokkaido.jp, 0 +kep.tr, 0 +kepno.pl, 0 +kerryhotels, 0 +kerrylogistics, 0 +kerryproperties, 0 +ketrzyn.pl, 0 +keymachine.de, 4 +kfh, 0 +kg, 0 +kg.kr, 0 +kh, 2 +kh.ua, 0 +khakassia.su, 4 +kharkiv.ua, 0 +kharkov.ua, 0 +kherson.ua, 0 +khmelnitskiy.ua, 0 +khmelnytskyi.ua, 0 +ki, 0 +kia, 0 +kibichuo.okayama.jp, 0 +kicks-ass.net, 4 +kicks-ass.org, 4 +kids.museum, 0 +kids.us, 0 +kiev.ua, 0 +kiho.mie.jp, 0 +kihoku.ehime.jp, 0 +kijo.miyazaki.jp, 0 +kikonai.hokkaido.jp, 0 +kikuchi.kumamoto.jp, 0 +kikugawa.shizuoka.jp, 0 +kim, 0 +kimino.wakayama.jp, 0 +kimitsu.chiba.jp, 0 +kimobetsu.hokkaido.jp, 0 +kin.okinawa.jp, 0 +kinder, 0 +kindle, 0 +kinko.kagoshima.jp, 0 +kinokawa.wakayama.jp, 0 +kira.aichi.jp, 0 +kirkenes.no, 0 +kirovograd.ua, 0 +kiryu.gunma.jp, 0 +kisarazu.chiba.jp, 0 +kishiwada.osaka.jp, 0 +kiso.nagano.jp, 0 +kisofukushima.nagano.jp, 0 +kisosaki.mie.jp, 0 +kita.kyoto.jp, 0 +kita.osaka.jp, 0 +kita.tokyo.jp, 0 +kitaaiki.nagano.jp, 0 +kitaakita.akita.jp, 0 +kitadaito.okinawa.jp, 0 +kitagata.gifu.jp, 0 +kitagata.saga.jp, 0 +kitagawa.kochi.jp, 0 +kitagawa.miyazaki.jp, 0 +kitahata.saga.jp, 0 +kitahiroshima.hokkaido.jp, 0 +kitakami.iwate.jp, 0 +kitakata.fukushima.jp, 0 +kitakata.miyazaki.jp, 0 +kitakyushu.jp, 2 +kitami.hokkaido.jp, 0 +kitamoto.saitama.jp, 0 +kitanakagusuku.okinawa.jp, 0 +kitashiobara.fukushima.jp, 0 +kitaura.miyazaki.jp, 0 +kitayama.wakayama.jp, 0 +kitchen, 0 +kiwa.mie.jp, 0 +kiwi, 0 +kiwi.nz, 0 +kiyama.saga.jp, 0 +kiyokawa.kanagawa.jp, 0 +kiyosato.hokkaido.jp, 0 +kiyose.tokyo.jp, 0 +kiyosu.aichi.jp, 0 +kizu.kyoto.jp, 0 +klabu.no, 0 +klepp.no, 0 +klodzko.pl, 0 +km, 0 +km.ua, 0 +kmpsp.gov.pl, 0 +kn, 0 +knightpoint.systems, 4 +knowsitall.info, 4 +knx-server.net, 4 +kobayashi.miyazaki.jp, 0 +kobe.jp, 2 +kobierzyce.pl, 0 +kochi.jp, 0 +kochi.kochi.jp, 0 +kodaira.tokyo.jp, 0 +koebenhavn.museum, 0 +koeln, 0 +koeln.museum, 0 +kofu.yamanashi.jp, 0 +koga.fukuoka.jp, 0 +koga.ibaraki.jp, 0 +koganei.tokyo.jp, 0 +koge.tottori.jp, 0 +koka.shiga.jp, 0 +kokonoe.oita.jp, 0 +kokubunji.tokyo.jp, 0 +kolobrzeg.pl, 0 +komae.tokyo.jp, 0 +komagane.nagano.jp, 0 +komaki.aichi.jp, 0 +komatsu, 0 +komatsu.ishikawa.jp, 0 +komatsushima.tokushima.jp, 0 +komforb.se, 0 +kommunalforbund.se, 0 +kommune.no, 0 +komono.mie.jp, 0 +komoro.nagano.jp, 0 +komvux.se, 0 +konan.aichi.jp, 0 +konan.shiga.jp, 0 +kongsberg.no, 0 +kongsvinger.no, 0 +konin.pl, 0 +konskowola.pl, 0 +konsulat.gov.pl, 0 +konyvelo.hu, 0 +koori.fukushima.jp, 0 +kopervik.no, 0 +koriyama.fukushima.jp, 0 +koryo.nara.jp, 0 +kosai.shizuoka.jp, 0 +kosaka.akita.jp, 0 +kosei.shiga.jp, 0 +kosher, 0 +koshigaya.saitama.jp, 0 +koshimizu.hokkaido.jp, 0 +koshu.yamanashi.jp, 0 +kosuge.yamanashi.jp, 0 +kota.aichi.jp, 0 +koto.shiga.jp, 0 +koto.tokyo.jp, 0 +kotohira.kagawa.jp, 0 +kotoura.tottori.jp, 0 +kouhoku.saga.jp, 0 +kounosu.saitama.jp, 0 +kouyama.kagoshima.jp, 0 +kouzushima.tokyo.jp, 0 +koya.wakayama.jp, 0 +koza.wakayama.jp, 0 +kozagawa.wakayama.jp, 0 +kozaki.chiba.jp, 0 +kp, 0 +kpmg, 0 +kpn, 0 +kppsp.gov.pl, 0 +kr, 0 +kr.com, 4 +kr.eu.org, 4 +kr.it, 0 +kr.ua, 0 +kraanghke.no, 0 +kragero.no, 0 +krakow.pl, 4 +krasnodar.su, 4 +krd, 0 +kred, 0 +kristiansand.no, 0 +kristiansund.no, 0 +krodsherad.no, 0 +krokstadelva.no, 0 +krym.ua, 0 +ks.ua, 0 +ks.us, 0 +kuchinotsu.nagasaki.jp, 0 +kudamatsu.yamaguchi.jp, 0 +kudoyama.wakayama.jp, 0 +kui.hiroshima.jp, 0 +kuji.iwate.jp, 0 +kuju.oita.jp, 0 +kujukuri.chiba.jp, 0 +kuki.saitama.jp, 0 +kumagaya.saitama.jp, 0 +kumakogen.ehime.jp, 0 +kumamoto.jp, 0 +kumamoto.kumamoto.jp, 0 +kumano.hiroshima.jp, 0 +kumano.mie.jp, 0 +kumatori.osaka.jp, 0 +kumejima.okinawa.jp, 0 +kumenan.okayama.jp, 0 +kumiyama.kyoto.jp, 0 +kunden.ortsinfo.at, 6 +kunigami.okinawa.jp, 0 +kunimi.fukushima.jp, 0 +kunisaki.oita.jp, 0 +kunitachi.tokyo.jp, 0 +kunitomi.miyazaki.jp, 0 +kunneppu.hokkaido.jp, 0 +kunohe.iwate.jp, 0 +kunst.museum, 0 +kunstsammlung.museum, 0 +kunstunddesign.museum, 0 +kuokgroup, 0 +kurashiki.okayama.jp, 0 +kurate.fukuoka.jp, 0 +kure.hiroshima.jp, 0 +kurgan.su, 4 +kuriyama.hokkaido.jp, 0 +kurobe.toyama.jp, 0 +kurogi.fukuoka.jp, 0 +kuroishi.aomori.jp, 0 +kuroiso.tochigi.jp, 0 +kuromatsunai.hokkaido.jp, 0 +kurotaki.nara.jp, 0 +kurume.fukuoka.jp, 0 +kusatsu.gunma.jp, 0 +kusatsu.shiga.jp, 0 +kushima.miyazaki.jp, 0 +kushimoto.wakayama.jp, 0 +kushiro.hokkaido.jp, 0 +kustanai.ru, 4 +kustanai.su, 4 +kusu.oita.jp, 0 +kutchan.hokkaido.jp, 0 +kutno.pl, 0 +kuwana.mie.jp, 0 +kuzumaki.iwate.jp, 0 +kv.ua, 0 +kvafjord.no, 0 +kvalsund.no, 0 +kvam.no, 0 +kvanangen.no, 0 +kvinesdal.no, 0 +kvinnherad.no, 0 +kviteseid.no, 0 +kvitsoy.no, 0 +kw, 2 +kwp.gov.pl, 0 +kwpsp.gov.pl, 0 +ky, 0 +ky.us, 0 +kyiv.ua, 0 +kyonan.chiba.jp, 0 +kyotamba.kyoto.jp, 0 +kyotanabe.kyoto.jp, 0 +kyotango.kyoto.jp, 0 +kyoto, 0 +kyoto.jp, 0 +kyowa.akita.jp, 0 +kyowa.hokkaido.jp, 0 +kyuragi.saga.jp, 0 +kz, 0 +l-o-g-i-n.de, 4 +l.bg, 0 +l.se, 0 +la, 0 +la-spezia.it, 0 +la.us, 0 +laakesvuemie.no, 0 +labor.museum, 0 +labour.museum, 0 +lacaixa, 0 +ladbrokes, 0 +lahppi.no, 0 +lajolla.museum, 0 +lakas.hu, 0 +lamborghini, 0 +lamer, 0 +lanbib.se, 0 +lancashire.museum, 0 +lancaster, 0 +lancia, 0 +lancome, 0 +land, 0 +land-4-sale.us, 4 +landes.museum, 0 +landrover, 0 +langevag.no, 0 +lans.museum, 0 +lanxess, 0 +lapy.pl, 0 +laquila.it, 0 +lardal.no, 0 +larsson.museum, 0 +larvik.no, 0 +lasalle, 0 +laspezia.it, 0 +lat, 0 +latina.it, 0 +latino, 0 +latrobe, 0 +lavagis.no, 0 +lavangen.no, 0 +law, 0 +law.pro, 0 +law.za, 0 +lawyer, 0 +laz.it, 0 +lazio.it, 0 +lb, 0 +lc, 0 +lc.it, 0 +lds, 0 +le.it, 0 +leangaviika.no, 0 +lease, 0 +leasing.aero, 0 +lebesby.no, 0 +lebork.pl, 0 +lebtimnetz.de, 4 +lecce.it, 0 +lecco.it, 0 +leclerc, 0 +lefrak, 0 +leg.br, 0 +legal, 0 +legnica.pl, 0 +lego, 0 +leikanger.no, 0 +leirfjord.no, 0 +leirvik.no, 0 +leitungsen.de, 4 +leka.no, 0 +leksvik.no, 0 +lel.br, 0 +lenug.su, 4 +lenvik.no, 0 +lerdal.no, 0 +lesja.no, 0 +levanger.no, 0 +lewismiller.museum, 0 +lexus, 0 +lezajsk.pl, 0 +lg.jp, 0 +lg.ua, 0 +lgbt, 0 +li, 0 +li.it, 0 +liaison, 0 +lib.ak.us, 0 +lib.al.us, 0 +lib.ar.us, 0 +lib.as.us, 0 +lib.az.us, 0 +lib.ca.us, 0 +lib.co.us, 0 +lib.ct.us, 0 +lib.dc.us, 0 +lib.de.us, 4 +lib.ee, 0 +lib.fl.us, 0 +lib.ga.us, 0 +lib.gu.us, 0 +lib.hi.us, 0 +lib.ia.us, 0 +lib.id.us, 0 +lib.il.us, 0 +lib.in.us, 0 +lib.ks.us, 0 +lib.ky.us, 0 +lib.la.us, 0 +lib.ma.us, 0 +lib.md.us, 0 +lib.me.us, 0 +lib.mi.us, 0 +lib.mn.us, 0 +lib.mo.us, 0 +lib.ms.us, 0 +lib.mt.us, 0 +lib.nc.us, 0 +lib.nd.us, 0 +lib.ne.us, 0 +lib.nh.us, 0 +lib.nj.us, 0 +lib.nm.us, 0 +lib.nv.us, 0 +lib.ny.us, 0 +lib.oh.us, 0 +lib.ok.us, 0 +lib.or.us, 0 +lib.pa.us, 0 +lib.pr.us, 0 +lib.ri.us, 0 +lib.sc.us, 0 +lib.sd.us, 0 +lib.tn.us, 0 +lib.tx.us, 0 +lib.ut.us, 0 +lib.va.us, 0 +lib.vi.us, 0 +lib.vt.us, 0 +lib.wa.us, 0 +lib.wi.us, 0 +lib.wy.us, 0 +lidl, 0 +lier.no, 0 +lierne.no, 0 +life, 0 +lifeinsurance, 0 +lifestyle, 0 +lig.it, 0 +lighting, 0 +liguria.it, 0 +like, 0 +likes-pie.com, 4 +likescandy.com, 4 +lillehammer.no, 0 +lillesand.no, 0 +lilly, 0 +limanowa.pl, 0 +limited, 0 +limo, 0 +lincoln, 0 +lincoln.museum, 0 +lindas.no, 0 +linde, 0 +lindesnes.no, 0 +link, 0 +linz.museum, 0 +lipsy, 0 +live, 0 +living, 0 +living.museum, 0 +livinghistory.museum, 0 +livorno.it, 0 +lixil, 0 +lk, 0 +ln.cn, 0 +lo.it, 0 +loabat.no, 0 +loan, 0 +loans, 0 +localhistory.museum, 0 +localhost.daplie.me, 4 +locker, 0 +locus, 0 +lodi.it, 0 +lodingen.no, 0 +loft, 0 +loginto.me, 4 +logistics.aero, 0 +logoip.com, 4 +logoip.de, 4 +lol, 0 +lom.it, 0 +lom.no, 0 +lombardia.it, 0 +lombardy.it, 0 +lomza.pl, 0 +london, 0 +london.museum, 0 +loppa.no, 0 +lorenskog.no, 0 +losangeles.museum, 0 +loten.no, 0 +lotte, 0 +lotto, 0 +louvre.museum, 0 +love, 0 +lowicz.pl, 0 +loyalist.museum, 0 +lpl, 0 +lplfinancial, 0 +lr, 0 +ls, 0 +lt, 0 +lt.eu.org, 4 +lt.it, 0 +lt.ua, 0 +ltd, 0 +ltd.co.im, 0 +ltd.cy, 0 +ltd.gi, 0 +ltd.hk, 4 +ltd.lk, 0 +ltd.ua, 4 +ltd.uk, 0 +ltda, 0 +lu, 0 +lu.eu.org, 4 +lu.it, 0 +lubin.pl, 0 +lucania.it, 0 +lucca.it, 0 +lucerne.museum, 0 +lugansk.ua, 0 +lukow.pl, 0 +lund.no, 0 +lundbeck, 0 +lunner.no, 0 +lupin, 0 +luroy.no, 0 +luster.no, 0 +lutsk.ua, 0 +luxe, 0 +luxembourg.museum, 0 +luxury, 0 +luzern.museum, 0 +lv, 0 +lv.eu.org, 4 +lv.ua, 0 +lviv.ua, 0 +ly, 0 +lyngdal.no, 0 +lyngen.no, 0 +m.bg, 0 +m.se, 0 +ma, 0 +ma.leg.br, 4 +ma.us, 0 +macerata.it, 0 +machida.tokyo.jp, 0 +macys, 0 +mad.museum, 0 +madrid, 0 +madrid.museum, 0 +maebashi.gunma.jp, 0 +magazine.aero, 0 +magentosite.cloud, 6 +maibara.shiga.jp, 0 +maif, 0 +mail.pl, 0 +maintenance.aero, 0 +maison, 0 +maizuru.kyoto.jp, 0 +makeup, 0 +makinohara.shizuoka.jp, 0 +makurazaki.kagoshima.jp, 0 +malatvuopmi.no, 0 +malbork.pl, 0 +mallorca.museum, 0 +malopolska.pl, 0 +malselv.no, 0 +malvik.no, 0 +mamurogawa.yamagata.jp, 0 +man, 0 +management, 0 +manchester.museum, 0 +mandal.no, 0 +mango, 0 +mangyshlak.su, 4 +maniwa.okayama.jp, 0 +manno.kagawa.jp, 0 +mansion.museum, 0 +mansions.museum, 0 +mantova.it, 0 +manx.museum, 0 +maori.nz, 0 +map, 0 +map.fastly.net, 4 +map.fastlylb.net, 4 +mar.it, 0 +marburg.museum, 0 +marche.it, 0 +marine.ru, 4 +maritime.museum, 0 +maritimo.museum, 0 +marker.no, 0 +market, 0 +marketing, 0 +markets, 0 +marnardal.no, 0 +marriott, 0 +marshalls, 0 +marugame.kagawa.jp, 0 +marumori.miyagi.jp, 0 +maryland.museum, 0 +marylhurst.museum, 0 +masaki.ehime.jp, 0 +maserati, 0 +masfjorden.no, 0 +mashike.hokkaido.jp, 0 +mashiki.kumamoto.jp, 0 +mashiko.tochigi.jp, 0 +masoy.no, 0 +massa-carrara.it, 0 +massacarrara.it, 0 +masuda.shimane.jp, 0 +mat.br, 0 +matera.it, 0 +matsubara.osaka.jp, 0 +matsubushi.saitama.jp, 0 +matsuda.kanagawa.jp, 0 +matsudo.chiba.jp, 0 +matsue.shimane.jp, 0 +matsukawa.nagano.jp, 0 +matsumae.hokkaido.jp, 0 +matsumoto.kagoshima.jp, 0 +matsumoto.nagano.jp, 0 +matsuno.ehime.jp, 0 +matsusaka.mie.jp, 0 +matsushige.tokushima.jp, 0 +matsushima.miyagi.jp, 0 +matsuura.nagasaki.jp, 0 +matsuyama.ehime.jp, 0 +matsuzaki.shizuoka.jp, 0 +matta-varjjat.no, 0 +mattel, 0 +mazowsze.pl, 0 +mazury.pl, 0 +mb.ca, 0 +mb.it, 0 +mba, 0 +mc, 0 +mc.eu.org, 4 +mc.it, 0 +mcd, 0 +mcdonalds, 0 +mckinsey, 0 +md, 0 +md.ci, 0 +md.us, 0 +me, 0 +me.eu.org, 4 +me.it, 0 +me.tz, 0 +me.uk, 0 +me.us, 0 +med, 0 +med.br, 0 +med.ec, 0 +med.ee, 0 +med.ht, 0 +med.ly, 0 +med.om, 0 +med.pa, 0 +med.pl, 4 +med.pro, 0 +med.sa, 0 +med.sd, 0 +medecin.fr, 0 +medecin.km, 0 +media, 0 +media.aero, 0 +media.hu, 0 +media.museum, 0 +media.pl, 0 +medical.museum, 0 +medio-campidano.it, 0 +mediocampidano.it, 0 +medizinhistorisches.museum, 0 +meeres.museum, 0 +meet, 0 +meguro.tokyo.jp, 0 +mein-vigor.de, 4 +meiwa.gunma.jp, 0 +meiwa.mie.jp, 0 +meland.no, 0 +melbourne, 0 +meldal.no, 0 +melhus.no, 0 +meloy.no, 0 +meme, 0 +memorial, 0 +memorial.museum, 0 +men, 0 +menu, 0 +meo, 0 +meraker.no, 0 +merckmsd, 0 +merseine.nu, 4 +mesaverde.museum, 0 +messina.it, 0 +meteorapp.com, 4 +metlife, 0 +mex.com, 4 +mg, 0 +mg.leg.br, 4 +mh, 0 +mi.it, 0 +mi.th, 0 +mi.us, 0 +miami, 0 +miasa.nagano.jp, 0 +miasta.pl, 0 +mibu.tochigi.jp, 0 +michigan.museum, 0 +microlight.aero, 0 +microsoft, 0 +midatlantic.museum, 0 +midori.chiba.jp, 0 +midori.gunma.jp, 0 +midsund.no, 0 +midtre-gauldal.no, 0 +mie.jp, 0 +mielec.pl, 0 +mielno.pl, 0 +mifune.kumamoto.jp, 0 +mihama.aichi.jp, 0 +mihama.chiba.jp, 0 +mihama.fukui.jp, 0 +mihama.mie.jp, 0 +mihama.wakayama.jp, 0 +mihara.hiroshima.jp, 0 +mihara.kochi.jp, 0 +miharu.fukushima.jp, 0 +miho.ibaraki.jp, 0 +mikasa.hokkaido.jp, 0 +mikawa.yamagata.jp, 0 +miki.hyogo.jp, 0 +mil, 0 +mil.ac, 0 +mil.ae, 0 +mil.al, 0 +mil.ar, 0 +mil.az, 0 +mil.ba, 0 +mil.bo, 0 +mil.br, 0 +mil.by, 0 +mil.cl, 0 +mil.cn, 0 +mil.co, 0 +mil.do, 0 +mil.ec, 0 +mil.eg, 0 +mil.ge, 0 +mil.gh, 0 +mil.gt, 0 +mil.hn, 0 +mil.id, 0 +mil.in, 0 +mil.iq, 0 +mil.jo, 0 +mil.kg, 0 +mil.km, 0 +mil.kr, 0 +mil.kz, 0 +mil.lv, 0 +mil.mg, 0 +mil.mv, 0 +mil.my, 0 +mil.mz, 0 +mil.ng, 0 +mil.ni, 0 +mil.no, 0 +mil.nz, 0 +mil.pe, 0 +mil.ph, 0 +mil.pl, 0 +mil.py, 0 +mil.qa, 0 +mil.ru, 0 +mil.rw, 0 +mil.sh, 0 +mil.st, 0 +mil.sy, 0 +mil.tj, 0 +mil.tm, 0 +mil.to, 0 +mil.tr, 0 +mil.tw, 0 +mil.tz, 0 +mil.uy, 0 +mil.vc, 0 +mil.ve, 0 +mil.za, 0 +mil.zm, 0 +mil.zw, 0 +milan.it, 0 +milano.it, 0 +military.museum, 0 +mill.museum, 0 +mima.tokushima.jp, 0 +mimata.miyazaki.jp, 0 +minakami.gunma.jp, 0 +minamata.kumamoto.jp, 0 +minami-alps.yamanashi.jp, 0 +minami.fukuoka.jp, 0 +minami.kyoto.jp, 0 +minami.tokushima.jp, 0 +minamiaiki.nagano.jp, 0 +minamiashigara.kanagawa.jp, 0 +minamiawaji.hyogo.jp, 0 +minamiboso.chiba.jp, 0 +minamidaito.okinawa.jp, 0 +minamiechizen.fukui.jp, 0 +minamifurano.hokkaido.jp, 0 +minamiise.mie.jp, 0 +minamiizu.shizuoka.jp, 0 +minamimaki.nagano.jp, 0 +minamiminowa.nagano.jp, 0 +minamioguni.kumamoto.jp, 0 +minamisanriku.miyagi.jp, 0 +minamitane.kagoshima.jp, 0 +minamiuonuma.niigata.jp, 0 +minamiyamashiro.kyoto.jp, 0 +minano.saitama.jp, 0 +minato.osaka.jp, 0 +minato.tokyo.jp, 0 +mincom.tn, 0 +mine.nu, 4 +miners.museum, 0 +mini, 0 +mining.museum, 0 +minnesota.museum, 0 +mino.gifu.jp, 0 +minobu.yamanashi.jp, 0 +minoh.osaka.jp, 0 +minokamo.gifu.jp, 0 +minowa.nagano.jp, 0 +mint, 0 +misaki.okayama.jp, 0 +misaki.osaka.jp, 0 +misasa.tottori.jp, 0 +misato.akita.jp, 0 +misato.miyagi.jp, 0 +misato.saitama.jp, 0 +misato.shimane.jp, 0 +misato.wakayama.jp, 0 +misawa.aomori.jp, 0 +misconfused.org, 4 +mishima.fukushima.jp, 0 +mishima.shizuoka.jp, 0 +missile.museum, 0 +missoula.museum, 0 +misugi.mie.jp, 0 +mit, 0 +mitaka.tokyo.jp, 0 +mitake.gifu.jp, 0 +mitane.akita.jp, 0 +mito.ibaraki.jp, 0 +mitou.yamaguchi.jp, 0 +mitoyo.kagawa.jp, 0 +mitsubishi, 0 +mitsue.nara.jp, 0 +mitsuke.niigata.jp, 0 +miura.kanagawa.jp, 0 +miyada.nagano.jp, 0 +miyagi.jp, 0 +miyake.nara.jp, 0 +miyako.fukuoka.jp, 0 +miyako.iwate.jp, 0 +miyakonojo.miyazaki.jp, 0 +miyama.fukuoka.jp, 0 +miyama.mie.jp, 0 +miyashiro.saitama.jp, 0 +miyawaka.fukuoka.jp, 0 +miyazaki.jp, 0 +miyazaki.miyazaki.jp, 0 +miyazu.kyoto.jp, 0 +miyoshi.aichi.jp, 0 +miyoshi.hiroshima.jp, 0 +miyoshi.saitama.jp, 0 +miyoshi.tokushima.jp, 0 +miyota.nagano.jp, 0 +mizuho.tokyo.jp, 0 +mizumaki.fukuoka.jp, 0 +mizunami.gifu.jp, 0 +mizusawa.iwate.jp, 0 +mjondalen.no, 0 +mk, 0 +mk.eu.org, 4 +mk.ua, 0 +ml, 0 +mlb, 0 +mlbfan.org, 4 +mls, 0 +mm, 2 +mma, 0 +mmafan.biz, 4 +mn, 0 +mn.it, 0 +mn.us, 0 +mo, 0 +mo-i-rana.no, 0 +mo.cn, 0 +mo.it, 0 +mo.us, 0 +moareke.no, 0 +mobara.chiba.jp, 0 +mobi, 0 +mobi.gp, 0 +mobi.na, 0 +mobi.ng, 0 +mobi.tt, 0 +mobi.tz, 0 +mobile, 0 +mobily, 0 +mochizuki.nagano.jp, 0 +mod.gi, 0 +moda, 0 +modalen.no, 0 +modelling.aero, 0 +modena.it, 0 +modern.museum, 0 +modum.no, 0 +moe, 0 +moi, 0 +moka.tochigi.jp, 0 +mol.it, 0 +molde.no, 0 +molise.it, 0 +mom, 0 +moma.museum, 0 +mombetsu.hokkaido.jp, 0 +monash, 0 +money, 0 +money.museum, 0 +monmouth.museum, 0 +monster, 0 +montblanc, 0 +monticello.museum, 0 +montreal.museum, 0 +monza-brianza.it, 0 +monza-e-della-brianza.it, 0 +monza.it, 0 +monzabrianza.it, 0 +monzaebrianza.it, 0 +monzaedellabrianza.it, 0 +moonscale.net, 4 +mopar, 0 +mordovia.ru, 4 +mordovia.su, 4 +moriguchi.osaka.jp, 0 +morimachi.shizuoka.jp, 0 +morioka.iwate.jp, 0 +moriya.ibaraki.jp, 0 +moriyama.shiga.jp, 0 +moriyoshi.akita.jp, 0 +mormon, 0 +morotsuka.miyazaki.jp, 0 +moroyama.saitama.jp, 0 +mortgage, 0 +moscow, 0 +moscow.museum, 0 +moseushi.hokkaido.jp, 0 +mosjoen.no, 0 +moskenes.no, 0 +moss.no, 0 +mosvik.no, 0 +motegi.tochigi.jp, 0 +moto, 0 +motobu.okinawa.jp, 0 +motorcycle.museum, 0 +motorcycles, 0 +motosu.gifu.jp, 0 +motoyama.kochi.jp, 0 +mov, 0 +movie, 0 +movistar, 0 +mp, 0 +mp.br, 0 +mq, 0 +mr, 0 +mr.no, 0 +mragowo.pl, 0 +ms, 0 +ms.it, 0 +ms.kr, 0 +ms.leg.br, 4 +ms.us, 0 +msd, 0 +msk.ru, 4 +msk.su, 4 +mt, 0 +mt.eu.org, 4 +mt.it, 0 +mt.leg.br, 4 +mt.us, 0 +mtn, 0 +mtpc, 0 +mtr, 0 +mu, 0 +muenchen.museum, 0 +muenster.museum, 0 +mugi.tokushima.jp, 0 +muika.niigata.jp, 0 +mukawa.hokkaido.jp, 0 +muko.kyoto.jp, 0 +mulhouse.museum, 0 +munakata.fukuoka.jp, 0 +muncie.museum, 0 +muni.il, 0 +muosat.no, 0 +mup.gov.pl, 0 +murakami.niigata.jp, 0 +murata.miyagi.jp, 0 +murayama.yamagata.jp, 0 +murmansk.su, 4 +muroran.hokkaido.jp, 0 +muroto.kochi.jp, 0 +mus.br, 0 +musashimurayama.tokyo.jp, 0 +musashino.tokyo.jp, 0 +museet.museum, 0 +museum, 0 +museum.mv, 0 +museum.mw, 0 +museum.no, 0 +museum.om, 0 +museum.tt, 0 +museumcenter.museum, 0 +museumvereniging.museum, 0 +music.museum, 0 +mutsu.aomori.jp, 0 +mutsuzawa.chiba.jp, 0 +mutual, 0 +mv, 0 +mw, 0 +mw.gov.pl, 0 +mx, 0 +mx.na, 0 +my, 0 +my-firewall.org, 4 +my-gateway.de, 4 +my-router.de, 4 +my-vigor.de, 4 +my-wan.de, 4 +my.eu.org, 4 +my.id, 0 +myactivedirectory.com, 4 +myasustor.com, 4 +mycd.eu, 4 +mydissent.net, 4 +mydrobo.com, 4 +myds.me, 4 +myeffect.net, 4 +myfirewall.org, 4 +myfritz.net, 4 +myftp.biz, 4 +myftp.org, 4 +myfusion.cloud, 4 +myhome-server.de, 4 +mykolaiv.ua, 0 +mymediapc.net, 4 +myoko.niigata.jp, 0 +mypep.link, 4 +mypets.ws, 4 +myphotos.cc, 4 +mypsx.net, 4 +myqnapcloud.com, 4 +mysecuritycamera.com, 4 +mysecuritycamera.net, 4 +mysecuritycamera.org, 4 +myshopblocks.com, 4 +mytis.ru, 4 +myvnc.com, 4 +mz, 0 +n.bg, 0 +n.se, 0 +na, 0 +na.it, 0 +naamesjevuemie.no, 0 +nab, 0 +nabari.mie.jp, 0 +nachikatsuura.wakayama.jp, 0 +nadex, 0 +nagahama.shiga.jp, 0 +nagai.yamagata.jp, 0 +nagano.jp, 0 +nagano.nagano.jp, 0 +naganohara.gunma.jp, 0 +nagaoka.niigata.jp, 0 +nagaokakyo.kyoto.jp, 0 +nagara.chiba.jp, 0 +nagareyama.chiba.jp, 0 +nagasaki.jp, 0 +nagasaki.nagasaki.jp, 0 +nagasu.kumamoto.jp, 0 +nagato.yamaguchi.jp, 0 +nagatoro.saitama.jp, 0 +nagawa.nagano.jp, 0 +nagi.okayama.jp, 0 +nagiso.nagano.jp, 0 +nago.okinawa.jp, 0 +nagoya, 0 +nagoya.jp, 2 +naha.okinawa.jp, 0 +nahari.kochi.jp, 0 +naie.hokkaido.jp, 0 +naka.hiroshima.jp, 0 +naka.ibaraki.jp, 0 +nakadomari.aomori.jp, 0 +nakagawa.fukuoka.jp, 0 +nakagawa.hokkaido.jp, 0 +nakagawa.nagano.jp, 0 +nakagawa.tokushima.jp, 0 +nakagusuku.okinawa.jp, 0 +nakagyo.kyoto.jp, 0 +nakai.kanagawa.jp, 0 +nakama.fukuoka.jp, 0 +nakamichi.yamanashi.jp, 0 +nakamura.kochi.jp, 0 +nakaniikawa.toyama.jp, 0 +nakano.nagano.jp, 0 +nakano.tokyo.jp, 0 +nakanojo.gunma.jp, 0 +nakanoto.ishikawa.jp, 0 +nakasatsunai.hokkaido.jp, 0 +nakatane.kagoshima.jp, 0 +nakatombetsu.hokkaido.jp, 0 +nakatsugawa.gifu.jp, 0 +nakayama.yamagata.jp, 0 +nakijin.okinawa.jp, 0 +naklo.pl, 0 +nalchik.ru, 4 +nalchik.su, 4 +namdalseid.no, 0 +name, 0 +name.az, 0 +name.cy, 0 +name.eg, 0 +name.et, 0 +name.hr, 0 +name.jo, 0 +name.mk, 0 +name.mv, 0 +name.my, 0 +name.na, 0 +name.ng, 0 +name.pr, 0 +name.qa, 0 +name.tj, 0 +name.tr, 0 +name.tt, 0 +name.vn, 0 +namegata.ibaraki.jp, 0 +namegawa.saitama.jp, 0 +namerikawa.toyama.jp, 0 +namie.fukushima.jp, 0 +namikata.ehime.jp, 0 +namsos.no, 0 +namsskogan.no, 0 +nanae.hokkaido.jp, 0 +nanao.ishikawa.jp, 0 +nanbu.tottori.jp, 0 +nanbu.yamanashi.jp, 0 +nango.fukushima.jp, 0 +nanjo.okinawa.jp, 0 +nankoku.kochi.jp, 0 +nanmoku.gunma.jp, 0 +nannestad.no, 0 +nanporo.hokkaido.jp, 0 +nantan.kyoto.jp, 0 +nanto.toyama.jp, 0 +nanyo.yamagata.jp, 0 +naoshima.kagawa.jp, 0 +naples.it, 0 +napoli.it, 0 +nara.jp, 0 +nara.nara.jp, 0 +narashino.chiba.jp, 0 +narita.chiba.jp, 0 +naroy.no, 0 +narusawa.yamanashi.jp, 0 +naruto.tokushima.jp, 0 +narviika.no, 0 +narvik.no, 0 +nasu.tochigi.jp, 0 +nasushiobara.tochigi.jp, 0 +nat.tn, 0 +national.museum, 0 +nationalfirearms.museum, 0 +nationalheritage.museum, 0 +nationwide, 0 +nativeamerican.museum, 0 +natori.miyagi.jp, 0 +natura, 0 +naturalhistory.museum, 0 +naturalhistorymuseum.museum, 0 +naturalsciences.museum, 0 +naturbruksgymn.se, 0 +nature.museum, 0 +naturhistorisches.museum, 0 +natuurwetenschappen.museum, 0 +naumburg.museum, 0 +naustdal.no, 0 +naval.museum, 0 +navigation.aero, 0 +navoi.su, 4 +navuotna.no, 0 +navy, 0 +nayoro.hokkaido.jp, 0 +nb.ca, 0 +nba, 0 +nc, 0 +nc.tr, 0 +nc.us, 0 +nd.us, 0 +ne, 0 +ne.jp, 0 +ne.kr, 0 +ne.pw, 0 +ne.tz, 0 +ne.ug, 0 +ne.us, 0 +neat-url.com, 4 +nebraska.museum, 0 +nec, 0 +nedre-eiker.no, 0 +nemuro.hokkaido.jp, 0 +nerdpol.ovh, 4 +nerima.tokyo.jp, 0 +nes.akershus.no, 0 +nes.buskerud.no, 0 +nesna.no, 0 +nesodden.no, 0 +nesoddtangen.no, 0 +nesseby.no, 0 +nesset.no, 0 +net, 0 +net-freaks.com, 4 +net.ac, 0 +net.ae, 0 +net.af, 0 +net.ag, 0 +net.ai, 0 +net.al, 0 +net.ar, 0 +net.au, 0 +net.az, 0 +net.ba, 0 +net.bb, 0 +net.bh, 0 +net.bm, 0 +net.bo, 0 +net.br, 0 +net.bs, 0 +net.bt, 0 +net.bz, 0 +net.ci, 0 +net.cm, 0 +net.cn, 0 +net.co, 0 +net.cu, 0 +net.cw, 0 +net.cy, 0 +net.dm, 0 +net.do, 0 +net.dz, 0 +net.ec, 0 +net.eg, 0 +net.et, 0 +net.eu.org, 4 +net.ge, 0 +net.gg, 0 +net.gl, 0 +net.gn, 0 +net.gp, 0 +net.gr, 0 +net.gt, 0 +net.gy, 0 +net.hk, 0 +net.hn, 0 +net.ht, 0 +net.id, 0 +net.il, 0 +net.im, 0 +net.in, 0 +net.iq, 0 +net.ir, 0 +net.is, 0 +net.je, 0 +net.jo, 0 +net.kg, 0 +net.ki, 0 +net.kn, 0 +net.ky, 0 +net.kz, 0 +net.la, 0 +net.lb, 0 +net.lc, 0 +net.lk, 0 +net.lr, 0 +net.lv, 0 +net.ly, 0 +net.ma, 0 +net.me, 0 +net.mk, 0 +net.ml, 0 +net.mo, 0 +net.ms, 0 +net.mt, 0 +net.mu, 0 +net.mv, 0 +net.mw, 0 +net.mx, 0 +net.my, 0 +net.mz, 0 +net.nf, 0 +net.ng, 0 +net.ni, 0 +net.nr, 0 +net.nz, 0 +net.om, 0 +net.pa, 0 +net.pe, 0 +net.ph, 0 +net.pk, 0 +net.pl, 0 +net.pn, 0 +net.pr, 0 +net.ps, 0 +net.pt, 0 +net.py, 0 +net.qa, 0 +net.rw, 0 +net.sa, 0 +net.sb, 0 +net.sc, 0 +net.sd, 0 +net.sg, 0 +net.sh, 0 +net.sl, 0 +net.so, 0 +net.st, 0 +net.sy, 0 +net.th, 0 +net.tj, 0 +net.tm, 0 +net.tn, 0 +net.to, 0 +net.tr, 0 +net.tt, 0 +net.tw, 0 +net.ua, 0 +net.uk, 0 +net.uy, 0 +net.uz, 0 +net.vc, 0 +net.ve, 0 +net.vi, 0 +net.vn, 0 +net.vu, 0 +net.ws, 0 +net.za, 0 +net.zm, 0 +netbank, 0 +netflix, 0 +network, 0 +neues.museum, 0 +neustar, 0 +new, 0 +newhampshire.museum, 0 +newholland, 0 +newjersey.museum, 0 +newmexico.museum, 0 +newport.museum, 0 +news, 0 +news.hu, 0 +newspaper.museum, 0 +newyork.museum, 0 +next, 0 +nextdirect, 0 +nexus, 0 +neyagawa.osaka.jp, 0 +nf, 0 +nf.ca, 0 +nfl, 0 +nflfan.org, 4 +nfshost.com, 4 +ng, 0 +ng.eu.org, 4 +ngo, 0 +ngo.lk, 0 +ngo.ph, 0 +ngo.za, 0 +ngrok.io, 4 +nh.us, 0 +nhk, 0 +nhlfan.net, 4 +nhs.uk, 0 +ni, 0 +nic.in, 0 +nic.tj, 0 +nichinan.miyazaki.jp, 0 +nichinan.tottori.jp, 0 +nico, 0 +nid.io, 4 +niepce.museum, 0 +nieruchomosci.pl, 0 +niigata.jp, 0 +niigata.niigata.jp, 0 +niihama.ehime.jp, 0 +niikappu.hokkaido.jp, 0 +niimi.okayama.jp, 0 +niiza.saitama.jp, 0 +nikaho.akita.jp, 0 +nike, 0 +niki.hokkaido.jp, 0 +nikko.tochigi.jp, 0 +nikolaev.ua, 0 +nikon, 0 +ninja, 0 +ninohe.iwate.jp, 0 +ninomiya.kanagawa.jp, 0 +nirasaki.yamanashi.jp, 0 +nis.za, 0 +nishi.fukuoka.jp, 0 +nishi.osaka.jp, 0 +nishiaizu.fukushima.jp, 0 +nishiarita.saga.jp, 0 +nishiawakura.okayama.jp, 0 +nishiazai.shiga.jp, 0 +nishigo.fukushima.jp, 0 +nishihara.kumamoto.jp, 0 +nishihara.okinawa.jp, 0 +nishiizu.shizuoka.jp, 0 +nishikata.tochigi.jp, 0 +nishikatsura.yamanashi.jp, 0 +nishikawa.yamagata.jp, 0 +nishimera.miyazaki.jp, 0 +nishinomiya.hyogo.jp, 0 +nishinoomote.kagoshima.jp, 0 +nishinoshima.shimane.jp, 0 +nishio.aichi.jp, 0 +nishiokoppe.hokkaido.jp, 0 +nishitosa.kochi.jp, 0 +nishiwaki.hyogo.jp, 0 +nissan, 0 +nissay, 0 +nissedal.no, 0 +nisshin.aichi.jp, 0 +nittedal.no, 0 +niyodogawa.kochi.jp, 0 +nj.us, 0 +nl, 0 +nl.ca, 0 +nl.eu.org, 4 +nl.no, 0 +nm.cn, 0 +nm.us, 0 +no, 0 +no-ip.biz, 4 +no-ip.ca, 4 +no-ip.co.uk, 4 +no-ip.info, 4 +no-ip.net, 4 +no-ip.org, 4 +no.com, 4 +no.eu.org, 4 +no.it, 0 +nobeoka.miyazaki.jp, 0 +noboribetsu.hokkaido.jp, 0 +noda.chiba.jp, 0 +noda.iwate.jp, 0 +nogata.fukuoka.jp, 0 +nogi.tochigi.jp, 0 +noheji.aomori.jp, 0 +noip.me, 4 +noip.us, 4 +nokia, 0 +nom.ad, 0 +nom.ag, 0 +nom.br, 2 +nom.co, 0 +nom.es, 0 +nom.fr, 0 +nom.km, 0 +nom.mg, 0 +nom.ni, 0 +nom.pa, 0 +nom.pe, 0 +nom.pl, 0 +nom.re, 0 +nom.ro, 0 +nom.tm, 0 +nom.za, 0 +nome.pt, 0 +nomi.ishikawa.jp, 0 +nonoichi.ishikawa.jp, 0 +nord-aurdal.no, 0 +nord-fron.no, 0 +nord-odal.no, 0 +norddal.no, 0 +nordkapp.no, 0 +nordre-land.no, 0 +nordreisa.no, 0 +nore-og-uvdal.no, 0 +norfolk.museum, 0 +north-kazakhstan.su, 4 +north.museum, 0 +northwesternmutual, 0 +norton, 0 +nose.osaka.jp, 0 +nosegawa.nara.jp, 0 +noshiro.akita.jp, 0 +not.br, 0 +notaires.fr, 0 +notaires.km, 0 +noto.ishikawa.jp, 0 +notodden.no, 0 +notogawa.shiga.jp, 0 +notteroy.no, 0 +nov.ru, 4 +nov.su, 4 +novara.it, 0 +now, 0 +now.sh, 4 +nowaruda.pl, 0 +nowruz, 0 +nowtv, 0 +nozawaonsen.nagano.jp, 0 +np, 2 +nr, 0 +nra, 0 +nrw, 0 +nrw.museum, 0 +ns.ca, 0 +nsn.us, 0 +nsupdate.info, 4 +nsw.au, 0 +nsw.edu.au, 0 +nt.au, 0 +nt.ca, 0 +nt.edu.au, 0 +nt.no, 0 +nt.ro, 0 +ntr.br, 0 +ntt, 0 +nu, 0 +nu.ca, 0 +nu.it, 0 +nuernberg.museum, 0 +numata.gunma.jp, 0 +numata.hokkaido.jp, 0 +numazu.shizuoka.jp, 0 +nuoro.it, 0 +nuremberg.museum, 0 +nv.us, 0 +nx.cn, 0 +ny.us, 0 +nyc, 0 +nyc.mn, 4 +nyc.museum, 0 +nyny.museum, 0 +nysa.pl, 0 +nyuzen.toyama.jp, 0 +nz, 0 +nz.eu.org, 4 +o.bg, 0 +o.se, 0 +oamishirasato.chiba.jp, 0 +oarai.ibaraki.jp, 0 +obama.fukui.jp, 0 +obama.nagasaki.jp, 0 +obanazawa.yamagata.jp, 0 +obi, 0 +obihiro.hokkaido.jp, 0 +obira.hokkaido.jp, 0 +obninsk.su, 4 +observer, 0 +obu.aichi.jp, 0 +obuse.nagano.jp, 0 +oceanographic.museum, 0 +oceanographique.museum, 0 +ochi.kochi.jp, 0 +od.ua, 0 +odate.akita.jp, 0 +odawara.kanagawa.jp, 0 +odda.no, 0 +odesa.ua, 0 +odessa.ua, 0 +odo.br, 0 +oe.yamagata.jp, 0 +of.by, 0 +of.no, 0 +off, 0 +off.ai, 0 +office, 0 +office-on-the.net, 4 +ofunato.iwate.jp, 0 +og.ao, 0 +og.it, 0 +oga.akita.jp, 0 +ogaki.gifu.jp, 0 +ogano.saitama.jp, 0 +ogasawara.tokyo.jp, 0 +ogata.akita.jp, 0 +ogawa.ibaraki.jp, 0 +ogawa.nagano.jp, 0 +ogawa.saitama.jp, 0 +ogawara.miyagi.jp, 0 +ogi.saga.jp, 0 +ogimi.okinawa.jp, 0 +ogliastra.it, 0 +ogori.fukuoka.jp, 0 +ogose.saitama.jp, 0 +oguchi.aichi.jp, 0 +oguni.kumamoto.jp, 0 +oguni.yamagata.jp, 0 +oh.us, 0 +oharu.aichi.jp, 0 +ohda.shimane.jp, 0 +ohi.fukui.jp, 0 +ohira.miyagi.jp, 0 +ohira.tochigi.jp, 0 +ohkura.yamagata.jp, 0 +ohtawara.tochigi.jp, 0 +oi.kanagawa.jp, 0 +oirase.aomori.jp, 0 +oirm.gov.pl, 0 +oishida.yamagata.jp, 0 +oiso.kanagawa.jp, 0 +oita.jp, 0 +oita.oita.jp, 0 +oizumi.gunma.jp, 0 +oji.nara.jp, 0 +ojiya.niigata.jp, 0 +ok.us, 0 +okagaki.fukuoka.jp, 0 +okawa.fukuoka.jp, 0 +okawa.kochi.jp, 0 +okaya.nagano.jp, 0 +okayama.jp, 0 +okayama.okayama.jp, 0 +okazaki.aichi.jp, 0 +okegawa.saitama.jp, 0 +oketo.hokkaido.jp, 0 +oki.fukuoka.jp, 0 +okinawa, 0 +okinawa.jp, 0 +okinawa.okinawa.jp, 0 +okinoshima.shimane.jp, 0 +okoppe.hokkaido.jp, 0 +oksnes.no, 0 +okuizumo.shimane.jp, 0 +okuma.fukushima.jp, 0 +okutama.tokyo.jp, 0 +ol.no, 0 +olawa.pl, 0 +olayan, 0 +olayangroup, 0 +olbia-tempio.it, 0 +olbiatempio.it, 0 +oldnavy, 0 +olecko.pl, 0 +olkusz.pl, 0 +ollo, 0 +olsztyn.pl, 0 +om, 0 +omachi.nagano.jp, 0 +omachi.saga.jp, 0 +omaezaki.shizuoka.jp, 0 +omaha.museum, 0 +omasvuotna.no, 0 +ome.tokyo.jp, 0 +omega, 0 +omi.nagano.jp, 0 +omi.niigata.jp, 0 +omigawa.chiba.jp, 0 +omihachiman.shiga.jp, 0 +omitama.ibaraki.jp, 0 +omiya.saitama.jp, 0 +omotego.fukushima.jp, 0 +omura.nagasaki.jp, 0 +omuta.fukuoka.jp, 0 +on-aptible.com, 4 +on-the-web.tv, 4 +on-web.fr, 4 +on.ca, 0 +onagawa.miyagi.jp, 0 +one, 0 +ong, 0 +onga.fukuoka.jp, 0 +onion, 0 +onjuku.chiba.jp, 0 +onl, 0 +online, 0 +online.museum, 0 +onna.okinawa.jp, 0 +ono.fukui.jp, 0 +ono.fukushima.jp, 0 +ono.hyogo.jp, 0 +onojo.fukuoka.jp, 0 +onomichi.hiroshima.jp, 0 +ontario.museum, 0 +onthewifi.com, 4 +onyourside, 0 +ookuwa.nagano.jp, 0 +ooo, 0 +ooshika.nagano.jp, 0 +open, 0 +openair.museum, 0 +opencraft.hosting, 4 +operaunite.com, 4 +opoczno.pl, 0 +opole.pl, 0 +oppdal.no, 0 +oppegard.no, 0 +or.at, 0 +or.bi, 0 +or.ci, 0 +or.cr, 0 +or.id, 0 +or.it, 0 +or.jp, 0 +or.kr, 0 +or.mu, 0 +or.na, 0 +or.pw, 0 +or.th, 0 +or.tz, 0 +or.ug, 0 +or.us, 0 +ora.gunma.jp, 0 +oracle, 0 +orange, 0 +oregon.museum, 0 +oregontrail.museum, 0 +org, 0 +org.ac, 0 +org.ae, 0 +org.af, 0 +org.ag, 0 +org.ai, 0 +org.al, 0 +org.ar, 0 +org.au, 0 +org.az, 0 +org.ba, 0 +org.bb, 0 +org.bh, 0 +org.bi, 0 +org.bm, 0 +org.bo, 0 +org.br, 0 +org.bs, 0 +org.bt, 0 +org.bw, 0 +org.bz, 0 +org.ci, 0 +org.cn, 0 +org.co, 0 +org.cu, 0 +org.cw, 0 +org.cy, 0 +org.dm, 0 +org.do, 0 +org.dz, 0 +org.ec, 0 +org.ee, 0 +org.eg, 0 +org.es, 0 +org.et, 0 +org.ge, 0 +org.gg, 0 +org.gh, 0 +org.gi, 0 +org.gl, 0 +org.gn, 0 +org.gp, 0 +org.gr, 0 +org.gt, 0 +org.gy, 0 +org.hk, 0 +org.hn, 0 +org.ht, 0 +org.hu, 0 +org.il, 0 +org.im, 0 +org.in, 0 +org.iq, 0 +org.ir, 0 +org.is, 0 +org.je, 0 +org.jo, 0 +org.kg, 0 +org.ki, 0 +org.km, 0 +org.kn, 0 +org.kp, 0 +org.ky, 0 +org.kz, 0 +org.la, 0 +org.lb, 0 +org.lc, 0 +org.lk, 0 +org.lr, 0 +org.ls, 0 +org.lv, 0 +org.ly, 0 +org.ma, 0 +org.me, 0 +org.mg, 0 +org.mk, 0 +org.ml, 0 +org.mn, 0 +org.mo, 0 +org.ms, 0 +org.mt, 0 +org.mu, 0 +org.mv, 0 +org.mw, 0 +org.mx, 0 +org.my, 0 +org.mz, 0 +org.na, 0 +org.ng, 0 +org.ni, 0 +org.nr, 0 +org.nz, 0 +org.om, 0 +org.pa, 0 +org.pe, 0 +org.pf, 0 +org.ph, 0 +org.pk, 0 +org.pl, 0 +org.pn, 0 +org.pr, 0 +org.ps, 0 +org.pt, 0 +org.py, 0 +org.qa, 0 +org.ro, 0 +org.rs, 0 +org.sa, 0 +org.sb, 0 +org.sc, 0 +org.sd, 0 +org.se, 0 +org.sg, 0 +org.sh, 0 +org.sl, 0 +org.sn, 0 +org.so, 0 +org.st, 0 +org.sv, 0 +org.sy, 0 +org.sz, 0 +org.tj, 0 +org.tm, 0 +org.tn, 0 +org.to, 0 +org.tr, 0 +org.tt, 0 +org.tw, 0 +org.ua, 0 +org.ug, 0 +org.uk, 0 +org.uy, 0 +org.uz, 0 +org.vc, 0 +org.ve, 0 +org.vi, 0 +org.vn, 0 +org.vu, 0 +org.ws, 0 +org.za, 0 +org.zm, 0 +org.zw, 0 +organic, 0 +orientexpress, 0 +origins, 0 +oristano.it, 0 +orkanger.no, 0 +orkdal.no, 0 +orland.no, 0 +orskog.no, 0 +orsta.no, 0 +os.hedmark.no, 0 +os.hordaland.no, 0 +osaka, 0 +osaka.jp, 0 +osakasayama.osaka.jp, 0 +osaki.miyagi.jp, 0 +osakikamijima.hiroshima.jp, 0 +osen.no, 0 +oseto.nagasaki.jp, 0 +oshima.tokyo.jp, 0 +oshima.yamaguchi.jp, 0 +oshino.yamanashi.jp, 0 +oshu.iwate.jp, 0 +oslo.no, 0 +osoyro.no, 0 +osteroy.no, 0 +ostre-toten.no, 0 +ostroda.pl, 0 +ostroleka.pl, 0 +ostrowiec.pl, 0 +ostrowwlkp.pl, 0 +ot.it, 0 +ota.gunma.jp, 0 +ota.tokyo.jp, 0 +otago.museum, 0 +otake.hiroshima.jp, 0 +otaki.chiba.jp, 0 +otaki.nagano.jp, 0 +otaki.saitama.jp, 0 +otama.fukushima.jp, 0 +otari.nagano.jp, 0 +otaru.hokkaido.jp, 0 +other.nf, 0 +oto.fukuoka.jp, 0 +otobe.hokkaido.jp, 0 +otofuke.hokkaido.jp, 0 +otoineppu.hokkaido.jp, 0 +otoyo.kochi.jp, 0 +otsu.shiga.jp, 0 +otsuchi.iwate.jp, 0 +otsuka, 0 +otsuki.kochi.jp, 0 +otsuki.yamanashi.jp, 0 +ott, 0 +ouchi.saga.jp, 0 +ouda.nara.jp, 0 +oum.gov.pl, 0 +oumu.hokkaido.jp, 0 +outsystemscloud.com, 4 +overhalla.no, 0 +ovh, 0 +ovre-eiker.no, 0 +owani.aomori.jp, 0 +owariasahi.aichi.jp, 0 +ownprovider.com, 4 +oxford.museum, 0 +oy.lc, 4 +oyabe.toyama.jp, 0 +oyama.tochigi.jp, 0 +oyamazaki.kyoto.jp, 0 +oyer.no, 0 +oygarden.no, 0 +oyodo.nara.jp, 0 +oystre-slidre.no, 0 +oz.au, 0 +ozora.hokkaido.jp, 0 +ozu.ehime.jp, 0 +ozu.kumamoto.jp, 0 +p.bg, 0 +p.se, 0 +pa, 0 +pa.gov.pl, 0 +pa.it, 0 +pa.leg.br, 4 +pa.us, 0 +pacific.museum, 0 +paderborn.museum, 0 +padova.it, 0 +padua.it, 0 +page, 0 +pagefrontapp.com, 4 +pagespeedmobilizer.com, 4 +palace.museum, 0 +paleo.museum, 0 +palermo.it, 0 +palmsprings.museum, 0 +pamperedchef, 0 +panama.museum, 0 +panasonic, 0 +panerai, 0 +pantheonsite.io, 4 +parachuting.aero, 0 +paragliding.aero, 0 +paris, 0 +paris.eu.org, 4 +paris.museum, 0 +parliament.cy, 0 +parliament.nz, 0 +parma.it, 0 +paroch.k12.ma.us, 0 +pars, 0 +parti.se, 0 +partners, 0 +parts, 0 +party, 0 +pasadena.museum, 0 +passagens, 0 +passenger-association.aero, 0 +pavia.it, 0 +pay, 0 +pb.ao, 0 +pb.leg.br, 4 +pc.it, 0 +pc.pl, 0 +pccw, 0 +pd.it, 0 +pe, 0 +pe.ca, 0 +pe.it, 0 +pe.kr, 0 +pe.leg.br, 4 +penza.su, 4 +per.la, 0 +per.nf, 0 +per.sg, 0 +perso.ht, 0 +perso.sn, 0 +perso.tn, 0 +perugia.it, 0 +pesaro-urbino.it, 0 +pesarourbino.it, 0 +pescara.it, 0 +pet, 0 +pf, 0 +pfizer, 0 +pg, 2 +pg.it, 0 +pgafan.net, 4 +pgfog.com, 4 +ph, 0 +pharmacien.fr, 0 +pharmaciens.km, 0 +pharmacy, 0 +pharmacy.museum, 0 +phd, 0 +philadelphia.museum, 0 +philadelphiaarea.museum, 0 +philately.museum, 0 +philips, 0 +phoenix.museum, 0 +phone, 0 +photo, 0 +photography, 0 +photography.museum, 0 +photos, 0 +physio, 0 +pi.it, 0 +pi.leg.br, 4 +piacenza.it, 0 +piaget, 0 +pics, 0 +pictet, 0 +pictures, 0 +pid, 0 +piedmont.it, 0 +piemonte.it, 0 +pila.pl, 0 +pilot.aero, 0 +pilots.museum, 0 +pimienta.org, 4 +pin, 0 +pinb.gov.pl, 0 +ping, 0 +pink, 0 +pioneer, 0 +pippu.hokkaido.jp, 0 +pisa.it, 0 +pistoia.it, 0 +pisz.pl, 0 +pittsburgh.museum, 0 +piw.gov.pl, 0 +pizza, 0 +pk, 0 +pl, 0 +pl.eu.org, 4 +pl.ua, 0 +place, 0 +planetarium.museum, 0 +plantation.museum, 0 +plants.museum, 0 +play, 0 +playstation, 0 +plaza.museum, 0 +plc.co.im, 0 +plc.ly, 0 +plc.uk, 0 +plo.ps, 0 +plumbing, 0 +plus, 0 +pm, 0 +pmn.it, 0 +pn, 0 +pn.it, 0 +pnc, 0 +po.gov.pl, 0 +po.it, 0 +podhale.pl, 0 +podlasie.pl, 0 +podzone.net, 4 +podzone.org, 4 +pohl, 0 +point2this.com, 4 +pointto.us, 4 +poivron.org, 4 +poker, 0 +pokrovsk.su, 4 +pol.dz, 0 +pol.ht, 0 +pol.tr, 0 +police.uk, 0 +politie, 0 +polkowice.pl, 0 +poltava.ua, 0 +pomorskie.pl, 0 +pomorze.pl, 0 +pordenone.it, 0 +porn, 0 +porsanger.no, 0 +porsangu.no, 0 +porsgrunn.no, 0 +port.fr, 0 +portal.museum, 0 +portland.museum, 0 +portlligat.museum, 0 +post, 0 +posts-and-telecommunications.museum, 0 +potager.org, 4 +potenza.it, 0 +powiat.pl, 0 +poznan.pl, 4 +pp.az, 0 +pp.se, 0 +pp.ua, 4 +ppg.br, 0 +pr, 0 +pr.it, 0 +pr.leg.br, 4 +pr.us, 0 +pramerica, 0 +prato.it, 0 +praxi, 0 +prd.fr, 0 +prd.km, 0 +prd.mg, 0 +preservation.museum, 0 +presidio.museum, 0 +press, 0 +press.aero, 0 +press.cy, 0 +press.ma, 0 +press.museum, 0 +press.se, 0 +presse.ci, 0 +presse.fr, 0 +presse.km, 0 +presse.ml, 0 +pri.ee, 0 +prime, 0 +principe.st, 0 +priv.at, 4 +priv.hu, 0 +priv.me, 0 +priv.no, 0 +priv.pl, 0 +privatizehealthinsurance.net, 4 +pro, 0 +pro.az, 0 +pro.br, 0 +pro.cy, 0 +pro.ec, 0 +pro.ht, 0 +pro.mv, 0 +pro.na, 0 +pro.om, 0 +pro.pr, 0 +pro.tt, 0 +pro.vn, 0 +prochowice.pl, 0 +prod, 0 +production.aero, 0 +productions, 0 +prof, 0 +prof.pr, 0 +progressive, 0 +project.museum, 0 +promo, 0 +properties, 0 +property, 0 +protection, 0 +protonet.io, 4 +pru, 0 +prudential, 0 +pruszkow.pl, 0 +przeworsk.pl, 0 +ps, 0 +psc.br, 0 +psi.br, 0 +psp.gov.pl, 0 +psse.gov.pl, 0 +pt, 0 +pt.eu.org, 4 +pt.it, 0 +ptplus.fit, 4 +pu.it, 0 +pub, 0 +pub.sa, 0 +publ.pt, 0 +public.museum, 0 +publishproxy.com, 4 +pubol.museum, 0 +pug.it, 0 +puglia.it, 0 +pulawy.pl, 0 +pup.gov.pl, 0 +pv.it, 0 +pvt.ge, 0 +pvt.k12.ma.us, 0 +pw, 0 +pwc, 0 +py, 0 +pyatigorsk.ru, 4 +pz.it, 0 +q-a.eu.org, 4 +q.bg, 0 +qa, 0 +qa2.com, 4 +qc.ca, 0 +qc.com, 4 +qh.cn, 0 +qld.au, 0 +qld.edu.au, 0 +qld.gov.au, 0 +qpon, 0 +qsl.br, 0 +quebec, 0 +quebec.museum, 0 +quest, 0 +quicksytes.com, 4 +qvc, 0 +r.bg, 0 +r.cdn77.net, 4 +r.se, 0 +ra.it, 0 +racing, 0 +rackmaze.com, 4 +rackmaze.net, 4 +rade.no, 0 +radio, 0 +radio.br, 0 +radom.pl, 0 +radoy.no, 0 +ragusa.it, 0 +rahkkeravju.no, 0 +raholt.no, 0 +raid, 0 +railroad.museum, 0 +railway.museum, 0 +raisa.no, 0 +rakkestad.no, 0 +ralingen.no, 0 +rana.no, 0 +randaberg.no, 0 +rankoshi.hokkaido.jp, 0 +ranzan.saitama.jp, 0 +rauma.no, 0 +ravenna.it, 0 +rawa-maz.pl, 0 +rc.it, 0 +re, 0 +re.it, 0 +re.kr, 0 +read, 0 +read-books.org, 4 +readmyblog.org, 4 +realestate, 0 +realestate.pl, 0 +realm.cz, 4 +realtor, 0 +realty, 0 +rebun.hokkaido.jp, 0 +rec.br, 0 +rec.co, 0 +rec.nf, 0 +rec.ro, 0 +rec.ve, 0 +recht.pro, 0 +recipes, 0 +recreation.aero, 0 +red, 0 +red.sv, 0 +redirectme.net, 4 +redstone, 0 +redumbrella, 0 +reg.dk, 4 +reggio-calabria.it, 0 +reggio-emilia.it, 0 +reggiocalabria.it, 0 +reggioemilia.it, 0 +rehab, 0 +reise, 0 +reisen, 0 +reit, 0 +reklam.hu, 0 +rel.ht, 0 +rel.pl, 0 +reliance, 0 +remotewd.com, 4 +ren, 0 +rendalen.no, 0 +rennebu.no, 0 +rennesoy.no, 0 +rent, 0 +rentals, 0 +rep.kp, 0 +repair, 0 +repbody.aero, 0 +report, 0 +republican, 0 +res.aero, 0 +res.in, 0 +research.aero, 0 +research.museum, 0 +resistance.museum, 0 +rest, 0 +restaurant, 0 +review, 0 +reviews, 0 +rexroth, 0 +rg.it, 0 +rhcloud.com, 4 +ri.it, 0 +ri.us, 0 +rich, 0 +richardli, 0 +ricoh, 0 +rieti.it, 0 +rifu.miyagi.jp, 0 +rightathome, 0 +riik.ee, 0 +rikubetsu.hokkaido.jp, 0 +rikuzentakata.iwate.jp, 0 +ril, 0 +rimini.it, 0 +rindal.no, 0 +ringebu.no, 0 +ringerike.no, 0 +ringsaker.no, 0 +rio, 0 +riodejaneiro.museum, 0 +rip, 0 +rishiri.hokkaido.jp, 0 +rishirifuji.hokkaido.jp, 0 +risor.no, 0 +rissa.no, 0 +ritto.shiga.jp, 0 +rivne.ua, 0 +rj.leg.br, 4 +rl.no, 0 +rm.it, 0 +rmit, 0 +rn.it, 0 +rn.leg.br, 4 +rnrt.tn, 0 +rns.tn, 0 +rnu.tn, 0 +ro, 0 +ro.eu.org, 4 +ro.im, 4 +ro.it, 0 +ro.leg.br, 4 +roan.no, 0 +rocher, 0 +rochester.museum, 0 +rockart.museum, 0 +rocks, 0 +rodeo, 0 +rodoy.no, 0 +rogers, 0 +rokunohe.aomori.jp, 0 +rollag.no, 0 +roma.it, 0 +roma.museum, 0 +rome.it, 0 +romsa.no, 0 +romskog.no, 0 +room, 0 +roros.no, 0 +rost.no, 0 +rotorcraft.aero, 0 +router.management, 4 +rovigo.it, 0 +rovno.ua, 0 +royken.no, 0 +royrvik.no, 0 +rr.leg.br, 4 +rs, 0 +rs.leg.br, 4 +rsc.cdn77.org, 4 +rsvp, 0 +ru, 0 +ru.com, 4 +ru.eu.org, 4 +ru.net, 4 +rugby, 0 +ruhr, 0 +run, 0 +ruovat.no, 0 +russia.museum, 0 +rv.ua, 0 +rw, 0 +rwe, 0 +rybnik.pl, 0 +rygge.no, 0 +ryokami.saitama.jp, 0 +ryugasaki.ibaraki.jp, 0 +ryukyu, 0 +ryuoh.shiga.jp, 0 +rzeszow.pl, 0 +rzgw.gov.pl, 0 +s.bg, 0 +s.se, 0 +s3-ap-northeast-1.amazonaws.com, 4 +s3-ap-northeast-2.amazonaws.com, 4 +s3-ap-south-1.amazonaws.com, 4 +s3-ap-southeast-1.amazonaws.com, 4 +s3-ap-southeast-2.amazonaws.com, 4 +s3-ca-central-1.amazonaws.com, 4 +s3-eu-central-1.amazonaws.com, 4 +s3-eu-west-1.amazonaws.com, 4 +s3-eu-west-2.amazonaws.com, 4 +s3-external-1.amazonaws.com, 4 +s3-fips-us-gov-west-1.amazonaws.com, 4 +s3-sa-east-1.amazonaws.com, 4 +s3-us-east-2.amazonaws.com, 4 +s3-us-gov-west-1.amazonaws.com, 4 +s3-us-west-1.amazonaws.com, 4 +s3-us-west-2.amazonaws.com, 4 +s3-website-ap-northeast-1.amazonaws.com, 4 +s3-website-ap-southeast-1.amazonaws.com, 4 +s3-website-ap-southeast-2.amazonaws.com, 4 +s3-website-eu-west-1.amazonaws.com, 4 +s3-website-sa-east-1.amazonaws.com, 4 +s3-website-us-east-1.amazonaws.com, 4 +s3-website-us-west-1.amazonaws.com, 4 +s3-website-us-west-2.amazonaws.com, 4 +s3-website.ap-northeast-2.amazonaws.com, 4 +s3-website.ap-south-1.amazonaws.com, 4 +s3-website.ca-central-1.amazonaws.com, 4 +s3-website.eu-central-1.amazonaws.com, 4 +s3-website.eu-west-2.amazonaws.com, 4 +s3-website.us-east-2.amazonaws.com, 4 +s3.amazonaws.com, 4 +s3.ap-northeast-2.amazonaws.com, 4 +s3.ap-south-1.amazonaws.com, 4 +s3.ca-central-1.amazonaws.com, 4 +s3.cn-north-1.amazonaws.com.cn, 4 +s3.dualstack.ap-northeast-1.amazonaws.com, 4 +s3.dualstack.ap-northeast-2.amazonaws.com, 4 +s3.dualstack.ap-south-1.amazonaws.com, 4 +s3.dualstack.ap-southeast-1.amazonaws.com, 4 +s3.dualstack.ap-southeast-2.amazonaws.com, 4 +s3.dualstack.ca-central-1.amazonaws.com, 4 +s3.dualstack.eu-central-1.amazonaws.com, 4 +s3.dualstack.eu-west-1.amazonaws.com, 4 +s3.dualstack.eu-west-2.amazonaws.com, 4 +s3.dualstack.sa-east-1.amazonaws.com, 4 +s3.dualstack.us-east-1.amazonaws.com, 4 +s3.dualstack.us-east-2.amazonaws.com, 4 +s3.eu-central-1.amazonaws.com, 4 +s3.eu-west-2.amazonaws.com, 4 +s3.us-east-2.amazonaws.com, 4 +sa, 0 +sa.au, 0 +sa.com, 4 +sa.cr, 0 +sa.edu.au, 0 +sa.gov.au, 0 +sa.gov.pl, 0 +sa.it, 0 +saarland, 0 +sabae.fukui.jp, 0 +sado.niigata.jp, 0 +safe, 0 +safety, 0 +safety.aero, 0 +saga.jp, 0 +saga.saga.jp, 0 +sagae.yamagata.jp, 0 +sagamihara.kanagawa.jp, 0 +saigawa.fukuoka.jp, 0 +saijo.ehime.jp, 0 +saikai.nagasaki.jp, 0 +saiki.oita.jp, 0 +saintlouis.museum, 0 +saitama.jp, 0 +saitama.saitama.jp, 0 +saito.miyazaki.jp, 0 +saka.hiroshima.jp, 0 +sakado.saitama.jp, 0 +sakae.chiba.jp, 0 +sakae.nagano.jp, 0 +sakahogi.gifu.jp, 0 +sakai.fukui.jp, 0 +sakai.ibaraki.jp, 0 +sakai.osaka.jp, 0 +sakaiminato.tottori.jp, 0 +sakaki.nagano.jp, 0 +sakata.yamagata.jp, 0 +sakawa.kochi.jp, 0 +sakegawa.yamagata.jp, 0 +saku.nagano.jp, 0 +sakuho.nagano.jp, 0 +sakura, 0 +sakura.chiba.jp, 0 +sakura.tochigi.jp, 0 +sakuragawa.ibaraki.jp, 0 +sakurai.nara.jp, 0 +sakyo.kyoto.jp, 0 +salangen.no, 0 +salat.no, 0 +sale, 0 +salem.museum, 0 +salerno.it, 0 +salon, 0 +saltdal.no, 0 +salvadordali.museum, 0 +salzburg.museum, 0 +samegawa.fukushima.jp, 0 +samnanger.no, 0 +samsclub, 0 +samsung, 0 +samukawa.kanagawa.jp, 0 +sanagochi.tokushima.jp, 0 +sanda.hyogo.jp, 0 +sandcats.io, 4 +sande.more-og-romsdal.no, 0 +sande.vestfold.no, 0 +sande.xn--mre-og-romsdal-qqb.no, 0 +sandefjord.no, 0 +sandiego.museum, 0 +sandnes.no, 0 +sandnessjoen.no, 0 +sandoy.no, 0 +sandvik, 0 +sandvikcoromant, 0 +sanfrancisco.museum, 0 +sango.nara.jp, 0 +sanjo.niigata.jp, 0 +sannan.hyogo.jp, 0 +sannohe.aomori.jp, 0 +sano.tochigi.jp, 0 +sanofi, 0 +sanok.pl, 0 +santabarbara.museum, 0 +santacruz.museum, 0 +santafe.museum, 0 +sanuki.kagawa.jp, 0 +saotome.st, 0 +sap, 0 +sapo, 0 +sapporo.jp, 2 +sar.it, 0 +sardegna.it, 0 +sardinia.it, 0 +sarl, 0 +saroma.hokkaido.jp, 0 +sarpsborg.no, 0 +sarufutsu.hokkaido.jp, 0 +sas, 0 +sasaguri.fukuoka.jp, 0 +sasayama.hyogo.jp, 0 +sasebo.nagasaki.jp, 0 +saskatchewan.museum, 0 +sassari.it, 0 +satosho.okayama.jp, 0 +satsumasendai.kagoshima.jp, 0 +satte.saitama.jp, 0 +satx.museum, 0 +sauda.no, 0 +sauherad.no, 0 +savannahga.museum, 0 +save, 0 +saves-the-whales.com, 4 +savona.it, 0 +saxo, 0 +sayama.osaka.jp, 0 +sayama.saitama.jp, 0 +sayo.hyogo.jp, 0 +sb, 0 +sb.ua, 0 +sbi, 0 +sbs, 0 +sc, 0 +sc.cn, 0 +sc.kr, 0 +sc.leg.br, 4 +sc.tz, 0 +sc.ug, 0 +sc.us, 0 +sca, 0 +scb, 0 +sch.ae, 0 +sch.id, 0 +sch.ir, 0 +sch.jo, 0 +sch.lk, 0 +sch.ly, 0 +sch.ng, 0 +sch.qa, 0 +sch.sa, 0 +sch.uk, 2 +sch.zm, 0 +schaeffler, 0 +schlesisches.museum, 0 +schmidt, 0 +schoenbrunn.museum, 0 +schokoladen.museum, 0 +scholarships, 0 +school, 0 +school.museum, 0 +school.na, 0 +school.nz, 0 +school.za, 0 +schule, 0 +schwarz, 0 +schweiz.museum, 0 +sci.eg, 0 +science, 0 +science-fiction.museum, 0 +science.museum, 0 +scienceandhistory.museum, 0 +scienceandindustry.museum, 0 +sciencecenter.museum, 0 +sciencecenters.museum, 0 +sciencehistory.museum, 0 +sciences.museum, 0 +sciencesnaturelles.museum, 0 +scientist.aero, 0 +scjohnson, 0 +scor, 0 +scot, 0 +scotland.museum, 0 +scrapper-site.net, 4 +scrapping.cc, 4 +sd, 0 +sd.cn, 0 +sd.us, 0 +sdn.gov.pl, 0 +se, 0 +se.com, 4 +se.eu.org, 4 +se.leg.br, 4 +se.net, 4 +seaport.museum, 0 +search, 0 +seat, 0 +sebastopol.ua, 0 +sec.ps, 0 +secure, 0 +security, 0 +securitytactics.com, 4 +seek, 0 +seihi.nagasaki.jp, 0 +seika.kyoto.jp, 0 +seiro.niigata.jp, 0 +seirou.niigata.jp, 0 +seiyo.ehime.jp, 0 +sejny.pl, 0 +seki.gifu.jp, 0 +sekigahara.gifu.jp, 0 +sekikawa.niigata.jp, 0 +sel.no, 0 +selbu.no, 0 +select, 0 +selfip.biz, 4 +selfip.com, 4 +selfip.info, 4 +selfip.net, 4 +selfip.org, 4 +selje.no, 0 +seljord.no, 0 +sells-for-less.com, 4 +sells-for-u.com, 4 +sells-it.net, 4 +sellsyourhome.org, 4 +semboku.akita.jp, 0 +semine.miyagi.jp, 0 +sendai.jp, 2 +sener, 0 +sennan.osaka.jp, 0 +seoul.kr, 0 +sera.hiroshima.jp, 0 +seranishi.hiroshima.jp, 0 +servebbs.com, 4 +servebbs.net, 4 +servebbs.org, 4 +servebeer.com, 4 +serveblog.net, 4 +servecounterstrike.com, 4 +serveexchange.com, 4 +serveftp.com, 4 +serveftp.net, 4 +serveftp.org, 4 +servegame.com, 4 +servegame.org, 4 +servehalflife.com, 4 +servehttp.com, 4 +servehumour.com, 4 +serveirc.com, 4 +serveminecraft.net, 4 +servemp3.com, 4 +servep2p.com, 4 +servepics.com, 4 +servequake.com, 4 +servesarcasm.com, 4 +service.gov.uk, 4 +services, 0 +services.aero, 0 +ses, 0 +setagaya.tokyo.jp, 0 +seto.aichi.jp, 0 +setouchi.okayama.jp, 0 +settlement.museum, 0 +settlers.museum, 0 +settsu.osaka.jp, 0 +sevastopol.ua, 0 +seven, 0 +sew, 0 +sex, 0 +sex.hu, 0 +sex.pl, 0 +sexy, 0 +sf.no, 0 +sfr, 0 +sg, 0 +sh, 0 +sh.cn, 0 +shacknet.nu, 4 +shakotan.hokkaido.jp, 0 +shangrila, 0 +shari.hokkaido.jp, 0 +sharp, 0 +shaw, 0 +shell, 0 +shell.museum, 0 +sherbrooke.museum, 0 +shia, 0 +shibata.miyagi.jp, 0 +shibata.niigata.jp, 0 +shibecha.hokkaido.jp, 0 +shibetsu.hokkaido.jp, 0 +shibukawa.gunma.jp, 0 +shibuya.tokyo.jp, 0 +shichikashuku.miyagi.jp, 0 +shichinohe.aomori.jp, 0 +shiftedit.io, 4 +shiga.jp, 0 +shiiba.miyazaki.jp, 0 +shijonawate.osaka.jp, 0 +shika.ishikawa.jp, 0 +shikabe.hokkaido.jp, 0 +shikama.miyagi.jp, 0 +shikaoi.hokkaido.jp, 0 +shikatsu.aichi.jp, 0 +shiki.saitama.jp, 0 +shikokuchuo.ehime.jp, 0 +shiksha, 0 +shima.mie.jp, 0 +shimabara.nagasaki.jp, 0 +shimada.shizuoka.jp, 0 +shimamaki.hokkaido.jp, 0 +shimamoto.osaka.jp, 0 +shimane.jp, 0 +shimane.shimane.jp, 0 +shimizu.hokkaido.jp, 0 +shimizu.shizuoka.jp, 0 +shimoda.shizuoka.jp, 0 +shimodate.ibaraki.jp, 0 +shimofusa.chiba.jp, 0 +shimogo.fukushima.jp, 0 +shimoichi.nara.jp, 0 +shimoji.okinawa.jp, 0 +shimokawa.hokkaido.jp, 0 +shimokitayama.nara.jp, 0 +shimonita.gunma.jp, 0 +shimonoseki.yamaguchi.jp, 0 +shimosuwa.nagano.jp, 0 +shimotsuke.tochigi.jp, 0 +shimotsuma.ibaraki.jp, 0 +shinagawa.tokyo.jp, 0 +shinanomachi.nagano.jp, 0 +shingo.aomori.jp, 0 +shingu.fukuoka.jp, 0 +shingu.hyogo.jp, 0 +shingu.wakayama.jp, 0 +shinichi.hiroshima.jp, 0 +shinjo.nara.jp, 0 +shinjo.okayama.jp, 0 +shinjo.yamagata.jp, 0 +shinjuku.tokyo.jp, 0 +shinkamigoto.nagasaki.jp, 0 +shinonsen.hyogo.jp, 0 +shinshinotsu.hokkaido.jp, 0 +shinshiro.aichi.jp, 0 +shinto.gunma.jp, 0 +shintoku.hokkaido.jp, 0 +shintomi.miyazaki.jp, 0 +shinyoshitomi.fukuoka.jp, 0 +shiogama.miyagi.jp, 0 +shiojiri.nagano.jp, 0 +shioya.tochigi.jp, 0 +shirahama.wakayama.jp, 0 +shirakawa.fukushima.jp, 0 +shirakawa.gifu.jp, 0 +shirako.chiba.jp, 0 +shiranuka.hokkaido.jp, 0 +shiraoi.hokkaido.jp, 0 +shiraoka.saitama.jp, 0 +shirataka.yamagata.jp, 0 +shiriuchi.hokkaido.jp, 0 +shiroi.chiba.jp, 0 +shiroishi.miyagi.jp, 0 +shiroishi.saga.jp, 0 +shirosato.ibaraki.jp, 0 +shishikui.tokushima.jp, 0 +shiso.hyogo.jp, 0 +shisui.chiba.jp, 0 +shitara.aichi.jp, 0 +shiwa.iwate.jp, 0 +shizukuishi.iwate.jp, 0 +shizuoka.jp, 0 +shizuoka.shizuoka.jp, 0 +shobara.hiroshima.jp, 0 +shoes, 0 +shonai.fukuoka.jp, 0 +shonai.yamagata.jp, 0 +shoo.okayama.jp, 0 +shop, 0 +shop.ht, 0 +shop.hu, 0 +shop.pl, 0 +shop.ro, 4 +shopping, 0 +shouji, 0 +show, 0 +show.aero, 0 +showa.fukushima.jp, 0 +showa.gunma.jp, 0 +showa.yamanashi.jp, 0 +showtime, 0 +shriram, 0 +shunan.yamaguchi.jp, 0 +si, 0 +si.eu.org, 4 +si.it, 0 +sibenik.museum, 0 +sic.it, 0 +sicilia.it, 0 +sicily.it, 0 +siellak.no, 0 +siena.it, 0 +sigdal.no, 0 +siljan.no, 0 +silk, 0 +silk.museum, 0 +simple-url.com, 4 +sina, 0 +sinaapp.com, 4 +singles, 0 +siracusa.it, 0 +sirdal.no, 0 +site, 0 +sites.static.land, 4 +sj, 0 +sk, 0 +sk.ca, 0 +sk.eu.org, 4 +skanit.no, 0 +skanland.no, 0 +skaun.no, 0 +skedsmo.no, 0 +skedsmokorset.no, 0 +ski, 0 +ski.museum, 0 +ski.no, 0 +skien.no, 0 +skierva.no, 0 +skin, 0 +skiptvet.no, 0 +skjak.no, 0 +skjervoy.no, 0 +sklep.pl, 0 +sko.gov.pl, 0 +skoczow.pl, 0 +skodje.no, 0 +skole.museum, 0 +sky, 0 +skydiving.aero, 0 +skype, 0 +sl, 0 +slask.pl, 0 +slattum.no, 0 +sld.do, 0 +sld.pa, 0 +slg.br, 0 +sling, 0 +slupsk.pl, 0 +sm, 0 +sm.ua, 0 +smart, 0 +smile, 0 +smola.no, 0 +sn, 0 +sn.cn, 0 +snaase.no, 0 +snasa.no, 0 +sncf, 0 +snillfjord.no, 0 +snoasa.no, 0 +so, 0 +so.gov.pl, 0 +so.it, 0 +sobetsu.hokkaido.jp, 0 +soc.lk, 0 +soccer, 0 +sochi.su, 4 +social, 0 +society.museum, 0 +sodegaura.chiba.jp, 0 +soeda.fukuoka.jp, 0 +softbank, 0 +software, 0 +software.aero, 0 +sogndal.no, 0 +sogne.no, 0 +sohu, 0 +soja.okayama.jp, 0 +soka.saitama.jp, 0 +sokndal.no, 0 +sola.no, 0 +solar, 0 +sologne.museum, 0 +solund.no, 0 +solutions, 0 +soma.fukushima.jp, 0 +somna.no, 0 +sondre-land.no, 0 +sondrio.it, 0 +song, 0 +songdalen.no, 0 +soni.nara.jp, 0 +sony, 0 +soo.kagoshima.jp, 0 +sopot.pl, 4 +sor-aurdal.no, 0 +sor-fron.no, 0 +sor-odal.no, 0 +sor-varanger.no, 0 +sorfold.no, 0 +sorreisa.no, 0 +sortland.no, 0 +sorum.no, 0 +sos.pl, 0 +sosa.chiba.jp, 0 +sosnowiec.pl, 0 +soundandvision.museum, 0 +southcarolina.museum, 0 +southwest.museum, 0 +sowa.ibaraki.jp, 0 +soy, 0 +sp.it, 0 +sp.leg.br, 4 +space, 0 +space-to-rent.com, 4 +space.museum, 0 +spacekit.io, 4 +spb.ru, 4 +spb.su, 4 +spdns.de, 4 +spdns.eu, 4 +spdns.org, 4 +spiegel, 0 +spjelkavik.no, 0 +sport.hu, 0 +spot, 0 +spreadbetting, 0 +spy.museum, 0 +spydeberg.no, 0 +square.museum, 0 +sr, 0 +sr.gov.pl, 0 +sr.it, 0 +srl, 0 +srt, 0 +srv.br, 0 +ss.it, 0 +ssl.origin.cdn77-secure.org, 4 +st, 0 +st.no, 0 +stackspace.space, 4 +stada, 0 +stadt.museum, 0 +stalbans.museum, 0 +stalowa-wola.pl, 0 +stange.no, 0 +staples, 0 +star, 0 +starachowice.pl, 0 +stargard.pl, 0 +starhub, 0 +starnberg.museum, 0 +starostwo.gov.pl, 0 +stat.no, 0 +state.museum, 0 +statebank, 0 +statefarm, 0 +stateofdelaware.museum, 0 +stathelle.no, 0 +static-access.net, 4 +static.land, 4 +statics.cloud, 6 +station.museum, 0 +statoil, 0 +stavanger.no, 0 +stavern.no, 0 +stc, 0 +stcgroup, 0 +steam.museum, 0 +steiermark.museum, 0 +steigen.no, 0 +steinkjer.no, 0 +stjohn.museum, 0 +stjordal.no, 0 +stjordalshalsen.no, 0 +stockholm, 0 +stockholm.museum, 0 +stokke.no, 0 +stolos.io, 6 +stor-elvdal.no, 0 +storage, 0 +stord.no, 0 +stordal.no, 0 +store, 0 +store.bb, 0 +store.dk, 4 +store.nf, 0 +store.ro, 0 +store.st, 0 +store.ve, 0 +storfjord.no, 0 +storj.farm, 4 +stpetersburg.museum, 0 +strand.no, 0 +stranda.no, 0 +stream, 0 +stryn.no, 0 +student.aero, 0 +studio, 0 +study, 0 +stuff-4-sale.org, 4 +stuff-4-sale.us, 4 +stufftoread.com, 4 +stuttgart.museum, 0 +style, 0 +su, 0 +sucks, 0 +sue.fukuoka.jp, 0 +suedtirol.it, 0 +suginami.tokyo.jp, 0 +sugito.saitama.jp, 0 +suifu.ibaraki.jp, 0 +suisse.museum, 0 +suita.osaka.jp, 0 +sukagawa.fukushima.jp, 0 +sukumo.kochi.jp, 0 +sula.no, 0 +suldal.no, 0 +suli.hu, 0 +sumida.tokyo.jp, 0 +sumita.iwate.jp, 0 +sumoto.hyogo.jp, 0 +sumoto.kumamoto.jp, 0 +sumy.ua, 0 +sunagawa.hokkaido.jp, 0 +sund.no, 0 +sunndal.no, 0 +supplies, 0 +supply, 0 +support, 0 +surf, 0 +surgeonshall.museum, 0 +surgery, 0 +surnadal.no, 0 +surrey.museum, 0 +susaki.kochi.jp, 0 +susono.shizuoka.jp, 0 +suwa.nagano.jp, 0 +suwalki.pl, 0 +suzaka.nagano.jp, 0 +suzu.ishikawa.jp, 0 +suzuka.mie.jp, 0 +suzuki, 0 +sv, 0 +sv.it, 0 +svalbard.no, 0 +sveio.no, 0 +svelvik.no, 0 +svizzera.museum, 0 +swatch, 0 +sweden.museum, 0 +sweetpepper.org, 4 +swidnica.pl, 0 +swiebodzin.pl, 0 +swiftcover, 0 +swinoujscie.pl, 0 +swiss, 0 +sx, 0 +sx.cn, 0 +sy, 0 +sydney, 0 +sydney.museum, 0 +sykkylven.no, 0 +symantec, 0 +syno-ds.de, 4 +synology-diskstation.de, 4 +synology-ds.de, 4 +synology.me, 4 +systems, 0 +sytes.net, 4 +sz, 0 +szczecin.pl, 0 +szczytno.pl, 0 +szex.hu, 0 +szkola.pl, 0 +t.bg, 0 +t.se, 0 +t3l3p0rt.net, 4 +ta.it, 0 +taa.it, 0 +tab, 0 +tabayama.yamanashi.jp, 0 +tabuse.yamaguchi.jp, 0 +tachiarai.fukuoka.jp, 0 +tachikawa.tokyo.jp, 0 +tadaoka.osaka.jp, 0 +tado.mie.jp, 0 +tadotsu.kagawa.jp, 0 +tagajo.miyagi.jp, 0 +tagami.niigata.jp, 0 +tagawa.fukuoka.jp, 0 +tahara.aichi.jp, 0 +taifun-dns.de, 4 +taiji.wakayama.jp, 0 +taiki.hokkaido.jp, 0 +taiki.mie.jp, 0 +tainai.niigata.jp, 0 +taipei, 0 +taira.toyama.jp, 0 +taishi.hyogo.jp, 0 +taishi.osaka.jp, 0 +taishin.fukushima.jp, 0 +taito.tokyo.jp, 0 +taiwa.miyagi.jp, 0 +tajimi.gifu.jp, 0 +tajiri.osaka.jp, 0 +taka.hyogo.jp, 0 +takagi.nagano.jp, 0 +takahagi.ibaraki.jp, 0 +takahama.aichi.jp, 0 +takahama.fukui.jp, 0 +takaharu.miyazaki.jp, 0 +takahashi.okayama.jp, 0 +takahata.yamagata.jp, 0 +takaishi.osaka.jp, 0 +takamatsu.kagawa.jp, 0 +takamori.kumamoto.jp, 0 +takamori.nagano.jp, 0 +takanabe.miyazaki.jp, 0 +takanezawa.tochigi.jp, 0 +takaoka.toyama.jp, 0 +takarazuka.hyogo.jp, 0 +takasago.hyogo.jp, 0 +takasaki.gunma.jp, 0 +takashima.shiga.jp, 0 +takasu.hokkaido.jp, 0 +takata.fukuoka.jp, 0 +takatori.nara.jp, 0 +takatsuki.osaka.jp, 0 +takatsuki.shiga.jp, 0 +takayama.gifu.jp, 0 +takayama.gunma.jp, 0 +takayama.nagano.jp, 0 +takazaki.miyazaki.jp, 0 +takehara.hiroshima.jp, 0 +taketa.oita.jp, 0 +taketomi.okinawa.jp, 0 +taki.mie.jp, 0 +takikawa.hokkaido.jp, 0 +takino.hyogo.jp, 0 +takinoue.hokkaido.jp, 0 +takko.aomori.jp, 0 +tako.chiba.jp, 0 +taku.saga.jp, 0 +talk, 0 +tama.tokyo.jp, 0 +tamakawa.fukushima.jp, 0 +tamaki.mie.jp, 0 +tamamura.gunma.jp, 0 +tamano.okayama.jp, 0 +tamatsukuri.ibaraki.jp, 0 +tamayu.shimane.jp, 0 +tamba.hyogo.jp, 0 +tana.no, 0 +tanabe.kyoto.jp, 0 +tanabe.wakayama.jp, 0 +tanagura.fukushima.jp, 0 +tananger.no, 0 +tank.museum, 0 +tanohata.iwate.jp, 0 +taobao, 0 +tara.saga.jp, 0 +tarama.okinawa.jp, 0 +taranto.it, 0 +target, 0 +targi.pl, 0 +tarnobrzeg.pl, 0 +tarui.gifu.jp, 0 +tarumizu.kagoshima.jp, 0 +tas.au, 0 +tas.edu.au, 0 +tas.gov.au, 0 +tashkent.su, 4 +tatamotors, 0 +tatar, 0 +tatebayashi.gunma.jp, 0 +tateshina.nagano.jp, 0 +tateyama.chiba.jp, 0 +tateyama.toyama.jp, 0 +tatsuno.hyogo.jp, 0 +tatsuno.nagano.jp, 0 +tattoo, 0 +tawaramoto.nara.jp, 0 +tax, 0 +taxi, 0 +taxi.br, 0 +tc, 0 +tci, 0 +tcm.museum, 0 +td, 0 +tdk, 0 +te.it, 0 +te.ua, 0 +teaches-yoga.com, 4 +team, 0 +tec.ve, 0 +tech, 0 +technology, 0 +technology.museum, 0 +tel, 0 +tel.tr, 0 +tele.amune.org, 4 +telecity, 0 +telefonica, 0 +telekommunikation.museum, 0 +television.museum, 0 +temasek, 0 +tempio-olbia.it, 0 +tempioolbia.it, 0 +tendo.yamagata.jp, 0 +tenei.fukushima.jp, 0 +tenkawa.nara.jp, 0 +tennis, 0 +tenri.nara.jp, 0 +teo.br, 0 +teramo.it, 0 +termez.su, 4 +terni.it, 0 +ternopil.ua, 0 +teshikaga.hokkaido.jp, 0 +test.ru, 0 +test.tj, 0 +teva, 0 +texas.museum, 0 +textile.museum, 0 +tf, 0 +tg, 0 +tgory.pl, 0 +th, 0 +thd, 0 +theater, 0 +theater.museum, 0 +theatre, 0 +thruhere.net, 4 +tiaa, 0 +tickets, 0 +tienda, 0 +tiffany, 0 +time.museum, 0 +time.no, 0 +timekeeping.museum, 0 +tingvoll.no, 0 +tinn.no, 0 +tips, 0 +tires, 0 +tirol, 0 +tj, 0 +tj.cn, 0 +tjeldsund.no, 0 +tjmaxx, 0 +tjome.no, 0 +tjx, 0 +tk, 0 +tkmaxx, 0 +tl, 0 +tm, 0 +tm.cy, 0 +tm.fr, 0 +tm.hu, 0 +tm.km, 0 +tm.mc, 0 +tm.mg, 0 +tm.no, 0 +tm.pl, 0 +tm.ro, 0 +tm.se, 0 +tm.za, 0 +tmall, 0 +tmp.br, 0 +tn, 0 +tn.it, 0 +tn.us, 0 +to, 0 +to.it, 0 +to.leg.br, 4 +toba.mie.jp, 0 +tobe.ehime.jp, 0 +tobetsu.hokkaido.jp, 0 +tobishima.aichi.jp, 0 +tochigi.jp, 0 +tochigi.tochigi.jp, 0 +tochio.niigata.jp, 0 +toda.saitama.jp, 0 +today, 0 +toei.aichi.jp, 0 +toga.toyama.jp, 0 +togakushi.nagano.jp, 0 +togane.chiba.jp, 0 +togitsu.nagasaki.jp, 0 +togliatti.su, 4 +togo.aichi.jp, 0 +togura.nagano.jp, 0 +tohma.hokkaido.jp, 0 +tohnosho.chiba.jp, 0 +toho.fukuoka.jp, 0 +tokai.aichi.jp, 0 +tokai.ibaraki.jp, 0 +tokamachi.niigata.jp, 0 +tokashiki.okinawa.jp, 0 +toki.gifu.jp, 0 +tokigawa.saitama.jp, 0 +tokke.no, 0 +tokoname.aichi.jp, 0 +tokorozawa.saitama.jp, 0 +tokushima.jp, 0 +tokushima.tokushima.jp, 0 +tokuyama.yamaguchi.jp, 0 +tokyo, 0 +tokyo.jp, 0 +tolga.no, 0 +tomakomai.hokkaido.jp, 0 +tomari.hokkaido.jp, 0 +tome.miyagi.jp, 0 +tomi.nagano.jp, 0 +tomigusuku.okinawa.jp, 0 +tomika.gifu.jp, 0 +tomioka.gunma.jp, 0 +tomisato.chiba.jp, 0 +tomiya.miyagi.jp, 0 +tomobe.ibaraki.jp, 0 +tonaki.okinawa.jp, 0 +tonami.toyama.jp, 0 +tondabayashi.osaka.jp, 0 +tone.ibaraki.jp, 0 +tono.iwate.jp, 0 +tonosho.kagawa.jp, 0 +tonsberg.no, 0 +tools, 0 +toon.ehime.jp, 0 +top, 0 +topology.museum, 0 +torahime.shiga.jp, 0 +toray, 0 +toride.ibaraki.jp, 0 +torino.it, 0 +torino.museum, 0 +torsken.no, 0 +tos.it, 0 +tosa.kochi.jp, 0 +tosashimizu.kochi.jp, 0 +toscana.it, 0 +toshiba, 0 +toshima.tokyo.jp, 0 +tosu.saga.jp, 0 +total, 0 +tottori.jp, 0 +tottori.tottori.jp, 0 +touch.museum, 0 +tourism.pl, 0 +tourism.tn, 0 +tours, 0 +towada.aomori.jp, 0 +town, 0 +town.museum, 0 +townnews-staging.com, 4 +toya.hokkaido.jp, 0 +toyako.hokkaido.jp, 0 +toyama.jp, 0 +toyama.toyama.jp, 0 +toyo.kochi.jp, 0 +toyoake.aichi.jp, 0 +toyohashi.aichi.jp, 0 +toyokawa.aichi.jp, 0 +toyonaka.osaka.jp, 0 +toyone.aichi.jp, 0 +toyono.osaka.jp, 0 +toyooka.hyogo.jp, 0 +toyosato.shiga.jp, 0 +toyota, 0 +toyota.aichi.jp, 0 +toyota.yamaguchi.jp, 0 +toyotomi.hokkaido.jp, 0 +toyotsu.fukuoka.jp, 0 +toyoura.hokkaido.jp, 0 +toys, 0 +tozawa.yamagata.jp, 0 +tozsde.hu, 0 +tp.it, 0 +tr, 0 +tr.eu.org, 4 +tr.it, 0 +tr.no, 0 +tra.kp, 0 +trade, 0 +trader.aero, 0 +trading, 0 +trading.aero, 0 +traeumtgerade.de, 4 +trainer.aero, 0 +training, 0 +trana.no, 0 +tranby.no, 0 +trani-andria-barletta.it, 0 +trani-barletta-andria.it, 0 +traniandriabarletta.it, 0 +tranibarlettaandria.it, 0 +tranoy.no, 0 +transport.museum, 0 +transurl.be, 6 +transurl.eu, 6 +transurl.nl, 6 +trapani.it, 0 +travel, 0 +travel.pl, 0 +travel.tt, 0 +travelchannel, 0 +travelers, 0 +travelersinsurance, 0 +trd.br, 0 +tree.museum, 0 +trentino-a-adige.it, 0 +trentino-aadige.it, 0 +trentino-alto-adige.it, 0 +trentino-altoadige.it, 0 +trentino-s-tirol.it, 0 +trentino-stirol.it, 0 +trentino-sud-tirol.it, 0 +trentino-sudtirol.it, 0 +trentino-sued-tirol.it, 0 +trentino-suedtirol.it, 0 +trentino.it, 0 +trentinoa-adige.it, 0 +trentinoaadige.it, 0 +trentinoalto-adige.it, 0 +trentinoaltoadige.it, 0 +trentinos-tirol.it, 0 +trentinostirol.it, 0 +trentinosud-tirol.it, 0 +trentinosudtirol.it, 0 +trentinosued-tirol.it, 0 +trentinosuedtirol.it, 0 +trento.it, 0 +treviso.it, 0 +trieste.it, 0 +triton.zone, 6 +troandin.no, 0 +trogstad.no, 0 +troitsk.su, 4 +trolley.museum, 0 +tromsa.no, 0 +tromso.no, 0 +trondheim.no, 0 +trust, 0 +trust.museum, 0 +trustee.museum, 0 +trv, 0 +trysil.no, 0 +ts.it, 0 +tselinograd.su, 4 +tsu.mie.jp, 0 +tsubame.niigata.jp, 0 +tsubata.ishikawa.jp, 0 +tsubetsu.hokkaido.jp, 0 +tsuchiura.ibaraki.jp, 0 +tsuga.tochigi.jp, 0 +tsugaru.aomori.jp, 0 +tsuiki.fukuoka.jp, 0 +tsukigata.hokkaido.jp, 0 +tsukiyono.gunma.jp, 0 +tsukuba.ibaraki.jp, 0 +tsukui.kanagawa.jp, 0 +tsukumi.oita.jp, 0 +tsumagoi.gunma.jp, 0 +tsunan.niigata.jp, 0 +tsuno.kochi.jp, 0 +tsuno.miyazaki.jp, 0 +tsuru.yamanashi.jp, 0 +tsuruga.fukui.jp, 0 +tsurugashima.saitama.jp, 0 +tsurugi.ishikawa.jp, 0 +tsuruoka.yamagata.jp, 0 +tsuruta.aomori.jp, 0 +tsushima.aichi.jp, 0 +tsushima.nagasaki.jp, 0 +tsuwano.shimane.jp, 0 +tsuyama.okayama.jp, 0 +tt, 0 +tt.im, 0 +tube, 0 +tui, 0 +tula.su, 4 +tunes, 0 +tunk.org, 4 +tur.ar, 0 +tur.br, 0 +turek.pl, 0 +turen.tn, 0 +turin.it, 0 +turystyka.pl, 0 +tuscany.it, 0 +tushu, 0 +tuva.su, 4 +tuxfamily.org, 4 +tv, 0 +tv.bb, 0 +tv.bo, 0 +tv.br, 0 +tv.im, 0 +tv.it, 0 +tv.na, 0 +tv.sd, 0 +tv.tr, 0 +tv.tz, 0 +tvedestrand.no, 0 +tvs, 0 +tw, 0 +tw.cn, 0 +tx.us, 0 +tychy.pl, 0 +tydal.no, 0 +tynset.no, 0 +tysfjord.no, 0 +tysnes.no, 0 +tysvar.no, 0 +tz, 0 +u.bg, 0 +u.se, 0 +ua, 0 +ubank, 0 +ube.yamaguchi.jp, 0 +uber.space, 4 +ubs, 0 +uchihara.ibaraki.jp, 0 +uchiko.ehime.jp, 0 +uchinada.ishikawa.jp, 0 +uchinomi.kagawa.jp, 0 +uconnect, 0 +ud.it, 0 +uda.nara.jp, 0 +udine.it, 0 +udono.mie.jp, 0 +ueda.nagano.jp, 0 +ueno.gunma.jp, 0 +uenohara.yamanashi.jp, 0 +ufcfan.org, 4 +ug, 0 +ug.gov.pl, 0 +ugim.gov.pl, 0 +uhren.museum, 0 +uji.kyoto.jp, 0 +ujiie.tochigi.jp, 0 +ujitawara.kyoto.jp, 0 +uk, 0 +uk.com, 4 +uk.eu.org, 4 +uk.net, 4 +uki.kumamoto.jp, 0 +ukiha.fukuoka.jp, 0 +ullensaker.no, 0 +ullensvang.no, 0 +ulm.museum, 0 +ulsan.kr, 0 +ulvik.no, 0 +um.gov.pl, 0 +umaji.kochi.jp, 0 +umb.it, 0 +umbria.it, 0 +umi.fukuoka.jp, 0 +umig.gov.pl, 0 +unazuki.toyama.jp, 0 +undersea.museum, 0 +unicom, 0 +union.aero, 0 +univ.sn, 0 +university, 0 +university.museum, 0 +unjarga.no, 0 +unnan.shimane.jp, 0 +uno, 0 +unusualperson.com, 4 +unzen.nagasaki.jp, 0 +uol, 0 +uonuma.niigata.jp, 0 +uozu.toyama.jp, 0 +upow.gov.pl, 0 +uppo.gov.pl, 0 +ups, 0 +urakawa.hokkaido.jp, 0 +urasoe.okinawa.jp, 0 +urausu.hokkaido.jp, 0 +urawa.saitama.jp, 0 +urayasu.chiba.jp, 0 +urbino-pesaro.it, 0 +urbinopesaro.it, 0 +ureshino.mie.jp, 0 +uri.arpa, 0 +urn.arpa, 0 +uruma.okinawa.jp, 0 +uryu.hokkaido.jp, 0 +us, 0 +us-1.evennode.com, 4 +us-2.evennode.com, 4 +us-3.evennode.com, 4 +us-east-1.amazonaws.com, 4 +us.com, 4 +us.eu.org, 4 +us.gov.pl, 0 +us.na, 0 +us.org, 4 +usa.museum, 0 +usa.oita.jp, 0 +usantiques.museum, 0 +usarts.museum, 0 +uscountryestate.museum, 0 +usculture.museum, 0 +usdecorativearts.museum, 0 +user.party.eus, 4 +usgarden.museum, 0 +ushiku.ibaraki.jp, 0 +ushistory.museum, 0 +ushuaia.museum, 0 +uslivinghistory.museum, 0 +ustka.pl, 0 +usui.fukuoka.jp, 0 +usuki.oita.jp, 0 +ut.us, 0 +utah.museum, 0 +utashinai.hokkaido.jp, 0 +utazas.hu, 0 +utazu.kagawa.jp, 0 +uto.kumamoto.jp, 0 +utsira.no, 0 +utsunomiya.tochigi.jp, 0 +uvic.museum, 0 +uw.gov.pl, 0 +uwajima.ehime.jp, 0 +uy, 0 +uy.com, 4 +uz, 0 +uz.ua, 0 +uzhgorod.ua, 0 +uzs.gov.pl, 0 +v.bg, 0 +va, 0 +va.it, 0 +va.no, 0 +va.us, 0 +vaapste.no, 0 +vacations, 0 +vadso.no, 0 +vaga.no, 0 +vagan.no, 0 +vagsoy.no, 0 +vaksdal.no, 0 +val-d-aosta.it, 0 +val-daosta.it, 0 +vald-aosta.it, 0 +valdaosta.it, 0 +valer.hedmark.no, 0 +valer.ostfold.no, 0 +valle-aosta.it, 0 +valle-d-aosta.it, 0 +valle-daosta.it, 0 +valle.no, 0 +valleaosta.it, 0 +valled-aosta.it, 0 +valledaosta.it, 0 +vallee-aoste.it, 0 +valleeaoste.it, 0 +valley.museum, 0 +vana, 0 +vang.no, 0 +vanguard, 0 +vantaa.museum, 0 +vanylven.no, 0 +vao.it, 0 +vardo.no, 0 +varese.it, 0 +varggat.no, 0 +varoy.no, 0 +vb.it, 0 +vc, 0 +vc.it, 0 +vda.it, 0 +ve, 0 +ve.it, 0 +vefsn.no, 0 +vega.no, 0 +vegarshei.no, 0 +vegas, 0 +ven.it, 0 +veneto.it, 0 +venezia.it, 0 +venice.it, 0 +vennesla.no, 0 +ventures, 0 +verbania.it, 0 +vercelli.it, 0 +verdal.no, 0 +verisign, 0 +verona.it, 0 +verran.no, 0 +versailles.museum, 0 +versicherung, 0 +vestby.no, 0 +vestnes.no, 0 +vestre-slidre.no, 0 +vestre-toten.no, 0 +vestvagoy.no, 0 +vet, 0 +vet.br, 0 +veterinaire.fr, 0 +veterinaire.km, 0 +vevelstad.no, 0 +vf.no, 0 +vg, 0 +vgs.no, 0 +vi, 0 +vi.it, 0 +vi.us, 0 +viajes, 0 +vibo-valentia.it, 0 +vibovalentia.it, 0 +vic.au, 0 +vic.edu.au, 0 +vic.gov.au, 0 +vicenza.it, 0 +video, 0 +video.hu, 0 +vig, 0 +vik.no, 0 +viking, 0 +viking.museum, 0 +vikna.no, 0 +village.museum, 0 +villas, 0 +vin, 0 +vindafjord.no, 0 +vinnica.ua, 0 +vinnytsia.ua, 0 +vip, 0 +vipsinaapp.com, 4 +virgin, 0 +virginia.museum, 0 +virtual.museum, 0 +virtueeldomein.nl, 4 +virtuel.museum, 0 +visa, 0 +vision, 0 +vista, 0 +vistaprint, 0 +viterbo.it, 0 +viva, 0 +vivo, 0 +vlaanderen, 0 +vlaanderen.museum, 0 +vladikavkaz.ru, 4 +vladikavkaz.su, 4 +vladimir.ru, 4 +vladimir.su, 4 +vlog.br, 0 +vn, 0 +vn.ua, 0 +voagat.no, 0 +vodka, 0 +volda.no, 0 +volkenkunde.museum, 0 +volkswagen, 0 +vologda.su, 4 +volvo, 0 +volyn.ua, 0 +voss.no, 0 +vossevangen.no, 0 +vote, 0 +voting, 0 +voto, 0 +voyage, 0 +vpnplus.to, 4 +vr.it, 0 +vs.it, 0 +vt.it, 0 +vt.us, 0 +vu, 0 +vuelos, 0 +vv.it, 0 +w.bg, 0 +w.se, 0 +wa.au, 0 +wa.edu.au, 0 +wa.gov.au, 0 +wa.us, 0 +wada.nagano.jp, 0 +wajiki.tokushima.jp, 0 +wajima.ishikawa.jp, 0 +wakasa.fukui.jp, 0 +wakasa.tottori.jp, 0 +wakayama.jp, 0 +wakayama.wakayama.jp, 0 +wake.okayama.jp, 0 +wakkanai.hokkaido.jp, 0 +wakuya.miyagi.jp, 0 +walbrzych.pl, 0 +wales, 0 +wales.museum, 0 +wallonie.museum, 0 +walmart, 0 +walter, 0 +wang, 0 +wanggou, 0 +wanouchi.gifu.jp, 0 +war.museum, 0 +warabi.saitama.jp, 0 +warman, 0 +warmia.pl, 0 +warszawa.pl, 0 +washingtondc.museum, 0 +wassamu.hokkaido.jp, 0 +watarai.mie.jp, 0 +watari.miyagi.jp, 0 +watch, 0 +watch-and-clock.museum, 0 +watchandclock.museum, 0 +watches, 0 +waw.pl, 0 +wazuka.kyoto.jp, 0 +weather, 0 +weatherchannel, 0 +web.co, 0 +web.do, 0 +web.id, 0 +web.lk, 0 +web.nf, 0 +web.ni, 0 +web.pk, 0 +web.tj, 0 +web.tr, 0 +web.ve, 0 +web.za, 0 +webcam, 0 +weber, 0 +webhop.biz, 4 +webhop.info, 4 +webhop.me, 4 +webhop.net, 4 +webhop.org, 4 +website, 0 +wed, 0 +wedding, 0 +wegrow.pl, 0 +weibo, 0 +weir, 0 +wellbeingzone.co.uk, 4 +wellbeingzone.eu, 4 +western.museum, 0 +westfalen.museum, 0 +wf, 0 +whaling.museum, 0 +whoswho, 0 +wi.us, 0 +wielun.pl, 0 +wien, 0 +wif.gov.pl, 0 +wiih.gov.pl, 0 +wiki, 0 +wiki.br, 0 +wildlife.museum, 0 +williamhill, 0 +williamsburg.museum, 0 +win, 0 +winb.gov.pl, 0 +windmill.museum, 0 +windows, 0 +wine, 0 +winners, 0 +wios.gov.pl, 0 +witd.gov.pl, 0 +withgoogle.com, 4 +withyoutube.com, 4 +wiw.gov.pl, 0 +wlocl.pl, 0 +wloclawek.pl, 0 +wme, 0 +wmflabs.org, 4 +wodzislaw.pl, 0 +wolomin.pl, 0 +wolterskluwer, 0 +woodside, 0 +work, 0 +workinggroup.aero, 0 +workisboring.com, 4 +works, 0 +works.aero, 0 +workshop.museum, 0 +world, 0 +worse-than.tv, 4 +wow, 0 +writesthisblog.com, 4 +wroc.pl, 4 +wroclaw.pl, 0 +ws, 0 +ws.na, 0 +wsa.gov.pl, 0 +wskr.gov.pl, 0 +wtc, 0 +wtf, 0 +wuoz.gov.pl, 0 +wv.us, 0 +www.ck, 1 +www.ro, 0 +wy.us, 0 +wzmiuw.gov.pl, 0 +x.bg, 0 +x.se, 0 +xbox, 0 +xen.prgmr.com, 4 +xenapponazure.com, 4 +xerox, 0 +xfinity, 0 +xihuan, 0 +xin, 0 +xj.cn, 0 +xn--0trq7p7nn.jp, 0 +xn--11b4c3d, 0 +xn--1ck2e1b, 0 +xn--1ctwo.jp, 0 +xn--1lqs03n.jp, 0 +xn--1lqs71d.jp, 0 +xn--1qqw23a, 0 +xn--2m4a15e.jp, 0 +xn--30rr7y, 0 +xn--32vp30h.jp, 0 +xn--3bst00m, 0 +xn--3ds443g, 0 +xn--3e0b707e, 0 +xn--3oq18vl8pn36a, 0 +xn--3pxu8k, 0 +xn--42c2d9a, 0 +xn--45brj9c, 0 +xn--45q11c, 0 +xn--4gbrim, 0 +xn--4it168d.jp, 0 +xn--4it797k.jp, 0 +xn--4pvxs.jp, 0 +xn--54b7fta0cc, 0 +xn--55qw42g, 0 +xn--55qx5d, 0 +xn--55qx5d.cn, 0 +xn--55qx5d.hk, 0 +xn--5js045d.jp, 0 +xn--5rtp49c.jp, 0 +xn--5rtq34k.jp, 0 +xn--5su34j936bgsg, 0 +xn--5tzm5g, 0 +xn--6btw5a.jp, 0 +xn--6frz82g, 0 +xn--6orx2r.jp, 0 +xn--6qq986b3xl, 0 +xn--7t0a264c.jp, 0 +xn--80adxhks, 0 +xn--80ao21a, 0 +xn--80aqecdr1a, 0 +xn--80asehdb, 0 +xn--80aswg, 0 +xn--80au.xn--90a3ac, 0 +xn--8ltr62k.jp, 0 +xn--8pvr4u.jp, 0 +xn--8y0a063a, 0 +xn--90a3ac, 0 +xn--90ais, 0 +xn--90azh.xn--90a3ac, 0 +xn--9dbhblg6di.museum, 0 +xn--9dbq2a, 0 +xn--9et52u, 0 +xn--9krt00a, 0 +xn--andy-ira.no, 0 +xn--aroport-bya.ci, 0 +xn--asky-ira.no, 0 +xn--aurskog-hland-jnb.no, 0 +xn--avery-yua.no, 0 +xn--b-5ga.nordland.no, 0 +xn--b-5ga.telemark.no, 0 +xn--b4w605ferd, 0 +xn--bck1b9a5dre4c, 0 +xn--bdddj-mrabd.no, 0 +xn--bearalvhki-y4a.no, 0 +xn--berlevg-jxa.no, 0 +xn--bhcavuotna-s4a.no, 0 +xn--bhccavuotna-k7a.no, 0 +xn--bidr-5nac.no, 0 +xn--bievt-0qa.no, 0 +xn--bjarky-fya.no, 0 +xn--bjddar-pta.no, 0 +xn--blt-elab.no, 0 +xn--bmlo-gra.no, 0 +xn--bod-2na.no, 0 +xn--brnny-wuac.no, 0 +xn--brnnysund-m8ac.no, 0 +xn--brum-voa.no, 0 +xn--btsfjord-9za.no, 0 +xn--c1avg, 0 +xn--c1avg.xn--90a3ac, 0 +xn--c2br7g, 0 +xn--c3s14m.jp, 0 +xn--cck2b3b, 0 +xn--cg4bki, 0 +xn--ciqpn.hk, 0 +xn--clchc0ea0b2g2a9gcd, 0 +xn--comunicaes-v6a2o.museum, 0 +xn--correios-e-telecomunicaes-ghc29a.museum, 0 +xn--czr694b, 0 +xn--czrs0t, 0 +xn--czru2d, 0 +xn--czrw28b.tw, 0 +xn--d1acj3b, 0 +xn--d1alf, 0 +xn--d1at.xn--90a3ac, 0 +xn--d5qv7z876c.jp, 0 +xn--davvenjrga-y4a.no, 0 +xn--djrs72d6uy.jp, 0 +xn--djty4k.jp, 0 +xn--dnna-gra.no, 0 +xn--drbak-wua.no, 0 +xn--dyry-ira.no, 0 +xn--e1a4c, 0 +xn--eckvdtc9d, 0 +xn--efvn9s.jp, 0 +xn--efvy88h, 0 +xn--ehqz56n.jp, 0 +xn--elqq16h.jp, 0 +xn--estv75g, 0 +xn--eveni-0qa01ga.no, 0 +xn--f6qx53a.jp, 0 +xn--fct429k, 0 +xn--fhbei, 0 +xn--finny-yua.no, 0 +xn--fiq228c5hs, 0 +xn--fiq64b, 0 +xn--fiqs8s, 0 +xn--fiqz9s, 0 +xn--fjord-lra.no, 0 +xn--fjq720a, 0 +xn--fl-zia.no, 0 +xn--flor-jra.no, 0 +xn--flw351e, 0 +xn--fpcrj9c3d, 0 +xn--frde-gra.no, 0 +xn--frna-woa.no, 0 +xn--frya-hra.no, 0 +xn--fzc2c9e2c, 0 +xn--fzys8d69uvgm, 0 +xn--g2xx48c, 0 +xn--gckr3f0f, 0 +xn--gecrj9c, 0 +xn--ggaviika-8ya47h.no, 0 +xn--gildeskl-g0a.no, 0 +xn--givuotna-8ya.no, 0 +xn--gjvik-wua.no, 0 +xn--gk3at1e, 0 +xn--gls-elac.no, 0 +xn--gmq050i.hk, 0 +xn--gmqw5a.hk, 0 +xn--h-2fa.no, 0 +xn--h1aegh.museum, 0 +xn--h2brj9c, 0 +xn--hbmer-xqa.no, 0 +xn--hcesuolo-7ya35b.no, 0 +xn--hery-ira.nordland.no, 0 +xn--hery-ira.xn--mre-og-romsdal-qqb.no, 0 +xn--hgebostad-g3a.no, 0 +xn--hmmrfeasta-s4ac.no, 0 +xn--hnefoss-q1a.no, 0 +xn--hobl-ira.no, 0 +xn--holtlen-hxa.no, 0 +xn--hpmir-xqa.no, 0 +xn--hxt814e, 0 +xn--hyanger-q1a.no, 0 +xn--hylandet-54a.no, 0 +xn--i1b6b1a6a2e, 0 +xn--imr513n, 0 +xn--indery-fya.no, 0 +xn--io0a7i, 0 +xn--io0a7i.cn, 0 +xn--io0a7i.hk, 0 +xn--j1aef, 0 +xn--j1amh, 0 +xn--j6w193g, 0 +xn--jlq61u9w7b, 0 +xn--jlster-bya.no, 0 +xn--jrpeland-54a.no, 0 +xn--jvr189m, 0 +xn--k7yn95e.jp, 0 +xn--karmy-yua.no, 0 +xn--kbrq7o.jp, 0 +xn--kcrx77d1x4a, 0 +xn--kfjord-iua.no, 0 +xn--klbu-woa.no, 0 +xn--klt787d.jp, 0 +xn--kltp7d.jp, 0 +xn--kltx9a.jp, 0 +xn--klty5x.jp, 0 +xn--koluokta-7ya57h.no, 0 +xn--kprw13d, 0 +xn--kpry57d, 0 +xn--kpu716f, 0 +xn--kput3i, 0 +xn--krager-gya.no, 0 +xn--kranghke-b0a.no, 0 +xn--krdsherad-m8a.no, 0 +xn--krehamn-dxa.no, 0 +xn--krjohka-hwab49j.no, 0 +xn--ksnes-uua.no, 0 +xn--kvfjord-nxa.no, 0 +xn--kvitsy-fya.no, 0 +xn--kvnangen-k0a.no, 0 +xn--l-1fa.no, 0 +xn--l1acc, 0 +xn--laheadju-7ya.no, 0 +xn--langevg-jxa.no, 0 +xn--lcvr32d.hk, 0 +xn--ldingen-q1a.no, 0 +xn--leagaviika-52b.no, 0 +xn--lesund-hua.no, 0 +xn--lgbbat1ad8j, 0 +xn--lgrd-poac.no, 0 +xn--lhppi-xqa.no, 0 +xn--linds-pra.no, 0 +xn--lns-qla.museum, 0 +xn--loabt-0qa.no, 0 +xn--lrdal-sra.no, 0 +xn--lrenskog-54a.no, 0 +xn--lt-liac.no, 0 +xn--lten-gra.no, 0 +xn--lury-ira.no, 0 +xn--mely-ira.no, 0 +xn--merker-kua.no, 0 +xn--mgb2ddes, 0 +xn--mgb9awbf, 0 +xn--mgba3a3ejt, 0 +xn--mgba3a4f16a, 0 +xn--mgba3a4f16a.ir, 0 +xn--mgba3a4fra, 0 +xn--mgba3a4fra.ir, 0 +xn--mgba7c0bbn0a, 0 +xn--mgbaakc7dvf, 0 +xn--mgbaam7a8h, 0 +xn--mgbab2bd, 0 +xn--mgbai9a5eva00b, 0 +xn--mgbai9azgqp6j, 0 +xn--mgbayh7gpa, 0 +xn--mgbb9fbpob, 0 +xn--mgbbh1a71e, 0 +xn--mgbc0a9azcg, 0 +xn--mgbca7dzdo, 0 +xn--mgberp4a5d4a87g, 0 +xn--mgberp4a5d4ar, 0 +xn--mgbi4ecexp, 0 +xn--mgbpl2fh, 0 +xn--mgbqly7c0a67fbc, 0 +xn--mgbqly7cvafr, 0 +xn--mgbt3dhd, 0 +xn--mgbtf8fl, 0 +xn--mgbtx2b, 0 +xn--mgbx4cd0ab, 0 +xn--mix082f, 0 +xn--mix891f, 0 +xn--mjndalen-64a.no, 0 +xn--mk0axi.hk, 0 +xn--mk1bu44c, 0 +xn--mkru45i.jp, 0 +xn--mlatvuopmi-s4a.no, 0 +xn--mli-tla.no, 0 +xn--mlselv-iua.no, 0 +xn--moreke-jua.no, 0 +xn--mori-qsa.nz, 0 +xn--mosjen-eya.no, 0 +xn--mot-tla.no, 0 +xn--msy-ula0h.no, 0 +xn--mtta-vrjjat-k7af.no, 0 +xn--muost-0qa.no, 0 +xn--mxtq1m, 0 +xn--mxtq1m.hk, 0 +xn--ngbc5azd, 0 +xn--ngbe9e0a, 0 +xn--ngbrx, 0 +xn--nit225k.jp, 0 +xn--nmesjevuemie-tcba.no, 0 +xn--nnx388a, 0 +xn--node, 0 +xn--nqv7f, 0 +xn--nqv7fs00ema, 0 +xn--nry-yla5g.no, 0 +xn--ntso0iqx3a.jp, 0 +xn--ntsq17g.jp, 0 +xn--nttery-byae.no, 0 +xn--nvuotna-hwa.no, 0 +xn--nyqy26a, 0 +xn--o1ac.xn--90a3ac, 0 +xn--o1ach.xn--90a3ac, 0 +xn--o3cw4h, 0 +xn--od0alg.cn, 0 +xn--od0alg.hk, 0 +xn--od0aq3b.hk, 0 +xn--ogbpf8fl, 0 +xn--oppegrd-ixa.no, 0 +xn--ostery-fya.no, 0 +xn--osyro-wua.no, 0 +xn--p1acf, 0 +xn--p1ai, 0 +xn--pbt977c, 0 +xn--pgbs0dh, 0 +xn--porsgu-sta26f.no, 0 +xn--pssu33l.jp, 0 +xn--pssy2u, 0 +xn--q9jyb4c, 0 +xn--qcka1pmc, 0 +xn--qqqt11m.jp, 0 +xn--qxam, 0 +xn--rady-ira.no, 0 +xn--rdal-poa.no, 0 +xn--rde-ula.no, 0 +xn--rdy-0nab.no, 0 +xn--rennesy-v1a.no, 0 +xn--rhkkervju-01af.no, 0 +xn--rholt-mra.no, 0 +xn--rhqv96g, 0 +xn--rht27z.jp, 0 +xn--rht3d.jp, 0 +xn--rht61e.jp, 0 +xn--risa-5na.no, 0 +xn--risr-ira.no, 0 +xn--rland-uua.no, 0 +xn--rlingen-mxa.no, 0 +xn--rmskog-bya.no, 0 +xn--rny31h.jp, 0 +xn--rovu88b, 0 +xn--rros-gra.no, 0 +xn--rskog-uua.no, 0 +xn--rst-0na.no, 0 +xn--rsta-fra.no, 0 +xn--ryken-vua.no, 0 +xn--ryrvik-bya.no, 0 +xn--s-1fa.no, 0 +xn--s9brj9c, 0 +xn--sandnessjen-ogb.no, 0 +xn--sandy-yua.no, 0 +xn--seral-lra.no, 0 +xn--ses554g, 0 +xn--sgne-gra.no, 0 +xn--skierv-uta.no, 0 +xn--skjervy-v1a.no, 0 +xn--skjk-soa.no, 0 +xn--sknit-yqa.no, 0 +xn--sknland-fxa.no, 0 +xn--slat-5na.no, 0 +xn--slt-elab.no, 0 +xn--smla-hra.no, 0 +xn--smna-gra.no, 0 +xn--snase-nra.no, 0 +xn--sndre-land-0cb.no, 0 +xn--snes-poa.no, 0 +xn--snsa-roa.no, 0 +xn--sr-aurdal-l8a.no, 0 +xn--sr-fron-q1a.no, 0 +xn--sr-odal-q1a.no, 0 +xn--sr-varanger-ggb.no, 0 +xn--srfold-bya.no, 0 +xn--srreisa-q1a.no, 0 +xn--srum-gra.no, 0 +xn--stjrdal-s1a.no, 0 +xn--stjrdalshalsen-sqb.no, 0 +xn--stre-toten-zcb.no, 0 +xn--t60b56a, 0 +xn--tckwe, 0 +xn--tiq49xqyj, 0 +xn--tjme-hra.no, 0 +xn--tn0ag.hk, 0 +xn--tnsberg-q1a.no, 0 +xn--tor131o.jp, 0 +xn--trany-yua.no, 0 +xn--trgstad-r1a.no, 0 +xn--trna-woa.no, 0 +xn--troms-zua.no, 0 +xn--tysvr-vra.no, 0 +xn--uc0atv.hk, 0 +xn--uc0atv.tw, 0 +xn--uc0ay4a.hk, 0 +xn--uist22h.jp, 0 +xn--uisz3g.jp, 0 +xn--unjrga-rta.no, 0 +xn--unup4y, 0 +xn--uuwu58a.jp, 0 +xn--vads-jra.no, 0 +xn--vard-jra.no, 0 +xn--vegrshei-c0a.no, 0 +xn--vermgensberater-ctb, 0 +xn--vermgensberatung-pwb, 0 +xn--vestvgy-ixa6o.no, 0 +xn--vg-yiab.no, 0 +xn--vgan-qoa.no, 0 +xn--vgsy-qoa0j.no, 0 +xn--vgu402c.jp, 0 +xn--vhquv, 0 +xn--vler-qoa.hedmark.no, 0 +xn--vler-qoa.xn--stfold-9xa.no, 0 +xn--vre-eiker-k8a.no, 0 +xn--vrggt-xqad.no, 0 +xn--vry-yla5g.no, 0 +xn--vuq861b, 0 +xn--w4r85el8fhu5dnra, 0 +xn--w4rs40l, 0 +xn--wcvs22d.hk, 0 +xn--wgbh1c, 0 +xn--wgbl6a, 0 +xn--xhq521b, 0 +xn--xkc2al3hye2a, 0 +xn--xkc2dl3a5ee0h, 0 +xn--y9a3aq, 0 +xn--yer-zna.no, 0 +xn--yfro4i67o, 0 +xn--ygarden-p1a.no, 0 +xn--ygbi2ammx, 0 +xn--ystre-slidre-ujb.no, 0 +xn--zbx025d.jp, 0 +xn--zf0ao64a.tw, 0 +xn--zf0avx.hk, 0 +xn--zfr164b, 0 +xperia, 0 +xs4all.space, 4 +xxx, 0 +xyz, 0 +xz.cn, 0 +y.bg, 0 +y.se, 0 +yabu.hyogo.jp, 0 +yabuki.fukushima.jp, 0 +yachimata.chiba.jp, 0 +yachiyo.chiba.jp, 0 +yachiyo.ibaraki.jp, 0 +yachts, 0 +yaese.okinawa.jp, 0 +yahaba.iwate.jp, 0 +yahiko.niigata.jp, 0 +yahoo, 0 +yaita.tochigi.jp, 0 +yaizu.shizuoka.jp, 0 +yakage.okayama.jp, 0 +yakumo.hokkaido.jp, 0 +yakumo.shimane.jp, 0 +yalta.ua, 0 +yamada.fukuoka.jp, 0 +yamada.iwate.jp, 0 +yamada.toyama.jp, 0 +yamaga.kumamoto.jp, 0 +yamagata.gifu.jp, 0 +yamagata.ibaraki.jp, 0 +yamagata.jp, 0 +yamagata.nagano.jp, 0 +yamagata.yamagata.jp, 0 +yamaguchi.jp, 0 +yamakita.kanagawa.jp, 0 +yamamoto.miyagi.jp, 0 +yamanakako.yamanashi.jp, 0 +yamanashi.jp, 0 +yamanashi.yamanashi.jp, 0 +yamanobe.yamagata.jp, 0 +yamanouchi.nagano.jp, 0 +yamashina.kyoto.jp, 0 +yamato.fukushima.jp, 0 +yamato.kanagawa.jp, 0 +yamato.kumamoto.jp, 0 +yamatokoriyama.nara.jp, 0 +yamatotakada.nara.jp, 0 +yamatsuri.fukushima.jp, 0 +yamaxun, 0 +yamazoe.nara.jp, 0 +yame.fukuoka.jp, 0 +yanagawa.fukuoka.jp, 0 +yanaizu.fukushima.jp, 0 +yandex, 0 +yao.osaka.jp, 0 +yaotsu.gifu.jp, 0 +yasaka.nagano.jp, 0 +yashio.saitama.jp, 0 +yashiro.hyogo.jp, 0 +yasu.shiga.jp, 0 +yasuda.kochi.jp, 0 +yasugi.shimane.jp, 0 +yasuoka.nagano.jp, 0 +yatomi.aichi.jp, 0 +yatsuka.shimane.jp, 0 +yatsushiro.kumamoto.jp, 0 +yawara.ibaraki.jp, 0 +yawata.kyoto.jp, 0 +yawatahama.ehime.jp, 0 +yazu.tottori.jp, 0 +ybo.faith, 4 +ybo.party, 4 +ybo.review, 4 +ybo.science, 4 +ybo.trade, 4 +ye, 2 +yk.ca, 0 +yn.cn, 0 +yodobashi, 0 +yoga, 0 +yoichi.hokkaido.jp, 0 +yoita.niigata.jp, 0 +yoka.hyogo.jp, 0 +yokaichiba.chiba.jp, 0 +yokawa.hyogo.jp, 0 +yokkaichi.mie.jp, 0 +yokohama, 0 +yokohama.jp, 2 +yokoshibahikari.chiba.jp, 0 +yokosuka.kanagawa.jp, 0 +yokote.akita.jp, 0 +yokoze.saitama.jp, 0 +yolasite.com, 4 +yombo.me, 4 +yomitan.okinawa.jp, 0 +yonabaru.okinawa.jp, 0 +yonago.tottori.jp, 0 +yonaguni.okinawa.jp, 0 +yonezawa.yamagata.jp, 0 +yono.saitama.jp, 0 +yorii.saitama.jp, 0 +york.museum, 0 +yorkshire.museum, 0 +yoro.gifu.jp, 0 +yosemite.museum, 0 +yoshida.saitama.jp, 0 +yoshida.shizuoka.jp, 0 +yoshikawa.saitama.jp, 0 +yoshimi.saitama.jp, 0 +yoshino.nara.jp, 0 +yoshinogari.saga.jp, 0 +yoshioka.gunma.jp, 0 +yotsukaido.chiba.jp, 0 +you, 0 +youth.museum, 0 +youtube, 0 +yt, 0 +yuasa.wakayama.jp, 0 +yufu.oita.jp, 0 +yugawa.fukushima.jp, 0 +yugawara.kanagawa.jp, 0 +yuki.ibaraki.jp, 0 +yukuhashi.fukuoka.jp, 0 +yun, 0 +yura.wakayama.jp, 0 +yurihonjo.akita.jp, 0 +yusuhara.kochi.jp, 0 +yusui.kagoshima.jp, 0 +yuu.yamaguchi.jp, 0 +yuza.yamagata.jp, 0 +yuzawa.niigata.jp, 0 +z.bg, 0 +z.se, 0 +za, 0 +za.bz, 4 +za.com, 4 +za.net, 4 +za.org, 4 +zachpomor.pl, 0 +zagan.pl, 0 +zakopane.pl, 4 +zama.kanagawa.jp, 0 +zamami.okinawa.jp, 0 +zao.miyagi.jp, 0 +zaporizhzhe.ua, 0 +zaporizhzhia.ua, 0 +zappos, 0 +zapto.org, 4 +zara, 0 +zarow.pl, 0 +zentsuji.kagawa.jp, 0 +zero, 0 +zgora.pl, 0 +zgorzelec.pl, 0 +zhitomir.ua, 0 +zhytomyr.ua, 0 +zip, 0 +zippo, 0 +zj.cn, 0 +zlg.br, 0 +zm, 0 +zone, 0 +zoological.museum, 0 +zoology.museum, 0 +zp.gov.pl, 0 +zp.ua, 0 +zt.ua, 0 +zuerich, 0 +zushi.kanagawa.jp, 0 +zw, 0 +%%
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names_unittest1.gperf b/src/net/base/registry_controlled_domains/effective_tld_names_unittest1.gperf new file mode 100644 index 0000000..0246f17 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names_unittest1.gperf
@@ -0,0 +1,27 @@ +%{ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// Test file used by registry_controlled_domain_unittest. +// We edit this file manually, then run +// gperf -a -L "C++" -C -c -o -t -k '*' -NFindDomain -ZPerfect_Hash_Test1 -P -K name_offset -Q stringpool1 -D effective_tld_names_unittest1.gperf > effective_tld_names_unittest1.cc +// to generate the perfect hashmap. +%} +struct DomainRule { + int name_offset; + int type; // 1: exception, 2: wildcard, 4: private +}; +%% +jp, 0 +ac.jp, 0 +bar.jp, 2 +baz.bar.jp, 2 +pref.bar.jp, 1 +bar.baz.com, 0 +c, 2 +b.c, 1 +no, 0 +priv.no, 4 +private, 4 +xn--fiqs8s, 0 +%%
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names_unittest2.gperf b/src/net/base/registry_controlled_domains/effective_tld_names_unittest2.gperf new file mode 100644 index 0000000..03c2e2a --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names_unittest2.gperf
@@ -0,0 +1,17 @@ +%{ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// Test file used by registry_controlled_domain_unittest. +// We edit this file manually, then run +// gperf -a -L "C++" -C -c -o -t -k '*' -NFindDomain -ZPerfect_Hash_Test2 -P -K name_offset -Q stringpool2 -D -T effective_tld_names_unittest2.gperf > effective_tld_names_unittest2.cc +// to generate the perfect hashmap. +%} +struct DomainRule { + int name_offset; + int type; // 1: exception, 2: wildcard, 4: private +}; +%% +jp, 0 +bar.jp, 0 +%%
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names_unittest3.gperf b/src/net/base/registry_controlled_domains/effective_tld_names_unittest3.gperf new file mode 100644 index 0000000..aed5838 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names_unittest3.gperf
@@ -0,0 +1,13 @@ +This file is for testing 2 byte offsets +%% +0____________________________________________________________________________________________________0, 0 +1____________________________________________________________________________________________________1, 4 +2____________________________________________________________________________________________________2, 0 +3____________________________________________________________________________________________________3, 4 +4____________________________________________________________________________________________________4, 0 +5____________________________________________________________________________________________________5, 4 +6____________________________________________________________________________________________________6, 0 +7____________________________________________________________________________________________________7, 4 +8____________________________________________________________________________________________________8, 0 +9____________________________________________________________________________________________________9, 4 +%%
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names_unittest4.gperf b/src/net/base/registry_controlled_domains/effective_tld_names_unittest4.gperf new file mode 100644 index 0000000..b89e6c0 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names_unittest4.gperf
@@ -0,0 +1,523 @@ +This file is for testing 3 byte offsets +%% +a0____________________________________________________________________________________________________a0, 0 +a1____________________________________________________________________________________________________a1, 4 +a2____________________________________________________________________________________________________a2, 0 +a3____________________________________________________________________________________________________a3, 4 +a4____________________________________________________________________________________________________a4, 0 +a5____________________________________________________________________________________________________a5, 4 +a6____________________________________________________________________________________________________a6, 0 +a7____________________________________________________________________________________________________a7, 4 +a8____________________________________________________________________________________________________a8, 0 +a9____________________________________________________________________________________________________a9, 4 +b0____________________________________________________________________________________________________b0, 0 +b1____________________________________________________________________________________________________b1, 4 +b2____________________________________________________________________________________________________b2, 0 +b3____________________________________________________________________________________________________b3, 4 +b4____________________________________________________________________________________________________b4, 0 +b5____________________________________________________________________________________________________b5, 4 +b6____________________________________________________________________________________________________b6, 0 +b7____________________________________________________________________________________________________b7, 4 +b8____________________________________________________________________________________________________b8, 0 +b9____________________________________________________________________________________________________b9, 4 +c0____________________________________________________________________________________________________c0, 0 +c1____________________________________________________________________________________________________c1, 4 +c2____________________________________________________________________________________________________c2, 0 +c3____________________________________________________________________________________________________c3, 4 +c4____________________________________________________________________________________________________c4, 0 +c5____________________________________________________________________________________________________c5, 4 +c6____________________________________________________________________________________________________c6, 0 +c7____________________________________________________________________________________________________c7, 4 +c8____________________________________________________________________________________________________c8, 0 +c9____________________________________________________________________________________________________c9, 4 +d0____________________________________________________________________________________________________d0, 0 +d1____________________________________________________________________________________________________d1, 4 +d2____________________________________________________________________________________________________d2, 0 +d3____________________________________________________________________________________________________d3, 4 +d4____________________________________________________________________________________________________d4, 0 +d5____________________________________________________________________________________________________d5, 4 +d6____________________________________________________________________________________________________d6, 0 +d7____________________________________________________________________________________________________d7, 4 +d8____________________________________________________________________________________________________d8, 0 +d9____________________________________________________________________________________________________d9, 4 +e0____________________________________________________________________________________________________e0, 0 +e1____________________________________________________________________________________________________e1, 4 +e2____________________________________________________________________________________________________e2, 0 +e3____________________________________________________________________________________________________e3, 4 +e4____________________________________________________________________________________________________e4, 0 +e5____________________________________________________________________________________________________e5, 4 +e6____________________________________________________________________________________________________e6, 0 +e7____________________________________________________________________________________________________e7, 4 +e8____________________________________________________________________________________________________e8, 0 +e9____________________________________________________________________________________________________e9, 4 +f0____________________________________________________________________________________________________f0, 0 +f1____________________________________________________________________________________________________f1, 4 +f2____________________________________________________________________________________________________f2, 0 +f3____________________________________________________________________________________________________f3, 4 +f4____________________________________________________________________________________________________f4, 0 +f5____________________________________________________________________________________________________f5, 4 +f6____________________________________________________________________________________________________f6, 0 +f7____________________________________________________________________________________________________f7, 4 +f8____________________________________________________________________________________________________f8, 0 +f9____________________________________________________________________________________________________f9, 4 +g0____________________________________________________________________________________________________g0, 0 +g1____________________________________________________________________________________________________g1, 4 +g2____________________________________________________________________________________________________g2, 0 +g3____________________________________________________________________________________________________g3, 4 +g4____________________________________________________________________________________________________g4, 0 +g5____________________________________________________________________________________________________g5, 4 +g6____________________________________________________________________________________________________g6, 0 +g7____________________________________________________________________________________________________g7, 4 +g8____________________________________________________________________________________________________g8, 0 +g9____________________________________________________________________________________________________g9, 4 +h0____________________________________________________________________________________________________h0, 0 +h1____________________________________________________________________________________________________h1, 4 +h2____________________________________________________________________________________________________h2, 0 +h3____________________________________________________________________________________________________h3, 4 +h4____________________________________________________________________________________________________h4, 0 +h5____________________________________________________________________________________________________h5, 4 +h6____________________________________________________________________________________________________h6, 0 +h7____________________________________________________________________________________________________h7, 4 +h8____________________________________________________________________________________________________h8, 0 +h9____________________________________________________________________________________________________h9, 4 +i0____________________________________________________________________________________________________i0, 0 +i1____________________________________________________________________________________________________i1, 4 +i2____________________________________________________________________________________________________i2, 0 +i3____________________________________________________________________________________________________i3, 4 +i4____________________________________________________________________________________________________i4, 0 +i5____________________________________________________________________________________________________i5, 4 +i6____________________________________________________________________________________________________i6, 0 +i7____________________________________________________________________________________________________i7, 4 +i8____________________________________________________________________________________________________i8, 0 +i9____________________________________________________________________________________________________i9, 4 +j0____________________________________________________________________________________________________j0, 0 +j1____________________________________________________________________________________________________j1, 4 +j2____________________________________________________________________________________________________j2, 0 +j3____________________________________________________________________________________________________j3, 4 +j4____________________________________________________________________________________________________j4, 0 +j5____________________________________________________________________________________________________j5, 4 +j6____________________________________________________________________________________________________j6, 0 +j7____________________________________________________________________________________________________j7, 4 +j8____________________________________________________________________________________________________j8, 0 +j9____________________________________________________________________________________________________j9, 4 +k0____________________________________________________________________________________________________k0, 0 +k1____________________________________________________________________________________________________k1, 4 +k2____________________________________________________________________________________________________k2, 0 +k3____________________________________________________________________________________________________k3, 4 +k4____________________________________________________________________________________________________k4, 0 +k5____________________________________________________________________________________________________k5, 4 +k6____________________________________________________________________________________________________k6, 0 +k7____________________________________________________________________________________________________k7, 4 +k8____________________________________________________________________________________________________k8, 0 +k9____________________________________________________________________________________________________k9, 4 +l0____________________________________________________________________________________________________l0, 0 +l1____________________________________________________________________________________________________l1, 4 +l2____________________________________________________________________________________________________l2, 0 +l3____________________________________________________________________________________________________l3, 4 +l4____________________________________________________________________________________________________l4, 0 +l5____________________________________________________________________________________________________l5, 4 +l6____________________________________________________________________________________________________l6, 0 +l7____________________________________________________________________________________________________l7, 4 +l8____________________________________________________________________________________________________l8, 0 +l9____________________________________________________________________________________________________l9, 4 +m0____________________________________________________________________________________________________m0, 0 +m1____________________________________________________________________________________________________m1, 4 +m2____________________________________________________________________________________________________m2, 0 +m3____________________________________________________________________________________________________m3, 4 +m4____________________________________________________________________________________________________m4, 0 +m5____________________________________________________________________________________________________m5, 4 +m6____________________________________________________________________________________________________m6, 0 +m7____________________________________________________________________________________________________m7, 4 +m8____________________________________________________________________________________________________m8, 0 +m9____________________________________________________________________________________________________m9, 4 +n0____________________________________________________________________________________________________n0, 0 +n1____________________________________________________________________________________________________n1, 4 +n2____________________________________________________________________________________________________n2, 0 +n3____________________________________________________________________________________________________n3, 4 +n4____________________________________________________________________________________________________n4, 0 +n5____________________________________________________________________________________________________n5, 4 +n6____________________________________________________________________________________________________n6, 0 +n7____________________________________________________________________________________________________n7, 4 +n8____________________________________________________________________________________________________n8, 0 +n9____________________________________________________________________________________________________n9, 4 +o0____________________________________________________________________________________________________o0, 0 +o1____________________________________________________________________________________________________o1, 4 +o2____________________________________________________________________________________________________o2, 0 +o3____________________________________________________________________________________________________o3, 4 +o4____________________________________________________________________________________________________o4, 0 +o5____________________________________________________________________________________________________o5, 4 +o6____________________________________________________________________________________________________o6, 0 +o7____________________________________________________________________________________________________o7, 4 +o8____________________________________________________________________________________________________o8, 0 +o9____________________________________________________________________________________________________o9, 4 +p0____________________________________________________________________________________________________p0, 0 +p1____________________________________________________________________________________________________p1, 4 +p2____________________________________________________________________________________________________p2, 0 +p3____________________________________________________________________________________________________p3, 4 +p4____________________________________________________________________________________________________p4, 0 +p5____________________________________________________________________________________________________p5, 4 +p6____________________________________________________________________________________________________p6, 0 +p7____________________________________________________________________________________________________p7, 4 +p8____________________________________________________________________________________________________p8, 0 +p9____________________________________________________________________________________________________p9, 4 +q0____________________________________________________________________________________________________q0, 0 +q1____________________________________________________________________________________________________q1, 4 +q2____________________________________________________________________________________________________q2, 0 +q3____________________________________________________________________________________________________q3, 4 +q4____________________________________________________________________________________________________q4, 0 +q5____________________________________________________________________________________________________q5, 4 +q6____________________________________________________________________________________________________q6, 0 +q7____________________________________________________________________________________________________q7, 4 +q8____________________________________________________________________________________________________q8, 0 +q9____________________________________________________________________________________________________q9, 4 +r0____________________________________________________________________________________________________r0, 0 +r1____________________________________________________________________________________________________r1, 4 +r2____________________________________________________________________________________________________r2, 0 +r3____________________________________________________________________________________________________r3, 4 +r4____________________________________________________________________________________________________r4, 0 +r5____________________________________________________________________________________________________r5, 4 +r6____________________________________________________________________________________________________r6, 0 +r7____________________________________________________________________________________________________r7, 4 +r8____________________________________________________________________________________________________r8, 0 +r9____________________________________________________________________________________________________r9, 4 +s0____________________________________________________________________________________________________s0, 0 +s1____________________________________________________________________________________________________s1, 4 +s2____________________________________________________________________________________________________s2, 0 +s3____________________________________________________________________________________________________s3, 4 +s4____________________________________________________________________________________________________s4, 0 +s5____________________________________________________________________________________________________s5, 4 +s6____________________________________________________________________________________________________s6, 0 +s7____________________________________________________________________________________________________s7, 4 +s8____________________________________________________________________________________________________s8, 0 +s9____________________________________________________________________________________________________s9, 4 +t0____________________________________________________________________________________________________t0, 0 +t1____________________________________________________________________________________________________t1, 4 +t2____________________________________________________________________________________________________t2, 0 +t3____________________________________________________________________________________________________t3, 4 +t4____________________________________________________________________________________________________t4, 0 +t5____________________________________________________________________________________________________t5, 4 +t6____________________________________________________________________________________________________t6, 0 +t7____________________________________________________________________________________________________t7, 4 +t8____________________________________________________________________________________________________t8, 0 +t9____________________________________________________________________________________________________t9, 4 +u0____________________________________________________________________________________________________u0, 0 +u1____________________________________________________________________________________________________u1, 4 +u2____________________________________________________________________________________________________u2, 0 +u3____________________________________________________________________________________________________u3, 4 +u4____________________________________________________________________________________________________u4, 0 +u5____________________________________________________________________________________________________u5, 4 +u6____________________________________________________________________________________________________u6, 0 +u7____________________________________________________________________________________________________u7, 4 +u8____________________________________________________________________________________________________u8, 0 +u9____________________________________________________________________________________________________u9, 4 +v0____________________________________________________________________________________________________v0, 0 +v1____________________________________________________________________________________________________v1, 4 +v2____________________________________________________________________________________________________v2, 0 +v3____________________________________________________________________________________________________v3, 4 +v4____________________________________________________________________________________________________v4, 0 +v5____________________________________________________________________________________________________v5, 4 +v6____________________________________________________________________________________________________v6, 0 +v7____________________________________________________________________________________________________v7, 4 +v8____________________________________________________________________________________________________v8, 0 +v9____________________________________________________________________________________________________v9, 4 +w0____________________________________________________________________________________________________w0, 0 +w1____________________________________________________________________________________________________w1, 4 +w2____________________________________________________________________________________________________w2, 0 +w3____________________________________________________________________________________________________w3, 4 +w4____________________________________________________________________________________________________w4, 0 +w5____________________________________________________________________________________________________w5, 4 +w6____________________________________________________________________________________________________w6, 0 +w7____________________________________________________________________________________________________w7, 4 +w8____________________________________________________________________________________________________w8, 0 +w9____________________________________________________________________________________________________w9, 4 +x0____________________________________________________________________________________________________x0, 0 +x1____________________________________________________________________________________________________x1, 4 +x2____________________________________________________________________________________________________x2, 0 +x3____________________________________________________________________________________________________x3, 4 +x4____________________________________________________________________________________________________x4, 0 +x5____________________________________________________________________________________________________x5, 4 +x6____________________________________________________________________________________________________x6, 0 +x7____________________________________________________________________________________________________x7, 4 +x8____________________________________________________________________________________________________x8, 0 +x9____________________________________________________________________________________________________x9, 4 +y0____________________________________________________________________________________________________y0, 0 +y1____________________________________________________________________________________________________y1, 4 +y2____________________________________________________________________________________________________y2, 0 +y3____________________________________________________________________________________________________y3, 4 +y4____________________________________________________________________________________________________y4, 0 +y5____________________________________________________________________________________________________y5, 4 +y6____________________________________________________________________________________________________y6, 0 +y7____________________________________________________________________________________________________y7, 4 +y8____________________________________________________________________________________________________y8, 0 +y9____________________________________________________________________________________________________y9, 4 +z0____________________________________________________________________________________________________z0, 0 +z1____________________________________________________________________________________________________z1, 4 +z2____________________________________________________________________________________________________z2, 0 +z3____________________________________________________________________________________________________z3, 4 +z4____________________________________________________________________________________________________z4, 0 +z5____________________________________________________________________________________________________z5, 4 +z6____________________________________________________________________________________________________z6, 0 +z7____________________________________________________________________________________________________z7, 4 +z8____________________________________________________________________________________________________z8, 0 +z9____________________________________________________________________________________________________z9, 4 +A0____________________________________________________________________________________________________A0, 0 +A1____________________________________________________________________________________________________A1, 4 +A2____________________________________________________________________________________________________A2, 0 +A3____________________________________________________________________________________________________A3, 4 +A4____________________________________________________________________________________________________A4, 0 +A5____________________________________________________________________________________________________A5, 4 +A6____________________________________________________________________________________________________A6, 0 +A7____________________________________________________________________________________________________A7, 4 +A8____________________________________________________________________________________________________A8, 0 +A9____________________________________________________________________________________________________A9, 4 +B0____________________________________________________________________________________________________B0, 0 +B1____________________________________________________________________________________________________B1, 4 +B2____________________________________________________________________________________________________B2, 0 +B3____________________________________________________________________________________________________B3, 4 +B4____________________________________________________________________________________________________B4, 0 +B5____________________________________________________________________________________________________B5, 4 +B6____________________________________________________________________________________________________B6, 0 +B7____________________________________________________________________________________________________B7, 4 +B8____________________________________________________________________________________________________B8, 0 +B9____________________________________________________________________________________________________B9, 4 +C0____________________________________________________________________________________________________C0, 0 +C1____________________________________________________________________________________________________C1, 4 +C2____________________________________________________________________________________________________C2, 0 +C3____________________________________________________________________________________________________C3, 4 +C4____________________________________________________________________________________________________C4, 0 +C5____________________________________________________________________________________________________C5, 4 +C6____________________________________________________________________________________________________C6, 0 +C7____________________________________________________________________________________________________C7, 4 +C8____________________________________________________________________________________________________C8, 0 +C9____________________________________________________________________________________________________C9, 4 +D0____________________________________________________________________________________________________D0, 0 +D1____________________________________________________________________________________________________D1, 4 +D2____________________________________________________________________________________________________D2, 0 +D3____________________________________________________________________________________________________D3, 4 +D4____________________________________________________________________________________________________D4, 0 +D5____________________________________________________________________________________________________D5, 4 +D6____________________________________________________________________________________________________D6, 0 +D7____________________________________________________________________________________________________D7, 4 +D8____________________________________________________________________________________________________D8, 0 +D9____________________________________________________________________________________________________D9, 4 +E0____________________________________________________________________________________________________E0, 0 +E1____________________________________________________________________________________________________E1, 4 +E2____________________________________________________________________________________________________E2, 0 +E3____________________________________________________________________________________________________E3, 4 +E4____________________________________________________________________________________________________E4, 0 +E5____________________________________________________________________________________________________E5, 4 +E6____________________________________________________________________________________________________E6, 0 +E7____________________________________________________________________________________________________E7, 4 +E8____________________________________________________________________________________________________E8, 0 +E9____________________________________________________________________________________________________E9, 4 +F0____________________________________________________________________________________________________F0, 0 +F1____________________________________________________________________________________________________F1, 4 +F2____________________________________________________________________________________________________F2, 0 +F3____________________________________________________________________________________________________F3, 4 +F4____________________________________________________________________________________________________F4, 0 +F5____________________________________________________________________________________________________F5, 4 +F6____________________________________________________________________________________________________F6, 0 +F7____________________________________________________________________________________________________F7, 4 +F8____________________________________________________________________________________________________F8, 0 +F9____________________________________________________________________________________________________F9, 4 +G0____________________________________________________________________________________________________G0, 0 +G1____________________________________________________________________________________________________G1, 4 +G2____________________________________________________________________________________________________G2, 0 +G3____________________________________________________________________________________________________G3, 4 +G4____________________________________________________________________________________________________G4, 0 +G5____________________________________________________________________________________________________G5, 4 +G6____________________________________________________________________________________________________G6, 0 +G7____________________________________________________________________________________________________G7, 4 +G8____________________________________________________________________________________________________G8, 0 +G9____________________________________________________________________________________________________G9, 4 +H0____________________________________________________________________________________________________H0, 0 +H1____________________________________________________________________________________________________H1, 4 +H2____________________________________________________________________________________________________H2, 0 +H3____________________________________________________________________________________________________H3, 4 +H4____________________________________________________________________________________________________H4, 0 +H5____________________________________________________________________________________________________H5, 4 +H6____________________________________________________________________________________________________H6, 0 +H7____________________________________________________________________________________________________H7, 4 +H8____________________________________________________________________________________________________H8, 0 +H9____________________________________________________________________________________________________H9, 4 +I0____________________________________________________________________________________________________I0, 0 +I1____________________________________________________________________________________________________I1, 4 +I2____________________________________________________________________________________________________I2, 0 +I3____________________________________________________________________________________________________I3, 4 +I4____________________________________________________________________________________________________I4, 0 +I5____________________________________________________________________________________________________I5, 4 +I6____________________________________________________________________________________________________I6, 0 +I7____________________________________________________________________________________________________I7, 4 +I8____________________________________________________________________________________________________I8, 0 +I9____________________________________________________________________________________________________I9, 4 +J0____________________________________________________________________________________________________J0, 0 +J1____________________________________________________________________________________________________J1, 4 +J2____________________________________________________________________________________________________J2, 0 +J3____________________________________________________________________________________________________J3, 4 +J4____________________________________________________________________________________________________J4, 0 +J5____________________________________________________________________________________________________J5, 4 +J6____________________________________________________________________________________________________J6, 0 +J7____________________________________________________________________________________________________J7, 4 +J8____________________________________________________________________________________________________J8, 0 +J9____________________________________________________________________________________________________J9, 4 +K0____________________________________________________________________________________________________K0, 0 +K1____________________________________________________________________________________________________K1, 4 +K2____________________________________________________________________________________________________K2, 0 +K3____________________________________________________________________________________________________K3, 4 +K4____________________________________________________________________________________________________K4, 0 +K5____________________________________________________________________________________________________K5, 4 +K6____________________________________________________________________________________________________K6, 0 +K7____________________________________________________________________________________________________K7, 4 +K8____________________________________________________________________________________________________K8, 0 +K9____________________________________________________________________________________________________K9, 4 +L0____________________________________________________________________________________________________L0, 0 +L1____________________________________________________________________________________________________L1, 4 +L2____________________________________________________________________________________________________L2, 0 +L3____________________________________________________________________________________________________L3, 4 +L4____________________________________________________________________________________________________L4, 0 +L5____________________________________________________________________________________________________L5, 4 +L6____________________________________________________________________________________________________L6, 0 +L7____________________________________________________________________________________________________L7, 4 +L8____________________________________________________________________________________________________L8, 0 +L9____________________________________________________________________________________________________L9, 4 +M0____________________________________________________________________________________________________M0, 0 +M1____________________________________________________________________________________________________M1, 4 +M2____________________________________________________________________________________________________M2, 0 +M3____________________________________________________________________________________________________M3, 4 +M4____________________________________________________________________________________________________M4, 0 +M5____________________________________________________________________________________________________M5, 4 +M6____________________________________________________________________________________________________M6, 0 +M7____________________________________________________________________________________________________M7, 4 +M8____________________________________________________________________________________________________M8, 0 +M9____________________________________________________________________________________________________M9, 4 +N0____________________________________________________________________________________________________N0, 0 +N1____________________________________________________________________________________________________N1, 4 +N2____________________________________________________________________________________________________N2, 0 +N3____________________________________________________________________________________________________N3, 4 +N4____________________________________________________________________________________________________N4, 0 +N5____________________________________________________________________________________________________N5, 4 +N6____________________________________________________________________________________________________N6, 0 +N7____________________________________________________________________________________________________N7, 4 +N8____________________________________________________________________________________________________N8, 0 +N9____________________________________________________________________________________________________N9, 4 +O0____________________________________________________________________________________________________O0, 0 +O1____________________________________________________________________________________________________O1, 4 +O2____________________________________________________________________________________________________O2, 0 +O3____________________________________________________________________________________________________O3, 4 +O4____________________________________________________________________________________________________O4, 0 +O5____________________________________________________________________________________________________O5, 4 +O6____________________________________________________________________________________________________O6, 0 +O7____________________________________________________________________________________________________O7, 4 +O8____________________________________________________________________________________________________O8, 0 +O9____________________________________________________________________________________________________O9, 4 +P0____________________________________________________________________________________________________P0, 0 +P1____________________________________________________________________________________________________P1, 4 +P2____________________________________________________________________________________________________P2, 0 +P3____________________________________________________________________________________________________P3, 4 +P4____________________________________________________________________________________________________P4, 0 +P5____________________________________________________________________________________________________P5, 4 +P6____________________________________________________________________________________________________P6, 0 +P7____________________________________________________________________________________________________P7, 4 +P8____________________________________________________________________________________________________P8, 0 +P9____________________________________________________________________________________________________P9, 4 +Q0____________________________________________________________________________________________________Q0, 0 +Q1____________________________________________________________________________________________________Q1, 4 +Q2____________________________________________________________________________________________________Q2, 0 +Q3____________________________________________________________________________________________________Q3, 4 +Q4____________________________________________________________________________________________________Q4, 0 +Q5____________________________________________________________________________________________________Q5, 4 +Q6____________________________________________________________________________________________________Q6, 0 +Q7____________________________________________________________________________________________________Q7, 4 +Q8____________________________________________________________________________________________________Q8, 0 +Q9____________________________________________________________________________________________________Q9, 4 +R0____________________________________________________________________________________________________R0, 0 +R1____________________________________________________________________________________________________R1, 4 +R2____________________________________________________________________________________________________R2, 0 +R3____________________________________________________________________________________________________R3, 4 +R4____________________________________________________________________________________________________R4, 0 +R5____________________________________________________________________________________________________R5, 4 +R6____________________________________________________________________________________________________R6, 0 +R7____________________________________________________________________________________________________R7, 4 +R8____________________________________________________________________________________________________R8, 0 +R9____________________________________________________________________________________________________R9, 4 +S0____________________________________________________________________________________________________S0, 0 +S1____________________________________________________________________________________________________S1, 4 +S2____________________________________________________________________________________________________S2, 0 +S3____________________________________________________________________________________________________S3, 4 +S4____________________________________________________________________________________________________S4, 0 +S5____________________________________________________________________________________________________S5, 4 +S6____________________________________________________________________________________________________S6, 0 +S7____________________________________________________________________________________________________S7, 4 +S8____________________________________________________________________________________________________S8, 0 +S9____________________________________________________________________________________________________S9, 4 +T0____________________________________________________________________________________________________T0, 0 +T1____________________________________________________________________________________________________T1, 4 +T2____________________________________________________________________________________________________T2, 0 +T3____________________________________________________________________________________________________T3, 4 +T4____________________________________________________________________________________________________T4, 0 +T5____________________________________________________________________________________________________T5, 4 +T6____________________________________________________________________________________________________T6, 0 +T7____________________________________________________________________________________________________T7, 4 +T8____________________________________________________________________________________________________T8, 0 +T9____________________________________________________________________________________________________T9, 4 +U0____________________________________________________________________________________________________U0, 0 +U1____________________________________________________________________________________________________U1, 4 +U2____________________________________________________________________________________________________U2, 0 +U3____________________________________________________________________________________________________U3, 4 +U4____________________________________________________________________________________________________U4, 0 +U5____________________________________________________________________________________________________U5, 4 +U6____________________________________________________________________________________________________U6, 0 +U7____________________________________________________________________________________________________U7, 4 +U8____________________________________________________________________________________________________U8, 0 +U9____________________________________________________________________________________________________U9, 4 +V0____________________________________________________________________________________________________V0, 0 +V1____________________________________________________________________________________________________V1, 4 +V2____________________________________________________________________________________________________V2, 0 +V3____________________________________________________________________________________________________V3, 4 +V4____________________________________________________________________________________________________V4, 0 +V5____________________________________________________________________________________________________V5, 4 +V6____________________________________________________________________________________________________V6, 0 +V7____________________________________________________________________________________________________V7, 4 +V8____________________________________________________________________________________________________V8, 0 +V9____________________________________________________________________________________________________V9, 4 +W0____________________________________________________________________________________________________W0, 0 +W1____________________________________________________________________________________________________W1, 4 +W2____________________________________________________________________________________________________W2, 0 +W3____________________________________________________________________________________________________W3, 4 +W4____________________________________________________________________________________________________W4, 0 +W5____________________________________________________________________________________________________W5, 4 +W6____________________________________________________________________________________________________W6, 0 +W7____________________________________________________________________________________________________W7, 4 +W8____________________________________________________________________________________________________W8, 0 +W9____________________________________________________________________________________________________W9, 4 +X0____________________________________________________________________________________________________X0, 0 +X1____________________________________________________________________________________________________X1, 4 +X2____________________________________________________________________________________________________X2, 0 +X3____________________________________________________________________________________________________X3, 4 +X4____________________________________________________________________________________________________X4, 0 +X5____________________________________________________________________________________________________X5, 4 +X6____________________________________________________________________________________________________X6, 0 +X7____________________________________________________________________________________________________X7, 4 +X8____________________________________________________________________________________________________X8, 0 +X9____________________________________________________________________________________________________X9, 4 +Y0____________________________________________________________________________________________________Y0, 0 +Y1____________________________________________________________________________________________________Y1, 4 +Y2____________________________________________________________________________________________________Y2, 0 +Y3____________________________________________________________________________________________________Y3, 4 +Y4____________________________________________________________________________________________________Y4, 0 +Y5____________________________________________________________________________________________________Y5, 4 +Y6____________________________________________________________________________________________________Y6, 0 +Y7____________________________________________________________________________________________________Y7, 4 +Y8____________________________________________________________________________________________________Y8, 0 +Y9____________________________________________________________________________________________________Y9, 4 +Z0____________________________________________________________________________________________________Z0, 0 +Z1____________________________________________________________________________________________________Z1, 4 +Z2____________________________________________________________________________________________________Z2, 0 +Z3____________________________________________________________________________________________________Z3, 4 +Z4____________________________________________________________________________________________________Z4, 0 +Z5____________________________________________________________________________________________________Z5, 4 +Z6____________________________________________________________________________________________________Z6, 0 +Z7____________________________________________________________________________________________________Z7, 4 +Z8____________________________________________________________________________________________________Z8, 0 +Z9____________________________________________________________________________________________________Z9, 4 +%%
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names_unittest5.gperf b/src/net/base/registry_controlled_domains/effective_tld_names_unittest5.gperf new file mode 100644 index 0000000..ea7e604 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names_unittest5.gperf
@@ -0,0 +1,9 @@ +This file is for testing joined prefixes +%% +ai, 0 +bj, 4 +aak, 0 +bbl, 4 +aaaam, 0 +bbbbn, 0 +%%
diff --git a/src/net/base/registry_controlled_domains/effective_tld_names_unittest6.gperf b/src/net/base/registry_controlled_domains/effective_tld_names_unittest6.gperf new file mode 100644 index 0000000..667d798 --- /dev/null +++ b/src/net/base/registry_controlled_domains/effective_tld_names_unittest6.gperf
@@ -0,0 +1,9 @@ +This file is for testing joined suffixes +%% +ia, 0 +jb, 4 +kaa, 0 +lbb, 4 +maaaa, 0 +nbbbb, 0 +%%
diff --git a/src/net/base/registry_controlled_domains/get_domain_and_registry_fuzzer.cc b/src/net/base/registry_controlled_domains/get_domain_and_registry_fuzzer.cc new file mode 100644 index 0000000..e71c7dc --- /dev/null +++ b/src/net/base/registry_controlled_domains/get_domain_and_registry_fuzzer.cc
@@ -0,0 +1,25 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <stddef.h> +#include <stdint.h> + +#include "base/strings/string_piece.h" +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" +#include "url/gurl.h" + +// Entry point for LibFuzzer. +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + // Call GetDomainAndRegistry() twice - once with each filter type to ensure + // both code paths are exercised. + net::registry_controlled_domains::GetDomainAndRegistry( + base::StringPiece(reinterpret_cast<const char*>(data), size), + net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); + + net::registry_controlled_domains::GetDomainAndRegistry( + base::StringPiece(reinterpret_cast<const char*>(data), size), + net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); + + return 0; +}
diff --git a/src/net/base/registry_controlled_domains/registry_controlled_domain.cc b/src/net/base/registry_controlled_domains/registry_controlled_domain.cc new file mode 100644 index 0000000..3777582 --- /dev/null +++ b/src/net/base/registry_controlled_domains/registry_controlled_domain.cc
@@ -0,0 +1,450 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// NB: Modelled after Mozilla's code (originally written by Pamela Greene, +// later modified by others), but almost entirely rewritten for Chrome. +// (netwerk/dns/src/nsEffectiveTLDService.cpp) +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Effective-TLD Service + * + * The Initial Developer of the Original Code is + * Google Inc. + * Portions created by the Initial Developer are Copyright (C) 2006 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Pamela Greene <pamg.bugs@gmail.com> (original author) + * Daniel Witte <dwitte@stanford.edu> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" + +#include "base/logging.h" +#include "base/strings/string_util.h" +#include "base/strings/utf_string_conversions.h" +#include "net/base/lookup_string_in_fixed_set.h" +#include "net/base/net_module.h" +#include "net/base/url_util.h" +#include "url/gurl.h" +#include "url/origin.h" +#include "url/third_party/mozilla/url_parse.h" +#include "url/url_util.h" + +namespace net { +namespace registry_controlled_domains { + +namespace { +#include "net/base/registry_controlled_domains/effective_tld_names-inc.cc" + +// See make_dafsa.py for documentation of the generated dafsa byte array. + +const unsigned char* g_graph = kDafsa; +size_t g_graph_length = sizeof(kDafsa); + +struct MappedHostComponent { + size_t original_begin; + size_t original_end; + + size_t canonical_begin; + size_t canonical_end; +}; + +size_t GetRegistryLengthImpl(base::StringPiece host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { + if (host.empty()) + return std::string::npos; + + // Skip leading dots. + const size_t host_check_begin = host.find_first_not_of('.'); + if (host_check_begin == std::string::npos) + return 0; // Host is only dots. + + // A single trailing dot isn't relevant in this determination, but does need + // to be included in the final returned length. + size_t host_check_len = host.length(); + if (host[host_check_len - 1] == '.') { + --host_check_len; + DCHECK(host_check_len > 0); // If this weren't true, the host would be ".", + // and we'd have already returned above. + if (host[host_check_len - 1] == '.') + return 0; // Multiple trailing dots. + } + + // Walk up the domain tree, most specific to least specific, + // looking for matches at each level. + size_t prev_start = std::string::npos; + size_t curr_start = host_check_begin; + size_t next_dot = host.find('.', curr_start); + if (next_dot >= host_check_len) // Catches std::string::npos as well. + return 0; // This can't have a registry + domain. + while (1) { + const char* domain_str = host.data() + curr_start; + size_t domain_length = host_check_len - curr_start; + int type = LookupStringInFixedSet(g_graph, g_graph_length, domain_str, + domain_length); + bool do_check = type != kDafsaNotFound && + (!(type & kDafsaPrivateRule) || + private_filter == INCLUDE_PRIVATE_REGISTRIES); + + // If the apparent match is a private registry and we're not including + // those, it can't be an actual match. + if (do_check) { + // Exception rules override wildcard rules when the domain is an exact + // match, but wildcards take precedence when there's a subdomain. + if (type & kDafsaWildcardRule && (prev_start != std::string::npos)) { + // If prev_start == host_check_begin, then the host is the registry + // itself, so return 0. + return (prev_start == host_check_begin) ? 0 + : (host.length() - prev_start); + } + + if (type & kDafsaExceptionRule) { + if (next_dot == std::string::npos) { + // If we get here, we had an exception rule with no dots (e.g. + // "!foo"). This would only be valid if we had a corresponding + // wildcard rule, which would have to be "*". But we explicitly + // disallow that case, so this kind of rule is invalid. + NOTREACHED() << "Invalid exception rule"; + return 0; + } + return host.length() - next_dot - 1; + } + + // If curr_start == host_check_begin, then the host is the registry + // itself, so return 0. + return (curr_start == host_check_begin) ? 0 + : (host.length() - curr_start); + } + + if (next_dot >= host_check_len) // Catches std::string::npos as well. + break; + + prev_start = curr_start; + curr_start = next_dot + 1; + next_dot = host.find('.', curr_start); + } + + // No rule found in the registry. curr_start now points to the first + // character of the last subcomponent of the host, so if we allow unknown + // registries, return the length of this subcomponent. + return unknown_filter == INCLUDE_UNKNOWN_REGISTRIES ? + (host.length() - curr_start) : 0; +} + +base::StringPiece GetDomainAndRegistryImpl( + base::StringPiece host, + PrivateRegistryFilter private_filter) { + DCHECK(!host.empty()); + + // Find the length of the registry for this host. + const size_t registry_length = + GetRegistryLengthImpl(host, INCLUDE_UNKNOWN_REGISTRIES, private_filter); + if ((registry_length == std::string::npos) || (registry_length == 0)) + return base::StringPiece(); // No registry. + // The "2" in this next line is 1 for the dot, plus a 1-char minimum preceding + // subcomponent length. + DCHECK(host.length() >= 2); + if (registry_length > (host.length() - 2)) { + NOTREACHED() << + "Host does not have at least one subcomponent before registry!"; + return base::StringPiece(); + } + + // Move past the dot preceding the registry, and search for the next previous + // dot. Return the host from after that dot, or the whole host when there is + // no dot. + const size_t dot = host.rfind('.', host.length() - registry_length - 2); + if (dot == std::string::npos) + return host; + return host.substr(dot + 1); +} + +// Same as GetDomainAndRegistry, but returns the domain and registry as a +// StringPiece that references the underlying string of the passed-in |gurl|. +// TODO(pkalinnikov): Eliminate this helper by exposing StringPiece as the +// interface type for all the APIs. +base::StringPiece GetDomainAndRegistryAsStringPiece( + base::StringPiece host, + PrivateRegistryFilter filter) { + if (host.empty() || url::HostIsIPAddress(host)) + return base::StringPiece(); + return GetDomainAndRegistryImpl(host, filter); +} + +// These two functions append the given string as-is to the given output, +// converting to UTF-8 if necessary. +void AppendInvalidString(base::StringPiece str, url::CanonOutput* output) { + output->Append(str.data(), static_cast<int>(str.length())); +} +void AppendInvalidString(base::StringPiece16 str, url::CanonOutput* output) { + std::string utf8 = base::UTF16ToUTF8(str); + output->Append(utf8.data(), static_cast<int>(utf8.length())); +} + +// Backend for PermissiveGetHostRegistryLength that handles both UTF-8 and +// UTF-16 input. The template type is the std::string type to use (it makes the +// typedefs easier than using the character type). +template <typename Str> +size_t DoPermissiveGetHostRegistryLength(base::BasicStringPiece<Str> host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { + std::string canonical_host; // Do not modify outside of canon_output. + canonical_host.reserve(host.length()); + url::StdStringCanonOutput canon_output(&canonical_host); + + std::vector<MappedHostComponent> components; + + for (size_t current = 0; current < host.length(); current++) { + size_t begin = current; + + // Advance to next "." or end. + current = host.find('.', begin); + if (current == std::string::npos) + current = host.length(); + + MappedHostComponent mapping; + mapping.original_begin = begin; + mapping.original_end = current; + mapping.canonical_begin = static_cast<size_t>(canon_output.length()); + + // Try to append the canonicalized version of this component. + int current_len = static_cast<int>(current - begin); + if (!url::CanonicalizeHostSubstring( + host.data(), url::Component(static_cast<int>(begin), current_len), + &canon_output)) { + // Failed to canonicalize this component; append as-is. + AppendInvalidString(host.substr(begin, current_len), &canon_output); + } + + mapping.canonical_end = static_cast<size_t>(canon_output.length()); + components.push_back(mapping); + + if (current < host.length()) + canon_output.push_back('.'); + } + canon_output.Complete(); + + size_t canonical_rcd_len = + GetRegistryLengthImpl(canonical_host, unknown_filter, private_filter); + if (canonical_rcd_len == 0 || canonical_rcd_len == std::string::npos) + return canonical_rcd_len; // Error or no registry controlled domain. + + // Find which host component the result started in. + size_t canonical_rcd_begin = canonical_host.length() - canonical_rcd_len; + for (const auto& mapping : components) { + // In the common case, GetRegistryLengthImpl will identify the beginning + // of a component and we can just return where that component was in the + // original string. + if (canonical_rcd_begin == mapping.canonical_begin) + return host.length() - mapping.original_begin; + + if (canonical_rcd_begin >= mapping.canonical_end) + continue; + + // The registry controlled domain begin was identified as being in the + // middle of this dot-separated domain component in the non-canonical + // input. This indicates some form of escaped dot, or a non-ASCII + // character that was canonicalized to a dot. + // + // Brute-force search from the end by repeatedly canonicalizing longer + // substrings until we get a match for the canonicalized version. This + // can't be done with binary search because canonicalization might increase + // or decrease the length of the produced string depending on where it's + // split. This depends on the canonicalization process not changing the + // order of the characters. Punycode can change the order of characters, + // but it doesn't work across dots so this is safe. + + // Expected canonical registry controlled domain. + base::StringPiece canonical_rcd(&canonical_host[canonical_rcd_begin], + canonical_rcd_len); + + for (int current_try = static_cast<int>(mapping.original_end) - 1; + current_try >= static_cast<int>(mapping.original_begin); + current_try--) { + std::string try_string; + url::StdStringCanonOutput try_output(&try_string); + + if (!url::CanonicalizeHostSubstring( + host.data(), + url::Component( + current_try, + static_cast<int>(mapping.original_end) - current_try), + &try_output)) + continue; // Invalid substring, skip. + + try_output.Complete(); + if (try_string == canonical_rcd) + return host.length() - current_try; + } + } + + NOTREACHED(); + return canonical_rcd_len; +} + +bool SameDomainOrHost(base::StringPiece host1, + base::StringPiece host2, + PrivateRegistryFilter filter) { + // Quickly reject cases where either host is empty. + if (host1.empty() || host2.empty()) + return false; + + // Check for exact host matches, which is faster than looking up the domain + // and registry. + if (host1 == host2) + return true; + + // Check for a domain and registry match. + const base::StringPiece& domain1 = + GetDomainAndRegistryAsStringPiece(host1, filter); + return !domain1.empty() && + (domain1 == GetDomainAndRegistryAsStringPiece(host2, filter)); +} + +} // namespace + +std::string GetDomainAndRegistry(const GURL& gurl, + PrivateRegistryFilter filter) { + return GetDomainAndRegistryAsStringPiece(gurl.host_piece(), filter) + .as_string(); +} + +std::string GetDomainAndRegistry(base::StringPiece host, + PrivateRegistryFilter filter) { + url::CanonHostInfo host_info; + const std::string canon_host(CanonicalizeHost(host, &host_info)); + if (canon_host.empty() || host_info.IsIPAddress()) + return std::string(); + return GetDomainAndRegistryImpl(canon_host, filter).as_string(); +} + +bool SameDomainOrHost( + const GURL& gurl1, + const GURL& gurl2, + PrivateRegistryFilter filter) { + return SameDomainOrHost(gurl1.host_piece(), gurl2.host_piece(), filter); +} + +bool SameDomainOrHost(const url::Origin& origin1, + const url::Origin& origin2, + PrivateRegistryFilter filter) { + return SameDomainOrHost(origin1.host(), origin2.host(), filter); +} + +bool SameDomainOrHost(const url::Origin& origin1, + const base::Optional<url::Origin>& origin2, + PrivateRegistryFilter filter) { + return origin2.has_value() && + SameDomainOrHost(origin1, origin2.value(), filter); +} + +bool SameDomainOrHost(const GURL& gurl, + const url::Origin& origin, + PrivateRegistryFilter filter) { + return SameDomainOrHost(gurl.host_piece(), origin.host(), filter); +} + +size_t GetRegistryLength( + const GURL& gurl, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { + return GetRegistryLengthImpl(gurl.host_piece(), unknown_filter, + private_filter); +} + +bool HostHasRegistryControlledDomain(base::StringPiece host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { + url::CanonHostInfo host_info; + const std::string canon_host(CanonicalizeHost(host, &host_info)); + + size_t rcd_length; + switch (host_info.family) { + case url::CanonHostInfo::IPV4: + case url::CanonHostInfo::IPV6: + // IP addresses don't have R.C.D.'s. + return false; + case url::CanonHostInfo::BROKEN: + // Host is not canonicalizable. Fall back to the slower "permissive" + // version. + rcd_length = + PermissiveGetHostRegistryLength(host, unknown_filter, private_filter); + break; + case url::CanonHostInfo::NEUTRAL: + rcd_length = + GetRegistryLengthImpl(canon_host, unknown_filter, private_filter); + break; + default: + NOTREACHED(); + return false; + } + return (rcd_length != 0) && (rcd_length != std::string::npos); +} + +size_t GetCanonicalHostRegistryLength(base::StringPiece canon_host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { +#ifndef NDEBUG + // Ensure passed-in host name is canonical. + url::CanonHostInfo host_info; + DCHECK_EQ(net::CanonicalizeHost(canon_host, &host_info), canon_host); +#endif + + return GetRegistryLengthImpl(canon_host, unknown_filter, private_filter); +} + +size_t PermissiveGetHostRegistryLength(base::StringPiece host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { + return DoPermissiveGetHostRegistryLength<std::string>(host, unknown_filter, + private_filter); +} + +size_t PermissiveGetHostRegistryLength(base::StringPiece16 host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter) { + return DoPermissiveGetHostRegistryLength<base::string16>(host, unknown_filter, + private_filter); +} + +void SetFindDomainGraph() { + g_graph = kDafsa; + g_graph_length = sizeof(kDafsa); +} + +void SetFindDomainGraph(const unsigned char* domains, size_t length) { + CHECK(domains); + CHECK_NE(length, 0u); + g_graph = domains; + g_graph_length = length; +} + +} // namespace registry_controlled_domains +} // namespace net
diff --git a/src/net/base/registry_controlled_domains/registry_controlled_domain.h b/src/net/base/registry_controlled_domains/registry_controlled_domain.h new file mode 100644 index 0000000..9f3101a --- /dev/null +++ b/src/net/base/registry_controlled_domains/registry_controlled_domain.h
@@ -0,0 +1,303 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// NB: Modelled after Mozilla's code (originally written by Pamela Greene, +// later modified by others), but almost entirely rewritten for Chrome. +// (netwerk/dns/src/nsEffectiveTLDService.h) +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla TLD Service + * + * The Initial Developer of the Original Code is + * Google Inc. + * Portions created by the Initial Developer are Copyright (C) 2006 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Pamela Greene <pamg.bugs@gmail.com> (original author) + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + (Documentation based on the Mozilla documentation currently at + http://wiki.mozilla.org/Gecko:Effective_TLD_Service, written by the same + author.) + + The RegistryControlledDomainService examines the hostname of a GURL passed to + it and determines the longest portion that is controlled by a registrar. + Although technically the top-level domain (TLD) for a hostname is the last + dot-portion of the name (such as .com or .org), many domains (such as co.uk) + function as though they were TLDs, allocating any number of more specific, + essentially unrelated names beneath them. For example, .uk is a TLD, but + nobody is allowed to register a domain directly under .uk; the "effective" + TLDs are ac.uk, co.uk, and so on. We wouldn't want to allow any site in + *.co.uk to set a cookie for the entire co.uk domain, so it's important to be + able to identify which higher-level domains function as effective TLDs and + which can be registered. + + The service obtains its information about effective TLDs from a text resource + that must be in the following format: + + * It should use plain ASCII. + * It should contain one domain rule per line, terminated with \n, with nothing + else on the line. (The last rule in the file may omit the ending \n.) + * Rules should have been normalized using the same canonicalization that GURL + applies. For ASCII, that means they're not case-sensitive, among other + things; other normalizations are applied for other characters. + * Each rule should list the entire TLD-like domain name, with any subdomain + portions separated by dots (.) as usual. + * Rules should neither begin nor end with a dot. + * If a hostname matches more than one rule, the most specific rule (that is, + the one with more dot-levels) will be used. + * Other than in the case of wildcards (see below), rules do not implicitly + include their subcomponents. For example, "bar.baz.uk" does not imply + "baz.uk", and if "bar.baz.uk" is the only rule in the list, "foo.bar.baz.uk" + will match, but "baz.uk" and "qux.baz.uk" won't. + * The wildcard character '*' will match any valid sequence of characters. + * Wildcards may only appear as the entire most specific level of a rule. That + is, a wildcard must come at the beginning of a line and must be followed by + a dot. (You may not use a wildcard as the entire rule.) + * A wildcard rule implies a rule for the entire non-wildcard portion. For + example, the rule "*.foo.bar" implies the rule "foo.bar" (but not the rule + "bar"). This is typically important in the case of exceptions (see below). + * The exception character '!' before a rule marks an exception to a wildcard + rule. If your rules are "*.tokyo.jp" and "!pref.tokyo.jp", then + "a.b.tokyo.jp" has an effective TLD of "b.tokyo.jp", but "a.pref.tokyo.jp" + has an effective TLD of "tokyo.jp" (the exception prevents the wildcard + match, and we thus fall through to matching on the implied "tokyo.jp" rule + from the wildcard). + * If you use an exception rule without a corresponding wildcard rule, the + behavior is undefined. + + Firefox has a very similar service, and it's their data file we use to + construct our resource. However, the data expected by this implementation + differs from the Mozilla file in several important ways: + (1) We require that all single-level TLDs (com, edu, etc.) be explicitly + listed. As of this writing, Mozilla's file includes the single-level + TLDs too, but that might change. + (2) Our data is expected be in pure ASCII: all UTF-8 or otherwise encoded + items must already have been normalized. + (3) We do not allow comments, rule notes, blank lines, or line endings other + than LF. + Rules are also expected to be syntactically valid. + + The utility application tld_cleanup.exe converts a Mozilla-style file into a + Chrome one, making sure that single-level TLDs are explicitly listed, using + GURL to normalize rules, and validating the rules. +*/ + +#ifndef NET_BASE_REGISTRY_CONTROLLED_DOMAINS_REGISTRY_CONTROLLED_DOMAIN_H_ +#define NET_BASE_REGISTRY_CONTROLLED_DOMAINS_REGISTRY_CONTROLLED_DOMAIN_H_ + +#include <stddef.h> + +#include <string> + +#include "base/optional.h" +#include "base/strings/string_piece.h" +#include "net/base/net_export.h" + +class GURL; + +namespace url { +class Origin; +}; + +struct DomainRule; + +namespace net { +namespace registry_controlled_domains { + +// This enum is a required parameter to all public methods declared for this +// service. The Public Suffix List (http://publicsuffix.org/) this service +// uses as a data source splits all effective-TLDs into two groups. The main +// group describes registries that are acknowledged by ICANN. The second group +// contains a list of private additions for domains that enable external users +// to create subdomains, such as appspot.com. +// The RegistryFilter enum lets you choose whether you want to include the +// private additions in your lookup. +// See this for example use cases: +// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases +enum PrivateRegistryFilter { + EXCLUDE_PRIVATE_REGISTRIES = 0, + INCLUDE_PRIVATE_REGISTRIES +}; + +// This enum is a required parameter to the GetRegistryLength functions +// declared for this service. Whenever there is no matching rule in the +// effective-TLD data (or in the default data, if the resource failed to +// load), the result will be dependent on which enum value was passed in. +// If EXCLUDE_UNKNOWN_REGISTRIES was passed in, the resulting registry length +// will be 0. If INCLUDE_UNKNOWN_REGISTRIES was passed in, the resulting +// registry length will be the length of the last subcomponent (eg. 3 for +// foobar.baz). +enum UnknownRegistryFilter { + EXCLUDE_UNKNOWN_REGISTRIES = 0, + INCLUDE_UNKNOWN_REGISTRIES +}; + +// Returns the registered, organization-identifying host and all its registry +// information, but no subdomains, from the given GURL. Returns an empty +// string if the GURL is invalid, has no host (e.g. a file: URL), has multiple +// trailing dots, is an IP address, has only one subcomponent (i.e. no dots +// other than leading/trailing ones), or is itself a recognized registry +// identifier. If no matching rule is found in the effective-TLD data (or in +// the default data, if the resource failed to load), the last subcomponent of +// the host is assumed to be the registry. +// +// Examples: +// http://www.google.com/file.html -> "google.com" (com) +// http://..google.com/file.html -> "google.com" (com) +// http://google.com./file.html -> "google.com." (com) +// http://a.b.co.uk/file.html -> "b.co.uk" (co.uk) +// file:///C:/bar.html -> "" (no host) +// http://foo.com../file.html -> "" (multiple trailing dots) +// http://192.168.0.1/file.html -> "" (IP address) +// http://bar/file.html -> "" (no subcomponents) +// http://co.uk/file.html -> "" (host is a registry) +// http://foo.bar/file.html -> "foo.bar" (no rule; assume bar) +NET_EXPORT std::string GetDomainAndRegistry(const GURL& gurl, + PrivateRegistryFilter filter); + +// Like the GURL version, but takes a host (which is canonicalized internally) +// instead of a full GURL. +NET_EXPORT std::string GetDomainAndRegistry(base::StringPiece host, + PrivateRegistryFilter filter); + +// These convenience functions return true if the two GURLs or Origins both have +// hosts and one of the following is true: +// * The hosts are identical. +// * They each have a known domain and registry, and it is the same for both +// URLs. Note that this means the trailing dot, if any, must match too. +// Effectively, callers can use this function to check whether the input URLs +// represent hosts "on the same site". +NET_EXPORT bool SameDomainOrHost(const GURL& gurl1, const GURL& gurl2, + PrivateRegistryFilter filter); +NET_EXPORT bool SameDomainOrHost(const url::Origin& origin1, + const url::Origin& origin2, + PrivateRegistryFilter filter); +// Note: this returns false if |origin2| is not set. +NET_EXPORT bool SameDomainOrHost(const url::Origin& origin1, + const base::Optional<url::Origin>& origin2, + PrivateRegistryFilter filter); +NET_EXPORT bool SameDomainOrHost(const GURL& gurl, + const url::Origin& origin, + PrivateRegistryFilter filter); + +// Finds the length in bytes of the registrar portion of the host in the +// given GURL. Returns std::string::npos if the GURL is invalid or has no +// host (e.g. a file: URL). Returns 0 if the GURL has multiple trailing dots, +// is an IP address, has no subcomponents, or is itself a recognized registry +// identifier. The result is also dependent on the UnknownRegistryFilter. +// If no matching rule is found in the effective-TLD data (or in +// the default data, if the resource failed to load), returns 0 if +// |unknown_filter| is EXCLUDE_UNKNOWN_REGISTRIES, or the length of the last +// subcomponent if |unknown_filter| is INCLUDE_UNKNOWN_REGISTRIES. +// +// Examples: +// http://www.google.com/file.html -> 3 (com) +// http://..google.com/file.html -> 3 (com) +// http://google.com./file.html -> 4 (com) +// http://a.b.co.uk/file.html -> 5 (co.uk) +// file:///C:/bar.html -> std::string::npos (no host) +// http://foo.com../file.html -> 0 (multiple trailing +// dots) +// http://192.168.0.1/file.html -> 0 (IP address) +// http://bar/file.html -> 0 (no subcomponents) +// http://co.uk/file.html -> 0 (host is a registry) +// http://foo.bar/file.html -> 0 or 3, depending (no rule; assume +// bar) +NET_EXPORT size_t GetRegistryLength(const GURL& gurl, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter); + +// Returns true if the given host name has a registry-controlled domain. The +// host name will be internally canonicalized. Also returns true for invalid +// host names like "*.google.com" as long as it has a valid registry-controlled +// portion (see PermissiveGetHostRegistryLength for particulars). +NET_EXPORT bool HostHasRegistryControlledDomain( + base::StringPiece host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter); + +// Like GetRegistryLength, but takes a previously-canonicalized host instead of +// a GURL. Prefer the GURL version or HasRegistryControlledDomain to eliminate +// the possibility of bugs with non-canonical hosts. +// +// If you have a non-canonical host name, use the "Permissive" version instead. +NET_EXPORT size_t +GetCanonicalHostRegistryLength(base::StringPiece canon_host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter); + +// Like GetRegistryLength for a potentially non-canonicalized hostname. This +// splits the input into substrings at '.' characters, then attempts to +// piecewise-canonicalize the substrings. After finding the registry length of +// the concatenated piecewise string, it then maps back to the corresponding +// length in the original input string. +// +// It will also handle hostnames that are otherwise invalid as long as they +// contain a valid registry controlled domain at the end. Invalid dot-separated +// portions of the domain will be left as-is when the string is looked up in +// the registry database (which will result in no match). +// +// This will handle all cases except for the pattern: +// <invalid-host-chars> <non-literal-dot> <valid-registry-controlled-domain> +// For example: +// "%00foo%2Ecom" (would canonicalize to "foo.com" if the "%00" was removed) +// A non-literal dot (like "%2E" or a fullwidth period) will normally get +// canonicalized to a dot if the host chars were valid. But since the %2E will +// be in the same substring as the %00, the substring will fail to +// canonicalize, the %2E will be left escaped, and the valid registry +// controlled domain at the end won't match. +// +// The string won't be trimmed, so things like trailing spaces will be +// considered part of the host and therefore won't match any TLD. It will +// return std::string::npos like GetRegistryLength() for empty input, but +// because invalid portions are skipped, it won't return npos in any other case. +NET_EXPORT size_t +PermissiveGetHostRegistryLength(base::StringPiece host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter); +NET_EXPORT size_t +PermissiveGetHostRegistryLength(base::StringPiece16 host, + UnknownRegistryFilter unknown_filter, + PrivateRegistryFilter private_filter); + +typedef const struct DomainRule* (*FindDomainPtr)(const char *, unsigned int); + +// Used for unit tests. Use default domains. +NET_EXPORT_PRIVATE void SetFindDomainGraph(); + +// Used for unit tests, so that a frozen list of domains is used. +NET_EXPORT_PRIVATE void SetFindDomainGraph(const unsigned char* domains, + size_t length); + +} // namespace registry_controlled_domains +} // namespace net + +#endif // NET_BASE_REGISTRY_CONTROLLED_DOMAINS_REGISTRY_CONTROLLED_DOMAIN_H_
diff --git a/src/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc b/src/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc new file mode 100644 index 0000000..fd19789 --- /dev/null +++ b/src/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc
@@ -0,0 +1,628 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/strings/utf_string_conversions.h" +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" +#include "url/origin.h" +#include "url/url_features.h" + +namespace { + +namespace test1 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest1-inc.cc" +} +namespace test2 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest2-inc.cc" +} +namespace test3 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest3-inc.cc" +} +namespace test4 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest4-inc.cc" +} +namespace test5 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest5-inc.cc" +} +namespace test6 { +#include "net/base/registry_controlled_domains/effective_tld_names_unittest6-inc.cc" +} + +} // namespace + +namespace net { +namespace registry_controlled_domains { + +namespace { + +std::string GetDomainFromURL(const std::string& url) { + return GetDomainAndRegistry(GURL(url), EXCLUDE_PRIVATE_REGISTRIES); +} + +std::string GetDomainFromHost(const std::string& host) { + return GetDomainAndRegistry(host, EXCLUDE_PRIVATE_REGISTRIES); +} + +size_t GetRegistryLengthFromURL( + const std::string& url, + UnknownRegistryFilter unknown_filter) { + return GetRegistryLength(GURL(url), + unknown_filter, + EXCLUDE_PRIVATE_REGISTRIES); +} + +size_t GetRegistryLengthFromURLIncludingPrivate( + const std::string& url, + UnknownRegistryFilter unknown_filter) { + return GetRegistryLength(GURL(url), + unknown_filter, + INCLUDE_PRIVATE_REGISTRIES); +} + +size_t PermissiveGetHostRegistryLength(base::StringPiece host) { + return PermissiveGetHostRegistryLength(host, EXCLUDE_UNKNOWN_REGISTRIES, + EXCLUDE_PRIVATE_REGISTRIES); +} + +// Only called when using ICU (avoids unused static function error). +#if !BUILDFLAG(USE_PLATFORM_ICU_ALTERNATIVES) +size_t PermissiveGetHostRegistryLength(base::StringPiece16 host) { + return PermissiveGetHostRegistryLength(host, EXCLUDE_UNKNOWN_REGISTRIES, + EXCLUDE_PRIVATE_REGISTRIES); +} +#endif + +size_t GetCanonicalHostRegistryLength(const std::string& host, + UnknownRegistryFilter unknown_filter) { + return GetCanonicalHostRegistryLength(host, unknown_filter, + EXCLUDE_PRIVATE_REGISTRIES); +} + +size_t GetCanonicalHostRegistryLengthIncludingPrivate(const std::string& host) { + return GetCanonicalHostRegistryLength(host, EXCLUDE_UNKNOWN_REGISTRIES, + INCLUDE_PRIVATE_REGISTRIES); +} + +} // namespace + +class RegistryControlledDomainTest : public testing::Test { + protected: + template <typename Graph> + void UseDomainData(const Graph& graph) { + // This is undone in TearDown. + SetFindDomainGraph(graph, sizeof(Graph)); + } + + bool CompareDomains(const std::string& url1, const std::string& url2) { + SCOPED_TRACE(url1 + " " + url2); + GURL g1 = GURL(url1); + GURL g2 = GURL(url2); + url::Origin o1 = url::Origin(g1); + url::Origin o2 = url::Origin(g2); + EXPECT_EQ(SameDomainOrHost(o1, o2, EXCLUDE_PRIVATE_REGISTRIES), + SameDomainOrHost(g1, g2, EXCLUDE_PRIVATE_REGISTRIES)); + return SameDomainOrHost(g1, g2, EXCLUDE_PRIVATE_REGISTRIES); + } + + void TearDown() override { SetFindDomainGraph(); } +}; + +TEST_F(RegistryControlledDomainTest, TestGetDomainAndRegistry) { + UseDomainData(test1::kDafsa); + + // Test GURL version of GetDomainAndRegistry(). + EXPECT_EQ("baz.jp", GetDomainFromURL("http://a.baz.jp/file.html")); // 1 + EXPECT_EQ("baz.jp.", GetDomainFromURL("http://a.baz.jp./file.html")); // 1 + EXPECT_EQ("", GetDomainFromURL("http://ac.jp")); // 2 + EXPECT_EQ("", GetDomainFromURL("http://a.bar.jp")); // 3 + EXPECT_EQ("", GetDomainFromURL("http://bar.jp")); // 3 + EXPECT_EQ("", GetDomainFromURL("http://baz.bar.jp")); // 3 4 + EXPECT_EQ("a.b.baz.bar.jp", GetDomainFromURL("http://a.b.baz.bar.jp")); + // 4 + EXPECT_EQ("pref.bar.jp", GetDomainFromURL("http://baz.pref.bar.jp")); // 5 + EXPECT_EQ("b.bar.baz.com.", GetDomainFromURL("http://a.b.bar.baz.com.")); + // 6 + EXPECT_EQ("a.d.c", GetDomainFromURL("http://a.d.c")); // 7 + EXPECT_EQ("a.d.c", GetDomainFromURL("http://.a.d.c")); // 7 + EXPECT_EQ("a.d.c", GetDomainFromURL("http://..a.d.c")); // 7 + EXPECT_EQ("b.c", GetDomainFromURL("http://a.b.c")); // 7 8 + EXPECT_EQ("baz.com", GetDomainFromURL("http://baz.com")); // none + EXPECT_EQ("baz.com.", GetDomainFromURL("http://baz.com.")); // none + + EXPECT_EQ("", GetDomainFromURL(std::string())); + EXPECT_EQ("", GetDomainFromURL("http://")); + EXPECT_EQ("", GetDomainFromURL("file:///C:/file.html")); + EXPECT_EQ("", GetDomainFromURL("http://foo.com..")); + EXPECT_EQ("", GetDomainFromURL("http://...")); + EXPECT_EQ("", GetDomainFromURL("http://192.168.0.1")); + EXPECT_EQ("", GetDomainFromURL("http://localhost")); + EXPECT_EQ("", GetDomainFromURL("http://localhost.")); + EXPECT_EQ("", GetDomainFromURL("http:////Comment")); + + // Test std::string version of GetDomainAndRegistry(). Uses the same + // underpinnings as the GURL version, so this is really more of a check of + // CanonicalizeHost(). + EXPECT_EQ("baz.jp", GetDomainFromHost("a.baz.jp")); // 1 + EXPECT_EQ("baz.jp.", GetDomainFromHost("a.baz.jp.")); // 1 + EXPECT_EQ("", GetDomainFromHost("ac.jp")); // 2 + EXPECT_EQ("", GetDomainFromHost("a.bar.jp")); // 3 + EXPECT_EQ("", GetDomainFromHost("bar.jp")); // 3 + EXPECT_EQ("", GetDomainFromHost("baz.bar.jp")); // 3 4 + EXPECT_EQ("a.b.baz.bar.jp", GetDomainFromHost("a.b.baz.bar.jp")); // 3 4 + EXPECT_EQ("pref.bar.jp", GetDomainFromHost("baz.pref.bar.jp")); // 5 + EXPECT_EQ("b.bar.baz.com.", GetDomainFromHost("a.b.bar.baz.com.")); // 6 + EXPECT_EQ("a.d.c", GetDomainFromHost("a.d.c")); // 7 + EXPECT_EQ("a.d.c", GetDomainFromHost(".a.d.c")); // 7 + EXPECT_EQ("a.d.c", GetDomainFromHost("..a.d.c")); // 7 + EXPECT_EQ("b.c", GetDomainFromHost("a.b.c")); // 7 8 + EXPECT_EQ("baz.com", GetDomainFromHost("baz.com")); // none + EXPECT_EQ("baz.com.", GetDomainFromHost("baz.com.")); // none + + EXPECT_EQ("", GetDomainFromHost(std::string())); + EXPECT_EQ("", GetDomainFromHost("foo.com..")); + EXPECT_EQ("", GetDomainFromHost("...")); + EXPECT_EQ("", GetDomainFromHost("192.168.0.1")); + EXPECT_EQ("", GetDomainFromHost("localhost.")); + EXPECT_EQ("", GetDomainFromHost(".localhost.")); +} + +TEST_F(RegistryControlledDomainTest, TestGetRegistryLength) { + UseDomainData(test1::kDafsa); + + // Test GURL version of GetRegistryLength(). + EXPECT_EQ(2U, GetRegistryLengthFromURL("http://a.baz.jp/file.html", + EXCLUDE_UNKNOWN_REGISTRIES)); // 1 + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.baz.jp./file.html", + EXCLUDE_UNKNOWN_REGISTRIES)); // 1 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://ac.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 2 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://a.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 + EXPECT_EQ(2U, GetRegistryLengthFromURL("http://xbar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 1 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://.baz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://..baz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 + EXPECT_EQ(11U, GetRegistryLengthFromURL("http://foo..baz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://xbaz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 + EXPECT_EQ(11U, GetRegistryLengthFromURL("http://x.xbaz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 3 + EXPECT_EQ(12U, GetRegistryLengthFromURL("http://a.b.baz.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 4 + EXPECT_EQ(6U, GetRegistryLengthFromURL("http://baz.pref.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(6U, GetRegistryLengthFromURL("http://z.baz.pref.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(10U, GetRegistryLengthFromURL("http://p.ref.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://xpref.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(12U, GetRegistryLengthFromURL("http://baz.xpref.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(6U, GetRegistryLengthFromURL("http://baz..pref.bar.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(11U, GetRegistryLengthFromURL("http://a.b.bar.baz.com", + EXCLUDE_UNKNOWN_REGISTRIES)); // 6 + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.d.c", + EXCLUDE_UNKNOWN_REGISTRIES)); // 7 + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://.a.d.c", + EXCLUDE_UNKNOWN_REGISTRIES)); // 7 + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://..a.d.c", + EXCLUDE_UNKNOWN_REGISTRIES)); // 7 + EXPECT_EQ(1U, GetRegistryLengthFromURL("http://a.b.c", + EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8 + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com", + EXCLUDE_UNKNOWN_REGISTRIES)); // none + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com.", + EXCLUDE_UNKNOWN_REGISTRIES)); // none + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://baz.com", + INCLUDE_UNKNOWN_REGISTRIES)); // none + EXPECT_EQ(4U, GetRegistryLengthFromURL("http://baz.com.", + INCLUDE_UNKNOWN_REGISTRIES)); // none + + EXPECT_EQ(std::string::npos, + GetRegistryLengthFromURL(std::string(), EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(std::string::npos, + GetRegistryLengthFromURL("http://", EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(std::string::npos, + GetRegistryLengthFromURL("file:///C:/file.html", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://foo.com..", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://...", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://192.168.0.1", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", + INCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", + INCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http:////Comment", + EXCLUDE_UNKNOWN_REGISTRIES)); + + // Test std::string version of GetRegistryLength(). Uses the same + // underpinnings as the GURL version, so this is really more of a check of + // CanonicalizeHost(). + EXPECT_EQ(2U, GetCanonicalHostRegistryLength( + "a.baz.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 1 + EXPECT_EQ(3U, GetCanonicalHostRegistryLength( + "a.baz.jp.", EXCLUDE_UNKNOWN_REGISTRIES)); // 1 + EXPECT_EQ(0U, GetCanonicalHostRegistryLength( + "ac.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 2 + EXPECT_EQ(0U, GetCanonicalHostRegistryLength( + "a.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 + EXPECT_EQ(0U, GetCanonicalHostRegistryLength( + "bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 + EXPECT_EQ(0U, GetCanonicalHostRegistryLength( + "baz.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 + EXPECT_EQ(12U, GetCanonicalHostRegistryLength( + "a.b.baz.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 4 + EXPECT_EQ(6U, GetCanonicalHostRegistryLength( + "baz.pref.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 5 + EXPECT_EQ(11U, GetCanonicalHostRegistryLength( + "a.b.bar.baz.com", EXCLUDE_UNKNOWN_REGISTRIES)); // 6 + EXPECT_EQ(3U, GetCanonicalHostRegistryLength( + "a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 + EXPECT_EQ(3U, GetCanonicalHostRegistryLength( + ".a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 + EXPECT_EQ(3U, GetCanonicalHostRegistryLength( + "..a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 + EXPECT_EQ(1U, GetCanonicalHostRegistryLength( + "a.b.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8 + EXPECT_EQ(0U, GetCanonicalHostRegistryLength( + "baz.com", EXCLUDE_UNKNOWN_REGISTRIES)); // none + EXPECT_EQ(0U, GetCanonicalHostRegistryLength( + "baz.com.", EXCLUDE_UNKNOWN_REGISTRIES)); // none + EXPECT_EQ(3U, GetCanonicalHostRegistryLength( + "baz.com", INCLUDE_UNKNOWN_REGISTRIES)); // none + EXPECT_EQ(4U, GetCanonicalHostRegistryLength( + "baz.com.", INCLUDE_UNKNOWN_REGISTRIES)); // none + + EXPECT_EQ(std::string::npos, GetCanonicalHostRegistryLength( + std::string(), EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLength("foo.com..", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength("..", EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLength("192.168.0.1", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost", + INCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost.", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost.", + INCLUDE_UNKNOWN_REGISTRIES)); + + // IDN case. + EXPECT_EQ(10U, GetCanonicalHostRegistryLength("foo.xn--fiqs8s", + EXCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, HostHasRegistryControlledDomain) { + UseDomainData(test1::kDafsa); + + // Invalid hosts. + EXPECT_FALSE(HostHasRegistryControlledDomain( + std::string(), EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES)); + EXPECT_FALSE(HostHasRegistryControlledDomain( + "%00asdf", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES)); + + // Invalid host but valid R.C.D. + EXPECT_TRUE(HostHasRegistryControlledDomain( + "%00foo.jp", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES)); + + // Valid R.C.D. when canonicalized, even with an invalid prefix and an + // escaped dot. + EXPECT_TRUE(HostHasRegistryControlledDomain("%00foo.Google%2EjP", + EXCLUDE_UNKNOWN_REGISTRIES, + EXCLUDE_PRIVATE_REGISTRIES)); + + // Regular, no match. + EXPECT_FALSE(HostHasRegistryControlledDomain( + "bar.notatld", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES)); + + // Regular, match. + EXPECT_TRUE(HostHasRegistryControlledDomain( + "www.Google.Jp", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) { + UseDomainData(test2::kDafsa); + + EXPECT_TRUE(CompareDomains("http://a.b.bar.jp/file.html", + "http://a.b.bar.jp/file.html")); // b.bar.jp + EXPECT_TRUE(CompareDomains("http://a.b.bar.jp/file.html", + "http://b.b.bar.jp/file.html")); // b.bar.jp + EXPECT_FALSE(CompareDomains("http://a.foo.jp/file.html", // foo.jp + "http://a.not.jp/file.html")); // not.jp + EXPECT_FALSE(CompareDomains("http://a.foo.jp/file.html", // foo.jp + "http://a.foo.jp./file.html")); // foo.jp. + EXPECT_FALSE(CompareDomains("http://a.com/file.html", // a.com + "http://b.com/file.html")); // b.com + EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", + "http://b.x.com/file.html")); // x.com + EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", + "http://.x.com/file.html")); // x.com + EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", + "http://..b.x.com/file.html")); // x.com + EXPECT_TRUE(CompareDomains("http://intranet/file.html", + "http://intranet/file.html")); // intranet + EXPECT_TRUE(CompareDomains("http://127.0.0.1/file.html", + "http://127.0.0.1/file.html")); // 127.0.0.1 + EXPECT_FALSE(CompareDomains("http://192.168.0.1/file.html", // 192.168.0.1 + "http://127.0.0.1/file.html")); // 127.0.0.1 + EXPECT_FALSE(CompareDomains("file:///C:/file.html", + "file:///C:/file.html")); // no host +} + +TEST_F(RegistryControlledDomainTest, TestDefaultData) { + // Note that no data is set: we're using the default rules. + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://google.com", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://stanford.edu", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ustreas.gov", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://icann.net", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ferretcentral.org", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://nowhere.notavaliddomain", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(15U, GetRegistryLengthFromURL("http://nowhere.notavaliddomain", + INCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, TestPrivateRegistryHandling) { + UseDomainData(test1::kDafsa); + + // Testing the same dataset for INCLUDE_PRIVATE_REGISTRIES and + // EXCLUDE_PRIVATE_REGISTRIES arguments. + // For the domain data used for this test, the private registries are + // 'priv.no' and 'private'. + + // Non-private registries. + EXPECT_EQ(2U, GetRegistryLengthFromURL("http://priv.no", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, GetRegistryLengthFromURL("http://foo.priv.no", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, GetRegistryLengthFromURL("http://foo.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, GetRegistryLengthFromURL("http://www.foo.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://private", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://foo.private", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, GetRegistryLengthFromURL("http://private", + INCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(7U, GetRegistryLengthFromURL("http://foo.private", + INCLUDE_UNKNOWN_REGISTRIES)); + + // Private registries. + EXPECT_EQ(0U, + GetRegistryLengthFromURLIncludingPrivate("http://priv.no", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(7U, + GetRegistryLengthFromURLIncludingPrivate("http://foo.priv.no", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, + GetRegistryLengthFromURLIncludingPrivate("http://foo.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, + GetRegistryLengthFromURLIncludingPrivate("http://www.foo.jp", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetRegistryLengthFromURLIncludingPrivate("http://private", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(7U, + GetRegistryLengthFromURLIncludingPrivate("http://foo.private", + EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetRegistryLengthFromURLIncludingPrivate("http://private", + INCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(7U, + GetRegistryLengthFromURLIncludingPrivate("http://foo.private", + INCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, TestDafsaTwoByteOffsets) { + UseDomainData(test3::kDafsa); + + // Testing to lookup keys in a DAFSA with two byte offsets. + // This DAFSA is constructed so that labels begin and end with unique + // characters, which makes it impossible to merge labels. Each inner node + // is about 100 bytes and a one byte offset can at most add 64 bytes to + // previous offset. Thus the paths must go over two byte offsets. + + const char key0[] = + "a.b.6____________________________________________________" + "________________________________________________6"; + const char key1[] = + "a.b.7____________________________________________________" + "________________________________________________7"; + const char key2[] = + "a.b.a____________________________________________________" + "________________________________________________8"; + + EXPECT_EQ(102U, + GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(102U, GetCanonicalHostRegistryLengthIncludingPrivate(key1)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, TestDafsaThreeByteOffsets) { + UseDomainData(test4::kDafsa); + + // Testing to lookup keys in a DAFSA with three byte offsets. + // This DAFSA is constructed so that labels begin and end with unique + // characters, which makes it impossible to merge labels. The byte array + // has a size of ~54k. A two byte offset can add at most add 8k to the + // previous offset. Since we can skip only forward in memory, the nodes + // representing the return values must be located near the end of the byte + // array. The probability that we can reach from an arbitrary inner node to + // a return value without using a three byte offset is small (but not zero). + // The test is repeated with some different keys and with a reasonable + // probability at least one of the tested paths has go over a three byte + // offset. + + const char key0[] = + "a.b.z6___________________________________________________" + "_________________________________________________z6"; + const char key1[] = + "a.b.z7___________________________________________________" + "_________________________________________________z7"; + const char key2[] = + "a.b.za___________________________________________________" + "_________________________________________________z8"; + + EXPECT_EQ(104U, + GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(104U, GetCanonicalHostRegistryLengthIncludingPrivate(key1)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, TestDafsaJoinedPrefixes) { + UseDomainData(test5::kDafsa); + + // Testing to lookup keys in a DAFSA with compressed prefixes. + // This DAFSA is constructed from words with similar prefixes but distinct + // suffixes. The DAFSA will then form a trie with the implicit source node + // as root. + + const char key0[] = "a.b.ai"; + const char key1[] = "a.b.bj"; + const char key2[] = "a.b.aak"; + const char key3[] = "a.b.bbl"; + const char key4[] = "a.b.aaa"; + const char key5[] = "a.b.bbb"; + const char key6[] = "a.b.aaaam"; + const char key7[] = "a.b.bbbbn"; + + EXPECT_EQ(2U, + GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, GetCanonicalHostRegistryLengthIncludingPrivate(key1)); + EXPECT_EQ(3U, + GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key3, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(3U, GetCanonicalHostRegistryLengthIncludingPrivate(key3)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key4)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key5)); + EXPECT_EQ(5U, + GetCanonicalHostRegistryLength(key6, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(5U, + GetCanonicalHostRegistryLength(key7, EXCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, TestDafsaJoinedSuffixes) { + UseDomainData(test6::kDafsa); + + // Testing to lookup keys in a DAFSA with compressed suffixes. + // This DAFSA is constructed from words with similar suffixes but distinct + // prefixes. The DAFSA will then form a trie with the implicit sink node as + // root. + + const char key0[] = "a.b.ia"; + const char key1[] = "a.b.jb"; + const char key2[] = "a.b.kaa"; + const char key3[] = "a.b.lbb"; + const char key4[] = "a.b.aaa"; + const char key5[] = "a.b.bbb"; + const char key6[] = "a.b.maaaa"; + const char key7[] = "a.b.nbbbb"; + + EXPECT_EQ(2U, + GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(2U, GetCanonicalHostRegistryLengthIncludingPrivate(key1)); + EXPECT_EQ(3U, + GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(0U, + GetCanonicalHostRegistryLength(key3, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(3U, GetCanonicalHostRegistryLengthIncludingPrivate(key3)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key4)); + EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key5)); + EXPECT_EQ(5U, + GetCanonicalHostRegistryLength(key6, EXCLUDE_UNKNOWN_REGISTRIES)); + EXPECT_EQ(5U, + GetCanonicalHostRegistryLength(key7, EXCLUDE_UNKNOWN_REGISTRIES)); +} + +TEST_F(RegistryControlledDomainTest, Permissive) { + UseDomainData(test1::kDafsa); + + EXPECT_EQ(std::string::npos, PermissiveGetHostRegistryLength("")); + + // Regular non-canonical host name. + EXPECT_EQ(2U, PermissiveGetHostRegistryLength("Www.Google.Jp")); + EXPECT_EQ(3U, PermissiveGetHostRegistryLength("Www.Google.Jp.")); + + // Empty returns npos. + EXPECT_EQ(std::string::npos, PermissiveGetHostRegistryLength("")); + + // Trailing spaces are counted as part of the hostname, meaning this will + // not match a known registry. + EXPECT_EQ(0U, PermissiveGetHostRegistryLength("Www.Google.Jp ")); + + // Invalid characters at the beginning are OK if the suffix still matches. + EXPECT_EQ(2U, PermissiveGetHostRegistryLength("*%00#?.Jp")); + + // Escaped period, this will add new components. + EXPECT_EQ(4U, PermissiveGetHostRegistryLength("Www.Googl%45%2e%4Ap")); + +// IDN cases (not supported when not linking ICU). +#if !BUILDFLAG(USE_PLATFORM_ICU_ALTERNATIVES) + EXPECT_EQ(10U, PermissiveGetHostRegistryLength("foo.xn--fiqs8s")); + EXPECT_EQ(11U, PermissiveGetHostRegistryLength("foo.xn--fiqs8s.")); + EXPECT_EQ(18U, PermissiveGetHostRegistryLength("foo.%E4%B8%AD%E5%9B%BD")); + EXPECT_EQ(19U, PermissiveGetHostRegistryLength("foo.%E4%B8%AD%E5%9B%BD.")); + EXPECT_EQ(6U, + PermissiveGetHostRegistryLength("foo.\xE4\xB8\xAD\xE5\x9B\xBD")); + EXPECT_EQ(7U, + PermissiveGetHostRegistryLength("foo.\xE4\xB8\xAD\xE5\x9B\xBD.")); + // UTF-16 IDN. + EXPECT_EQ(2U, PermissiveGetHostRegistryLength( + base::WideToUTF16(L"foo.\x4e2d\x56fd"))); + + // Fullwidth dot (u+FF0E) that will get canonicalized to a dot. + EXPECT_EQ(2U, PermissiveGetHostRegistryLength("Www.Google\xEF\xBC\x8Ejp")); + // Same but also ending in a fullwidth dot. + EXPECT_EQ(5U, PermissiveGetHostRegistryLength( + "Www.Google\xEF\xBC\x8Ejp\xEF\xBC\x8E")); + // Escaped UTF-8, also with an escaped fullwidth "Jp". + // "Jp" = U+FF2A, U+FF50, UTF-8 = EF BC AA EF BD 90 + EXPECT_EQ(27U, PermissiveGetHostRegistryLength( + "Www.Google%EF%BC%8E%EF%BC%AA%EF%BD%90%EF%BC%8E")); + // UTF-16 (ending in a dot). + EXPECT_EQ(3U, PermissiveGetHostRegistryLength( + base::WideToUTF16(L"Www.Google\xFF0E\xFF2A\xFF50\xFF0E"))); +#endif +} + +} // namespace registry_controlled_domains +} // namespace net
diff --git a/src/net/base/url_util.cc b/src/net/base/url_util.cc new file mode 100644 index 0000000..062481f --- /dev/null +++ b/src/net/base/url_util.cc
@@ -0,0 +1,442 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "net/base/url_util.h" + +#include "build/build_config.h" + +#if defined(OS_POSIX) +#include <netinet/in.h> +#elif defined(OS_WIN) +#include <ws2tcpip.h> +#endif + +#include "base/logging.h" +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" +#include "net/base/escape.h" +#include "net/base/ip_address.h" +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" +#include "url/gurl.h" +#include "url/url_canon.h" +#include "url/url_canon_ip.h" + +namespace net { + +namespace { + +bool IsHostCharAlphanumeric(char c) { + // We can just check lowercase because uppercase characters have already been + // normalized. + return ((c >= 'a') && (c <= 'z')) || ((c >= '0') && (c <= '9')); +} + +bool IsNormalizedLocalhostTLD(const std::string& host) { + return base::EndsWith(host, ".localhost", base::CompareCase::SENSITIVE); +} + +} // namespace + +GURL AppendQueryParameter(const GURL& url, + const std::string& name, + const std::string& value) { + std::string query(url.query()); + + if (!query.empty()) + query += "&"; + + query += (EscapeQueryParamValue(name, true) + "=" + + EscapeQueryParamValue(value, true)); + GURL::Replacements replacements; + replacements.SetQueryStr(query); + return url.ReplaceComponents(replacements); +} + +GURL AppendOrReplaceQueryParameter(const GURL& url, + const std::string& name, + const std::string& value) { + bool replaced = false; + std::string param_name = EscapeQueryParamValue(name, true); + std::string param_value = EscapeQueryParamValue(value, true); + + const std::string input = url.query(); + url::Component cursor(0, input.size()); + std::string output; + url::Component key_range, value_range; + while (url::ExtractQueryKeyValue(input.data(), &cursor, &key_range, + &value_range)) { + const base::StringPiece key( + input.data() + key_range.begin, key_range.len); + std::string key_value_pair; + // Check |replaced| as only the first pair should be replaced. + if (!replaced && key == param_name) { + replaced = true; + key_value_pair = (param_name + "=" + param_value); + } else { + key_value_pair.assign(input, key_range.begin, + value_range.end() - key_range.begin); + } + if (!output.empty()) + output += "&"; + + output += key_value_pair; + } + if (!replaced) { + if (!output.empty()) + output += "&"; + + output += (param_name + "=" + param_value); + } + GURL::Replacements replacements; + replacements.SetQueryStr(output); + return url.ReplaceComponents(replacements); +} + +QueryIterator::QueryIterator(const GURL& url) + : url_(url), + at_end_(!url.is_valid()) { + if (!at_end_) { + query_ = url.parsed_for_possibly_invalid_spec().query; + Advance(); + } +} + +QueryIterator::~QueryIterator() { +} + +std::string QueryIterator::GetKey() const { + DCHECK(!at_end_); + if (key_.is_nonempty()) + return url_.spec().substr(key_.begin, key_.len); + return std::string(); +} + +std::string QueryIterator::GetValue() const { + DCHECK(!at_end_); + if (value_.is_nonempty()) + return url_.spec().substr(value_.begin, value_.len); + return std::string(); +} + +const std::string& QueryIterator::GetUnescapedValue() { + DCHECK(!at_end_); + if (value_.is_nonempty() && unescaped_value_.empty()) { + unescaped_value_ = UnescapeURLComponent( + GetValue(), UnescapeRule::SPACES | UnescapeRule::PATH_SEPARATORS | + UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS | + UnescapeRule::REPLACE_PLUS_WITH_SPACE); + } + return unescaped_value_; +} + +bool QueryIterator::IsAtEnd() const { + return at_end_; +} + +void QueryIterator::Advance() { + DCHECK (!at_end_); + key_.reset(); + value_.reset(); + unescaped_value_.clear(); + at_end_ = + !url::ExtractQueryKeyValue(url_.spec().c_str(), &query_, &key_, &value_); +} + +bool GetValueForKeyInQuery(const GURL& url, + const std::string& search_key, + std::string* out_value) { + for (QueryIterator it(url); !it.IsAtEnd(); it.Advance()) { + if (it.GetKey() == search_key) { + *out_value = it.GetUnescapedValue(); + return true; + } + } + return false; +} + +bool ParseHostAndPort(std::string::const_iterator host_and_port_begin, + std::string::const_iterator host_and_port_end, + std::string* host, + int* port) { + if (host_and_port_begin >= host_and_port_end) + return false; + + // When using url, we use char*. + const char* auth_begin = &(*host_and_port_begin); + int auth_len = host_and_port_end - host_and_port_begin; + + url::Component auth_component(0, auth_len); + url::Component username_component; + url::Component password_component; + url::Component hostname_component; + url::Component port_component; + + url::ParseAuthority(auth_begin, auth_component, &username_component, + &password_component, &hostname_component, &port_component); + + // There shouldn't be a username/password. + if (username_component.is_valid() || password_component.is_valid()) + return false; + + if (!hostname_component.is_nonempty()) + return false; // Failed parsing. + + int parsed_port_number = -1; + if (port_component.is_nonempty()) { + parsed_port_number = url::ParsePort(auth_begin, port_component); + + // If parsing failed, port_number will be either PORT_INVALID or + // PORT_UNSPECIFIED, both of which are negative. + if (parsed_port_number < 0) + return false; // Failed parsing the port number. + } + + if (port_component.len == 0) + return false; // Reject inputs like "foo:" + + unsigned char tmp_ipv6_addr[16]; + + // If the hostname starts with a bracket, it is either an IPv6 literal or + // invalid. If it is an IPv6 literal then strip the brackets. + if (hostname_component.len > 0 && + auth_begin[hostname_component.begin] == '[') { + if (auth_begin[hostname_component.end() - 1] == ']' && + url::IPv6AddressToNumber( + auth_begin, hostname_component, tmp_ipv6_addr)) { + // Strip the brackets. + hostname_component.begin++; + hostname_component.len -= 2; + } else { + return false; + } + } + + // Pass results back to caller. + host->assign(auth_begin + hostname_component.begin, hostname_component.len); + *port = parsed_port_number; + + return true; // Success. +} + +bool ParseHostAndPort(const std::string& host_and_port, + std::string* host, + int* port) { + return ParseHostAndPort( + host_and_port.begin(), host_and_port.end(), host, port); +} + + +std::string GetHostAndPort(const GURL& url) { + // For IPv6 literals, GURL::host() already includes the brackets so it is + // safe to just append a colon. + return base::StringPrintf("%s:%d", url.host().c_str(), + url.EffectiveIntPort()); +} + +std::string GetHostAndOptionalPort(const GURL& url) { + // For IPv6 literals, GURL::host() already includes the brackets + // so it is safe to just append a colon. + if (url.has_port()) + return base::StringPrintf("%s:%s", url.host().c_str(), url.port().c_str()); + return url.host(); +} + +std::string TrimEndingDot(base::StringPiece host) { + base::StringPiece host_trimmed = host; + size_t len = host_trimmed.length(); + if (len > 1 && host_trimmed[len - 1] == '.') { + host_trimmed.remove_suffix(1); + } + return host_trimmed.as_string(); +} + +std::string GetHostOrSpecFromURL(const GURL& url) { + return url.has_host() ? TrimEndingDot(url.host_piece()) : url.spec(); +} + +std::string CanonicalizeHost(base::StringPiece host, + url::CanonHostInfo* host_info) { + // Try to canonicalize the host. + const url::Component raw_host_component(0, static_cast<int>(host.length())); + std::string canon_host; + url::StdStringCanonOutput canon_host_output(&canon_host); + url::CanonicalizeHostVerbose(host.data(), raw_host_component, + &canon_host_output, host_info); + + if (host_info->out_host.is_nonempty() && + host_info->family != url::CanonHostInfo::BROKEN) { + // Success! Assert that there's no extra garbage. + canon_host_output.Complete(); + DCHECK_EQ(host_info->out_host.len, static_cast<int>(canon_host.length())); + } else { + // Empty host, or canonicalization failed. We'll return empty. + canon_host.clear(); + } + + return canon_host; +} + +bool IsCanonicalizedHostCompliant(const std::string& host) { + if (host.empty()) + return false; + + bool in_component = false; + bool most_recent_component_started_alphanumeric = false; + + for (std::string::const_iterator i(host.begin()); i != host.end(); ++i) { + const char c = *i; + if (!in_component) { + most_recent_component_started_alphanumeric = IsHostCharAlphanumeric(c); + if (!most_recent_component_started_alphanumeric && (c != '-') && + (c != '_')) { + return false; + } + in_component = true; + } else if (c == '.') { + in_component = false; + } else if (!IsHostCharAlphanumeric(c) && (c != '-') && (c != '_')) { + return false; + } + } + + return most_recent_component_started_alphanumeric; +} + +bool IsHostnameNonUnique(const std::string& hostname) { + // CanonicalizeHost requires surrounding brackets to parse an IPv6 address. + const std::string host_or_ip = hostname.find(':') != std::string::npos ? + "[" + hostname + "]" : hostname; + url::CanonHostInfo host_info; + std::string canonical_name = CanonicalizeHost(host_or_ip, &host_info); + + // If canonicalization fails, then the input is truly malformed. However, + // to avoid mis-reporting bad inputs as "non-unique", treat them as unique. + if (canonical_name.empty()) + return false; + + // If |hostname| is an IP address, check to see if it's in an IANA-reserved + // range. + if (host_info.IsIPAddress()) { + IPAddress host_addr; + if (!host_addr.AssignFromIPLiteral(hostname.substr( + host_info.out_host.begin, host_info.out_host.len))) { + return false; + } + switch (host_info.family) { + case url::CanonHostInfo::IPV4: + case url::CanonHostInfo::IPV6: + return host_addr.IsReserved(); + case url::CanonHostInfo::NEUTRAL: + case url::CanonHostInfo::BROKEN: + return false; + } + } + + // Check for a registry controlled portion of |hostname|, ignoring private + // registries, as they already chain to ICANN-administered registries, + // and explicitly ignoring unknown registries. + // + // Note: This means that as new gTLDs are introduced on the Internet, they + // will be treated as non-unique until the registry controlled domain list + // is updated. However, because gTLDs are expected to provide significant + // advance notice to deprecate older versions of this code, this an + // acceptable tradeoff. + return !registry_controlled_domains::HostHasRegistryControlledDomain( + canonical_name, registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES, + registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); +} + +bool IsLocalhost(base::StringPiece host) { + if (IsLocalHostname(host, nullptr)) + return true; + + IPAddress ip_address; + if (ip_address.AssignFromIPLiteral(host)) { + size_t size = ip_address.size(); + switch (size) { + case IPAddress::kIPv4AddressSize: { + const uint8_t prefix[] = {127}; + return IPAddressStartsWith(ip_address, prefix); + } + + case IPAddress::kIPv6AddressSize: + return ip_address == IPAddress::IPv6Localhost(); + + default: + NOTREACHED(); + } + } + + return false; +} + +GURL SimplifyUrlForRequest(const GURL& url) { + DCHECK(url.is_valid()); + // Fast path to avoid re-canonicalization via ReplaceComponents. + if (!url.has_username() && !url.has_password() && !url.has_ref()) + return url; + GURL::Replacements replacements; + replacements.ClearUsername(); + replacements.ClearPassword(); + replacements.ClearRef(); + return url.ReplaceComponents(replacements); +} + +void GetIdentityFromURL(const GURL& url, + base::string16* username, + base::string16* password) { + UnescapeRule::Type flags = + UnescapeRule::SPACES | UnescapeRule::PATH_SEPARATORS | + UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS; + *username = UnescapeAndDecodeUTF8URLComponent(url.username(), flags); + *password = UnescapeAndDecodeUTF8URLComponent(url.password(), flags); +} + +bool HasGoogleHost(const GURL& url) { + static const char* kGoogleHostSuffixes[] = { + ".google.com", + ".youtube.com", + ".gmail.com", + ".doubleclick.net", + ".gstatic.com", + ".googlevideo.com", + ".googleusercontent.com", + ".googlesyndication.com", + ".google-analytics.com", + ".googleadservices.com", + ".googleapis.com", + ".ytimg.com", + }; + base::StringPiece host = url.host_piece(); + for (const char* suffix : kGoogleHostSuffixes) { + // Here it's possible to get away with faster case-sensitive comparisons + // because the list above is all lowercase, and a GURL's host name will + // always be canonicalized to lowercase as well. + if (base::EndsWith(host, suffix, base::CompareCase::SENSITIVE)) + return true; + } + return false; +} + +bool IsLocalHostname(base::StringPiece host, bool* is_local6) { + std::string normalized_host = base::ToLowerASCII(host); + // Remove any trailing '.'. + if (!normalized_host.empty() && *normalized_host.rbegin() == '.') + normalized_host.resize(normalized_host.size() - 1); + + if (normalized_host == "localhost6" || + normalized_host == "localhost6.localdomain6") { + if (is_local6) + *is_local6 = true; + return true; + } + + if (is_local6) + *is_local6 = false; + return normalized_host == "localhost" || + normalized_host == "localhost.localdomain" || + IsNormalizedLocalhostTLD(normalized_host); +} + +} // namespace net
diff --git a/src/net/base/url_util.h b/src/net/base/url_util.h new file mode 100644 index 0000000..75f7b62 --- /dev/null +++ b/src/net/base/url_util.h
@@ -0,0 +1,177 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file contains a set of utility functions related to parsing, +// manipulating, and interacting with URLs and hostnames. These functions are +// intended to be of a text-processing nature, and should not attempt to use any +// networking or blocking services. + +#ifndef NET_BASE_URL_UTIL_H_ +#define NET_BASE_URL_UTIL_H_ + +#include <string> + +#include "base/macros.h" +#include "base/strings/string16.h" +#include "base/strings/string_piece.h" +#include "net/base/net_export.h" +#include "url/third_party/mozilla/url_parse.h" + +class GURL; + +namespace url { +struct CanonHostInfo; +} + +namespace net { + +// Returns a new GURL by appending the given query parameter name and the +// value. Unsafe characters in the name and the value are escaped like +// %XX%XX. The original query component is preserved if it's present. +// +// Examples: +// +// AppendQueryParameter(GURL("http://example.com"), "name", "value").spec() +// => "http://example.com?name=value" +// AppendQueryParameter(GURL("http://example.com?x=y"), "name", "value").spec() +// => "http://example.com?x=y&name=value" +NET_EXPORT GURL AppendQueryParameter(const GURL& url, + const std::string& name, + const std::string& value); + +// Returns a new GURL by appending or replacing the given query parameter name +// and the value. If |name| appears more than once, only the first name-value +// pair is replaced. Unsafe characters in the name and the value are escaped +// like %XX%XX. The original query component is preserved if it's present. +// +// Examples: +// +// AppendOrReplaceQueryParameter( +// GURL("http://example.com"), "name", "new").spec() +// => "http://example.com?name=value" +// AppendOrReplaceQueryParameter( +// GURL("http://example.com?x=y&name=old"), "name", "new").spec() +// => "http://example.com?x=y&name=new" +NET_EXPORT GURL AppendOrReplaceQueryParameter(const GURL& url, + const std::string& name, + const std::string& value); + +// Iterates over the key-value pairs in the query portion of |url|. +class NET_EXPORT QueryIterator { + public: + explicit QueryIterator(const GURL& url); + ~QueryIterator(); + + std::string GetKey() const; + std::string GetValue() const; + const std::string& GetUnescapedValue(); + + bool IsAtEnd() const; + void Advance(); + + private: + const GURL& url_; + url::Component query_; + bool at_end_; + url::Component key_; + url::Component value_; + std::string unescaped_value_; + + DISALLOW_COPY_AND_ASSIGN(QueryIterator); +}; + +// Looks for |search_key| in the query portion of |url|. Returns true if the +// key is found and sets |out_value| to the unescaped value for the key. +// Returns false if the key is not found. +NET_EXPORT bool GetValueForKeyInQuery(const GURL& url, + const std::string& search_key, + std::string* out_value); + +// Splits an input of the form <host>[":"<port>] into its consitituent parts. +// Saves the result into |*host| and |*port|. If the input did not have +// the optional port, sets |*port| to -1. +// Returns true if the parsing was successful, false otherwise. +// The returned host is NOT canonicalized, and may be invalid. +// +// IPv6 literals must be specified in a bracketed form, for instance: +// [::1]:90 and [::1] +// +// The resultant |*host| in both cases will be "::1" (not bracketed). +NET_EXPORT bool ParseHostAndPort( + std::string::const_iterator host_and_port_begin, + std::string::const_iterator host_and_port_end, + std::string* host, + int* port); +NET_EXPORT bool ParseHostAndPort(const std::string& host_and_port, + std::string* host, + int* port); + +// Returns a host:port string for the given URL. +NET_EXPORT std::string GetHostAndPort(const GURL& url); + +// Returns a host[:port] string for the given URL, where the port is omitted +// if it is the default for the URL's scheme. +NET_EXPORT std::string GetHostAndOptionalPort(const GURL& url); + +// Returns the hostname by trimming the ending dot, if one exists. +NET_EXPORT std::string TrimEndingDot(base::StringPiece host); + +// Returns either the host from |url|, or, if the host is empty, the full spec. +NET_EXPORT std::string GetHostOrSpecFromURL(const GURL& url); + +// Canonicalizes |host| and returns it. Also fills |host_info| with +// IP address information. |host_info| must not be NULL. +NET_EXPORT std::string CanonicalizeHost(base::StringPiece host, + url::CanonHostInfo* host_info); + +// Returns true if |host| is not an IP address and is compliant with a set of +// rules based on RFC 1738 and tweaked to be compatible with the real world. +// The rules are: +// * One or more components separated by '.' +// * Each component contains only alphanumeric characters and '-' or '_' +// * The last component begins with an alphanumeric character +// * Optional trailing dot after last component (means "treat as FQDN") +// +// NOTE: You should only pass in hosts that have been returned from +// CanonicalizeHost(), or you may not get accurate results. +NET_EXPORT bool IsCanonicalizedHostCompliant(const std::string& host); + +// Returns true if |hostname| contains a non-registerable or non-assignable +// domain name (eg: a gTLD that has not been assigned by IANA) or an IP address +// that falls in an IANA-reserved range. +NET_EXPORT bool IsHostnameNonUnique(const std::string& hostname); + +// Returns true if |host| is one of the local hostnames +// (e.g. "localhost") or IP addresses (IPv4 127.0.0.0/8 or IPv6 ::1). +// +// Note that this function does not check for IP addresses other than +// the above, although other IP addresses may point to the local +// machine. +NET_EXPORT bool IsLocalhost(base::StringPiece host); + +// Strip the portions of |url| that aren't core to the network request. +// - user name / password +// - reference section +NET_EXPORT GURL SimplifyUrlForRequest(const GURL& url); + +// Extracts the unescaped username/password from |url|, saving the results +// into |*username| and |*password|. +NET_EXPORT_PRIVATE void GetIdentityFromURL(const GURL& url, + base::string16* username, + base::string16* password); + +// Returns true if the url's host is a Google server. This should only be used +// for histograms and shouldn't be used to affect behavior. +NET_EXPORT_PRIVATE bool HasGoogleHost(const GURL& url); + +// This function tests |host| to see if it is of any local hostname form. +// |host| is normalized before being tested and if |is_local6| is not NULL then +// it it will be set to true if the localhost name implies an IPv6 interface ( +// for instance localhost6.localdomain6). +NET_EXPORT_PRIVATE bool IsLocalHostname(base::StringPiece host, + bool* is_local6); + +} // namespace net + +#endif // NET_BASE_URL_UTIL_H_
diff --git a/src/net/tools/dafsa/make_dafsa.py b/src/net/tools/dafsa/make_dafsa.py new file mode 100755 index 0000000..5c9082d --- /dev/null +++ b/src/net/tools/dafsa/make_dafsa.py
@@ -0,0 +1,469 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +A Deterministic acyclic finite state automaton (DAFSA) is a compact +representation of an unordered word list (dictionary). + +http://en.wikipedia.org/wiki/Deterministic_acyclic_finite_state_automaton + +This python program converts a list of strings to a byte array in C++. +This python program fetches strings and return values from a gperf file +and generates a C++ file with a byte array representing graph that can be +used as a memory efficient replacement for the perfect hash table. + +The input strings are assumed to consist of printable 7-bit ASCII characters +and the return values are assumed to be one digit integers. + +In this program a DAFSA is a diamond shaped graph starting at a common +source node and ending at a common sink node. All internal nodes contain +a label and each word is represented by the labels in one path from +the source node to the sink node. + +The following python represention is used for nodes: + + Source node: [ children ] + Internal node: (label, [ children ]) + Sink node: None + +The graph is first compressed by prefixes like a trie. In the next step +suffixes are compressed so that the graph gets diamond shaped. Finally +one to one linked nodes are replaced by nodes with the labels joined. + +The order of the operations is crucial since lookups will be performed +starting from the source with no backtracking. Thus a node must have at +most one child with a label starting by the same character. The output +is also arranged so that all jumps are to increasing addresses, thus forward +in memory. + +The generated output has suffix free decoding so that the sign of leading +bits in a link (a reference to a child node) indicate if it has a size of one, +two or three bytes and if it is the last outgoing link from the actual node. +A node label is terminated by a byte with the leading bit set. + +The generated byte array can described by the following BNF: + +<byte> ::= < 8-bit value in range [0x00-0xFF] > + +<char> ::= < printable 7-bit ASCII character, byte in range [0x20-0x7F] > +<end_char> ::= < char + 0x80, byte in range [0xA0-0xFF] > +<return value> ::= < value + 0x80, byte in range [0x80-0x8F] > + +<offset1> ::= < byte in range [0x00-0x3F] > +<offset2> ::= < byte in range [0x40-0x5F] > +<offset3> ::= < byte in range [0x60-0x7F] > + +<end_offset1> ::= < byte in range [0x80-0xBF] > +<end_offset2> ::= < byte in range [0xC0-0xDF] > +<end_offset3> ::= < byte in range [0xE0-0xFF] > + +<prefix> ::= <char> + +<label> ::= <end_char> + | <char> <label> + +<end_label> ::= <return_value> + | <char> <end_label> + +<offset> ::= <offset1> + | <offset2> <byte> + | <offset3> <byte> <byte> + +<end_offset> ::= <end_offset1> + | <end_offset2> <byte> + | <end_offset3> <byte> <byte> + +<offsets> ::= <end_offset> + | <offset> <offsets> + +<source> ::= <offsets> + +<node> ::= <label> <offsets> + | <prefix> <node> + | <end_label> + +<dafsa> ::= <source> + | <dafsa> <node> + +Decoding: + +<char> -> printable 7-bit ASCII character +<end_char> & 0x7F -> printable 7-bit ASCII character +<return value> & 0x0F -> integer +<offset1 & 0x3F> -> integer +((<offset2> & 0x1F>) << 8) + <byte> -> integer +((<offset3> & 0x1F>) << 16) + (<byte> << 8) + <byte> -> integer + +end_offset1, end_offset2 and and_offset3 are decoded same as offset1, +offset2 and offset3 respectively. + +The first offset in a list of offsets is the distance in bytes between the +offset itself and the first child node. Subsequent offsets are the distance +between previous child node and next child node. Thus each offset links a node +to a child node. The distance is always counted between start addresses, i.e. +first byte in decoded offset or first byte in child node. + +Example 1: + +%% +aa, 1 +a, 2 +%% + +The input is first parsed to a list of words: +["aa1", "a2"] + +A fully expanded graph is created from the words: +source = [node1, node4] +node1 = ("a", [node2]) +node2 = ("a", [node3]) +node3 = ("\x01", [sink]) +node4 = ("a", [node5]) +node5 = ("\x02", [sink]) +sink = None + +Compression results in the following graph: +source = [node1] +node1 = ("a", [node2, node3]) +node2 = ("\x02", [sink]) +node3 = ("a\x01", [sink]) +sink = None + +A C++ representation of the compressed graph is generated: + +const unsigned char dafsa[7] = { + 0x81, 0xE1, 0x02, 0x81, 0x82, 0x61, 0x81, +}; + +The bytes in the generated array has the following meaning: + + 0: 0x81 <end_offset1> child at position 0 + (0x81 & 0x3F) -> jump to 1 + + 1: 0xE1 <end_char> label character (0xE1 & 0x7F) -> match "a" + 2: 0x02 <offset1> child at position 2 + (0x02 & 0x3F) -> jump to 4 + + 3: 0x81 <end_offset1> child at position 4 + (0x81 & 0x3F) -> jump to 5 + 4: 0x82 <return_value> 0x82 & 0x0F -> return 2 + + 5: 0x61 <char> label character 0x61 -> match "a" + 6: 0x81 <return_value> 0x81 & 0x0F -> return 1 + +Example 2: + +%% +aa, 1 +bbb, 2 +baa, 1 +%% + +The input is first parsed to a list of words: +["aa1", "bbb2", "baa1"] + +Compression results in the following graph: +source = [node1, node2] +node1 = ("b", [node2, node3]) +node2 = ("aa\x01", [sink]) +node3 = ("bb\x02", [sink]) +sink = None + +A C++ representation of the compressed graph is generated: + +const unsigned char dafsa[11] = { + 0x02, 0x83, 0xE2, 0x02, 0x83, 0x61, 0x61, 0x81, 0x62, 0x62, 0x82, +}; + +The bytes in the generated array has the following meaning: + + 0: 0x02 <offset1> child at position 0 + (0x02 & 0x3F) -> jump to 2 + 1: 0x83 <end_offset1> child at position 2 + (0x83 & 0x3F) -> jump to 5 + + 2: 0xE2 <end_char> label character (0xE2 & 0x7F) -> match "b" + 3: 0x02 <offset1> child at position 3 + (0x02 & 0x3F) -> jump to 5 + 4: 0x83 <end_offset1> child at position 5 + (0x83 & 0x3F) -> jump to 8 + + 5: 0x61 <char> label character 0x61 -> match "a" + 6: 0x61 <char> label character 0x61 -> match "a" + 7: 0x81 <return_value> 0x81 & 0x0F -> return 1 + + 8: 0x62 <char> label character 0x62 -> match "b" + 9: 0x62 <char> label character 0x62 -> match "b" +10: 0x82 <return_value> 0x82 & 0x0F -> return 2 +""" + +import sys + +class InputError(Exception): + """Exception raised for errors in the input file.""" + + +def to_dafsa(words): + """Generates a DAFSA from a word list and returns the source node. + + Each word is split into characters so that each character is represented by + a unique node. It is assumed the word list is not empty. + """ + if not words: + raise InputError('The domain list must not be empty') + def ToNodes(word): + """Split words into characters""" + if not 0x1F < ord(word[0]) < 0x80: + raise InputError('Domain names must be printable 7-bit ASCII') + if len(word) == 1: + return chr(ord(word[0]) & 0x0F), [None] + return word[0], [ToNodes(word[1:])] + return [ToNodes(word) for word in words] + + +def to_words(node): + """Generates a word list from all paths starting from an internal node.""" + if not node: + return [''] + return [(node[0] + word) for child in node[1] for word in to_words(child)] + + +def reverse(dafsa): + """Generates a new DAFSA that is reversed, so that the old sink node becomes + the new source node. + """ + sink = [] + nodemap = {} + + def dfs(node, parent): + """Creates reverse nodes. + + A new reverse node will be created for each old node. The new node will + get a reversed label and the parents of the old node as children. + """ + if not node: + sink.append(parent) + elif id(node) not in nodemap: + nodemap[id(node)] = (node[0][::-1], [parent]) + for child in node[1]: + dfs(child, nodemap[id(node)]) + else: + nodemap[id(node)][1].append(parent) + + for node in dafsa: + dfs(node, None) + return sink + + +def join_labels(dafsa): + """Generates a new DAFSA where internal nodes are merged if there is a one to + one connection. + """ + parentcount = { id(None): 2 } + nodemap = { id(None): None } + + def count_parents(node): + """Count incoming references""" + if id(node) in parentcount: + parentcount[id(node)] += 1 + else: + parentcount[id(node)] = 1 + for child in node[1]: + count_parents(child) + + def join(node): + """Create new nodes""" + if id(node) not in nodemap: + children = [join(child) for child in node[1]] + if len(children) == 1 and parentcount[id(node[1][0])] == 1: + child = children[0] + nodemap[id(node)] = (node[0] + child[0], child[1]) + else: + nodemap[id(node)] = (node[0], children) + return nodemap[id(node)] + + for node in dafsa: + count_parents(node) + return [join(node) for node in dafsa] + + +def join_suffixes(dafsa): + """Generates a new DAFSA where nodes that represent the same word lists + towards the sink are merged. + """ + nodemap = { frozenset(('',)): None } + + def join(node): + """Returns a macthing node. A new node is created if no matching node + exists. The graph is accessed in dfs order. + """ + suffixes = frozenset(to_words(node)) + if suffixes not in nodemap: + nodemap[suffixes] = (node[0], [join(child) for child in node[1]]) + return nodemap[suffixes] + + return [join(node) for node in dafsa] + + +def top_sort(dafsa): + """Generates list of nodes in topological sort order.""" + incoming = {} + + def count_incoming(node): + """Counts incoming references.""" + if node: + if id(node) not in incoming: + incoming[id(node)] = 1 + for child in node[1]: + count_incoming(child) + else: + incoming[id(node)] += 1 + + for node in dafsa: + count_incoming(node) + + for node in dafsa: + incoming[id(node)] -= 1 + + waiting = [node for node in dafsa if incoming[id(node)] == 0] + nodes = [] + + while waiting: + node = waiting.pop() + assert incoming[id(node)] == 0 + nodes.append(node) + for child in node[1]: + if child: + incoming[id(child)] -= 1 + if incoming[id(child)] == 0: + waiting.append(child) + return nodes + + +def encode_links(children, offsets, current): + """Encodes a list of children as one, two or three byte offsets.""" + if not children[0]: + # This is an <end_label> node and no links follow such nodes + assert len(children) == 1 + return [] + guess = 3 * len(children) + assert children + children = sorted(children, key = lambda x: -offsets[id(x)]) + while True: + offset = current + guess + buf = [] + for child in children: + last = len(buf) + distance = offset - offsets[id(child)] + assert distance > 0 and distance < (1 << 21) + + if distance < (1 << 6): + # A 6-bit offset: "s0xxxxxx" + buf.append(distance) + elif distance < (1 << 13): + # A 13-bit offset: "s10xxxxxxxxxxxxx" + buf.append(0x40 | (distance >> 8)) + buf.append(distance & 0xFF) + else: + # A 21-bit offset: "s11xxxxxxxxxxxxxxxxxxxxx" + buf.append(0x60 | (distance >> 16)) + buf.append((distance >> 8) & 0xFF) + buf.append(distance & 0xFF) + # Distance in first link is relative to following record. + # Distance in other links are relative to previous link. + offset -= distance + if len(buf) == guess: + break + guess = len(buf) + # Set most significant bit to mark end of links in this node. + buf[last] |= (1 << 7) + buf.reverse() + return buf + + +def encode_prefix(label): + """Encodes a node label as a list of bytes without a trailing high byte. + + This method encodes a node if there is exactly one child and the + child follows immidiately after so that no jump is needed. This label + will then be a prefix to the label in the child node. + """ + assert label + return [ord(c) for c in reversed(label)] + + +def encode_label(label): + """Encodes a node label as a list of bytes with a trailing high byte >0x80. + """ + buf = encode_prefix(label) + # Set most significant bit to mark end of label in this node. + buf[0] |= (1 << 7) + return buf + + +def encode(dafsa): + """Encodes a DAFSA to a list of bytes""" + output = [] + offsets = {} + + for node in reversed(top_sort(dafsa)): + if (len(node[1]) == 1 and node[1][0] and + (offsets[id(node[1][0])] == len(output))): + output.extend(encode_prefix(node[0])) + else: + output.extend(encode_links(node[1], offsets, len(output))) + output.extend(encode_label(node[0])) + offsets[id(node)] = len(output) + + output.extend(encode_links(dafsa, offsets, len(output))) + output.reverse() + return output + + +def to_cxx(data): + """Generates C++ code from a list of encoded bytes.""" + text = '/* This file is generated. DO NOT EDIT!\n\n' + text += 'The byte array encodes effective tld names. See make_dafsa.py for' + text += ' documentation.' + text += '*/\n\n' + text += 'const unsigned char kDafsa[%s] = {\n' % len(data) + for i in range(0, len(data), 12): + text += ' ' + text += ', '.join('0x%02x' % byte for byte in data[i:i + 12]) + text += ',\n' + text += '};\n' + return text + + +def words_to_cxx(words): + """Generates C++ code from a word list""" + dafsa = to_dafsa(words) + for fun in (reverse, join_suffixes, reverse, join_suffixes, join_labels): + dafsa = fun(dafsa) + return to_cxx(encode(dafsa)) + + +def parse_gperf(infile): + """Parses gperf file and extract strings and return code""" + lines = [line.strip() for line in infile] + # Extract strings after the first '%%' and before the second '%%'. + begin = lines.index('%%') + 1 + end = lines.index('%%', begin) + lines = lines[begin:end] + for line in lines: + if line[-3:-1] != ', ': + raise InputError('Expected "domainname, <digit>", found "%s"' % line) + # Technically the DAFSA format can support return values in the range + # [0-31], but only the first three bits have any defined meaning. + if not line.endswith(('0', '1', '2', '3', '4', '5', '6', '7')): + raise InputError('Expected value to be in the range of 0-7, found "%s"' % + line[-1]) + return [line[:-3] + line[-1] for line in lines] + + +def main(): + if len(sys.argv) != 3: + print('usage: %s infile outfile' % sys.argv[0]) + return 1 + with open(sys.argv[1], 'r') as infile, open(sys.argv[2], 'w') as outfile: + outfile.write(words_to_cxx(parse_gperf(infile))) + return 0 + + +if __name__ == '__main__': + sys.exit(main())
diff --git a/src/net/tools/dafsa/make_dafsa_unittest.py b/src/net/tools/dafsa/make_dafsa_unittest.py new file mode 100755 index 0000000..65a8244 --- /dev/null +++ b/src/net/tools/dafsa/make_dafsa_unittest.py
@@ -0,0 +1,759 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +import sys +import unittest +import make_dafsa + + +class ParseGperfTest(unittest.TestCase): + def testMalformedKey(self): + """Tests exception is thrown at bad format.""" + infile1 = [ '%%', '', '%%' ] + self.assertRaises(make_dafsa.InputError, make_dafsa.parse_gperf, infile1) + + infile2 = [ '%%', 'apa,1', '%%' ] + self.assertRaises(make_dafsa.InputError, make_dafsa.parse_gperf, infile2) + + infile3 = [ '%%', 'apa, 1', '%%' ] + self.assertRaises(make_dafsa.InputError, make_dafsa.parse_gperf, infile3) + + def testBadValues(self): + """Tests exception is thrown when value is out of range.""" + infile1 = [ '%%', 'a, -1', '%%' ] + self.assertRaises(make_dafsa.InputError, make_dafsa.parse_gperf, infile1) + + infile2 = [ '%%', 'a, x', '%%' ] + self.assertRaises(make_dafsa.InputError, make_dafsa.parse_gperf, infile2) + + infile5 = [ '%%', 'a, 12', '%%' ] + self.assertRaises(make_dafsa.InputError, make_dafsa.parse_gperf, infile5) + + def testValues(self): + """Tests legal values are accepted.""" + infile1 = [ '%%', 'a, 0', '%%' ] + words1 = [ 'a0' ] + self.assertEqual(make_dafsa.parse_gperf(infile1), words1) + + infile2 = [ '%%', 'a, 1', '%%' ] + words2 = [ 'a1' ] + self.assertEqual(make_dafsa.parse_gperf(infile2), words2) + + infile3 = [ '%%', 'a, 2', '%%' ] + words3 = [ 'a2' ] + self.assertEqual(make_dafsa.parse_gperf(infile3), words3) + + infile4 = [ '%%', 'a, 3', '%%' ] + words4 = [ 'a3' ] + self.assertEqual(make_dafsa.parse_gperf(infile4), words4) + + infile5 = [ '%%', 'a, 4', '%%' ] + words5 = [ 'a4' ] + self.assertEqual(make_dafsa.parse_gperf(infile5), words5) + + infile6 = [ '%%', 'a, 6', '%%' ] + words6 = [ 'a6' ] + self.assertEqual(make_dafsa.parse_gperf(infile6), words6) + + def testOneWord(self): + """Tests a single key can be parsed.""" + infile = [ '%%', 'apa, 1', '%%' ] + words = [ 'apa1' ] + self.assertEqual(make_dafsa.parse_gperf(infile), words) + + def testTwoWords(self): + """Tests a sequence of keys can be parsed.""" + infile = [ '%%', 'apa, 1', 'bepa.com, 2', '%%' ] + words = [ 'apa1', 'bepa.com2' ] + self.assertEqual(make_dafsa.parse_gperf(infile), words) + + +class ToDafsaTest(unittest.TestCase): + def testEmptyInput(self): + """Tests exception is thrown at empty input.""" + words = () + self.assertRaises(make_dafsa.InputError, make_dafsa.to_dafsa, words) + + def testNonASCII(self): + """Tests exception is thrown if illegal characters are used.""" + words1 = ( chr(0x1F) + 'a1', ) + self.assertRaises(make_dafsa.InputError, make_dafsa.to_dafsa, words1) + + words2 = ( 'a' + chr(0x1F) + '1', ) + self.assertRaises(make_dafsa.InputError, make_dafsa.to_dafsa, words2) + + words3 = ( chr(0x80) + 'a1', ) + self.assertRaises(make_dafsa.InputError, make_dafsa.to_dafsa, words3) + + words4 = ( 'a' + chr(0x80) + '1', ) + self.assertRaises(make_dafsa.InputError, make_dafsa.to_dafsa, words4) + + def testChar(self): + """Tests a DAFSA can be created from a single character domain name.""" + words = [ 'a0' ] + node2 = ( chr(0), [ None ] ) + node1 = ( 'a', [ node2 ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.to_dafsa(words), source) + + def testChars(self): + """Tests a DAFSA can be created from a multi character domain name.""" + words = [ 'ab0' ] + node3 = ( chr(0), [ None ] ) + node2 = ( 'b', [ node3 ] ) + node1 = ( 'a', [ node2 ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.to_dafsa(words), source) + + def testWords(self): + """Tests a DAFSA can be created from a sequence of domain names.""" + words = [ 'a0', 'b1' ] + node4 = ( chr(1), [ None ] ) + node3 = ( 'b', [ node4 ] ) + node2 = ( chr(0), [ None ] ) + node1 = ( 'a', [ node2 ] ) + source = [ node1, node3 ] + self.assertEqual(make_dafsa.to_dafsa(words), source) + + +class ToWordsTest(unittest.TestCase): + def testSink(self): + """Tests the sink is exapnded to a list with an empty string.""" + node1 = None + words = [ '' ] + self.assertEqual(make_dafsa.to_words(node1), words) + + def testSingleNode(self): + """Tests a single node is expanded to a list with the label string.""" + + # 'ab' -> [ 'ab' ] + + node1 = ( 'ab', [ None ] ) + words = [ 'ab' ] + self.assertEqual(make_dafsa.to_words(node1), words) + + def testChain(self): + """Tests a sequence of nodes are preoperly expanded.""" + + # 'ab' -> 'cd' => [ 'abcd' ] + + node2 = ( 'cd', [ None ] ) + node1 = ( 'ab', [ node2 ] ) + words = [ 'abcd' ] + self.assertEqual(make_dafsa.to_words(node1), words) + + def testInnerTerminator(self): + """Tests a sequence with an inner terminator is expanded to two strings.""" + + # 'a' -> 'b' + # \ => [ 'ab', 'a' ] + # {sink} + + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, None ] ) + words = [ 'ab', 'a' ] + self.assertEqual(make_dafsa.to_words(node1), words) + + def testDiamond(self): + """Tests a diamond can be expanded to a word list.""" + + # 'cd' + # / \ + # 'ab' 'gh' + # \ / + # 'ef' + + node4 = ( 'gh', [ None ] ) + node3 = ( 'ef', [ node4 ] ) + node2 = ( 'cd', [ node4 ] ) + node1 = ( 'ab', [ node2, node3 ] ) + words = [ 'abcdgh', 'abefgh' ] + self.assertEqual(make_dafsa.to_words(node1), words) + + +class JoinLabelsTest(unittest.TestCase): + def testLabel(self): + """Tests a single label passes unchanged.""" + + # 'a' => 'a' + + node1 = ( 'a', [ None ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.join_labels(source), source) + + def testInnerTerminator(self): + """Tests a sequence with an inner terminator passes unchanged.""" + + # 'a' -> 'b' 'a' -> 'b' + # \ => \ + # {sink} {sink} + + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, None ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.join_labels(source), source) + + def testLabels(self): + """Tests a sequence of labels can be joined.""" + + # 'a' -> 'b' => 'ab' + + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2 ] ) + source1 = [ node1 ] + node3 = ( 'ab', [ None ] ) + source2 = [ node3 ] + self.assertEqual(make_dafsa.join_labels(source1), source2) + + def testCompositeLabels(self): + """Tests a sequence of multi character labels can be joined.""" + + # 'ab' -> 'cd' => 'abcd' + + node2 = ( 'cd', [ None ] ) + node1 = ( 'ab', [ node2 ] ) + source1 = [ node1 ] + node3 = ( 'abcd', [ None ] ) + source2 = [ node3 ] + self.assertEqual(make_dafsa.join_labels(source1), source2) + + def testAtomicTrie(self): + """Tests a trie formed DAFSA with atomic labels passes unchanged.""" + + # 'b' 'b' + # / / + # 'a' => 'a' + # \ \ + # 'c' 'c' + + node3 = ( 'c', [ None ] ) + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, node3 ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.join_labels(source), source) + + def testReverseAtomicTrie(self): + """Tests a reverse trie formed DAFSA with atomic labels passes unchanged.""" + + # 'a' 'a' + # \ \ + # 'c' => 'c' + # / / + # 'b' 'b' + + node3 = ( 'c', [ None ] ) + node2 = ( 'b', [ node3 ] ) + node1 = ( 'a', [ node3 ] ) + source = [ node1, node2 ] + self.assertEqual(make_dafsa.join_labels(source), source) + + def testChainedTrie(self): + """Tests a trie formed DAFSA with chained labels can be joined.""" + + # 'c' -> 'd' 'cd' + # / / + # 'a' -> 'b' => 'ab' + # \ \ + # 'e' -> 'f' 'ef' + + node6 = ( 'f', [ None ] ) + node5 = ( 'e', [ node6 ] ) + node4 = ( 'd', [ None ] ) + node3 = ( 'c', [ node4 ] ) + node2 = ( 'b', [ node3, node5 ] ) + node1 = ( 'a', [ node2 ] ) + source1 = [ node1 ] + node9 = ( 'ef', [ None ] ) + node8 = ( 'cd', [ None ] ) + node7 = ( 'ab', [ node8, node9 ] ) + source2 = [ node7 ] + self.assertEqual(make_dafsa.join_labels(source1), source2) + + def testReverseChainedTrie(self): + """Tests a reverse trie formed DAFSA with chained labels can be joined.""" + + # 'a' -> 'b' 'ab' + # \ \ + # 'e' -> 'f' => 'ef' + # / / + # 'c' -> 'd' 'cd' + + node6 = ( 'f', [ None ] ) + node5 = ( 'e', [ node6 ] ) + node4 = ( 'd', [ node5 ] ) + node3 = ( 'c', [ node4 ] ) + node2 = ( 'b', [ node5 ] ) + node1 = ( 'a', [ node2 ] ) + source1 = [ node1, node3 ] + node9 = ( 'ef', [ None ] ) + node8 = ( 'cd', [ node9 ] ) + node7 = ( 'ab', [ node9 ] ) + source2 = [ node7, node8 ] + self.assertEqual(make_dafsa.join_labels(source1), source2) + + +class JoinSuffixesTest(unittest.TestCase): + def testSingleLabel(self): + """Tests a single label passes unchanged.""" + + # 'a' => 'a' + + node1 = ( 'a', [ None ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.join_suffixes(source), source) + + def testInnerTerminator(self): + """Tests a sequence with an inner terminator passes unchanged.""" + + # 'a' -> 'b' 'a' -> 'b' + # \ => \ + # {sink} {sink} + + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, None ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.join_suffixes(source), source) + + def testDistinctTrie(self): + """Tests a trie formed DAFSA with distinct labels passes unchanged.""" + + # 'b' 'b' + # / / + # 'a' => 'a' + # \ \ + # 'c' 'c' + + node3 = ( 'c', [ None ] ) + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, node3 ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.join_suffixes(source), source) + + def testReverseDistinctTrie(self): + """Tests a reverse trie formed DAFSA with distinct labels passes unchanged. + """ + + # 'a' 'a' + # \ \ + # 'c' => 'c' + # / / + # 'b' 'b' + + node3 = ( 'c', [ None ] ) + node2 = ( 'b', [ node3 ] ) + node1 = ( 'a', [ node3 ] ) + source = [ node1, node2 ] + self.assertEqual(make_dafsa.join_suffixes(source), source) + + def testJoinTwoHeads(self): + """Tests two heads can be joined even if there is something else between.""" + + # 'a' ------'a' + # / + # 'b' => 'b' / + # / + # 'a' --- + # + # The picture above should shows that the new version should have just one + # instance of the node with label 'a'. + + node3 = ( 'a', [ None ] ) + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ None ] ) + source1 = [ node1, node2, node3 ] + source2 = make_dafsa.join_suffixes(source1) + + # Both versions should expand to the same content. + self.assertEqual(source1, source2) + # But the new version should have just one instance of 'a'. + self.assertIs(source2[0], source2[2]) + + def testJoinTails(self): + """Tests tails can be joined.""" + + # 'a' -> 'c' 'a' + # \ + # => 'c' + # / + # 'b' -> 'c' 'b' + + node4 = ( 'c', [ None ] ) + node3 = ( 'b', [ node4 ] ) + node2 = ( 'c', [ None ] ) + node1 = ( 'a', [ node2 ] ) + source1 = [ node1, node3 ] + source2 = make_dafsa.join_suffixes(source1) + + # Both versions should expand to the same content. + self.assertEqual(source1, source2) + # But the new version should have just one tail. + self.assertIs(source2[0][1][0], source2[1][1][0]) + + def testMakeRecursiveTrie(self): + """Tests recursive suffix join.""" + + # 'a' -> 'e' -> 'g' 'a' + # \ + # 'e' + # / \ + # 'b' -> 'e' -> 'g' 'b' \ + # \ + # => 'g' + # / + # 'c' -> 'f' -> 'g' 'c' / + # \ / + # 'f' + # / + # 'd' -> 'f' -> 'g' 'd' + + node7 = ( 'g', [ None ] ) + node6 = ( 'f', [ node7 ] ) + node5 = ( 'e', [ node7 ] ) + node4 = ( 'd', [ node6 ] ) + node3 = ( 'c', [ node6 ] ) + node2 = ( 'b', [ node5 ] ) + node1 = ( 'a', [ node5 ] ) + source1 = [ node1, node2, node3, node4 ] + source2 = make_dafsa.join_suffixes(source1) + + # Both versions should expand to the same content. + self.assertEqual(source1, source2) + # But the new version should have just one 'e'. + self.assertIs(source2[0][1][0], source2[1][1][0]) + # And one 'f'. + self.assertIs(source2[2][1][0], source2[3][1][0]) + # And one 'g'. + self.assertIs(source2[0][1][0][1][0], source2[2][1][0][1][0]) + + def testMakeDiamond(self): + """Test we can join suffixes of a trie.""" + + # 'b' -> 'd' 'b' + # / / \ + # 'a' => 'a' 'd' + # \ \ / + # 'c' -> 'd' 'c' + + node5 = ( 'd', [ None ] ) + node4 = ( 'c', [ node5 ] ) + node3 = ( 'd', [ None ] ) + node2 = ( 'b', [ node3 ] ) + node1 = ( 'a', [ node2, node4 ] ) + source1 = [ node1 ] + source2 = make_dafsa.join_suffixes(source1) + + # Both versions should expand to the same content. + self.assertEqual(source1, source2) + # But the new version should have just one 'd'. + self.assertIs(source2[0][1][0][1][0], source2[0][1][1][1][0]) + + def testJoinOneChild(self): + """Tests that we can join some children but not all.""" + + # 'c' ----'c' + # / / / + # 'a' 'a' / + # \ \ / + # 'd' 'd'/ + # => / + # 'c' / + # / / + # 'b' 'b' + # \ \ + # 'e' 'e' + + node6 = ( 'e', [ None ] ) + node5 = ( 'c', [ None ] ) + node4 = ( 'b', [ node5, node6 ] ) + node3 = ( 'd', [ None ] ) + node2 = ( 'c', [ None ] ) + node1 = ( 'a', [ node2, node3 ] ) + source1 = [ node1, node4 ] + source2 = make_dafsa.join_suffixes(source1) + + # Both versions should expand to the same content. + self.assertEqual(source1, source2) + # But the new version should have just one 'c'. + self.assertIs(source2[0][1][0], source2[1][1][0]) + + +class ReverseTest(unittest.TestCase): + def testAtomicLabel(self): + """Tests an atomic label passes unchanged.""" + + # 'a' => 'a' + + node1 = ( 'a', [ None ] ) + source = [ node1 ] + self.assertEqual(make_dafsa.reverse(source), source) + + def testLabel(self): + """Tests that labels are reversed.""" + + # 'ab' => 'ba' + + node1 = ( 'ab', [ None ] ) + source1 = [ node1 ] + node2 = ( 'ba', [ None ] ) + source2 = [ node2 ] + self.assertEqual(make_dafsa.reverse(source1), source2) + + def testChain(self): + """Tests that edges are reversed.""" + + # 'a' -> 'b' => 'b' -> 'a' + + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2 ] ) + source1 = [ node1 ] + node4 = ( 'a', [ None ] ) + node3 = ( 'b', [ node4 ] ) + source2 = [ node3 ] + self.assertEqual(make_dafsa.reverse(source1), source2) + + def testInnerTerminator(self): + """Tests a sequence with an inner terminator can be reversed.""" + + # 'a' -> 'b' 'b' -> 'a' + # \ => / + # {sink} ------ + + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, None ] ) + source1 = [ node1 ] + node4 = ( 'a', [ None ] ) + node3 = ( 'b', [ node4 ] ) + source2 = [ node3, node4 ] + self.assertEqual(make_dafsa.reverse(source1), source2) + + def testAtomicTrie(self): + """Tests a trie formed DAFSA can be reversed.""" + + # 'b' 'b' + # / \ + # 'a' => 'a' + # \ / + # 'c' 'c' + + node3 = ( 'c', [ None ] ) + node2 = ( 'b', [ None ] ) + node1 = ( 'a', [ node2, node3 ] ) + source1 = [ node1 ] + node6 = ( 'a', [ None ] ) + node5 = ( 'c', [ node6 ] ) + node4 = ( 'b', [ node6 ] ) + source2 = [ node4, node5 ] + self.assertEqual(make_dafsa.reverse(source1), source2) + + def testReverseAtomicTrie(self): + """Tests a reverse trie formed DAFSA can be reversed.""" + + # 'a' 'a' + # \ / + # 'c' => 'c' + # / \ + # 'b' 'b' + + node3 = ( 'c', [ None ] ) + node2 = ( 'b', [ node3 ] ) + node1 = ( 'a', [ node3 ] ) + source1 = [ node1, node2 ] + node6 = ( 'b', [ None ] ) + node5 = ( 'a', [ None ] ) + node4 = ( 'c', [ node5, node6 ] ) + source2 = [ node4 ] + self.assertEqual(make_dafsa.reverse(source1), source2) + + def testDiamond(self): + """Tests we can reverse both edges and nodes in a diamond.""" + + # 'cd' 'dc' + # / \ / \ + # 'ab' 'gh' => 'hg' 'ba' + # \ / \ / + # 'ef' 'fe' + + node4 = ( 'gh', [ None ] ) + node3 = ( 'ef', [ node4 ] ) + node2 = ( 'cd', [ node4 ] ) + node1 = ( 'ab', [ node2, node3 ] ) + source1 = [ node1 ] + node8 = ( 'ba', [ None ] ) + node7 = ( 'fe', [ node8 ] ) + node6 = ( 'dc', [ node8 ] ) + node5 = ( 'hg', [ node6, node7 ] ) + source2 = [ node5 ] + self.assertEqual(make_dafsa.reverse(source1), source2) + + +class TopSortTest(unittest.TestCase): + def testNode(self): + """Tests a DAFSA with one node can be sorted.""" + + # 'a' => [ 'a' ] + + node1 = ( 'a', [ None ] ) + source = [ node1 ] + nodes = [ node1 ] + self.assertEqual(make_dafsa.top_sort(source), nodes) + + def testDiamond(self): + """Tests nodes in a diamond can be sorted.""" + + # 'b' + # / \ + # 'a' 'd' + # \ / + # 'c' + + node4 = ( 'd', [ None ] ) + node3 = ( 'c', [ node4 ] ) + node2 = ( 'b', [ node4 ] ) + node1 = ( 'a', [ node2, node3 ] ) + source = [ node1 ] + nodes = make_dafsa.top_sort(source) + self.assertLess(nodes.index(node1), nodes.index(node2)) + self.assertLess(nodes.index(node2), nodes.index(node4)) + self.assertLess(nodes.index(node3), nodes.index(node4)) + + +class EncodePrefixTest(unittest.TestCase): + def testChar(self): + """Tests to encode a single character prefix.""" + label = 'a' + bytes = [ ord('a') ] + self.assertEqual(make_dafsa.encode_prefix(label), bytes) + + def testChars(self): + """Tests to encode a multi character prefix.""" + label = 'ab' + bytes = [ ord('b'), ord('a') ] + self.assertEqual(make_dafsa.encode_prefix(label), bytes) + + +class EncodeLabelTest(unittest.TestCase): + def testChar(self): + """Tests to encode a single character label.""" + label = 'a' + bytes = [ ord('a') + 0x80 ] + self.assertEqual(make_dafsa.encode_label(label), bytes) + + def testChars(self): + """Tests to encode a multi character label.""" + label = 'ab' + bytes = [ ord('b') + 0x80, ord('a') ] + self.assertEqual(make_dafsa.encode_label(label), bytes) + + +class EncodeLinksTest(unittest.TestCase): + def testEndLabel(self): + """Tests to encode link to the sink.""" + children = [ None ] + offsets = {} + bytes = 0 + output = [] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testOneByteOffset(self): + """Tests to encode a single one byte offset.""" + node = ( '', [ None ] ) + children = [ node ] + offsets = { id(node) : 2 } + bytes = 5 + output = [ 132 ] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testOneByteOffsets(self): + """Tests to encode a sequence of one byte offsets.""" + node1 = ( '', [ None ] ) + node2 = ( '', [ None ] ) + children = [ node1, node2 ] + offsets = { id(node1) : 2, id(node2) : 1 } + bytes = 5 + output = [ 129, 5 ] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testTwoBytesOffset(self): + """Tests to encode a single two byte offset.""" + node = ( '', [ None ] ) + children = [ node ] + offsets = { id(node) : 2 } + bytes = 1005 + output = [ 237, 195] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testTwoBytesOffsets(self): + """Tests to encode a sequence of two byte offsets.""" + node1 = ( '', [ None ] ) + node2 = ( '', [ None ] ) + node3 = ( '', [ None ] ) + children = [ node1, node2, node3 ] + offsets = { id(node1) : 1002, id(node2) : 2, id(node3) : 2002 } + bytes = 3005 + output = [ 232, 195, 232, 67, 241, 67 ] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testThreeBytesOffset(self): + """Tests to encode a single three byte offset.""" + node = ( '', [ None ] ) + children = [ node ] + offsets = { id(node) : 2 } + bytes = 100005 + output = [ 166, 134, 225 ] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testThreeBytesOffsets(self): + """Tests to encode a sequence of three byte offsets.""" + node1 = ( '', [ None ] ) + node2 = ( '', [ None ] ) + node3 = ( '', [ None ] ) + children = [ node1, node2, node3 ] + offsets = { id(node1) : 100002, id(node2) : 2, id(node3) : 200002 } + bytes = 300005 + output = [ 160, 134, 225, 160, 134, 97, 172, 134, 97 ] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + def testOneTwoThreeBytesOffsets(self): + """Tests to encode offsets of different sizes.""" + node1 = ( '', [ None ] ) + node2 = ( '', [ None ] ) + node3 = ( '', [ None ] ) + children = [ node1, node2, node3 ] + offsets = { id(node1) : 10003, id(node2) : 10002, id(node3) : 100002 } + bytes = 300005 + output = [ 129, 143, 95, 97, 74, 13, 99 ] + self.assertEqual(make_dafsa.encode_links(children, offsets, bytes), + output) + + +class ExamplesTest(unittest.TestCase): + def testExample1(self): + """Tests Example 1 from make_dafsa.py.""" + infile = [ '%%', 'aa, 1', 'a, 2', '%%' ] + bytes = [ 0x81, 0xE1, 0x02, 0x81, 0x82, 0x61, 0x81 ] + outfile = make_dafsa.to_cxx(bytes) + self.assertEqual(make_dafsa.words_to_cxx(make_dafsa.parse_gperf(infile)), + outfile) + + def testExample2(self): + """Tests Example 2 from make_dafsa.py.""" + infile = [ '%%', 'aa, 1', 'bbb, 2', 'baa, 1', '%%' ] + bytes = [ 0x02, 0x83, 0xE2, 0x02, 0x83, 0x61, 0x61, 0x81, 0x62, 0x62, + 0x82 ] + outfile = make_dafsa.to_cxx(bytes) + self.assertEqual(make_dafsa.words_to_cxx(make_dafsa.parse_gperf(infile)), + outfile) + + +if __name__ == '__main__': + unittest.main()