From 0e4996202b2e3f24576b3b5d06eb56ad393a3cba Mon Sep 17 00:00:00 2001 From: Shannon Weyrick Date: Mon, 15 Mar 2021 20:23:10 -0400 Subject: [PATCH 1/4] s/vizer/visor --- CMakeLists.txt | 2 +- cmd/pktvisor-pcap/main.cpp | 4 +- cmd/pktvisord/main.cpp | 4 +- integration_tests/CMakeLists.txt | 10 ++--- src/AbstractManager.h | 2 +- src/AbstractMetricsManager.h | 2 +- src/AbstractModule.h | 2 +- src/AbstractPlugin.cpp | 2 +- src/AbstractPlugin.h | 2 +- src/CMakeLists.txt | 12 +++--- src/CoreServer.cpp | 12 +++--- src/CoreServer.h | 4 +- src/GeoDB.cpp | 2 +- src/GeoDB.h | 2 +- src/HandlerManager.h | 2 +- src/HandlerModulePlugin.cpp | 2 +- src/HandlerModulePlugin.h | 8 ++-- src/HttpServer.h | 2 +- src/InputModulePlugin.cpp | 2 +- src/InputModulePlugin.h | 6 +-- src/InputStream.h | 2 +- src/InputStreamManager.h | 2 +- src/StreamHandler.h | 2 +- src/handlers/dns/DnsHandlerModulePlugin.cpp | 8 ++-- src/handlers/dns/DnsHandlerModulePlugin.h | 4 +- src/handlers/dns/DnsLayer.cpp | 6 +-- src/handlers/dns/DnsLayer.h | 8 ++-- src/handlers/dns/DnsLayerEnums.h | 8 ++-- src/handlers/dns/DnsResource.cpp | 2 +- src/handlers/dns/DnsResource.h | 6 +-- src/handlers/dns/DnsResourceData.cpp | 2 +- src/handlers/dns/DnsResourceData.h | 6 +-- src/handlers/dns/DnsStreamHandler.cpp | 4 +- src/handlers/dns/DnsStreamHandler.h | 18 ++++----- src/handlers/dns/dns.cpp | 2 +- src/handlers/dns/dns.h | 2 +- src/handlers/dns/querypairmgr.cpp | 2 +- src/handlers/dns/querypairmgr.h | 2 +- src/handlers/dns/tests/test_dns.cpp | 2 +- src/handlers/dns/tests/test_dns_layer.cpp | 4 +- src/handlers/net/NetHandlerModulePlugin.cpp | 8 ++-- src/handlers/net/NetHandlerModulePlugin.h | 4 +- src/handlers/net/NetStreamHandler.cpp | 4 +- src/handlers/net/NetStreamHandler.h | 18 ++++----- src/handlers/net/tests/test_net_layer.cpp | 4 +- src/inputs/pcap/PcapInputModulePlugin.cpp | 6 +-- src/inputs/pcap/PcapInputModulePlugin.h | 6 +-- src/inputs/pcap/PcapInputStream.cpp | 4 +- src/inputs/pcap/PcapInputStream.h | 6 +-- src/inputs/pcap/afpacket.cpp | 2 +- src/inputs/pcap/afpacket.h | 4 +- src/inputs/pcap/tests/test_utils.cpp | 4 +- src/inputs/pcap/utils.cpp | 2 +- src/inputs/pcap/utils.h | 2 +- src/tests/test_geoip.cpp | 42 ++++++++++----------- src/tests/test_metrics.cpp | 2 +- 56 files changed, 147 insertions(+), 147 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e09ace96b..94e59b738 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.13) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") # this is the source of truth for version, which will be written to config.h include file. -project(vizer VERSION 3.2.0) +project(visor VERSION 3.2.0) set(VIZER_PRERELEASE "-develop") set(VIZER_VERSION_NUM "${PROJECT_VERSION}${VIZER_PRERELEASE}") set(VIZER_VERSION " pktvisor ${PROJECT_VERSION}${VIZER_PRERELEASE}") diff --git a/cmd/pktvisor-pcap/main.cpp b/cmd/pktvisor-pcap/main.cpp index c2eb639cc..374315b12 100644 --- a/cmd/pktvisor-pcap/main.cpp +++ b/cmd/pktvisor-pcap/main.cpp @@ -19,7 +19,7 @@ #include "handlers/static_plugins.h" #include "inputs/static_plugins.h" -#include "vizer_config.h" +#include "visor_config.h" #include "GeoDB.h" #include "handlers/dns/DnsStreamHandler.h" @@ -58,7 +58,7 @@ void signal_handler(int signal) } } -using namespace vizer; +using namespace visor; typedef Corrade::PluginManager::Manager InputPluginRegistry; typedef Corrade::PluginManager::Manager HandlerPluginRegistry; diff --git a/cmd/pktvisord/main.cpp b/cmd/pktvisord/main.cpp index bd57f491e..5e5b25343 100644 --- a/cmd/pktvisord/main.cpp +++ b/cmd/pktvisord/main.cpp @@ -8,7 +8,7 @@ #include "CoreServer.h" #include "handlers/static_plugins.h" #include "inputs/static_plugins.h" -#include "vizer_config.h" +#include "visor_config.h" #include #include #include @@ -63,7 +63,7 @@ void signal_handler(int signal) } } -using namespace vizer; +using namespace visor; void initialize_geo(const docopt::value &city, const docopt::value &asn) { diff --git a/integration_tests/CMakeLists.txt b/integration_tests/CMakeLists.txt index 7ad847299..63169655e 100644 --- a/integration_tests/CMakeLists.txt +++ b/integration_tests/CMakeLists.txt @@ -6,16 +6,16 @@ set(PCAP_BINARY ${CMAKE_BINARY_DIR}/bin/pktvisor-pcap) set(INT_SH ${CMAKE_SOURCE_DIR}/integration_tests/integration.sh) set(WORKING_DIR ${CMAKE_SOURCE_DIR}/integration_tests) -macro(vizer_int_test name) +macro(visor_int_test name) add_test(NAME ${name} WORKING_DIRECTORY ${WORKING_DIR} COMMAND ${INT_SH} ${PCAP_BINARY} ${TEMPLATE_DIR}/${name} -- ${HOST_VAR} --geo-city ${FIXTURE_DIR}/GeoIP2-City-Test.mmdb --geo-asn ${FIXTURE_DIR}/GeoIP2-ISP-Test.mmdb ${FIXTURE_DIR}/${name}.pcap) endmacro() -vizer_int_test(dns_ipv4_udp) -vizer_int_test(dns_ipv4_tcp) -vizer_int_test(dns_ipv6_udp) -vizer_int_test(dns_ipv6_tcp) +visor_int_test(dns_ipv4_udp) +visor_int_test(dns_ipv4_tcp) +visor_int_test(dns_ipv6_udp) +visor_int_test(dns_ipv6_tcp) # this allows local, non-public integration tests (for example, on private pcap data) #add_test(NAME external-tests diff --git a/src/AbstractManager.h b/src/AbstractManager.h index 523691a98..e45f690b0 100644 --- a/src/AbstractManager.h +++ b/src/AbstractManager.h @@ -11,7 +11,7 @@ #include #include -namespace vizer { +namespace visor { /** * called from HTTP threads so must be thread safe diff --git a/src/AbstractMetricsManager.h b/src/AbstractMetricsManager.h index c8a5a24f1..054537cf8 100644 --- a/src/AbstractMetricsManager.h +++ b/src/AbstractMetricsManager.h @@ -22,7 +22,7 @@ #include #include #include -namespace vizer { +namespace visor { using json = nlohmann::json; diff --git a/src/AbstractModule.h b/src/AbstractModule.h index b5d6e7fc0..6423f3483 100644 --- a/src/AbstractModule.h +++ b/src/AbstractModule.h @@ -12,7 +12,7 @@ #include #include -namespace vizer { +namespace visor { using json = nlohmann::json; diff --git a/src/AbstractPlugin.cpp b/src/AbstractPlugin.cpp index 46ccac514..04c055d1a 100644 --- a/src/AbstractPlugin.cpp +++ b/src/AbstractPlugin.cpp @@ -6,7 +6,7 @@ #include #include -namespace vizer { +namespace visor { void AbstractPlugin::_check_schema(json obj, SchemaMap &required, SchemaMap &optional) { diff --git a/src/AbstractPlugin.h b/src/AbstractPlugin.h index b4bd9cfa1..a292b2f42 100644 --- a/src/AbstractPlugin.h +++ b/src/AbstractPlugin.h @@ -11,7 +11,7 @@ #include #include -namespace vizer { +namespace visor { using json = nlohmann::json; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bc8d51a04..5fa06206c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,27 +1,27 @@ -message(STATUS "vizer-core") +message(STATUS "visor-core") find_package(Corrade REQUIRED PluginManager) set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS ON) -add_library(vizer-core +add_library(visor-core AbstractPlugin.cpp InputModulePlugin.cpp HandlerModulePlugin.cpp GeoDB.cpp CoreServer.cpp ) -add_library(Vizer::Core ALIAS vizer-core) +add_library(Vizer::Core ALIAS visor-core) -target_include_directories(vizer-core +target_include_directories(visor-core PRIVATE ${CMAKE_BINARY_DIR}/src # Vizer::Core config.h INTERFACE $ ) -target_link_libraries(vizer-core +target_link_libraries(visor-core PUBLIC datasketches rng @@ -33,7 +33,7 @@ target_link_libraries(vizer-core ${VIZER_STATIC_PLUGINS} ) -configure_file(vizer_config.h.in vizer_config.h @ONLY) +configure_file(visor_config.h.in visor_config.h @ONLY) add_subdirectory(inputs) add_subdirectory(handlers) diff --git a/src/CoreServer.cpp b/src/CoreServer.cpp index fd79f4a12..d16c34287 100644 --- a/src/CoreServer.cpp +++ b/src/CoreServer.cpp @@ -3,12 +3,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include "CoreServer.h" -#include "vizer_config.h" +#include "visor_config.h" #include #include #include -vizer::CoreServer::CoreServer(bool read_only, std::shared_ptr logger) +visor::CoreServer::CoreServer(bool read_only, std::shared_ptr logger) : _svr(read_only) , _logger(logger) , _start_time(std::chrono::system_clock::now()) @@ -38,7 +38,7 @@ vizer::CoreServer::CoreServer(bool read_only, std::shared_ptr lo _setup_routes(); } -void vizer::CoreServer::start(const std::string &host, int port) +void visor::CoreServer::start(const std::string &host, int port) { if (!_svr.bind_to_port(host.c_str(), port)) { throw std::runtime_error("unable to bind host/port"); @@ -48,7 +48,7 @@ void vizer::CoreServer::start(const std::string &host, int port) throw std::runtime_error("error during listen"); } } -void vizer::CoreServer::stop() +void visor::CoreServer::stop() { _svr.stop(); @@ -68,11 +68,11 @@ void vizer::CoreServer::stop() } } } -vizer::CoreServer::~CoreServer() +visor::CoreServer::~CoreServer() { stop(); } -void vizer::CoreServer::_setup_routes() +void visor::CoreServer::_setup_routes() { _logger->info("Initialize server control plane"); diff --git a/src/CoreServer.h b/src/CoreServer.h index 818b4be07..dc8ff112c 100644 --- a/src/CoreServer.h +++ b/src/CoreServer.h @@ -14,7 +14,7 @@ #include #include -namespace vizer { +namespace visor { class CoreServer { @@ -31,7 +31,7 @@ class CoreServer HandlerPluginRegistry _handler_registry; std::vector _handler_plugins; - vizer::HttpServer _svr; + visor::HttpServer _svr; std::unique_ptr _input_manager; std::unique_ptr _handler_manager; diff --git a/src/GeoDB.cpp b/src/GeoDB.cpp index 92346856d..e78ae5274 100644 --- a/src/GeoDB.cpp +++ b/src/GeoDB.cpp @@ -6,7 +6,7 @@ #include #include -namespace vizer::geo { +namespace visor::geo { MaxmindDB &GeoIP() { diff --git a/src/GeoDB.h b/src/GeoDB.h index 9300473e8..99684e69d 100644 --- a/src/GeoDB.h +++ b/src/GeoDB.h @@ -7,7 +7,7 @@ #include #include -namespace vizer::geo { +namespace visor::geo { class MaxmindDB { diff --git a/src/HandlerManager.h b/src/HandlerManager.h index 936905cc8..6bce028b0 100644 --- a/src/HandlerManager.h +++ b/src/HandlerManager.h @@ -7,7 +7,7 @@ #include "AbstractManager.h" #include "StreamHandler.h" -namespace vizer { +namespace visor { /** * called from HTTP threads so must be thread safe diff --git a/src/HandlerModulePlugin.cpp b/src/HandlerModulePlugin.cpp index 3f1c98dbd..8859c0d3f 100644 --- a/src/HandlerModulePlugin.cpp +++ b/src/HandlerModulePlugin.cpp @@ -6,7 +6,7 @@ #include #include -namespace vizer { +namespace visor { void HandlerModulePlugin::init_module(InputStreamManager *im, HandlerManager *hm, HttpServer &svr) diff --git a/src/HandlerModulePlugin.h b/src/HandlerModulePlugin.h index b79e9a39c..b568ff16e 100644 --- a/src/HandlerModulePlugin.h +++ b/src/HandlerModulePlugin.h @@ -9,20 +9,20 @@ #include "InputStreamManager.h" #include -namespace vizer { +namespace visor { class HandlerModulePlugin : public AbstractPlugin { protected: - vizer::InputStreamManager *_input_manager; - vizer::HandlerManager *_handler_manager; + visor::InputStreamManager *_input_manager; + visor::HandlerManager *_handler_manager; virtual void _setup_routes(HttpServer &svr) = 0; public: static std::string pluginInterface() { - return "dev.vizer.module.handler/1.0"; + return "dev.visor.module.handler/1.0"; } static std::vector pluginSearchPaths() diff --git a/src/HttpServer.h b/src/HttpServer.h index b57581bbc..b3a7bee8e 100644 --- a/src/HttpServer.h +++ b/src/HttpServer.h @@ -7,7 +7,7 @@ #include #include -namespace vizer { +namespace visor { class HttpServer : public httplib::Server { bool _read_only = true; diff --git a/src/InputModulePlugin.cpp b/src/InputModulePlugin.cpp index 3719eb354..3b571c788 100644 --- a/src/InputModulePlugin.cpp +++ b/src/InputModulePlugin.cpp @@ -6,7 +6,7 @@ #include #include -namespace vizer { +namespace visor { void InputModulePlugin::init_module(InputStreamManager *im, HttpServer &svr) { diff --git a/src/InputModulePlugin.h b/src/InputModulePlugin.h index 6da6e3fcc..079395a87 100644 --- a/src/InputModulePlugin.h +++ b/src/InputModulePlugin.h @@ -8,20 +8,20 @@ #include "InputStreamManager.h" #include -namespace vizer { +namespace visor { class InputModulePlugin : public AbstractPlugin { protected: - vizer::InputStreamManager *_input_manager; + visor::InputStreamManager *_input_manager; virtual void _setup_routes(HttpServer &svr) = 0; public: static std::string pluginInterface() { - return "dev.vizer.module.input/1.0"; + return "dev.visor.module.input/1.0"; } static std::vector pluginSearchPaths() diff --git a/src/InputStream.h b/src/InputStream.h index 48476cde0..19d5a6852 100644 --- a/src/InputStream.h +++ b/src/InputStream.h @@ -7,7 +7,7 @@ #include "AbstractModule.h" #include "StreamHandler.h" -namespace vizer { +namespace visor { class InputStream : public AbstractModule { diff --git a/src/InputStreamManager.h b/src/InputStreamManager.h index f0cd4e07b..7ce3fa0d4 100644 --- a/src/InputStreamManager.h +++ b/src/InputStreamManager.h @@ -7,7 +7,7 @@ #include "AbstractManager.h" #include "InputStream.h" -namespace vizer { +namespace visor { /** * called from HTTP threads so must be thread safe diff --git a/src/StreamHandler.h b/src/StreamHandler.h index 2360a3cc7..4ae6a9c0d 100644 --- a/src/StreamHandler.h +++ b/src/StreamHandler.h @@ -9,7 +9,7 @@ #include #include -namespace vizer { +namespace visor { using json = nlohmann::json; diff --git a/src/handlers/dns/DnsHandlerModulePlugin.cpp b/src/handlers/dns/DnsHandlerModulePlugin.cpp index f5ab85426..4f4115c03 100644 --- a/src/handlers/dns/DnsHandlerModulePlugin.cpp +++ b/src/handlers/dns/DnsHandlerModulePlugin.cpp @@ -8,12 +8,12 @@ #include #include -CORRADE_PLUGIN_REGISTER(VizerHandlerDns, vizer::handler::dns::DnsHandlerModulePlugin, - "dev.vizer.module.handler/1.0") +CORRADE_PLUGIN_REGISTER(VizerHandlerDns, visor::handler::dns::DnsHandlerModulePlugin, + "dev.visor.module.handler/1.0") -namespace vizer::handler::dns { +namespace visor::handler::dns { -using namespace vizer::input::pcap; +using namespace visor::input::pcap; using json = nlohmann::json; void DnsHandlerModulePlugin::_setup_routes(HttpServer &svr) diff --git a/src/handlers/dns/DnsHandlerModulePlugin.h b/src/handlers/dns/DnsHandlerModulePlugin.h index 21aa68ac2..0f84102ee 100644 --- a/src/handlers/dns/DnsHandlerModulePlugin.h +++ b/src/handlers/dns/DnsHandlerModulePlugin.h @@ -6,7 +6,7 @@ #include "HandlerModulePlugin.h" -namespace vizer::handler::dns { +namespace visor::handler::dns { class DnsHandlerModulePlugin : public HandlerModulePlugin { @@ -16,7 +16,7 @@ class DnsHandlerModulePlugin : public HandlerModulePlugin public: explicit DnsHandlerModulePlugin(Corrade::PluginManager::AbstractManager &manager, const std::string &plugin) - : vizer::HandlerModulePlugin{manager, plugin} + : visor::HandlerModulePlugin{manager, plugin} { } diff --git a/src/handlers/dns/DnsLayer.cpp b/src/handlers/dns/DnsLayer.cpp index 9e319b8c7..ae475ff8b 100644 --- a/src/handlers/dns/DnsLayer.cpp +++ b/src/handlers/dns/DnsLayer.cpp @@ -12,7 +12,7 @@ #include #include -namespace vizer::handler::dns { +namespace visor::handler::dns { DnsLayer::DnsLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, pcpp::Packet *packet) : Layer(data, dataLen, prevLayer, packet) @@ -23,7 +23,7 @@ DnsLayer::DnsLayer(uint8_t *data, size_t dataLen, Layer *prevLayer, pcpp::Packet m_FirstQuery = NULL; m_FirstAnswer = NULL; m_FirstAuthority = NULL; - m_FirstAdditional = NULL; + m_FirstAdditional = NULL; } @@ -838,4 +838,4 @@ bool DnsLayer::removeResource(IDnsResource* resourceToRemove) return true; } -} // namespace vizer +} // namespace visor diff --git a/src/handlers/dns/DnsLayer.h b/src/handlers/dns/DnsLayer.h index 868a49fb2..73d774de2 100644 --- a/src/handlers/dns/DnsLayer.h +++ b/src/handlers/dns/DnsLayer.h @@ -17,9 +17,9 @@ /// @file /** - * \namespace vizer + * \namespace visor */ -namespace vizer::handler::dns { +namespace visor::handler::dns { /** * @struct dnshdr @@ -29,7 +29,7 @@ namespace vizer::handler::dns { #pragma pack(push, 1) struct dnshdr { /** DNS query identification */ - uint16_t transactionID; + uint16_t transactionID; #if (BYTE_ORDER == LITTLE_ENDIAN) uint16_t /** Recursion desired flag */ @@ -485,6 +485,6 @@ struct dnshdr { } } - } // namespace vizer + } // namespace visor #endif /* PV_PACKETPP_DNS_LAYER */ diff --git a/src/handlers/dns/DnsLayerEnums.h b/src/handlers/dns/DnsLayerEnums.h index 91ec9fcd0..620761e7e 100644 --- a/src/handlers/dns/DnsLayerEnums.h +++ b/src/handlers/dns/DnsLayerEnums.h @@ -4,9 +4,9 @@ /// @file /** - * \namespace vizer + * \namespace visor */ -namespace vizer::handler::dns { +namespace visor::handler::dns { /** * An enum for all possible DNS record types */ @@ -16,8 +16,8 @@ enum DnsType { /** Name Server record */ DNS_TYPE_NS, /** Obsolete, replaced by MX */ - DNS_TYPE_MD, - /** Obsolete, replaced by MX */ + DNS_TYPE_MD, + /** Obsolete, replaced by MX */ DNS_TYPE_MF, /** Canonical name record */ DNS_TYPE_CNAME, diff --git a/src/handlers/dns/DnsResource.cpp b/src/handlers/dns/DnsResource.cpp index 466cd6434..59d5296b9 100644 --- a/src/handlers/dns/DnsResource.cpp +++ b/src/handlers/dns/DnsResource.cpp @@ -9,7 +9,7 @@ #include #include -namespace vizer::handler::dns { +namespace visor::handler::dns { IDnsResource::IDnsResource(DnsLayer *dnsLayer, size_t offsetInLayer) : m_DnsLayer(dnsLayer) diff --git a/src/handlers/dns/DnsResource.h b/src/handlers/dns/DnsResource.h index 8c79ad4d7..a8f1d2df8 100644 --- a/src/handlers/dns/DnsResource.h +++ b/src/handlers/dns/DnsResource.h @@ -11,9 +11,9 @@ /// @file /** - * \namespace vizer + * \namespace visor */ -namespace vizer::handler::dns { +namespace visor::handler::dns { // forward declarations class DnsLayer; class IDnsResourceData; @@ -24,7 +24,7 @@ class DnsResourceDataPtr; * An abstract class for representing all types of DNS records. This class gives access to all available record data such as DNS type, class, * name, type of record, etc. The DnsLayer holds an instance of (inherited type of) this class for each DNS record in the DNS packet */ - class IDnsResource +class IDnsResource { protected: friend class DnsLayer; diff --git a/src/handlers/dns/DnsResourceData.cpp b/src/handlers/dns/DnsResourceData.cpp index 78c5e974b..1d570bbcf 100644 --- a/src/handlers/dns/DnsResourceData.cpp +++ b/src/handlers/dns/DnsResourceData.cpp @@ -13,7 +13,7 @@ // forked code #pragma GCC diagnostic ignored "-Wunused-parameter" -namespace vizer::handler::dns { +namespace visor::handler::dns { size_t IDnsResourceData::decodeName(const char *encodedName, char *result, IDnsResource *dnsResource) const { diff --git a/src/handlers/dns/DnsResourceData.h b/src/handlers/dns/DnsResourceData.h index 919aa3261..227da928c 100644 --- a/src/handlers/dns/DnsResourceData.h +++ b/src/handlers/dns/DnsResourceData.h @@ -10,9 +10,9 @@ /// @file /** - * \namespace vizer + * \namespace visor */ -namespace vizer::handler::dns { +namespace visor::handler::dns { //Visual studio has always been stupid about returning something useful for __cplusplus //Only recently was this fixed - and even then it requires a specific hack to the command line during build @@ -23,7 +23,7 @@ namespace vizer::handler::dns { #define PCPP_SMART_PTR(T) std::unique_ptr #else #define PCPP_SMART_PTR(T) std::auto_ptr - #endif +#endif // forward declarations class IDnsResource; diff --git a/src/handlers/dns/DnsStreamHandler.cpp b/src/handlers/dns/DnsStreamHandler.cpp index 0d4d36605..73f546365 100644 --- a/src/handlers/dns/DnsStreamHandler.cpp +++ b/src/handlers/dns/DnsStreamHandler.cpp @@ -18,10 +18,10 @@ #include #include -namespace vizer::handler::dns { +namespace visor::handler::dns { DnsStreamHandler::DnsStreamHandler(const std::string &name, PcapInputStream *stream, uint periods, int deepSampleRate) - : vizer::StreamMetricsHandler(name, periods, deepSampleRate) + : visor::StreamMetricsHandler(name, periods, deepSampleRate) , _stream(stream) { assert(stream); diff --git a/src/handlers/dns/DnsStreamHandler.h b/src/handlers/dns/DnsStreamHandler.h index 501e0ebcb..29493deaa 100644 --- a/src/handlers/dns/DnsStreamHandler.h +++ b/src/handlers/dns/DnsStreamHandler.h @@ -20,11 +20,11 @@ #include #include -namespace vizer::handler::dns { +namespace visor::handler::dns { -using namespace vizer::input::pcap; +using namespace visor::input::pcap; -class DnsMetricsBucket final : public vizer::AbstractMetricsBucket +class DnsMetricsBucket final : public visor::AbstractMetricsBucket { public: const uint8_t START_FI_MAP_SIZE = 7; // 2^7 = 128 @@ -110,7 +110,7 @@ class DnsMetricsBucket final : public vizer::AbstractMetricsBucket return _counters; } - // vizer::AbstractMetricsBucket + // visor::AbstractMetricsBucket void specialized_merge(const AbstractMetricsBucket &other) override; void to_json(json &j) const override; @@ -119,7 +119,7 @@ class DnsMetricsBucket final : public vizer::AbstractMetricsBucket void new_dns_transaction(bool deep, float to90th, float from90th, DnsLayer &dns, PacketDirection dir, DnsTransaction xact); }; -class DnsMetricsManager final : public vizer::AbstractMetricsManager +class DnsMetricsManager final : public visor::AbstractMetricsManager { QueryResponsePairMgr _qr_pair_manager; @@ -128,7 +128,7 @@ class DnsMetricsManager final : public vizer::AbstractMetricsManager(periods, deepSampleRate) + : visor::AbstractMetricsManager(periods, deepSampleRate) { } @@ -190,7 +190,7 @@ struct TcpFlowData { } }; -class DnsStreamHandler final : public vizer::StreamMetricsHandler +class DnsStreamHandler final : public visor::StreamMetricsHandler { PcapInputStream *_stream; @@ -217,7 +217,7 @@ class DnsStreamHandler final : public vizer::StreamMetricsHandler #include -namespace vizer::handler::dns { +namespace visor::handler::dns { typedef std::pair AggDomainResult; AggDomainResult aggregateDomain(const std::string &domain); diff --git a/src/handlers/dns/querypairmgr.cpp b/src/handlers/dns/querypairmgr.cpp index 1e0cd25d0..309e4b0aa 100644 --- a/src/handlers/dns/querypairmgr.cpp +++ b/src/handlers/dns/querypairmgr.cpp @@ -17,7 +17,7 @@ static inline void timespec_diff(struct timespec *a, struct timespec *b, } } -namespace vizer::handler::dns { +namespace visor::handler::dns { void QueryResponsePairMgr::start_transaction(uint32_t flowKey, uint16_t queryID, timespec stamp) { diff --git a/src/handlers/dns/querypairmgr.h b/src/handlers/dns/querypairmgr.h index 19c14e65d..cfe531197 100644 --- a/src/handlers/dns/querypairmgr.h +++ b/src/handlers/dns/querypairmgr.h @@ -8,7 +8,7 @@ #include #include -namespace vizer::handler::dns { +namespace visor::handler::dns { using hr_clock = std::chrono::high_resolution_clock; diff --git a/src/handlers/dns/tests/test_dns.cpp b/src/handlers/dns/tests/test_dns.cpp index d0ad9086c..0bece9393 100644 --- a/src/handlers/dns/tests/test_dns.cpp +++ b/src/handlers/dns/tests/test_dns.cpp @@ -4,7 +4,7 @@ #include "dns.h" -using namespace vizer::handler::dns; +using namespace visor::handler::dns; TEST_CASE("dns", "[dns]") { diff --git a/src/handlers/dns/tests/test_dns_layer.cpp b/src/handlers/dns/tests/test_dns_layer.cpp index 572f1daa8..da9c4a68d 100644 --- a/src/handlers/dns/tests/test_dns_layer.cpp +++ b/src/handlers/dns/tests/test_dns_layer.cpp @@ -3,8 +3,8 @@ #include "DnsStreamHandler.h" #include "PcapInputStream.h" -using namespace vizer::handler::dns; -using namespace vizer::input::pcap; +using namespace visor::handler::dns; +using namespace visor::input::pcap; using namespace nlohmann; TEST_CASE("Parse DNS UDP IPv4 tests", "[pcap][ipv4][udp][dns]") diff --git a/src/handlers/net/NetHandlerModulePlugin.cpp b/src/handlers/net/NetHandlerModulePlugin.cpp index 828959e5b..46bbd0614 100644 --- a/src/handlers/net/NetHandlerModulePlugin.cpp +++ b/src/handlers/net/NetHandlerModulePlugin.cpp @@ -8,12 +8,12 @@ #include #include -CORRADE_PLUGIN_REGISTER(VizerHandlerNet, vizer::handler::net::NetHandlerModulePlugin, - "dev.vizer.module.handler/1.0") +CORRADE_PLUGIN_REGISTER(VizerHandlerNet, visor::handler::net::NetHandlerModulePlugin, + "dev.visor.module.handler/1.0") -namespace vizer::handler::net { +namespace visor::handler::net { -using namespace vizer::input::pcap; +using namespace visor::input::pcap; using json = nlohmann::json; void NetHandlerModulePlugin::_setup_routes(HttpServer &svr) diff --git a/src/handlers/net/NetHandlerModulePlugin.h b/src/handlers/net/NetHandlerModulePlugin.h index 452d74f77..6344f5b9d 100644 --- a/src/handlers/net/NetHandlerModulePlugin.h +++ b/src/handlers/net/NetHandlerModulePlugin.h @@ -7,7 +7,7 @@ #include "HandlerModulePlugin.h" -namespace vizer::handler::net { +namespace visor::handler::net { class NetHandlerModulePlugin : public HandlerModulePlugin { @@ -17,7 +17,7 @@ class NetHandlerModulePlugin : public HandlerModulePlugin public: explicit NetHandlerModulePlugin(Corrade::PluginManager::AbstractManager &manager, const std::string &plugin) - : vizer::HandlerModulePlugin{manager, plugin} + : visor::HandlerModulePlugin{manager, plugin} { } diff --git a/src/handlers/net/NetStreamHandler.cpp b/src/handlers/net/NetStreamHandler.cpp index 5319811d4..5c04e1612 100644 --- a/src/handlers/net/NetStreamHandler.cpp +++ b/src/handlers/net/NetStreamHandler.cpp @@ -17,10 +17,10 @@ #include #include -namespace vizer::handler::net { +namespace visor::handler::net { NetStreamHandler::NetStreamHandler(const std::string &name, PcapInputStream *stream, uint periods, uint deepSampleRate) - : vizer::StreamMetricsHandler(name, periods, deepSampleRate) + : visor::StreamMetricsHandler(name, periods, deepSampleRate) , _stream(stream) { assert(stream); diff --git a/src/handlers/net/NetStreamHandler.h b/src/handlers/net/NetStreamHandler.h index 31e2b5b0b..6f27e8165 100644 --- a/src/handlers/net/NetStreamHandler.h +++ b/src/handlers/net/NetStreamHandler.h @@ -19,11 +19,11 @@ #include #include -namespace vizer::handler::net { +namespace visor::handler::net { -using namespace vizer::input::pcap; +using namespace visor::input::pcap; -class NetworkMetricsBucket final : public vizer::AbstractMetricsBucket +class NetworkMetricsBucket final : public visor::AbstractMetricsBucket { public: const uint8_t START_FI_MAP_SIZE = 7; // 2^7 = 128 @@ -75,7 +75,7 @@ class NetworkMetricsBucket final : public vizer::AbstractMetricsBucket return _counters; } - // vizer::AbstractMetricsBucket + // visor::AbstractMetricsBucket void specialized_merge(const AbstractMetricsBucket &other) override; void to_json(json &j) const override; @@ -90,11 +90,11 @@ class NetworkMetricsBucket final : public vizer::AbstractMetricsBucket void process_packet(bool deep, pcpp::Packet &payload, PacketDirection dir, pcpp::ProtocolType l3, pcpp::ProtocolType l4); }; -class NetworkMetricsManager final : public vizer::AbstractMetricsManager +class NetworkMetricsManager final : public visor::AbstractMetricsManager { public: NetworkMetricsManager(uint periods, int deepSampleRate) - : vizer::AbstractMetricsManager(periods, deepSampleRate) + : visor::AbstractMetricsManager(periods, deepSampleRate) { } @@ -112,7 +112,7 @@ class NetworkMetricsManager final : public vizer::AbstractMetricsManager +class NetStreamHandler final : public visor::StreamMetricsHandler { PcapInputStream *_stream; @@ -129,7 +129,7 @@ class NetStreamHandler final : public vizer::StreamMetricsHandler #include -CORRADE_PLUGIN_REGISTER(VizerInputPcap, vizer::input::pcap::PcapInputModulePlugin, - "dev.vizer.module.input/1.0") +CORRADE_PLUGIN_REGISTER(VizerInputPcap, visor::input::pcap::PcapInputModulePlugin, + "dev.visor.module.input/1.0") -namespace vizer::input::pcap { +namespace visor::input::pcap { void PcapInputModulePlugin::_setup_routes(HttpServer &svr) { diff --git a/src/inputs/pcap/PcapInputModulePlugin.h b/src/inputs/pcap/PcapInputModulePlugin.h index 795b080fd..4334a0d63 100644 --- a/src/inputs/pcap/PcapInputModulePlugin.h +++ b/src/inputs/pcap/PcapInputModulePlugin.h @@ -8,9 +8,9 @@ #include "InputModulePlugin.h" #include "PcapInputStream.h" -namespace vizer::input::pcap { +namespace visor::input::pcap { -class PcapInputModulePlugin : public vizer::InputModulePlugin +class PcapInputModulePlugin : public visor::InputModulePlugin { protected: @@ -22,7 +22,7 @@ class PcapInputModulePlugin : public vizer::InputModulePlugin public: explicit PcapInputModulePlugin(Corrade::PluginManager::AbstractManager &manager, const std::string &plugin) - : vizer::InputModulePlugin{manager, plugin} + : visor::InputModulePlugin{manager, plugin} { } diff --git a/src/inputs/pcap/PcapInputStream.cpp b/src/inputs/pcap/PcapInputStream.cpp index de691d876..00f739bf2 100644 --- a/src/inputs/pcap/PcapInputStream.cpp +++ b/src/inputs/pcap/PcapInputStream.cpp @@ -27,7 +27,7 @@ using namespace std::chrono; -namespace vizer::input::pcap { +namespace visor::input::pcap { // static callbacks for PcapPlusPlus static void _tcp_message_ready_cb(int8_t side, const pcpp::TcpStreamData &tcpData, void *cookie) @@ -61,7 +61,7 @@ static void _pcap_stats_update([[maybe_unused]] pcap_stat &stats, [[maybe_unused } PcapInputStream::PcapInputStream(const std::string &name) - : vizer::InputStream(name) + : visor::InputStream(name) , _pcapDevice(nullptr) , _tcp_reassembly(_tcp_message_ready_cb, this, diff --git a/src/inputs/pcap/PcapInputStream.h b/src/inputs/pcap/PcapInputStream.h index 496735da8..53d9bef0c 100644 --- a/src/inputs/pcap/PcapInputStream.h +++ b/src/inputs/pcap/PcapInputStream.h @@ -23,7 +23,7 @@ #include "afpacket.h" #endif -namespace vizer::input::pcap { +namespace visor::input::pcap { enum class PcapSource { unknown, @@ -37,7 +37,7 @@ enum class PacketDirection { unknown }; -class PcapInputStream : public vizer::InputStream +class PcapInputStream : public visor::InputStream { private: @@ -72,7 +72,7 @@ class PcapInputStream : public vizer::InputStream PcapInputStream(const std::string &name); ~PcapInputStream(); - // vizer::AbstractModule + // visor::AbstractModule std::string schema_key() const override { return "pcap"; diff --git a/src/inputs/pcap/afpacket.cpp b/src/inputs/pcap/afpacket.cpp index 4b9644715..0e97c95e0 100644 --- a/src/inputs/pcap/afpacket.cpp +++ b/src/inputs/pcap/afpacket.cpp @@ -19,7 +19,7 @@ #include #include -namespace vizer::input::pcap { +namespace visor::input::pcap { AFPacket::AFPacket(PcapInputStream *stream, pcpp::OnPacketArrivesCallback cb, std::string filter, std::string interface_name, diff --git a/src/inputs/pcap/afpacket.h b/src/inputs/pcap/afpacket.h index 019beda0a..2858680ab 100644 --- a/src/inputs/pcap/afpacket.h +++ b/src/inputs/pcap/afpacket.h @@ -17,7 +17,7 @@ #include #include -namespace vizer::input::pcap { +namespace visor::input::pcap { const int physical_offset = TPACKET_ALIGN(sizeof(struct tpacket3_hdr)); @@ -82,4 +82,4 @@ class AFPacket final void filter_try_compile(const std::string &, struct sock_fprog *, int); -} // namespace vizer +} // namespace visor diff --git a/src/inputs/pcap/tests/test_utils.cpp b/src/inputs/pcap/tests/test_utils.cpp index bc7191f29..30fc7de27 100644 --- a/src/inputs/pcap/tests/test_utils.cpp +++ b/src/inputs/pcap/tests/test_utils.cpp @@ -2,8 +2,8 @@ #include #include -using namespace vizer; -using namespace vizer::input::pcap; +using namespace visor; +using namespace visor::input::pcap; TEST_CASE("parseHostSpec", "[utils]") { diff --git a/src/inputs/pcap/utils.cpp b/src/inputs/pcap/utils.cpp index 69723478f..8467b39c2 100644 --- a/src/inputs/pcap/utils.cpp +++ b/src/inputs/pcap/utils.cpp @@ -9,7 +9,7 @@ #include #include -namespace vizer::input::pcap { +namespace visor::input::pcap { template static void split(const std::string &s, char delim, Out result) diff --git a/src/inputs/pcap/utils.h b/src/inputs/pcap/utils.h index bcaa45d8d..1e98b7b32 100644 --- a/src/inputs/pcap/utils.h +++ b/src/inputs/pcap/utils.h @@ -11,7 +11,7 @@ #include #include -namespace vizer::input::pcap { +namespace visor::input::pcap { class PcapException : public std::runtime_error { diff --git a/src/tests/test_geoip.cpp b/src/tests/test_geoip.cpp index 4815995fa..0d502f0bd 100644 --- a/src/tests/test_geoip.cpp +++ b/src/tests/test_geoip.cpp @@ -8,35 +8,35 @@ TEST_CASE("GeoIP", "[geoip]") SECTION("Geo enablement") { - CHECK(!vizer::geo::enabled()); - CHECK_THROWS(vizer::geo::GeoIP().enable("nonexistent.mmdb")); - CHECK(!vizer::geo::enabled()); - CHECK(vizer::geo::GeoIP().getGeoLocString("2a02:dac0::") == ""); - CHECK(vizer::geo::GeoASN().getASNString("2a02:dac0::") == ""); - CHECK_NOTHROW(vizer::geo::GeoIP().enable("fixtures/GeoIP2-City-Test.mmdb")); - CHECK(vizer::geo::enabled()); - CHECK_NOTHROW(vizer::geo::GeoASN().enable("fixtures/GeoIP2-ISP-Test.mmdb")); - CHECK(vizer::geo::enabled()); + CHECK(!visor::geo::enabled()); + CHECK_THROWS(visor::geo::GeoIP().enable("nonexistent.mmdb")); + CHECK(!visor::geo::enabled()); + CHECK(visor::geo::GeoIP().getGeoLocString("2a02:dac0::") == ""); + CHECK(visor::geo::GeoASN().getASNString("2a02:dac0::") == ""); + CHECK_NOTHROW(visor::geo::GeoIP().enable("fixtures/GeoIP2-City-Test.mmdb")); + CHECK(visor::geo::enabled()); + CHECK_NOTHROW(visor::geo::GeoASN().enable("fixtures/GeoIP2-ISP-Test.mmdb")); + CHECK(visor::geo::enabled()); } SECTION("basic Geo lookup") { - CHECK(vizer::geo::GeoIP().enabled()); - CHECK(vizer::geo::GeoIP().getGeoLocString("2a02:dac0::") == "EU/Russia"); - CHECK(vizer::geo::GeoIP().getGeoLocString("89.160.20.112") == "EU/Sweden/E/Linköping"); - CHECK(vizer::geo::GeoIP().getGeoLocString("216.160.83.56") == "NA/United States/WA/Milton"); + CHECK(visor::geo::GeoIP().enabled()); + CHECK(visor::geo::GeoIP().getGeoLocString("2a02:dac0::") == "EU/Russia"); + CHECK(visor::geo::GeoIP().getGeoLocString("89.160.20.112") == "EU/Sweden/E/Linköping"); + CHECK(visor::geo::GeoIP().getGeoLocString("216.160.83.56") == "NA/United States/WA/Milton"); } SECTION("basic ASN lookup") { - CHECK(vizer::geo::GeoASN().enabled()); - CHECK(vizer::geo::GeoASN().getASNString("1.128.0.0") == "1221/Telstra Pty Ltd"); + CHECK(visor::geo::GeoASN().enabled()); + CHECK(visor::geo::GeoASN().getASNString("1.128.0.0") == "1221/Telstra Pty Ltd"); } SECTION("basic unknown") { - CHECK(vizer::geo::GeoASN().enabled()); - CHECK(vizer::geo::GeoASN().getASNString("6.6.6.6") == "Unknown"); + CHECK(visor::geo::GeoASN().enabled()); + CHECK(visor::geo::GeoASN().getASNString("6.6.6.6") == "Unknown"); } SECTION("basic Geo lookup, socket") @@ -44,11 +44,11 @@ TEST_CASE("GeoIP", "[geoip]") struct sockaddr_in sa4; sa4.sin_family = AF_INET; inet_pton(AF_INET, "89.160.20.112", &sa4.sin_addr.s_addr); - CHECK(vizer::geo::GeoIP().getGeoLocString((struct sockaddr *)&sa4) == "EU/Sweden/E/Linköping"); + CHECK(visor::geo::GeoIP().getGeoLocString((struct sockaddr *)&sa4) == "EU/Sweden/E/Linköping"); struct sockaddr_in6 sa6; sa6.sin6_family = AF_INET6; inet_pton(AF_INET6, "2a02:dac0::", &sa6.sin6_addr); - CHECK(vizer::geo::GeoIP().getGeoLocString((struct sockaddr *)&sa6) == "EU/Russia"); + CHECK(visor::geo::GeoIP().getGeoLocString((struct sockaddr *)&sa6) == "EU/Russia"); } SECTION("basic ASN lookup, socket") @@ -56,10 +56,10 @@ TEST_CASE("GeoIP", "[geoip]") struct sockaddr_in sa4; sa4.sin_family = AF_INET; inet_pton(AF_INET, "1.128.0.0", &sa4.sin_addr.s_addr); - CHECK(vizer::geo::GeoASN().getASNString((struct sockaddr *)&sa4) == "1221/Telstra Pty Ltd"); + CHECK(visor::geo::GeoASN().getASNString((struct sockaddr *)&sa4) == "1221/Telstra Pty Ltd"); struct sockaddr_in6 sa6; sa6.sin6_family = AF_INET6; inet_pton(AF_INET6, "2401:8080::", &sa6.sin6_addr); - CHECK(vizer::geo::GeoASN().getASNString((struct sockaddr *)&sa6) == "237/Merit Network Inc."); + CHECK(visor::geo::GeoASN().getASNString((struct sockaddr *)&sa6) == "237/Merit Network Inc."); } } diff --git a/src/tests/test_metrics.cpp b/src/tests/test_metrics.cpp index 4be9d8644..239bd060e 100644 --- a/src/tests/test_metrics.cpp +++ b/src/tests/test_metrics.cpp @@ -1,7 +1,7 @@ #include "AbstractMetricsManager.h" #include -using namespace vizer; +using namespace visor; class TestMetricsBucket : public AbstractMetricsBucket { From 839783d6e23cd7f4fbaea6065ee6c221a1739943 Mon Sep 17 00:00:00 2001 From: Shannon Weyrick Date: Tue, 16 Mar 2021 09:29:36 -0400 Subject: [PATCH 2/4] visor namespace rename --- CMakeLists.txt | 11 +++++++---- README.md | 6 +++--- cmd/pktvisor-pcap/CMakeLists.txt | 6 +++--- cmd/pktvisor-pcap/main.cpp | 2 +- cmd/pktvisord/CMakeLists.txt | 6 +++--- cmd/pktvisord/main.cpp | 4 ++-- src/CMakeLists.txt | 10 +++++----- src/CoreServer.cpp | 2 +- src/handlers/CMakeLists.txt | 2 +- src/handlers/dns/CMakeLists.txt | 14 +++++++------- src/handlers/dns/DnsHandlerModulePlugin.cpp | 2 +- src/handlers/net/CMakeLists.txt | 14 +++++++------- src/handlers/net/NetHandlerModulePlugin.cpp | 2 +- src/handlers/static_plugins.h | 4 ++-- src/inputs/CMakeLists.txt | 2 +- src/inputs/pcap/CMakeLists.txt | 14 +++++++------- src/inputs/pcap/PcapInputModulePlugin.cpp | 2 +- src/inputs/static_plugins.h | 2 +- src/{vizer_config.h.in => visor_config.h.in} | 4 ++-- 19 files changed, 56 insertions(+), 53 deletions(-) rename src/{vizer_config.h.in => visor_config.h.in} (69%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 94e59b738..3caa6d861 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,9 +4,9 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") # this is the source of truth for version, which will be written to config.h include file. project(visor VERSION 3.2.0) -set(VIZER_PRERELEASE "-develop") -set(VIZER_VERSION_NUM "${PROJECT_VERSION}${VIZER_PRERELEASE}") -set(VIZER_VERSION " pktvisor ${PROJECT_VERSION}${VIZER_PRERELEASE}") +set(VISOR_PRERELEASE "-develop") +set(VISOR_VERSION_NUM "${PROJECT_VERSION}${VISOR_PRERELEASE}") +set(VISOR_VERSION " pktvisor ${PROJECT_VERSION}${VISOR_PRERELEASE}") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -21,9 +21,12 @@ conan_add_remote(NAME bincrafters INDEX 1 URL https://api.bintray.com/conan/bincrafters/public-conan VERIFY_SSL True) +conan_cmake_autodetect(settings) + conan_cmake_install(PATH_OR_REFERENCE ${CMAKE_SOURCE_DIR} BUILD missing GENERATOR cmake + SETTINGS ${settings} INSTALL_FOLDER ${CMAKE_BINARY_DIR}) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) @@ -32,7 +35,7 @@ conan_basic_setup() find_package(Corrade REQUIRED PluginManager) include(sanitizer) -set(VIZER_STATIC_PLUGINS) +set(VISOR_STATIC_PLUGINS) enable_testing() add_subdirectory(3rd) diff --git a/README.md b/README.md index 2292b86c8..06c98b339 100644 --- a/README.md +++ b/README.md @@ -213,9 +213,9 @@ output will contain the JSON summarization output, which you can capture or pipe $ docker run --rm -v /pktvisor/src/tests/fixtures:/pcaps ns1labs/pktvisor pktvisor-pcap /pcaps/dns_ipv4_udp.pcap | jq . -[2021-03-11 18:45:04.572] [pktvisor] [info] Load input plugin: PcapInputModulePlugin dev.vizer.module.input/1.0 -[2021-03-11 18:45:04.573] [pktvisor] [info] Load handler plugin: DnsHandler dev.vizer.module.handler/1.0 -[2021-03-11 18:45:04.573] [pktvisor] [info] Load handler plugin: NetHandler dev.vizer.module.handler/1.0 +[2021-03-11 18:45:04.572] [pktvisor] [info] Load input plugin: PcapInputModulePlugin dev.visor.module.input/1.0 +[2021-03-11 18:45:04.573] [pktvisor] [info] Load handler plugin: DnsHandler dev.visor.module.handler/1.0 +[2021-03-11 18:45:04.573] [pktvisor] [info] Load handler plugin: NetHandler dev.visor.module.handler/1.0 ... processed 140 packets { diff --git a/cmd/pktvisor-pcap/CMakeLists.txt b/cmd/pktvisor-pcap/CMakeLists.txt index 9602fdfe1..79fba690a 100644 --- a/cmd/pktvisor-pcap/CMakeLists.txt +++ b/cmd/pktvisor-pcap/CMakeLists.txt @@ -2,11 +2,11 @@ add_executable(pktvisor-pcap main.cpp) target_include_directories(pktvisor-pcap PRIVATE - ${CMAKE_BINARY_DIR}/src # Vizer::Core config.h + ${CMAKE_BINARY_DIR}/src # Visor::Core config.h ) target_link_libraries(pktvisor-pcap PRIVATE ${CONAN_LIBS_DOCOPT.CPP} - Vizer::Handler::Net - Vizer::Handler::Dns) + Visor::Handler::Net + Visor::Handler::Dns) diff --git a/cmd/pktvisor-pcap/main.cpp b/cmd/pktvisor-pcap/main.cpp index 374315b12..f79639583 100644 --- a/cmd/pktvisor-pcap/main.cpp +++ b/cmd/pktvisor-pcap/main.cpp @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) std::map args = docopt::docopt(USAGE, {argv + 1, argv + argc}, true, // show help if requested - VIZER_VERSION); // version string + VISOR_VERSION); // version string auto logger = spdlog::stderr_color_mt("pktvisor"); if (args["-v"].asBool()) { diff --git a/cmd/pktvisord/CMakeLists.txt b/cmd/pktvisord/CMakeLists.txt index 86dbbae11..d0e737e4a 100644 --- a/cmd/pktvisord/CMakeLists.txt +++ b/cmd/pktvisord/CMakeLists.txt @@ -2,7 +2,7 @@ add_executable(pktvisord main.cpp) target_include_directories(pktvisord PRIVATE - ${CMAKE_BINARY_DIR}/src # Vizer::Core config.h + ${CMAKE_BINARY_DIR}/src # Visor::Core config.h ) target_link_libraries(pktvisord @@ -10,6 +10,6 @@ target_link_libraries(pktvisord timer resolv ${CONAN_LIBS_DOCOPT.CPP} - Vizer::Core - ${VIZER_STATIC_PLUGINS} + Visor::Core + ${VISOR_STATIC_PLUGINS} ) diff --git a/cmd/pktvisord/main.cpp b/cmd/pktvisord/main.cpp index 5e5b25343..30ede438d 100644 --- a/cmd/pktvisord/main.cpp +++ b/cmd/pktvisord/main.cpp @@ -81,7 +81,7 @@ int main(int argc, char *argv[]) std::map args = docopt::docopt(USAGE, {argv + 1, argv + argc}, true, // show help if requested - VIZER_VERSION); // version string + VISOR_VERSION); // version string auto logger = spdlog::stdout_color_mt("pktvisor"); if (args["-v"].asBool()) { @@ -120,7 +120,7 @@ int main(int argc, char *argv[]) std::shared_ptr timer_handle; auto usage_metrics = [&logger] { u_char buf[1024]; - std::string version_str{VIZER_VERSION_NUM}; + std::string version_str{VISOR_VERSION_NUM}; std::reverse(version_str.begin(), version_str.end()); std::string target = version_str + ".pktvisord.metrics.pktvisor.dev."; logger->info("sending anonymous usage metrics (once/day, use --no-track to disable): {}", target); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5fa06206c..41cbc3f9c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,11 +12,11 @@ add_library(visor-core GeoDB.cpp CoreServer.cpp ) -add_library(Vizer::Core ALIAS visor-core) +add_library(Visor::Core ALIAS visor-core) target_include_directories(visor-core PRIVATE - ${CMAKE_BINARY_DIR}/src # Vizer::Core config.h + ${CMAKE_BINARY_DIR}/src # Visor::Core config.h INTERFACE $ ) @@ -30,7 +30,7 @@ target_link_libraries(visor-core ${CONAN_LIBS_CORRADE} ${CONAN_LIBS_SPDLOG} ${CONAN_LIBS_FMT} - ${VIZER_STATIC_PLUGINS} + ${VISOR_STATIC_PLUGINS} ) configure_file(visor_config.h.in visor_config.h @ONLY) @@ -38,7 +38,7 @@ configure_file(visor_config.h.in visor_config.h @ONLY) add_subdirectory(inputs) add_subdirectory(handlers) -set(VIZER_STATIC_PLUGINS ${VIZER_STATIC_PLUGINS} PARENT_SCOPE) +set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} PARENT_SCOPE) ## TEST SUITE add_executable(unit-tests-vizor-core @@ -52,7 +52,7 @@ target_include_directories(unit-tests-vizor-core PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) -target_link_libraries(unit-tests-vizor-core PRIVATE Vizer::Core) +target_link_libraries(unit-tests-vizor-core PRIVATE Visor::Core) add_test(NAME unit-tests-vizor-core WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/tests diff --git a/src/CoreServer.cpp b/src/CoreServer.cpp index d16c34287..f4be33af1 100644 --- a/src/CoreServer.cpp +++ b/src/CoreServer.cpp @@ -87,7 +87,7 @@ void visor::CoreServer::_setup_routes() _svr.Get("/api/v1/metrics/app", [&]([[maybe_unused]] const httplib::Request &req, httplib::Response &res) { json j; try { - j["app"]["version"] = VIZER_VERSION_NUM; + j["app"]["version"] = VISOR_VERSION_NUM; j["app"]["up_time_min"] = float(std::chrono::duration_cast(std::chrono::system_clock::now() - _start_time).count()) / 60; res.set_content(j.dump(), "text/json"); } catch (const std::exception &e) { diff --git a/src/handlers/CMakeLists.txt b/src/handlers/CMakeLists.txt index 47674c6d7..97ffdf919 100644 --- a/src/handlers/CMakeLists.txt +++ b/src/handlers/CMakeLists.txt @@ -2,4 +2,4 @@ add_subdirectory(net) add_subdirectory(dns) -set(VIZER_STATIC_PLUGINS ${VIZER_STATIC_PLUGINS} PARENT_SCOPE) +set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} PARENT_SCOPE) diff --git a/src/handlers/dns/CMakeLists.txt b/src/handlers/dns/CMakeLists.txt index 878e0bbeb..826ed8bc8 100644 --- a/src/handlers/dns/CMakeLists.txt +++ b/src/handlers/dns/CMakeLists.txt @@ -2,7 +2,7 @@ message(STATUS "Handler Module: DNS") set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS ON) -corrade_add_static_plugin(VizerHandlerDns +corrade_add_static_plugin(VisorHandlerDns ${CMAKE_CURRENT_BINARY_DIR} DnsHandler.conf DnsHandlerModulePlugin.cpp @@ -14,19 +14,19 @@ corrade_add_static_plugin(VizerHandlerDns DnsResource.cpp DnsResourceData.cpp ) -add_library(Vizer::Handler::Dns ALIAS VizerHandlerDns) +add_library(Visor::Handler::Dns ALIAS VisorHandlerDns) -target_include_directories(VizerHandlerDns +target_include_directories(VisorHandlerDns INTERFACE $ ) -target_link_libraries(VizerHandlerDns +target_link_libraries(VisorHandlerDns PUBLIC - Vizer::Input::Pcap + Visor::Input::Pcap ) -set(VIZER_STATIC_PLUGINS ${VIZER_STATIC_PLUGINS} Vizer::Handler::Dns PARENT_SCOPE) +set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} Visor::Handler::Dns PARENT_SCOPE) ## TEST SUITE add_executable(unit-tests-handler-dns @@ -35,7 +35,7 @@ add_executable(unit-tests-handler-dns tests/test_dns_layer.cpp ) -target_link_libraries(unit-tests-handler-dns PRIVATE Vizer::Handler::Dns) +target_link_libraries(unit-tests-handler-dns PRIVATE Visor::Handler::Dns) add_test(NAME unit-tests-handler-dns WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/tests diff --git a/src/handlers/dns/DnsHandlerModulePlugin.cpp b/src/handlers/dns/DnsHandlerModulePlugin.cpp index 4f4115c03..126ca040b 100644 --- a/src/handlers/dns/DnsHandlerModulePlugin.cpp +++ b/src/handlers/dns/DnsHandlerModulePlugin.cpp @@ -8,7 +8,7 @@ #include #include -CORRADE_PLUGIN_REGISTER(VizerHandlerDns, visor::handler::dns::DnsHandlerModulePlugin, +CORRADE_PLUGIN_REGISTER(VisorHandlerDns, visor::handler::dns::DnsHandlerModulePlugin, "dev.visor.module.handler/1.0") namespace visor::handler::dns { diff --git a/src/handlers/net/CMakeLists.txt b/src/handlers/net/CMakeLists.txt index 27b1f41b5..68a0c62c5 100644 --- a/src/handlers/net/CMakeLists.txt +++ b/src/handlers/net/CMakeLists.txt @@ -2,24 +2,24 @@ message(STATUS "Handler Module: Net") set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS ON) -corrade_add_static_plugin(VizerHandlerNet +corrade_add_static_plugin(VisorHandlerNet ${CMAKE_CURRENT_BINARY_DIR} NetHandler.conf NetHandlerModulePlugin.cpp NetStreamHandler.cpp) -add_library(Vizer::Handler::Net ALIAS VizerHandlerNet) +add_library(Visor::Handler::Net ALIAS VisorHandlerNet) -target_include_directories(VizerHandlerNet +target_include_directories(VisorHandlerNet INTERFACE $ ) -target_link_libraries(VizerHandlerNet +target_link_libraries(VisorHandlerNet PUBLIC - Vizer::Input::Pcap + Visor::Input::Pcap ) -set(VIZER_STATIC_PLUGINS ${VIZER_STATIC_PLUGINS} Vizer::Handler::Net PARENT_SCOPE) +set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} Visor::Handler::Net PARENT_SCOPE) ## TEST SUITE add_executable(unit-tests-handler-net @@ -27,7 +27,7 @@ add_executable(unit-tests-handler-net tests/test_net_layer.cpp ) -target_link_libraries(unit-tests-handler-net PRIVATE Vizer::Handler::Net) +target_link_libraries(unit-tests-handler-net PRIVATE Visor::Handler::Net) add_test(NAME unit-tests-handler-net WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/tests diff --git a/src/handlers/net/NetHandlerModulePlugin.cpp b/src/handlers/net/NetHandlerModulePlugin.cpp index 46bbd0614..66f93be53 100644 --- a/src/handlers/net/NetHandlerModulePlugin.cpp +++ b/src/handlers/net/NetHandlerModulePlugin.cpp @@ -8,7 +8,7 @@ #include #include -CORRADE_PLUGIN_REGISTER(VizerHandlerNet, visor::handler::net::NetHandlerModulePlugin, +CORRADE_PLUGIN_REGISTER(VisorHandlerNet, visor::handler::net::NetHandlerModulePlugin, "dev.visor.module.handler/1.0") namespace visor::handler::net { diff --git a/src/handlers/static_plugins.h b/src/handlers/static_plugins.h index 6e231349a..617da13ab 100644 --- a/src/handlers/static_plugins.h +++ b/src/handlers/static_plugins.h @@ -1,8 +1,8 @@ int import_handler_plugins() { - CORRADE_PLUGIN_IMPORT(VizerHandlerNet); - CORRADE_PLUGIN_IMPORT(VizerHandlerDns); + CORRADE_PLUGIN_IMPORT(VisorHandlerNet); + CORRADE_PLUGIN_IMPORT(VisorHandlerDns); return 0; } diff --git a/src/inputs/CMakeLists.txt b/src/inputs/CMakeLists.txt index 82ab0ad62..8e4e62dfd 100644 --- a/src/inputs/CMakeLists.txt +++ b/src/inputs/CMakeLists.txt @@ -1,4 +1,4 @@ add_subdirectory(pcap) -set(VIZER_STATIC_PLUGINS ${VIZER_STATIC_PLUGINS} PARENT_SCOPE) +set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} PARENT_SCOPE) diff --git a/src/inputs/pcap/CMakeLists.txt b/src/inputs/pcap/CMakeLists.txt index c86024249..df95c7cd8 100644 --- a/src/inputs/pcap/CMakeLists.txt +++ b/src/inputs/pcap/CMakeLists.txt @@ -2,28 +2,28 @@ message(STATUS "Input Module: Pcap") set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS ON) -corrade_add_static_plugin(VizerInputPcap ${CMAKE_CURRENT_BINARY_DIR} +corrade_add_static_plugin(VisorInputPcap ${CMAKE_CURRENT_BINARY_DIR} PcapInput.conf PcapInputModulePlugin.cpp PcapInputStream.cpp afpacket.cpp utils.cpp ) -add_library(Vizer::Input::Pcap ALIAS VizerInputPcap) +add_library(Visor::Input::Pcap ALIAS VisorInputPcap) -target_include_directories(VizerInputPcap +target_include_directories(VisorInputPcap INTERFACE $ ) -target_link_libraries(VizerInputPcap +target_link_libraries(VisorInputPcap PUBLIC ${CONAN_LIBS_PCAPPLUSPLUS} ${CONAN_LIBS_LIBPCAP} - Vizer::Core + Visor::Core ) -set(VIZER_STATIC_PLUGINS ${VIZER_STATIC_PLUGINS} Vizer::Input::Pcap PARENT_SCOPE) +set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} Visor::Input::Pcap PARENT_SCOPE) ## TEST SUITE add_executable(unit-tests-input-pcap @@ -33,7 +33,7 @@ add_executable(unit-tests-input-pcap ) target_link_libraries(unit-tests-input-pcap - PRIVATE Vizer::Input::Pcap + PRIVATE Visor::Input::Pcap ) add_test(NAME unit-tests-input-pcap diff --git a/src/inputs/pcap/PcapInputModulePlugin.cpp b/src/inputs/pcap/PcapInputModulePlugin.cpp index dd16c852b..b718f50f1 100644 --- a/src/inputs/pcap/PcapInputModulePlugin.cpp +++ b/src/inputs/pcap/PcapInputModulePlugin.cpp @@ -6,7 +6,7 @@ #include #include -CORRADE_PLUGIN_REGISTER(VizerInputPcap, visor::input::pcap::PcapInputModulePlugin, +CORRADE_PLUGIN_REGISTER(VisorInputPcap, visor::input::pcap::PcapInputModulePlugin, "dev.visor.module.input/1.0") namespace visor::input::pcap { diff --git a/src/inputs/static_plugins.h b/src/inputs/static_plugins.h index 6eaf0cf04..f32a75be8 100644 --- a/src/inputs/static_plugins.h +++ b/src/inputs/static_plugins.h @@ -1,7 +1,7 @@ int import_input_plugins() { - CORRADE_PLUGIN_IMPORT(VizerInputPcap); + CORRADE_PLUGIN_IMPORT(VisorInputPcap); return 0; } diff --git a/src/vizer_config.h.in b/src/visor_config.h.in similarity index 69% rename from src/vizer_config.h.in rename to src/visor_config.h.in index e76752a3a..53412be0d 100644 --- a/src/vizer_config.h.in +++ b/src/visor_config.h.in @@ -4,5 +4,5 @@ #pragma once -#cmakedefine VIZER_VERSION_NUM "@VIZER_VERSION_NUM@" -#cmakedefine VIZER_VERSION "@VIZER_VERSION@" +#cmakedefine VISOR_VERSION_NUM "@VISOR_VERSION_NUM@" +#cmakedefine VISOR_VERSION "@VISOR_VERSION@" From 0b41abd161640f3a6b3dd59a124cd84171598aba Mon Sep 17 00:00:00 2001 From: Shannon Weyrick Date: Tue, 16 Mar 2021 09:30:00 -0400 Subject: [PATCH 3/4] remove max mind tests --- 3rd/libmaxminddb/t/CMakeLists.txt | 46 - 3rd/libmaxminddb/t/Makefile.am | 31 - 3rd/libmaxminddb/t/Makefile.in | 994 -- 3rd/libmaxminddb/t/bad_databases_t.c | 67 - 3rd/libmaxminddb/t/bad_pointers_t.c | 58 - 3rd/libmaxminddb/t/basic_lookup_t.c | 215 - 3rd/libmaxminddb/t/compile_c++_t.pl | 107 - 3rd/libmaxminddb/t/data-pool-t.c | 344 - 3rd/libmaxminddb/t/data_entry_list_t.c | 430 - 3rd/libmaxminddb/t/data_types_t.c | 533 - 3rd/libmaxminddb/t/dump_t.c | 98 - 3rd/libmaxminddb/t/external_symbols_t.pl | 106 - 3rd/libmaxminddb/t/get_value_pointer_bug_t.c | 71 - 3rd/libmaxminddb/t/get_value_t.c | 404 - 3rd/libmaxminddb/t/ipv4_start_cache_t.c | 36 - 3rd/libmaxminddb/t/ipv6_lookup_in_ipv4_t.c | 49 - 3rd/libmaxminddb/t/libtap/COPYING | 165 - 3rd/libmaxminddb/t/libtap/INSTALL | 41 - 3rd/libmaxminddb/t/libtap/Makefile | 72 - 3rd/libmaxminddb/t/libtap/README.md | 268 - 3rd/libmaxminddb/t/libtap/tap.c | 354 - 3rd/libmaxminddb/t/libtap/tap.h | 115 - 3rd/libmaxminddb/t/maxmind-db/.perltidyallrc | 11 - 3rd/libmaxminddb/t/maxmind-db/.tidyallrc | 7 - 3rd/libmaxminddb/t/maxmind-db/LICENSE | 4 - .../t/maxmind-db/MaxMind-DB-spec.md | 558 - 3rd/libmaxminddb/t/maxmind-db/README.md | 4 - .../t/maxmind-db/bad-data/README.md | 7 - .../libmaxminddb-offset-integer-overflow.mmdb | Bin 412 -> 0 bytes .../cyclic-data-structure.mmdb | Bin 2731 -> 0 bytes .../invalid-bytes-length.mmdb | 1 - .../invalid-data-record-offset.mmdb | Bin 327 -> 0 bytes .../invalid-map-key-length.mmdb | Bin 2731 -> 0 bytes .../invalid-string-length.mmdb | 1 - .../metadata-is-an-uint128.mmdb | 1 - .../maxminddb-golang/unexpected-bytes.mmdb | Bin 2333 -> 0 bytes 3rd/libmaxminddb/t/maxmind-db/perltidyrc | 12 - .../source-data/GeoIP2-Anonymous-IP-Test.json | 32 - .../source-data/GeoIP2-City-Test.json | 12616 ---------------- .../GeoIP2-Connection-Type-Test.json | 102 - .../source-data/GeoIP2-Country-Test.json | 10975 -------------- .../GeoIP2-DensityIncome-Test.json | 14 - .../source-data/GeoIP2-Domain-Test.json | 452 - .../source-data/GeoIP2-Enterprise-Test.json | 666 - .../source-data/GeoIP2-ISP-Test.json | 12585 --------------- .../GeoIP2-Precision-Enterprise-Test.json | 1035 -- .../source-data/GeoLite2-ASN-Test.json | 37 - .../t/maxmind-db/source-data/README | 13 - .../test-data/GeoIP2-Anonymous-IP-Test.mmdb | Bin 4024 -> 0 bytes ...GeoIP2-City-Test-Broken-Double-Format.mmdb | Bin 19041 -> 0 bytes .../GeoIP2-City-Test-Invalid-Node-Count.mmdb | Bin 19423 -> 0 bytes .../test-data/GeoIP2-City-Test.mmdb | Bin 19403 -> 0 bytes .../GeoIP2-Connection-Type-Test.mmdb | Bin 2463 -> 0 bytes .../test-data/GeoIP2-Country-Test.mmdb | Bin 16189 -> 0 bytes .../test-data/GeoIP2-DensityIncome-Test.mmdb | Bin 1650 -> 0 bytes .../test-data/GeoIP2-Domain-Test.mmdb | Bin 4947 -> 0 bytes .../test-data/GeoIP2-Enterprise-Test.mmdb | Bin 6545 -> 0 bytes .../maxmind-db/test-data/GeoIP2-ISP-Test.mmdb | Bin 75113 -> 0 bytes .../GeoIP2-Precision-Enterprise-Test.mmdb | Bin 8625 -> 0 bytes .../test-data/GeoLite2-ASN-Test.mmdb | Bin 1753 -> 0 bytes .../MaxMind-DB-no-ipv4-search-tree.mmdb | Bin 618 -> 0 bytes .../MaxMind-DB-string-value-entries.mmdb | Bin 579 -> 0 bytes .../MaxMind-DB-test-broken-pointers-24.mmdb | Bin 527 -> 0 bytes ...MaxMind-DB-test-broken-search-tree-24.mmdb | Bin 551 -> 0 bytes .../test-data/MaxMind-DB-test-decoder.mmdb | Bin 2933 -> 0 bytes .../test-data/MaxMind-DB-test-ipv4-24.mmdb | Bin 536 -> 0 bytes .../test-data/MaxMind-DB-test-ipv4-28.mmdb | Bin 573 -> 0 bytes .../test-data/MaxMind-DB-test-ipv4-32.mmdb | Bin 610 -> 0 bytes .../test-data/MaxMind-DB-test-ipv6-24.mmdb | Bin 1545 -> 0 bytes .../test-data/MaxMind-DB-test-ipv6-28.mmdb | Bin 1751 -> 0 bytes .../test-data/MaxMind-DB-test-ipv6-32.mmdb | Bin 1957 -> 0 bytes .../MaxMind-DB-test-metadata-pointers.mmdb | Bin 2198 -> 0 bytes .../test-data/MaxMind-DB-test-mixed-24.mmdb | Bin 1847 -> 0 bytes .../test-data/MaxMind-DB-test-mixed-28.mmdb | Bin 2089 -> 0 bytes .../test-data/MaxMind-DB-test-mixed-32.mmdb | Bin 2331 -> 0 bytes .../test-data/MaxMind-DB-test-nested.mmdb | Bin 2590 -> 0 bytes .../t/maxmind-db/test-data/README.md | 26 - .../test-data/maps-with-pointers.raw | Bin 59 -> 0 bytes .../t/maxmind-db/test-data/write-test-data.pl | 614 - 3rd/libmaxminddb/t/maxmind-db/tidyall.ini | 5 - 3rd/libmaxminddb/t/maxminddb_test_helper.c | 247 - 3rd/libmaxminddb/t/maxminddb_test_helper.h | 72 - 3rd/libmaxminddb/t/metadata_pointers_t.c | 31 - 3rd/libmaxminddb/t/metadata_t.c | 271 - 3rd/libmaxminddb/t/mmdblookup_t.pl | 158 - 3rd/libmaxminddb/t/no_map_get_value_t.c | 34 - 3rd/libmaxminddb/t/read_node_t.c | 250 - 3rd/libmaxminddb/t/threads_t.c | 204 - 3rd/libmaxminddb/t/version_t.c | 9 - 89 files changed, 45658 deletions(-) delete mode 100644 3rd/libmaxminddb/t/CMakeLists.txt delete mode 100644 3rd/libmaxminddb/t/Makefile.am delete mode 100644 3rd/libmaxminddb/t/Makefile.in delete mode 100644 3rd/libmaxminddb/t/bad_databases_t.c delete mode 100644 3rd/libmaxminddb/t/bad_pointers_t.c delete mode 100644 3rd/libmaxminddb/t/basic_lookup_t.c delete mode 100755 3rd/libmaxminddb/t/compile_c++_t.pl delete mode 100644 3rd/libmaxminddb/t/data-pool-t.c delete mode 100644 3rd/libmaxminddb/t/data_entry_list_t.c delete mode 100644 3rd/libmaxminddb/t/data_types_t.c delete mode 100644 3rd/libmaxminddb/t/dump_t.c delete mode 100755 3rd/libmaxminddb/t/external_symbols_t.pl delete mode 100644 3rd/libmaxminddb/t/get_value_pointer_bug_t.c delete mode 100644 3rd/libmaxminddb/t/get_value_t.c delete mode 100644 3rd/libmaxminddb/t/ipv4_start_cache_t.c delete mode 100644 3rd/libmaxminddb/t/ipv6_lookup_in_ipv4_t.c delete mode 100644 3rd/libmaxminddb/t/libtap/COPYING delete mode 100644 3rd/libmaxminddb/t/libtap/INSTALL delete mode 100644 3rd/libmaxminddb/t/libtap/Makefile delete mode 100644 3rd/libmaxminddb/t/libtap/README.md delete mode 100644 3rd/libmaxminddb/t/libtap/tap.c delete mode 100644 3rd/libmaxminddb/t/libtap/tap.h delete mode 100644 3rd/libmaxminddb/t/maxmind-db/.perltidyallrc delete mode 100644 3rd/libmaxminddb/t/maxmind-db/.tidyallrc delete mode 100644 3rd/libmaxminddb/t/maxmind-db/LICENSE delete mode 100644 3rd/libmaxminddb/t/maxmind-db/MaxMind-DB-spec.md delete mode 100644 3rd/libmaxminddb/t/maxmind-db/README.md delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/README.md delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/cyclic-data-structure.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-bytes-length.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-map-key-length.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-string-length.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/unexpected-bytes.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/perltidyrc delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Anonymous-IP-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-City-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Connection-Type-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Country-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-DensityIncome-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Domain-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Enterprise-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-ISP-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Precision-Enterprise-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/GeoLite2-ASN-Test.json delete mode 100644 3rd/libmaxminddb/t/maxmind-db/source-data/README delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Connection-Type-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Country-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-DensityIncome-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Domain-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Enterprise-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-ISP-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Precision-Enterprise-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/GeoLite2-ASN-Test.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-string-value-entries.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-pointers-24.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-decoder.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-24.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-28.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-32.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-24.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-28.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-32.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-metadata-pointers.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-24.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-28.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-32.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-nested.mmdb delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/README.md delete mode 100644 3rd/libmaxminddb/t/maxmind-db/test-data/maps-with-pointers.raw delete mode 100755 3rd/libmaxminddb/t/maxmind-db/test-data/write-test-data.pl delete mode 100644 3rd/libmaxminddb/t/maxmind-db/tidyall.ini delete mode 100644 3rd/libmaxminddb/t/maxminddb_test_helper.c delete mode 100644 3rd/libmaxminddb/t/maxminddb_test_helper.h delete mode 100644 3rd/libmaxminddb/t/metadata_pointers_t.c delete mode 100644 3rd/libmaxminddb/t/metadata_t.c delete mode 100755 3rd/libmaxminddb/t/mmdblookup_t.pl delete mode 100644 3rd/libmaxminddb/t/no_map_get_value_t.c delete mode 100644 3rd/libmaxminddb/t/read_node_t.c delete mode 100644 3rd/libmaxminddb/t/threads_t.c delete mode 100644 3rd/libmaxminddb/t/version_t.c diff --git a/3rd/libmaxminddb/t/CMakeLists.txt b/3rd/libmaxminddb/t/CMakeLists.txt deleted file mode 100644 index afbe484b8..000000000 --- a/3rd/libmaxminddb/t/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -add_library(tap - libtap/tap.c -) - -# test programs -set(TEST_TARGET_NAMES - bad_pointers_t - basic_lookup_t - data_entry_list_t - data-pool-t - data_types_t - dump_t - get_value_pointer_bug_t - get_value_t - ipv4_start_cache_t - ipv6_lookup_in_ipv4_t - metadata_pointers_t - metadata_t - no_map_get_value_t - read_node_t - version_t -) - -if(UNIX) # or if (NOT WIN32) - list(APPEND TEST_TARGET_NAMES - bad_databases_t - threads_t - ) - find_package(Threads) -endif() - -foreach(TEST_TARGET_NAME ${TEST_TARGET_NAMES}) - add_executable(${TEST_TARGET_NAME} ${TEST_TARGET_NAME}.c maxminddb_test_helper.c) - target_include_directories(${TEST_TARGET_NAME} PRIVATE ../src) - target_link_libraries(${TEST_TARGET_NAME} maxminddb tap) - - if(UNIX) - target_link_libraries(${TEST_TARGET_NAME} m) - endif() - - if (UNIX) - target_link_libraries(${TEST_TARGET_NAME} ${CMAKE_THREAD_LIBS_INIT}) - endif() - - add_test(${TEST_TARGET_NAME} ${TEST_TARGET_NAME}) -endforeach() diff --git a/3rd/libmaxminddb/t/Makefile.am b/3rd/libmaxminddb/t/Makefile.am deleted file mode 100644 index d8d416f17..000000000 --- a/3rd/libmaxminddb/t/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -include $(top_srcdir)/common.mk - -all-local: - cd libtap && $(MAKE) $(AM_MAKEFLAGS) all -clean-local: - cd libtap && $(MAKE) $(AM_MAKEFLAGS) clean - -AM_LDFLAGS = $(top_builddir)/src/libmaxminddb.la -CFLAGS += -I$(top_srcdir)/src - -noinst_LTLIBRARIES = libmmdbtest.la -libmmdbtest_la_SOURCES = maxminddb_test_helper.c maxminddb_test_helper.h - -EXTRA_DIST = compile_c++_t.pl external_symbols_t.pl mmdblookup_t.pl \ - libtap/COPYING libtap/INSTALL libtap/Makefile libtap/README.md \ - libtap/tap.c libtap/tap.h maxmind-db - -check_PROGRAMS = \ - bad_pointers_t bad_databases_t basic_lookup_t data_entry_list_t \ - data-pool-t data_types_t dump_t get_value_t get_value_pointer_bug_t \ - ipv4_start_cache_t ipv6_lookup_in_ipv4_t metadata_t metadata_pointers_t \ - no_map_get_value_t read_node_t threads_t version_t - -data_pool_t_LDFLAGS = $(AM_LDFLAGS) -lm -data_pool_t_SOURCES = data-pool-t.c ../src/data-pool.c - -threads_t_CFLAGS = $(CFLAGS) -pthread - -TESTS = $(check_PROGRAMS) compile_c++_t.pl external_symbols_t.pl mmdblookup_t.pl - -LDADD = libmmdbtest.la libtap/libtap.a diff --git a/3rd/libmaxminddb/t/Makefile.in b/3rd/libmaxminddb/t/Makefile.in deleted file mode 100644 index edcd13098..000000000 --- a/3rd/libmaxminddb/t/Makefile.in +++ /dev/null @@ -1,994 +0,0 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -check_PROGRAMS = bad_pointers_t$(EXEEXT) bad_databases_t$(EXEEXT) \ - basic_lookup_t$(EXEEXT) data_entry_list_t$(EXEEXT) \ - data-pool-t$(EXEEXT) data_types_t$(EXEEXT) dump_t$(EXEEXT) \ - get_value_t$(EXEEXT) get_value_pointer_bug_t$(EXEEXT) \ - ipv4_start_cache_t$(EXEEXT) ipv6_lookup_in_ipv4_t$(EXEEXT) \ - metadata_t$(EXEEXT) metadata_pointers_t$(EXEEXT) \ - no_map_get_value_t$(EXEEXT) read_node_t$(EXEEXT) \ - threads_t$(EXEEXT) version_t$(EXEEXT) -subdir = t -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h \ - $(top_builddir)/include/maxminddb_config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmmdbtest_la_LIBADD = -am_libmmdbtest_la_OBJECTS = maxminddb_test_helper.lo -libmmdbtest_la_OBJECTS = $(am_libmmdbtest_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -bad_databases_t_SOURCES = bad_databases_t.c -bad_databases_t_OBJECTS = bad_databases_t.$(OBJEXT) -bad_databases_t_LDADD = $(LDADD) -bad_databases_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -bad_pointers_t_SOURCES = bad_pointers_t.c -bad_pointers_t_OBJECTS = bad_pointers_t.$(OBJEXT) -bad_pointers_t_LDADD = $(LDADD) -bad_pointers_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -basic_lookup_t_SOURCES = basic_lookup_t.c -basic_lookup_t_OBJECTS = basic_lookup_t.$(OBJEXT) -basic_lookup_t_LDADD = $(LDADD) -basic_lookup_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -am_data_pool_t_OBJECTS = data-pool-t.$(OBJEXT) data-pool.$(OBJEXT) -data_pool_t_OBJECTS = $(am_data_pool_t_OBJECTS) -data_pool_t_LDADD = $(LDADD) -data_pool_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -data_pool_t_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(data_pool_t_LDFLAGS) $(LDFLAGS) -o $@ -data_entry_list_t_SOURCES = data_entry_list_t.c -data_entry_list_t_OBJECTS = data_entry_list_t.$(OBJEXT) -data_entry_list_t_LDADD = $(LDADD) -data_entry_list_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -data_types_t_SOURCES = data_types_t.c -data_types_t_OBJECTS = data_types_t.$(OBJEXT) -data_types_t_LDADD = $(LDADD) -data_types_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -dump_t_SOURCES = dump_t.c -dump_t_OBJECTS = dump_t.$(OBJEXT) -dump_t_LDADD = $(LDADD) -dump_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -get_value_pointer_bug_t_SOURCES = get_value_pointer_bug_t.c -get_value_pointer_bug_t_OBJECTS = get_value_pointer_bug_t.$(OBJEXT) -get_value_pointer_bug_t_LDADD = $(LDADD) -get_value_pointer_bug_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -get_value_t_SOURCES = get_value_t.c -get_value_t_OBJECTS = get_value_t.$(OBJEXT) -get_value_t_LDADD = $(LDADD) -get_value_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -ipv4_start_cache_t_SOURCES = ipv4_start_cache_t.c -ipv4_start_cache_t_OBJECTS = ipv4_start_cache_t.$(OBJEXT) -ipv4_start_cache_t_LDADD = $(LDADD) -ipv4_start_cache_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -ipv6_lookup_in_ipv4_t_SOURCES = ipv6_lookup_in_ipv4_t.c -ipv6_lookup_in_ipv4_t_OBJECTS = ipv6_lookup_in_ipv4_t.$(OBJEXT) -ipv6_lookup_in_ipv4_t_LDADD = $(LDADD) -ipv6_lookup_in_ipv4_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -metadata_pointers_t_SOURCES = metadata_pointers_t.c -metadata_pointers_t_OBJECTS = metadata_pointers_t.$(OBJEXT) -metadata_pointers_t_LDADD = $(LDADD) -metadata_pointers_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -metadata_t_SOURCES = metadata_t.c -metadata_t_OBJECTS = metadata_t.$(OBJEXT) -metadata_t_LDADD = $(LDADD) -metadata_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -no_map_get_value_t_SOURCES = no_map_get_value_t.c -no_map_get_value_t_OBJECTS = no_map_get_value_t.$(OBJEXT) -no_map_get_value_t_LDADD = $(LDADD) -no_map_get_value_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -read_node_t_SOURCES = read_node_t.c -read_node_t_OBJECTS = read_node_t.$(OBJEXT) -read_node_t_LDADD = $(LDADD) -read_node_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -threads_t_SOURCES = threads_t.c -threads_t_OBJECTS = threads_t-threads_t.$(OBJEXT) -threads_t_LDADD = $(LDADD) -threads_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -threads_t_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(threads_t_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -version_t_SOURCES = version_t.c -version_t_OBJECTS = version_t.$(OBJEXT) -version_t_LDADD = $(LDADD) -version_t_DEPENDENCIES = libmmdbtest.la libtap/libtap.a -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/bad_databases_t.Po \ - ./$(DEPDIR)/bad_pointers_t.Po ./$(DEPDIR)/basic_lookup_t.Po \ - ./$(DEPDIR)/data-pool-t.Po ./$(DEPDIR)/data-pool.Po \ - ./$(DEPDIR)/data_entry_list_t.Po ./$(DEPDIR)/data_types_t.Po \ - ./$(DEPDIR)/dump_t.Po ./$(DEPDIR)/get_value_pointer_bug_t.Po \ - ./$(DEPDIR)/get_value_t.Po ./$(DEPDIR)/ipv4_start_cache_t.Po \ - ./$(DEPDIR)/ipv6_lookup_in_ipv4_t.Po \ - ./$(DEPDIR)/maxminddb_test_helper.Plo \ - ./$(DEPDIR)/metadata_pointers_t.Po ./$(DEPDIR)/metadata_t.Po \ - ./$(DEPDIR)/no_map_get_value_t.Po ./$(DEPDIR)/read_node_t.Po \ - ./$(DEPDIR)/threads_t-threads_t.Po ./$(DEPDIR)/version_t.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libmmdbtest_la_SOURCES) bad_databases_t.c bad_pointers_t.c \ - basic_lookup_t.c $(data_pool_t_SOURCES) data_entry_list_t.c \ - data_types_t.c dump_t.c get_value_pointer_bug_t.c \ - get_value_t.c ipv4_start_cache_t.c ipv6_lookup_in_ipv4_t.c \ - metadata_pointers_t.c metadata_t.c no_map_get_value_t.c \ - read_node_t.c threads_t.c version_t.c -DIST_SOURCES = $(libmmdbtest_la_SOURCES) bad_databases_t.c \ - bad_pointers_t.c basic_lookup_t.c $(data_pool_t_SOURCES) \ - data_entry_list_t.c data_types_t.c dump_t.c \ - get_value_pointer_bug_t.c get_value_t.c ipv4_start_cache_t.c \ - ipv6_lookup_in_ipv4_t.c metadata_pointers_t.c metadata_t.c \ - no_map_get_value_t.c read_node_t.c threads_t.c version_t.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/common.mk \ - $(top_srcdir)/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -I$(top_srcdir)/src -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgconfigdir = @pkgconfigdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -@DEBUG_FALSE@AM_CFLAGS = -O2 -g -@DEBUG_TRUE@AM_CFLAGS = -O0 -g -Wall -Wextra -AM_CPPFLAGS = -I$(top_srcdir)/include -AM_LDFLAGS = $(top_builddir)/src/libmaxminddb.la -noinst_LTLIBRARIES = libmmdbtest.la -libmmdbtest_la_SOURCES = maxminddb_test_helper.c maxminddb_test_helper.h -EXTRA_DIST = compile_c++_t.pl external_symbols_t.pl mmdblookup_t.pl \ - libtap/COPYING libtap/INSTALL libtap/Makefile libtap/README.md \ - libtap/tap.c libtap/tap.h maxmind-db - -data_pool_t_LDFLAGS = $(AM_LDFLAGS) -lm -data_pool_t_SOURCES = data-pool-t.c ../src/data-pool.c -threads_t_CFLAGS = $(CFLAGS) -pthread -TESTS = $(check_PROGRAMS) compile_c++_t.pl external_symbols_t.pl mmdblookup_t.pl -LDADD = libmmdbtest.la libtap/libtap.a -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/common.mk $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign t/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign t/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(top_srcdir)/common.mk $(am__empty): - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libmmdbtest.la: $(libmmdbtest_la_OBJECTS) $(libmmdbtest_la_DEPENDENCIES) $(EXTRA_libmmdbtest_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libmmdbtest_la_OBJECTS) $(libmmdbtest_la_LIBADD) $(LIBS) - -bad_databases_t$(EXEEXT): $(bad_databases_t_OBJECTS) $(bad_databases_t_DEPENDENCIES) $(EXTRA_bad_databases_t_DEPENDENCIES) - @rm -f bad_databases_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bad_databases_t_OBJECTS) $(bad_databases_t_LDADD) $(LIBS) - -bad_pointers_t$(EXEEXT): $(bad_pointers_t_OBJECTS) $(bad_pointers_t_DEPENDENCIES) $(EXTRA_bad_pointers_t_DEPENDENCIES) - @rm -f bad_pointers_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(bad_pointers_t_OBJECTS) $(bad_pointers_t_LDADD) $(LIBS) - -basic_lookup_t$(EXEEXT): $(basic_lookup_t_OBJECTS) $(basic_lookup_t_DEPENDENCIES) $(EXTRA_basic_lookup_t_DEPENDENCIES) - @rm -f basic_lookup_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(basic_lookup_t_OBJECTS) $(basic_lookup_t_LDADD) $(LIBS) - -data-pool-t$(EXEEXT): $(data_pool_t_OBJECTS) $(data_pool_t_DEPENDENCIES) $(EXTRA_data_pool_t_DEPENDENCIES) - @rm -f data-pool-t$(EXEEXT) - $(AM_V_CCLD)$(data_pool_t_LINK) $(data_pool_t_OBJECTS) $(data_pool_t_LDADD) $(LIBS) - -data_entry_list_t$(EXEEXT): $(data_entry_list_t_OBJECTS) $(data_entry_list_t_DEPENDENCIES) $(EXTRA_data_entry_list_t_DEPENDENCIES) - @rm -f data_entry_list_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(data_entry_list_t_OBJECTS) $(data_entry_list_t_LDADD) $(LIBS) - -data_types_t$(EXEEXT): $(data_types_t_OBJECTS) $(data_types_t_DEPENDENCIES) $(EXTRA_data_types_t_DEPENDENCIES) - @rm -f data_types_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(data_types_t_OBJECTS) $(data_types_t_LDADD) $(LIBS) - -dump_t$(EXEEXT): $(dump_t_OBJECTS) $(dump_t_DEPENDENCIES) $(EXTRA_dump_t_DEPENDENCIES) - @rm -f dump_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(dump_t_OBJECTS) $(dump_t_LDADD) $(LIBS) - -get_value_pointer_bug_t$(EXEEXT): $(get_value_pointer_bug_t_OBJECTS) $(get_value_pointer_bug_t_DEPENDENCIES) $(EXTRA_get_value_pointer_bug_t_DEPENDENCIES) - @rm -f get_value_pointer_bug_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(get_value_pointer_bug_t_OBJECTS) $(get_value_pointer_bug_t_LDADD) $(LIBS) - -get_value_t$(EXEEXT): $(get_value_t_OBJECTS) $(get_value_t_DEPENDENCIES) $(EXTRA_get_value_t_DEPENDENCIES) - @rm -f get_value_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(get_value_t_OBJECTS) $(get_value_t_LDADD) $(LIBS) - -ipv4_start_cache_t$(EXEEXT): $(ipv4_start_cache_t_OBJECTS) $(ipv4_start_cache_t_DEPENDENCIES) $(EXTRA_ipv4_start_cache_t_DEPENDENCIES) - @rm -f ipv4_start_cache_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ipv4_start_cache_t_OBJECTS) $(ipv4_start_cache_t_LDADD) $(LIBS) - -ipv6_lookup_in_ipv4_t$(EXEEXT): $(ipv6_lookup_in_ipv4_t_OBJECTS) $(ipv6_lookup_in_ipv4_t_DEPENDENCIES) $(EXTRA_ipv6_lookup_in_ipv4_t_DEPENDENCIES) - @rm -f ipv6_lookup_in_ipv4_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ipv6_lookup_in_ipv4_t_OBJECTS) $(ipv6_lookup_in_ipv4_t_LDADD) $(LIBS) - -metadata_pointers_t$(EXEEXT): $(metadata_pointers_t_OBJECTS) $(metadata_pointers_t_DEPENDENCIES) $(EXTRA_metadata_pointers_t_DEPENDENCIES) - @rm -f metadata_pointers_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(metadata_pointers_t_OBJECTS) $(metadata_pointers_t_LDADD) $(LIBS) - -metadata_t$(EXEEXT): $(metadata_t_OBJECTS) $(metadata_t_DEPENDENCIES) $(EXTRA_metadata_t_DEPENDENCIES) - @rm -f metadata_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(metadata_t_OBJECTS) $(metadata_t_LDADD) $(LIBS) - -no_map_get_value_t$(EXEEXT): $(no_map_get_value_t_OBJECTS) $(no_map_get_value_t_DEPENDENCIES) $(EXTRA_no_map_get_value_t_DEPENDENCIES) - @rm -f no_map_get_value_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(no_map_get_value_t_OBJECTS) $(no_map_get_value_t_LDADD) $(LIBS) - -read_node_t$(EXEEXT): $(read_node_t_OBJECTS) $(read_node_t_DEPENDENCIES) $(EXTRA_read_node_t_DEPENDENCIES) - @rm -f read_node_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(read_node_t_OBJECTS) $(read_node_t_LDADD) $(LIBS) - -threads_t$(EXEEXT): $(threads_t_OBJECTS) $(threads_t_DEPENDENCIES) $(EXTRA_threads_t_DEPENDENCIES) - @rm -f threads_t$(EXEEXT) - $(AM_V_CCLD)$(threads_t_LINK) $(threads_t_OBJECTS) $(threads_t_LDADD) $(LIBS) - -version_t$(EXEEXT): $(version_t_OBJECTS) $(version_t_DEPENDENCIES) $(EXTRA_version_t_DEPENDENCIES) - @rm -f version_t$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(version_t_OBJECTS) $(version_t_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bad_databases_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bad_pointers_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic_lookup_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data-pool-t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data-pool.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_entry_list_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_types_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dump_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_value_pointer_bug_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_value_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipv4_start_cache_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipv6_lookup_in_ipv4_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxminddb_test_helper.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metadata_pointers_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metadata_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/no_map_get_value_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read_node_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads_t-threads_t.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version_t.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -data-pool.o: ../src/data-pool.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT data-pool.o -MD -MP -MF $(DEPDIR)/data-pool.Tpo -c -o data-pool.o `test -f '../src/data-pool.c' || echo '$(srcdir)/'`../src/data-pool.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/data-pool.Tpo $(DEPDIR)/data-pool.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/data-pool.c' object='data-pool.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o data-pool.o `test -f '../src/data-pool.c' || echo '$(srcdir)/'`../src/data-pool.c - -data-pool.obj: ../src/data-pool.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT data-pool.obj -MD -MP -MF $(DEPDIR)/data-pool.Tpo -c -o data-pool.obj `if test -f '../src/data-pool.c'; then $(CYGPATH_W) '../src/data-pool.c'; else $(CYGPATH_W) '$(srcdir)/../src/data-pool.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/data-pool.Tpo $(DEPDIR)/data-pool.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/data-pool.c' object='data-pool.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o data-pool.obj `if test -f '../src/data-pool.c'; then $(CYGPATH_W) '../src/data-pool.c'; else $(CYGPATH_W) '$(srcdir)/../src/data-pool.c'; fi` - -threads_t-threads_t.o: threads_t.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threads_t_CFLAGS) $(CFLAGS) -MT threads_t-threads_t.o -MD -MP -MF $(DEPDIR)/threads_t-threads_t.Tpo -c -o threads_t-threads_t.o `test -f 'threads_t.c' || echo '$(srcdir)/'`threads_t.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/threads_t-threads_t.Tpo $(DEPDIR)/threads_t-threads_t.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='threads_t.c' object='threads_t-threads_t.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threads_t_CFLAGS) $(CFLAGS) -c -o threads_t-threads_t.o `test -f 'threads_t.c' || echo '$(srcdir)/'`threads_t.c - -threads_t-threads_t.obj: threads_t.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threads_t_CFLAGS) $(CFLAGS) -MT threads_t-threads_t.obj -MD -MP -MF $(DEPDIR)/threads_t-threads_t.Tpo -c -o threads_t-threads_t.obj `if test -f 'threads_t.c'; then $(CYGPATH_W) 'threads_t.c'; else $(CYGPATH_W) '$(srcdir)/threads_t.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/threads_t-threads_t.Tpo $(DEPDIR)/threads_t-threads_t.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='threads_t.c' object='threads_t-threads_t.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threads_t_CFLAGS) $(CFLAGS) -c -o threads_t-threads_t.obj `if test -f 'threads_t.c'; then $(CYGPATH_W) 'threads_t.c'; else $(CYGPATH_W) '$(srcdir)/threads_t.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(LTLIBRARIES) all-local -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ - clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/bad_databases_t.Po - -rm -f ./$(DEPDIR)/bad_pointers_t.Po - -rm -f ./$(DEPDIR)/basic_lookup_t.Po - -rm -f ./$(DEPDIR)/data-pool-t.Po - -rm -f ./$(DEPDIR)/data-pool.Po - -rm -f ./$(DEPDIR)/data_entry_list_t.Po - -rm -f ./$(DEPDIR)/data_types_t.Po - -rm -f ./$(DEPDIR)/dump_t.Po - -rm -f ./$(DEPDIR)/get_value_pointer_bug_t.Po - -rm -f ./$(DEPDIR)/get_value_t.Po - -rm -f ./$(DEPDIR)/ipv4_start_cache_t.Po - -rm -f ./$(DEPDIR)/ipv6_lookup_in_ipv4_t.Po - -rm -f ./$(DEPDIR)/maxminddb_test_helper.Plo - -rm -f ./$(DEPDIR)/metadata_pointers_t.Po - -rm -f ./$(DEPDIR)/metadata_t.Po - -rm -f ./$(DEPDIR)/no_map_get_value_t.Po - -rm -f ./$(DEPDIR)/read_node_t.Po - -rm -f ./$(DEPDIR)/threads_t-threads_t.Po - -rm -f ./$(DEPDIR)/version_t.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/bad_databases_t.Po - -rm -f ./$(DEPDIR)/bad_pointers_t.Po - -rm -f ./$(DEPDIR)/basic_lookup_t.Po - -rm -f ./$(DEPDIR)/data-pool-t.Po - -rm -f ./$(DEPDIR)/data-pool.Po - -rm -f ./$(DEPDIR)/data_entry_list_t.Po - -rm -f ./$(DEPDIR)/data_types_t.Po - -rm -f ./$(DEPDIR)/dump_t.Po - -rm -f ./$(DEPDIR)/get_value_pointer_bug_t.Po - -rm -f ./$(DEPDIR)/get_value_t.Po - -rm -f ./$(DEPDIR)/ipv4_start_cache_t.Po - -rm -f ./$(DEPDIR)/ipv6_lookup_in_ipv4_t.Po - -rm -f ./$(DEPDIR)/maxminddb_test_helper.Plo - -rm -f ./$(DEPDIR)/metadata_pointers_t.Po - -rm -f ./$(DEPDIR)/metadata_t.Po - -rm -f ./$(DEPDIR)/no_map_get_value_t.Po - -rm -f ./$(DEPDIR)/read_node_t.Po - -rm -f ./$(DEPDIR)/threads_t-threads_t.Po - -rm -f ./$(DEPDIR)/version_t.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am all-local am--depfiles check \ - check-TESTS check-am clean clean-checkPROGRAMS clean-generic \ - clean-libtool clean-local clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -all-local: - cd libtap && $(MAKE) $(AM_MAKEFLAGS) all -clean-local: - cd libtap && $(MAKE) $(AM_MAKEFLAGS) clean - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/3rd/libmaxminddb/t/bad_databases_t.c b/3rd/libmaxminddb/t/bad_databases_t.c deleted file mode 100644 index 54003d728..000000000 --- a/3rd/libmaxminddb/t/bad_databases_t.c +++ /dev/null @@ -1,67 +0,0 @@ -// This test currently does not work on Windows as nftw is -// not available. -#define _XOPEN_SOURCE 500 -#include - -#include -#include - -#include "maxminddb_test_helper.h" - -int test_read(const char *path, - const struct stat *UNUSED(sbuf), - int flags, - struct FTW *UNUSED(ftw)) { - // Check if path is a regular file) - if (flags != FTW_F) { - return 0; - } - - MMDB_s *mmdb = (MMDB_s *)calloc(1, sizeof(MMDB_s)); - - if (NULL == mmdb) { - BAIL_OUT("could not allocate memory for our MMDB_s struct"); - } - - int status = MMDB_open(path, MMDB_MODE_MMAP, mmdb); - - if (status != MMDB_SUCCESS) { - ok(1, "received error when opening %s", path); - free(mmdb); - return 0; - } - - int gai_error, mmdb_error; - MMDB_lookup_string(mmdb, "1.1.1.1", &gai_error, &mmdb_error); - if (gai_error != 0) { - BAIL_OUT("could not parse IP address"); - } - - cmp_ok( - mmdb_error, "!=", MMDB_SUCCESS, "opening %s returned an error", path); - - MMDB_close(mmdb); - free(mmdb); - return 0; -} - -int main(void) { - char *test_db_dir; -#ifdef _WIN32 - test_db_dir = "../t/maxmind-db/bad-data"; -#else - char cwd[500]; - char *UNUSED(tmp) = getcwd(cwd, 500); - - if (strcmp(basename(cwd), "t") == 0) { - test_db_dir = "./maxmind-db/bad-data"; - } else { - test_db_dir = "./t/maxmind-db/bad-data"; - } -#endif - plan(NO_PLAN); - if (nftw(test_db_dir, test_read, 10, FTW_PHYS) != 0) { - BAIL_OUT("nftw failed"); - } - done_testing(); -} diff --git a/3rd/libmaxminddb/t/bad_pointers_t.c b/3rd/libmaxminddb/t/bad_pointers_t.c deleted file mode 100644 index e0fe3a816..000000000 --- a/3rd/libmaxminddb/t/bad_pointers_t.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "maxminddb_test_helper.h" - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-broken-pointers-24.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - { - const char *ip = "1.1.1.16"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - MMDB_entry_data_s entry_data; - int status = MMDB_get_value(&result.entry, &entry_data, NULL); - - cmp_ok(status, - "==", - MMDB_INVALID_DATA_ERROR, - "MMDB_get_value returns MMDB_INVALID_DATA_ERROR for bad pointer " - "in data section"); - - MMDB_entry_data_list_s *entry_data_list; - status = MMDB_get_entry_data_list(&result.entry, &entry_data_list); - - cmp_ok(status, - "==", - MMDB_INVALID_DATA_ERROR, - "MMDB_get_entry_data_list returns MMDB_INVALID_DATA_ERROR for " - "bad pointer in data section"); - - MMDB_free_entry_data_list(entry_data_list); - } - - { - const char *ip = "1.1.1.32"; - - int gai_error, mmdb_error; - MMDB_lookup_result_s UNUSED(result) = - MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error); - - cmp_ok(mmdb_error, - "==", - MMDB_CORRUPT_SEARCH_TREE_ERROR, - "MMDB_lookup_string sets mmdb_error to " - "MMDB_CORRUPT_SEARCH_TREE_ERROR when a search tree record " - "points outside the data section"); - } - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/basic_lookup_t.c b/3rd/libmaxminddb/t/basic_lookup_t.c deleted file mode 100644 index 8baabbeb1..000000000 --- a/3rd/libmaxminddb/t/basic_lookup_t.c +++ /dev/null @@ -1,215 +0,0 @@ -#include "maxminddb_test_helper.h" - -static void test_big_lookup(void); - -/* These globals are gross but it's the easiest way to mix calling - * for_all_modes() and for_all_record_sizes() */ -static int Current_Mode; -static const char *Current_Mode_Description; - -void test_one_result(MMDB_s *mmdb, - MMDB_lookup_result_s result, - const char *ip, - const char *expect, - const char *function, - const char *filename, - const char *mode_desc) { - int is_ok = ok(result.found_entry, - "got a result for an IP in the database - %s - %s - %s - %s", - function, - ip, - filename, - mode_desc); - - if (!is_ok) { - return; - } - - MMDB_entry_data_s data = - data_ok(&result, MMDB_DATA_TYPE_UTF8_STRING, "result{ip}", "ip", NULL); - - char *string = mmdb_strndup(data.utf8_string, data.data_size); - - char *real_expect; - if (mmdb->metadata.ip_version == 4 || strncmp(expect, "::", 2) == 0) { - real_expect = mmdb_strndup(expect, strlen(expect)); - } else { - // When looking up IPv4 addresses in a mixed DB the result will be - // something like "::1.2.3.4", not just "1.2.3.4". - int maxlen = strlen(expect) + 3; - real_expect = malloc(maxlen); - if (!real_expect) { - BAIL_OUT("could not allocate memory"); - } - snprintf(real_expect, maxlen, "::%s", expect); - } - - is(string, - real_expect, - "found expected result for ip key - %s - %s - %s - %s", - function, - ip, - filename, - mode_desc); - - free(real_expect); - free(string); -} - -void test_one_ip(MMDB_s *mmdb, - const char *ip, - const char *expect, - const char *filename, - const char *mode_desc) { - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - test_one_result( - mmdb, result, ip, expect, "MMDB_lookup_string", filename, mode_desc); - - result = lookup_sockaddr_ok(mmdb, ip, filename, mode_desc); - test_one_result( - mmdb, result, ip, expect, "MMDB_lookup_addrinfo", filename, mode_desc); -} - -void run_ipX_tests(const char *filename, - const char **missing_ips, - int missing_ips_length, - const char *pairs[][2], - int pairs_rows) { - const char *path = test_database_path(filename); - int mode = Current_Mode; - const char *mode_desc = Current_Mode_Description; - - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - char desc_suffix[500]; - snprintf(desc_suffix, 500, "%s - %s", filename, mode_desc); - - for (int i = 0; i < missing_ips_length; i++) { - const char *ip = missing_ips[i]; - - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - ok(!result.found_entry, - "no result entry struct returned for IP address not in the database " - "(string lookup) - %s - %s - %s", - ip, - filename, - mode_desc); - - result = lookup_sockaddr_ok(mmdb, ip, filename, mode_desc); - - ok(!result.found_entry, - "no result entry struct returned for IP address not in the database " - "(ipv4 lookup) - %s - %s - %s", - ip, - filename, - mode_desc); - } - - for (int i = 0; i < pairs_rows; i += 1) { - const char *ip_to_lookup = pairs[i][0]; - const char *expect = pairs[i][1]; - - test_one_ip(mmdb, ip_to_lookup, expect, filename, mode_desc); - } - - MMDB_close(mmdb); - free(mmdb); -} - -void run_ipv4_tests(int UNUSED(record_size), - const char *filename, - const char *UNUSED(ignored)) { - const char *pairs[9][2] = { - {"1.1.1.1", "1.1.1.1"}, - {"1.1.1.2", "1.1.1.2"}, - {"1.1.1.3", "1.1.1.2"}, - {"1.1.1.7", "1.1.1.4"}, - {"1.1.1.9", "1.1.1.8"}, - {"1.1.1.15", "1.1.1.8"}, - {"1.1.1.17", "1.1.1.16"}, - {"1.1.1.31", "1.1.1.16"}, - {"1.1.1.32", "1.1.1.32"}, - }; - - const char *missing[1] = {"2.3.4.5"}; - run_ipX_tests(filename, missing, 1, pairs, 9); -} - -void run_ipv6_tests(int UNUSED(record_size), - const char *filename, - const char *UNUSED(ignored)) { - const char *pairs[9][2] = { - {"::1:ffff:ffff", "::1:ffff:ffff"}, - {"::2:0:0", "::2:0:0"}, - {"::2:0:1a", "::2:0:0"}, - {"::2:0:40", "::2:0:40"}, - {"::2:0:4f", "::2:0:40"}, - {"::2:0:50", "::2:0:50"}, - {"::2:0:52", "::2:0:50"}, - {"::2:0:58", "::2:0:58"}, - {"::2:0:59", "::2:0:58"}, - }; - - const char *missing[2] = {"2.3.4.5", "::abcd"}; - run_ipX_tests(filename, missing, 2, pairs, 9); -} - -void all_record_sizes(int mode, const char *description) { - const char *ipv4_filename_fmts[] = {"MaxMind-DB-test-ipv4-%i.mmdb", - "MaxMind-DB-test-mixed-%i.mmdb"}; - - Current_Mode = mode; - Current_Mode_Description = description; - - for (int i = 0; i < 2; i++) { - for_all_record_sizes(ipv4_filename_fmts[i], &run_ipv4_tests); - } - - const char *ipv6_filename_fmts[] = {"MaxMind-DB-test-ipv6-%i.mmdb", - "MaxMind-DB-test-mixed-%i.mmdb"}; - - for (int i = 0; i < 2; i++) { - for_all_record_sizes(ipv6_filename_fmts[i], &run_ipv6_tests); - } -} - -static void test_big_lookup(void) { - const char *const db_filename = "GeoIP2-Precision-Enterprise-Test.mmdb"; - const char *const db_path = test_database_path(db_filename); - ok(db_path != NULL, "got database path"); - - MMDB_s *const mmdb = open_ok(db_path, MMDB_MODE_MMAP, "mmap mode"); - ok(mmdb != NULL, "opened MMDB"); - free((char *)db_path); - - int gai_err = 0, mmdb_err = 0; - const char *const ip_address = "81.2.69.160"; - MMDB_lookup_result_s result = - MMDB_lookup_string(mmdb, ip_address, &gai_err, &mmdb_err); - ok(gai_err == 0, "no getaddrinfo error"); - ok(mmdb_err == MMDB_SUCCESS, "no error from maxminddb library"); - ok(result.found_entry, "found IP"); - - MMDB_entry_data_list_s *entry_data_list = NULL; - ok(MMDB_get_entry_data_list(&result.entry, &entry_data_list) == - MMDB_SUCCESS, - "successfully looked up entry data list"); - ok(entry_data_list != NULL, "got an entry_data_list"); - - MMDB_free_entry_data_list(entry_data_list); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&all_record_sizes); - test_big_lookup(); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/compile_c++_t.pl b/3rd/libmaxminddb/t/compile_c++_t.pl deleted file mode 100755 index ec1d88640..000000000 --- a/3rd/libmaxminddb/t/compile_c++_t.pl +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; - -use Cwd qw( abs_path ); -use FindBin qw( $Bin ); - -eval <<'EOF'; -use Test::More 0.88; -use File::Temp qw( tempdir ); -use IPC::Run3 qw( run3 ); -EOF - -if ($@) { - print - "1..0 # skip all tests skipped - these tests need the Test::More 0.88, File::Temp, and IPC::Run3 modules:\n"; - print "$@"; - exit 0; -} - -my $test_db = "$Bin/maxmind-db/test-data/GeoIP2-City-Test.mmdb"; - -my $cpp_code = <<"EOF"; -#include - -int main(int argc, char *argv[]) -{ - const char *fname = "$test_db"; - MMDB_s mmdb; - return MMDB_open(fname, MMDB_MODE_MMAP, &mmdb); -} -EOF - -my $tempdir = tempdir(CLEANUP => 1 ); - -my $file = "$tempdir/open.cpp"; -open my $fh, '>', $file or die $!; -print {$fh} $cpp_code or die $!; -close $fh or die $!; - -my $exe = "$tempdir/open"; - -my $include_dir = abs_path("$Bin/../include"); -my $lib_dir = abs_path("$Bin/../src/.libs"); - -my $cxx = $ENV{CXX} || 'c++'; -_test_cmd( - [ $cxx, $file, "-I$include_dir", "-L$lib_dir", "-lmaxminddb", "-o$exe" ], - qr/^$/, - q{}, - 0, - 'compile C++ program which links against libmaxminddb', -); - -# DYLD_LIBRARY_PATH is for Mac OS X -$ENV{LD_LIBRARY_PATH} = $ENV{DYLD_LIBRARY_PATH} = $lib_dir; - -_test_cmd( - [$exe], - qr/^$/, - q{}, - 0, - 'compiled C++ program executes without errors' -); - -done_testing(); - -sub _test_cmd { - my $cmd = shift; - my $expect_stdout = shift; - my $expect_stderr = shift; - my $expect_status = shift; - my $desc = shift; - - my $stdout; - my $stderr; - run3( - $cmd, - \undef, - \$stdout, - \$stderr, - ); - - my $exit_status = $? >> 8; - - # We don't need to retest that the help output shows up for all errors - if ( defined $expect_stdout ) { - like( - $stdout, - $expect_stdout, - "stdout for @{$cmd}" - ); - } - - if ( ref $expect_stderr ) { - like( $stderr, $expect_stderr, "stderr for @{$cmd}" ); - } - else { - is( $stderr, $expect_stderr, "stderr for @{$cmd}" ); - } - - is( - $exit_status, $expect_status, - "exit status was $expect_status for @{$cmd}" - ); -} diff --git a/3rd/libmaxminddb/t/data-pool-t.c b/3rd/libmaxminddb/t/data-pool-t.c deleted file mode 100644 index ff8907c01..000000000 --- a/3rd/libmaxminddb/t/data-pool-t.c +++ /dev/null @@ -1,344 +0,0 @@ -#include "libtap/tap.h" -#include "maxminddb_test_helper.h" -#include -#include -#include -#include - -static void test_data_pool_new(void); -static void test_data_pool_destroy(void); -static void test_data_pool_alloc(void); -static void test_data_pool_to_list(void); -static bool create_and_check_list(size_t const, size_t const); -static void check_block_count(MMDB_entry_data_list_s const *const, - size_t const); - -int main(void) { - plan(NO_PLAN); - test_data_pool_new(); - test_data_pool_destroy(); - test_data_pool_alloc(); - test_data_pool_to_list(); - done_testing(); -} - -static void test_data_pool_new(void) { - { - MMDB_data_pool_s *const pool = data_pool_new(0); - ok(!pool, "size 0 is not valid"); - } - - { - MMDB_data_pool_s *const pool = data_pool_new(SIZE_MAX - 10); - ok(!pool, "very large size is not valid"); - } - - { - MMDB_data_pool_s *const pool = data_pool_new(512); - ok(pool != NULL, "size 512 is valid"); - cmp_ok(pool->size, "==", 512, "size is 512"); - cmp_ok(pool->used, "==", 0, "used size is 0"); - data_pool_destroy(pool); - } -} - -static void test_data_pool_destroy(void) { - { data_pool_destroy(NULL); } - - { - MMDB_data_pool_s *const pool = data_pool_new(512); - ok(pool != NULL, "created pool"); - data_pool_destroy(pool); - } -} - -static void test_data_pool_alloc(void) { - { - MMDB_data_pool_s *const pool = data_pool_new(1); - ok(pool != NULL, "created pool"); - cmp_ok(pool->used, "==", 0, "used size starts at 0"); - - MMDB_entry_data_list_s *const entry1 = data_pool_alloc(pool); - ok(entry1 != NULL, "allocated first entry"); - // Arbitrary so that we can recognize it. - entry1->entry_data.offset = (uint32_t)123; - - cmp_ok(pool->size, "==", 1, "size is still 1"); - cmp_ok(pool->used, "==", 1, "used size is 1 after taking one"); - - MMDB_entry_data_list_s *const entry2 = data_pool_alloc(pool); - ok(entry2 != NULL, "got another entry"); - ok(entry1 != entry2, "second entry is different from first entry"); - - cmp_ok(pool->size, "==", 2, "size is 2 (new block)"); - cmp_ok(pool->used, "==", 1, "used size is 1 in current block"); - - ok(entry1->entry_data.offset == 123, - "accessing the original entry's memory is ok"); - - data_pool_destroy(pool); - } - - { - size_t const initial_size = 10; - MMDB_data_pool_s *const pool = data_pool_new(initial_size); - ok(pool != NULL, "created pool"); - - MMDB_entry_data_list_s *entry1 = NULL; - for (size_t i = 0; i < initial_size; i++) { - MMDB_entry_data_list_s *const entry = data_pool_alloc(pool); - ok(entry != NULL, "got an entry"); - // Give each a unique number so we can check it. - entry->entry_data.offset = (uint32_t)i; - if (i == 0) { - entry1 = entry; - } - } - - cmp_ok(pool->size, "==", initial_size, "size is the initial size"); - cmp_ok(pool->used, "==", initial_size, "used size is as expected"); - - MMDB_entry_data_list_s *const entry = data_pool_alloc(pool); - ok(entry != NULL, "got an entry"); - entry->entry_data.offset = (uint32_t)initial_size; - - cmp_ok( - pool->size, "==", initial_size * 2, "size is the initial size*2"); - cmp_ok(pool->used, "==", 1, "used size is as expected"); - - MMDB_entry_data_list_s *const list = data_pool_to_list(pool); - - MMDB_entry_data_list_s *element = list; - for (size_t i = 0; i < initial_size + 1; i++) { - ok(element->entry_data.offset == (uint32_t)i, - "found offset %" PRIu32 ", should have %zu", - element->entry_data.offset, - i); - element = element->next; - } - - ok(entry1->entry_data.offset == (uint32_t)0, - "accessing entry1's original memory is ok after growing the pool"); - - data_pool_destroy(pool); - } -} - -static void test_data_pool_to_list(void) { - { - size_t const initial_size = 16; - MMDB_data_pool_s *const pool = data_pool_new(initial_size); - ok(pool != NULL, "created pool"); - - MMDB_entry_data_list_s *const entry1 = data_pool_alloc(pool); - ok(entry1 != NULL, "got an entry"); - - MMDB_entry_data_list_s *const list_one_element = - data_pool_to_list(pool); - ok(list_one_element != NULL, "got a list"); - ok(list_one_element == entry1, - "list's first element is the first we retrieved"); - ok(list_one_element->next == NULL, "list is one element in size"); - - MMDB_entry_data_list_s *const entry2 = data_pool_alloc(pool); - ok(entry2 != NULL, "got another entry"); - - MMDB_entry_data_list_s *const list_two_elements = - data_pool_to_list(pool); - ok(list_two_elements != NULL, "got a list"); - ok(list_two_elements == entry1, - "list's first element is the first we retrieved"); - ok(list_two_elements->next != NULL, "list has a second element"); - - MMDB_entry_data_list_s *const second_element = list_two_elements->next; - ok(second_element == entry2, - "second item in list is second we retrieved"); - ok(second_element->next == NULL, "list ends with the second element"); - - data_pool_destroy(pool); - } - - { - size_t const initial_size = 1; - MMDB_data_pool_s *const pool = data_pool_new(initial_size); - ok(pool != NULL, "created pool"); - - MMDB_entry_data_list_s *const entry1 = data_pool_alloc(pool); - ok(entry1 != NULL, "got an entry"); - - MMDB_entry_data_list_s *const list_one_element = - data_pool_to_list(pool); - ok(list_one_element != NULL, "got a list"); - ok(list_one_element == entry1, - "list's first element is the first we retrieved"); - ok(list_one_element->next == NULL, "list ends with this element"); - - data_pool_destroy(pool); - } - - { - size_t const initial_size = 2; - MMDB_data_pool_s *const pool = data_pool_new(initial_size); - ok(pool != NULL, "created pool"); - - MMDB_entry_data_list_s *const entry1 = data_pool_alloc(pool); - ok(entry1 != NULL, "got an entry"); - - MMDB_entry_data_list_s *const entry2 = data_pool_alloc(pool); - ok(entry2 != NULL, "got an entry"); - ok(entry1 != entry2, "second entry is different from the first"); - - MMDB_entry_data_list_s *const list_element1 = data_pool_to_list(pool); - ok(list_element1 != NULL, "got a list"); - ok(list_element1 == entry1, - "list's first element is the first we retrieved"); - - MMDB_entry_data_list_s *const list_element2 = list_element1->next; - ok(list_element2 == entry2, - "second element is the second we retrieved"); - ok(list_element2->next == NULL, "list ends with this element"); - - data_pool_destroy(pool); - } - - { - diag("starting test: fill one block save for one spot"); - ok(create_and_check_list(3, 2), "fill one block save for one spot"); - } - - { - diag("starting test: fill one block"); - ok(create_and_check_list(3, 3), "fill one block"); - } - - { - diag( - "starting test: fill one block and use one spot in the next block"); - ok(create_and_check_list(3, 3 + 1), - "fill one block and use one spot in the next block"); - } - - { - diag("starting test: fill two blocks save for one spot"); - ok(create_and_check_list(3, 3 + 3 * 2 - 1), - "fill two blocks save for one spot"); - } - - { - diag("starting test: fill two blocks"); - ok(create_and_check_list(3, 3 + 3 * 2), "fill two blocks"); - } - - { - diag("starting test: fill two blocks and use one spot in the next"); - ok(create_and_check_list(3, 3 + 3 * 2 + 1), - "fill two blocks and use one spot in the next"); - } - - { - diag("starting test: fill three blocks save for one spot"); - ok(create_and_check_list(3, 3 + 3 * 2 + 3 * 2 * 2 - 1), - "fill three blocks save for one spot"); - } - - { - diag("starting test: fill three blocks"); - ok(create_and_check_list(3, 3 + 3 * 2 + 3 * 2 * 2), - "fill three blocks"); - } - - // It would be nice to have a larger number of these, but it's expensive to - // run many. We currently hardcode what this will be anyway, so varying - // this is not very interesting. - size_t const initial_sizes[] = {1, 2, 32, 64, 128, 256}; - - size_t const max_element_count = 4096; - - for (size_t i = 0; i < sizeof(initial_sizes) / sizeof(initial_sizes[0]); - i++) { - size_t const initial_size = initial_sizes[i]; - - for (size_t element_count = 0; element_count < max_element_count; - element_count++) { - assert(create_and_check_list(initial_size, element_count)); - } - } -} - -// Use assert() rather than libtap as libtap is significantly slower and we run -// this frequently. -static bool create_and_check_list(size_t const initial_size, - size_t const element_count) { - MMDB_data_pool_s *const pool = data_pool_new(initial_size); - assert(pool != NULL); - - assert(pool->used == 0); - - // Hold on to the pointers as we initially see them so that we can check - // they are still valid after building the list. - MMDB_entry_data_list_s **const entry_array = - calloc(element_count, sizeof(MMDB_entry_data_list_s *)); - assert(entry_array != NULL); - - for (size_t i = 0; i < element_count; i++) { - MMDB_entry_data_list_s *const entry = data_pool_alloc(pool); - assert(entry != NULL); - - entry->entry_data.offset = (uint32_t)i; - - entry_array[i] = entry; - } - - MMDB_entry_data_list_s *const list = data_pool_to_list(pool); - - if (element_count == 0) { - assert(list == NULL); - data_pool_destroy(pool); - free(entry_array); - return true; - } - - assert(list != NULL); - - MMDB_entry_data_list_s *element = list; - for (size_t i = 0; i < element_count; i++) { - assert(element->entry_data.offset == (uint32_t)i); - - assert(element == entry_array[i]); - - element = element->next; - } - assert(element == NULL); - - check_block_count(list, initial_size); - - data_pool_destroy(pool); - free(entry_array); - return true; -} - -// Use assert() rather than libtap as libtap is significantly slower and we run -// this frequently. -static void check_block_count(MMDB_entry_data_list_s const *const list, - size_t const initial_size) { - size_t got_block_count = 0; - size_t got_element_count = 0; - - MMDB_entry_data_list_s const *element = list; - while (element) { - got_element_count++; - - if (element->pool) { - got_block_count++; - } - - element = element->next; - } - - // Because = * 2^(number of blocks) - double const a = ceil((double)got_element_count / (double)initial_size); - double const b = log2(a); - size_t const expected_block_count = ((size_t)b) + 1; - - assert(got_block_count == expected_block_count); -} diff --git a/3rd/libmaxminddb/t/data_entry_list_t.c b/3rd/libmaxminddb/t/data_entry_list_t.c deleted file mode 100644 index 2b595db76..000000000 --- a/3rd/libmaxminddb/t/data_entry_list_t.c +++ /dev/null @@ -1,430 +0,0 @@ -#include "maxminddb_test_helper.h" - -MMDB_entry_data_list_s * -test_array_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *array = entry_data_list = entry_data_list->next; - cmp_ok(array->entry_data.type, - "==", - MMDB_DATA_TYPE_ARRAY, - "'array' key's value is an array"); - cmp_ok(array->entry_data.data_size, - "==", - 3, - "'array' key's value has 3 elements"); - - MMDB_entry_data_list_s *idx0 = entry_data_list = entry_data_list->next; - cmp_ok(idx0->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "first array entry is a UINT32"); - cmp_ok(idx0->entry_data.uint32, "==", 1, "first array entry value is 1"); - - MMDB_entry_data_list_s *idx1 = entry_data_list = entry_data_list->next; - cmp_ok(idx1->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "second array entry is a UINT32"); - cmp_ok(idx1->entry_data.uint32, "==", 2, "second array entry value is 2"); - - MMDB_entry_data_list_s *idx2 = entry_data_list = entry_data_list->next; - cmp_ok(idx2->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "third array entry is a UINT32"); - cmp_ok(idx2->entry_data.uint32, "==", 3, "third array entry value is 3"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_boolean_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_BOOLEAN, - "'boolean' key's value is a boolean"); - ok(value->entry_data.boolean, "'boolean' key's value is true"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_bytes_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_BYTES, - "'bytes' key's value is bytes"); - uint8_t *bytes = malloc(value->entry_data.data_size); - if (NULL == bytes) { - BAIL_OUT("malloc failed"); - } - memcpy(bytes, value->entry_data.bytes, value->entry_data.data_size); - uint8_t expect[] = {0x00, 0x00, 0x00, 0x2a}; - - ok(memcmp(bytes, expect, 4) == 0, "got expected value for bytes key"); - - free((void *)bytes); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_double_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_DOUBLE, - "'double' key's value is a double"); - - compare_double(value->entry_data.double_value, 42.123456); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_float_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_FLOAT, - "'float' key's value is a float"); - - compare_float(value->entry_data.float_value, 1.1F); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_int32_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_INT32, - "'int32' key's value is an int32"); - - int32_t expect = 1 << 28; - expect *= -1; - cmp_ok(value->entry_data.int32, - "==", - expect, - "got expected value for int32 key"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_arrayX_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *arrayX = entry_data_list = entry_data_list->next; - cmp_ok(arrayX->entry_data.type, - "==", - MMDB_DATA_TYPE_ARRAY, - "'map{mapX}{arrayX}' key's value is an array"); - cmp_ok(arrayX->entry_data.data_size, - "==", - 3, - "'map{mapX}{arrayX}' key's value has 3 elements"); - - MMDB_entry_data_list_s *idx0 = entry_data_list = entry_data_list->next; - cmp_ok(idx0->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "first array entry is a UINT32"); - cmp_ok(idx0->entry_data.uint32, "==", 7, "first array entry value is 7"); - - MMDB_entry_data_list_s *idx1 = entry_data_list = entry_data_list->next; - cmp_ok(idx1->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "second array entry is a UINT32"); - cmp_ok(idx1->entry_data.uint32, "==", 8, "second array entry value is 8"); - - MMDB_entry_data_list_s *idx2 = entry_data_list = entry_data_list->next; - cmp_ok(idx2->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "third array entry is a UINT32"); - cmp_ok(idx2->entry_data.uint32, "==", 9, "third array entry value is 9"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_mapX_key_value_pair(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *mapX_key = entry_data_list = entry_data_list->next; - cmp_ok(mapX_key->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "found a map key in 'map{mapX}'"); - const char *mapX_key_name = dup_entry_string_or_bail(mapX_key->entry_data); - - if (strcmp(mapX_key_name, "utf8_stringX") == 0) { - MMDB_entry_data_list_s *mapX_value = entry_data_list = - entry_data_list->next; - cmp_ok(mapX_value->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "'map{mapX}{utf8_stringX}' type is utf8_string"); - const char *utf8_stringX_value = - dup_entry_string_or_bail(mapX_value->entry_data); - ok(strcmp(utf8_stringX_value, "hello") == 0, - "map{mapX}{utf8_stringX} value is 'hello'"); - free((void *)utf8_stringX_value); - } else if (strcmp(mapX_key_name, "arrayX") == 0) { - entry_data_list = test_arrayX_value(entry_data_list); - } else { - ok(0, "unknown key found in map{mapX} - %s", mapX_key_name); - } - - free((void *)mapX_key_name); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_map_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *map = entry_data_list = entry_data_list->next; - cmp_ok(map->entry_data.type, - "==", - MMDB_DATA_TYPE_MAP, - "'map' key's value is a map"); - cmp_ok(map->entry_data.data_size, - "==", - 1, - "'map' key's value has 1 key/value pair"); - - MMDB_entry_data_list_s *map_key_1 = entry_data_list = entry_data_list->next; - cmp_ok(map_key_1->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "found a map key in 'map'"); - const char *map_key_1_name = - dup_entry_string_or_bail(map_key_1->entry_data); - ok(strcmp(map_key_1_name, "mapX") == 0, "key name is mapX"); - free((void *)map_key_1_name); - - MMDB_entry_data_list_s *mapX = entry_data_list = entry_data_list->next; - cmp_ok(mapX->entry_data.type, - "==", - MMDB_DATA_TYPE_MAP, - "'map{mapX}' key's value is a map"); - cmp_ok(mapX->entry_data.data_size, - "==", - 2, - "'map' key's value has 2 key/value pairs"); - - entry_data_list = test_mapX_key_value_pair(entry_data_list); - entry_data_list = test_mapX_key_value_pair(entry_data_list); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_uint128_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT128, - "'uint128' key's value is an uint128"); - -#if MMDB_UINT128_IS_BYTE_ARRAY - uint8_t expect[16] = {0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00}; - ok(memcmp(value->entry_data.uint128, expect, 16) == 0, - "uint128 field is 2**120"); -#else - mmdb_uint128_t expect = 1; - expect <<= 120; - cmp_ok(value->entry_data.uint128, "==", expect, "uint128 field is 2**120"); -#endif - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_uint16_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT16, - "'uint16' key's value is an uint16"); - uint16_t expect = 100; - ok(value->entry_data.uint16 == expect, "uint16 field is 100"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_uint32_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "'uint32' key's value is an uint32"); - uint32_t expect = 1 << 28; - cmp_ok(value->entry_data.uint32, "==", expect, "uint32 field is 100"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_uint64_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_UINT64, - "'uint64' key's value is an uint64"); - uint64_t expect = 1; - expect <<= 60; - cmp_ok(value->entry_data.uint64, "==", expect, "uint64 field is 2**60"); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_utf8_string_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "'utf8_string' key's value is a string"); - const char *utf8_string = dup_entry_string_or_bail(value->entry_data); - // This is hex for "unicode! ☯ - ♫" as bytes - char expect[19] = {0x75, - 0x6e, - 0x69, - 0x63, - 0x6f, - 0x64, - 0x65, - 0x21, - 0x20, - 0xe2, - 0x98, - 0xaf, - 0x20, - 0x2d, - 0x20, - 0xe2, - 0x99, - 0xab, - 0x00}; - - is(utf8_string, expect, "got expected value for utf8_string key"); - - free((void *)utf8_string); - - return entry_data_list; -} - -void run_tests(int mode, const char *description) { - const char *filename = "MaxMind-DB-test-decoder.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, description); - free((void *)path); - - char *ip = "1.1.1.1"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, description); - - MMDB_entry_data_list_s *entry_data_list, *first; - int status = MMDB_get_entry_data_list(&result.entry, &entry_data_list); - - if (MMDB_SUCCESS != status) { - BAIL_OUT("MMDB_get_entry_data_list failed with %s", - MMDB_strerror(status)); - } else { - cmp_ok( - status, "==", MMDB_SUCCESS, "MMDB_get_entry_data_list succeeded"); - } - - first = entry_data_list; - - cmp_ok(entry_data_list->entry_data.type, - "==", - MMDB_DATA_TYPE_MAP, - "first entry in entry data list is a map"); - cmp_ok(entry_data_list->entry_data.data_size, - "==", - 12, - "first map in entry data list has 12 k/v pairs"); - - while (1) { - MMDB_entry_data_list_s *key = entry_data_list = entry_data_list->next; - - if (!key) { - break; - } - - cmp_ok(key->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "found a map key"); - - const char *key_name = dup_entry_string_or_bail(key->entry_data); - if (strcmp(key_name, "array") == 0) { - entry_data_list = test_array_value(entry_data_list); - } else if (strcmp(key_name, "boolean") == 0) { - entry_data_list = test_boolean_value(entry_data_list); - } else if (strcmp(key_name, "bytes") == 0) { - entry_data_list = test_bytes_value(entry_data_list); - } else if (strcmp(key_name, "double") == 0) { - entry_data_list = test_double_value(entry_data_list); - } else if (strcmp(key_name, "float") == 0) { - entry_data_list = test_float_value(entry_data_list); - } else if (strcmp(key_name, "int32") == 0) { - entry_data_list = test_int32_value(entry_data_list); - } else if (strcmp(key_name, "map") == 0) { - entry_data_list = test_map_value(entry_data_list); - } else if (strcmp(key_name, "uint128") == 0) { - entry_data_list = test_uint128_value(entry_data_list); - } else if (strcmp(key_name, "uint16") == 0) { - entry_data_list = test_uint16_value(entry_data_list); - } else if (strcmp(key_name, "uint32") == 0) { - entry_data_list = test_uint32_value(entry_data_list); - } else if (strcmp(key_name, "uint64") == 0) { - entry_data_list = test_uint64_value(entry_data_list); - } else if (strcmp(key_name, "utf8_string") == 0) { - entry_data_list = test_utf8_string_value(entry_data_list); - } else { - ok(0, "unknown key found in map - %s", key_name); - } - - free((void *)key_name); - } - - MMDB_free_entry_data_list(first); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/data_types_t.c b/3rd/libmaxminddb/t/data_types_t.c deleted file mode 100644 index fa2dde966..000000000 --- a/3rd/libmaxminddb/t/data_types_t.c +++ /dev/null @@ -1,533 +0,0 @@ -#include "maxminddb_test_helper.h" - -void test_all_data_types(MMDB_lookup_result_s *result, - const char *ip, - const char *UNUSED(filename), - const char *mode_desc) { - { - char description[500]; - snprintf( - description, 500, "utf8_string field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = data_ok(result, - MMDB_DATA_TYPE_UTF8_STRING, - description, - "utf8_string", - NULL); - const char *string = mmdb_strndup(data.utf8_string, data.data_size); - // This is hex for "unicode! ☯ - ♫" as bytes - char expect[19] = {0x75, - 0x6e, - 0x69, - 0x63, - 0x6f, - 0x64, - 0x65, - 0x21, - 0x20, - 0xe2, - 0x98, - 0xaf, - 0x20, - 0x2d, - 0x20, - 0xe2, - 0x99, - 0xab, - 0x00}; - is(string, expect, "got expected utf8_string value"); - - free((char *)string); - } - - { - char description[500]; - snprintf(description, 500, "double field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_DOUBLE, description, "double", NULL); - - compare_double(data.double_value, 42.123456); - } - - { - char description[500]; - snprintf(description, 500, "float field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_FLOAT, description, "float", NULL); - - compare_float(data.float_value, 1.1F); - } - - { - char description[500]; - snprintf(description, 500, "bytes field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_BYTES, description, "bytes", NULL); - uint8_t expect[] = {0x00, 0x00, 0x00, 0x2a}; - ok(memcmp((uint8_t *)data.bytes, expect, 4) == 0, - "bytes field has expected value"); - } - - { - char description[500]; - snprintf(description, 500, "uint16 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_UINT16, description, "uint16", NULL); - uint16_t expect = 100; - ok(data.uint16 == expect, "uint16 field is 100"); - } - - { - char description[500]; - snprintf(description, 500, "uint32 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_UINT32, description, "uint32", NULL); - uint32_t expect = 1 << 28; - cmp_ok(data.uint32, "==", expect, "uint32 field is 2**28"); - } - - { - char description[500]; - snprintf(description, 500, "int32 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_INT32, description, "int32", NULL); - int32_t expect = 1 << 28; - expect *= -1; - cmp_ok(data.int32, "==", expect, "int32 field is -(2**28)"); - } - - { - char description[500]; - snprintf(description, 500, "uint64 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_UINT64, description, "uint64", NULL); - uint64_t expect = 1; - expect <<= 60; - cmp_ok(data.uint64, "==", expect, "uint64 field is 2**60"); - } - - { - char description[500]; - snprintf(description, 500, "uint128 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = data_ok( - result, MMDB_DATA_TYPE_UINT128, description, "uint128", NULL); -#if MMDB_UINT128_IS_BYTE_ARRAY - uint8_t expect[16] = {0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00}; - ok(memcmp(data.uint128, expect, 16) == 0, "uint128 field is 2**120"); -#else - mmdb_uint128_t expect = 1; - expect <<= 120; - cmp_ok(data.uint128, "==", expect, "uint128 field is 2**120"); -#endif - } - - { - char description[500]; - snprintf(description, 500, "boolean field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = data_ok( - result, MMDB_DATA_TYPE_BOOLEAN, description, "boolean", NULL); - cmp_ok(data.boolean, "==", true, "boolean field is true"); - } - - { - char description[500]; - snprintf(description, 500, "array field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_ARRAY, description, "array", NULL); - ok(data.data_size == 3, "array field has 3 elements"); - - snprintf(description, 500, "array[0] for %s - %s", ip, mode_desc); - data = data_ok( - result, MMDB_DATA_TYPE_UINT32, description, "array", "0", NULL); - ok(data.uint32 == 1, "array[0] is 1"); - - snprintf(description, 500, "array[1] for %s - %s", ip, mode_desc); - data = data_ok( - result, MMDB_DATA_TYPE_UINT32, description, "array", "1", NULL); - ok(data.uint32 == 2, "array[1] is 1"); - - snprintf(description, 500, "array[2] for %s - %s", ip, mode_desc); - data = data_ok( - result, MMDB_DATA_TYPE_UINT32, description, "array", "2", NULL); - ok(data.uint32 == 3, "array[2] is 1"); - } - - { - char description[500]; - snprintf(description, 500, "map field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_MAP, description, "map", NULL); - ok(data.data_size == 1, "map field has 1 element"); - - snprintf(description, 500, "map{mapX} for %s - %s", ip, mode_desc); - - data = data_ok( - result, MMDB_DATA_TYPE_MAP, description, "map", "mapX", NULL); - ok(data.data_size == 2, "map{mapX} field has 2 elements"); - - snprintf(description, - 500, - "map{mapX}{utf8_stringX} for %s - %s", - ip, - mode_desc); - - data = data_ok(result, - MMDB_DATA_TYPE_UTF8_STRING, - description, - "map", - "mapX", - "utf8_stringX", - NULL); - const char *string = mmdb_strndup(data.utf8_string, data.data_size); - is(string, "hello", "map{mapX}{utf8_stringX} is 'hello'"); - free((char *)string); - - snprintf( - description, 500, "map{mapX}{arrayX} for %s - %s", ip, mode_desc); - data = data_ok(result, - MMDB_DATA_TYPE_ARRAY, - description, - "map", - "mapX", - "arrayX", - NULL); - ok(data.data_size == 3, "map{mapX}{arrayX} field has 3 elements"); - - snprintf(description, - 500, - "map{mapX}{arrayX}[0] for %s - %s", - ip, - mode_desc); - data = data_ok(result, - MMDB_DATA_TYPE_UINT32, - description, - "map", - "mapX", - "arrayX", - "0", - NULL); - ok(data.uint32 == 7, "map{mapX}{arrayX}[0] is 7"); - - snprintf(description, - 500, - "map{mapX}{arrayX}[1] for %s - %s", - ip, - mode_desc); - data = data_ok(result, - MMDB_DATA_TYPE_UINT32, - description, - "map", - "mapX", - "arrayX", - "1", - NULL); - ok(data.uint32 == 8, "map{mapX}{arrayX}[1] is 8"); - - snprintf(description, - 500, - "map{mapX}{arrayX}[2] for %s - %s", - ip, - mode_desc); - data = data_ok(result, - MMDB_DATA_TYPE_UINT32, - description, - "map", - "mapX", - "arrayX", - "2", - NULL); - ok(data.uint32 == 9, "map{mapX}{arrayX}[2] is 9"); - } -} - -void test_all_data_types_as_zero(MMDB_lookup_result_s *result, - const char *ip, - const char *UNUSED(filename), - const char *mode_desc) { - { - char description[500]; - snprintf( - description, 500, "utf8_string field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = data_ok(result, - MMDB_DATA_TYPE_UTF8_STRING, - description, - "utf8_string", - NULL); - is(data.utf8_string, "", "got expected utf8_string value (NULL)"); - } - - { - char description[500]; - snprintf(description, 500, "double field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_DOUBLE, description, "double", NULL); - - compare_double(data.double_value, 0.0); - } - - { - char description[500]; - snprintf(description, 500, "float field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_FLOAT, description, "float", NULL); - - compare_float(data.float_value, 0.0F); - } - - { - char description[500]; - snprintf(description, 500, "bytes field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_BYTES, description, "bytes", NULL); - ok(data.data_size == 0, "bytes field data_size is 0"); - /* In C does it makes sense to write something like this? - uint8_t expect[0] = {}; - ok(memcmp(data.bytes, expect, 0) == 0, "got expected bytes value - (NULL)"); */ - } - - { - char description[500]; - snprintf(description, 500, "uint16 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_UINT16, description, "uint16", NULL); - uint16_t expect = 0; - ok(data.uint16 == expect, "uint16 field is 0"); - } - - { - char description[500]; - snprintf(description, 500, "uint32 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_UINT32, description, "uint32", NULL); - uint32_t expect = 0; - cmp_ok(data.uint32, "==", expect, "uint32 field is 0"); - } - - { - char description[500]; - snprintf(description, 500, "int32 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_INT32, description, "int32", NULL); - int32_t expect = 0; - expect *= -1; - cmp_ok(data.int32, "==", expect, "int32 field is 0"); - } - - { - char description[500]; - snprintf(description, 500, "uint64 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_UINT64, description, "uint64", NULL); - uint64_t expect = 0; - cmp_ok(data.uint64, "==", expect, "uint64 field is 0"); - } - - { - char description[500]; - snprintf(description, 500, "uint128 field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = data_ok( - result, MMDB_DATA_TYPE_UINT128, description, "uint128", NULL); -#if MMDB_UINT128_IS_BYTE_ARRAY - uint8_t expect[16] = {0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00}; - ok(memcmp(data.uint128, expect, 16) == 0, "uint128 field is 0"); -#else - mmdb_uint128_t expect = 0; - cmp_ok(data.uint128, "==", expect, "uint128 field is 0"); -#endif - } - - { - char description[500]; - snprintf(description, 500, "boolean field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = data_ok( - result, MMDB_DATA_TYPE_BOOLEAN, description, "boolean", NULL); - cmp_ok(data.boolean, "==", false, "boolean field is false"); - } - - { - char description[500]; - snprintf(description, 500, "array field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_ARRAY, description, "array", NULL); - ok(data.data_size == 0, "array field has 0 elements"); - } - - { - char description[500]; - snprintf(description, 500, "map field for %s - %s", ip, mode_desc); - - MMDB_entry_data_s data = - data_ok(result, MMDB_DATA_TYPE_MAP, description, "map", NULL); - ok(data.data_size == 0, "map field has 0 elements"); - } -} - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-decoder.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - - // All of the remaining tests require an open mmdb - if (NULL == mmdb) { - diag("could not open %s - skipping remaining tests", path); - return; - } - - free((void *)path); - - { - const char *ip = "not an ip"; - - int gai_error, mmdb_error; - MMDB_lookup_result_s result = - MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error); - - cmp_ok(gai_error, - "==", - EAI_NONAME, - "MMDB_lookup populates getaddrinfo error properly - %s", - ip); - - ok(!result.found_entry, - "no result entry struct returned for invalid IP address '%s'", - ip); - } - - { - const char *ip = "e900::"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - ok(!result.found_entry, - "no result entry struct returned for IP address not in the database " - "- %s - %s - %s", - ip, - filename, - mode_desc); - } - - { - const char *ip = "::1.1.1.1"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - ok(result.found_entry, - "got a result entry struct for IP address in the database - %s - %s " - "- %s", - ip, - filename, - mode_desc); - - cmp_ok(result.entry.offset, - ">", - 0, - "result.entry.offset > 0 for address in the database - %s - %s " - "- %s", - ip, - filename, - mode_desc); - - test_all_data_types(&result, ip, filename, mode_desc); - } - - { - const char *ip = "::4.5.6.7"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - ok(result.found_entry, - "got a result entry struct for IP address in the database - %s - %s " - "- %s", - ip, - filename, - mode_desc); - - cmp_ok(result.entry.offset, - ">", - 0, - "result.entry.offset > 0 for address in the database - %s - %s " - "- %s", - ip, - filename, - mode_desc); - - test_all_data_types(&result, ip, filename, mode_desc); - } - - { - const char *ip = "::0.0.0.0"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - ok(result.found_entry, - "got a result entry struct for IP address in the database - %s - %s " - "- %s", - ip, - filename, - mode_desc); - - test_all_data_types_as_zero(&result, ip, filename, mode_desc); - } - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/dump_t.c b/3rd/libmaxminddb/t/dump_t.c deleted file mode 100644 index 4cb59af4d..000000000 --- a/3rd/libmaxminddb/t/dump_t.c +++ /dev/null @@ -1,98 +0,0 @@ -#define _XOPEN_SOURCE 700 -#include "maxminddb_test_helper.h" - -#ifdef HAVE_OPEN_MEMSTREAM -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-decoder.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const char *ip = "1.1.1.1"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - MMDB_entry_data_list_s *entry_data_list; - int status = MMDB_get_entry_data_list(&result.entry, &entry_data_list); - - ok(MMDB_SUCCESS == status, "MMDB_get_entry_data_list is successful"); - - char *dump_output; - size_t dump_size; - FILE *stream = open_memstream(&dump_output, &dump_size); - status = MMDB_dump_entry_data_list(stream, entry_data_list, 0); - fclose(stream); - MMDB_free_entry_data_list(entry_data_list); - - ok(MMDB_SUCCESS == status, - "MMDB_dump_entry_data_list is successful - %s", - mode_desc); - - cmp_ok(dump_size, ">", 0, "MMDB_dump produced output - %s", mode_desc); - - char *expect[] = {"{", - " \"array\": ", - " [", - " 1 ", - " 2 ", - " 3 ", - " ]", - " \"boolean\": ", - " true ", - " \"bytes\": ", - " 0000002A ", - " \"double\": ", - " 42.123456 ", - " \"float\": ", - " 1.100000 ", - " \"int32\": ", - " -268435456 ", - " \"map\": ", - " {", - " \"mapX\": ", - " {", - " \"arrayX\": ", - " [", - " 7 ", - " 8 ", - " 9 ", - " ]", - " \"utf8_stringX\": ", - " \"hello\" ", - " }", - " }", - " \"uint128\": ", - " 0x01000000000000000000000000000000 ", - " \"uint16\": ", - " 100 ", - " \"uint32\": ", - " 268435456 ", - " \"uint64\": ", - " 1152921504606846976 ", - " \"utf8_string\": ", - " \"unicode! ☯ - ♫\" ", - "}"}; - - for (int i = 0; i < 42; i++) { - ok((strstr(dump_output, expect[i]) != NULL), - "dump output contains expected line (%s) - %s", - expect[i], - mode_desc); - } - - free(dump_output); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} -#else -int main(void) { - plan(SKIP_ALL, "This test requires the open_memstream() function"); -} -#endif diff --git a/3rd/libmaxminddb/t/external_symbols_t.pl b/3rd/libmaxminddb/t/external_symbols_t.pl deleted file mode 100755 index e1301e8e1..000000000 --- a/3rd/libmaxminddb/t/external_symbols_t.pl +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; - -use FindBin qw( $Bin ); - -_skip_tests_if_required_modules_are_not_present(); -_skip_tests_if_nm_is_not_present(); -_test_libs_external_symbols(); - -done_testing(); - -sub _skip_tests_if_required_modules_are_not_present { - eval <<'EOF'; - use Test::More 0.88; - use IPC::Run3 qw( run3 ); -EOF - - if ($@) { - print - "1..0 # skip all tests skipped - these tests need the Test::More 0.88, IPC::Run3 modules:\n"; - print "$@"; - exit 0; - } -} - -sub _skip_tests_if_nm_is_not_present { - run3( - [ 'nm', '-V' ], - \undef, - \undef, - \undef, - ); - - my $exit_status = $? >> 8; - if ($exit_status) { - print - "1..0 # skipp all tests skipped - this test requires the command line utility `nm`.\n"; - exit 0; - } -} - -sub _test_libs_external_symbols { - my @libs = _libs_to_test(); - - if (@libs) { - for my $lib (@libs) { - _test_lib_external_symbols($lib); - } - } - else { - fail('No libs were found to test'); - } -} - -sub _libs_to_test { - my $lib_dir = "$Bin/../src/.libs"; - opendir my $dh, $lib_dir - or die "Failed to open the lib dir at $lib_dir for reading: $!\n"; - my @libs = map { $lib_dir . q{/} . $_ } - grep { $_ =~ m/\.so$/ } readdir $dh; - closedir $dh; - - return @libs; -} - -sub _test_lib_external_symbols { - my $lib = shift; - - my $stdout; - my $stderr; - run3( - [ 'nm', '-g', '--defined-only', $lib ], - \undef, - \$stdout, - \$stderr, - ); - - my $exit_status = $? >> 8; - ok( !$exit_status, 'nm returned a non-error status' ) - or diag($stderr); - - my @external_symbols = _extract_external_symbols($stdout); - is_deeply( - [ grep { $_ !~ m/^MMDB_/ } @external_symbols ], - [], - "$lib exports only MMDB_ symbols" - ); -} - -sub _extract_external_symbols { - my $nm_output = shift; - - my @lines = split /\r\n|\r|\n/, $nm_output; - - my @external_symbols; - for my $line (@lines) { - my @fields = split /\s+/, $line; - die "Unexpected nm output for line $line\n" - if @fields != 3; - push @external_symbols, $fields[2]; - } - - return @external_symbols; -} diff --git a/3rd/libmaxminddb/t/get_value_pointer_bug_t.c b/3rd/libmaxminddb/t/get_value_pointer_bug_t.c deleted file mode 100644 index ebb91595c..000000000 --- a/3rd/libmaxminddb/t/get_value_pointer_bug_t.c +++ /dev/null @@ -1,71 +0,0 @@ -#include "maxminddb_test_helper.h" - -/* This test exercises a bug found in MMDB_get_value for certain types of - * nested data structures which contain pointers. See - * https://github.com/maxmind/libmaxminddb/issues/2 and - * https://github.com/maxmind/libmaxminddb/issues/3. - * - * There is also the potential for a similar bug when looking up a value by - * path in an array. This is not tested (yet) as we don't have the right test - * data for it. - * - * These tests are somewhat fragile since they depend on a specific data - * layout in the database. Ideally the test would check that this layout - * exists before checking to see if the lookups are correct. - */ - -void test_one_ip(MMDB_s *mmdb, - const char *filename, - const char *mode_desc, - char *ip, - char *country_code) { - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - MMDB_entry_data_s entry_data = data_ok(&result, - MMDB_DATA_TYPE_UTF8_STRING, - "country{iso_code}", - "country", - "iso_code", - NULL); - - if (ok(entry_data.has_data, "found data for country{iso_code}")) { - char *string = - mmdb_strndup(entry_data.utf8_string, entry_data.data_size); - if (!string) { - ok(0, "mmdb_strndup() call failed"); - exit(1); - } - if (!ok(strcmp(string, country_code) == 0, - "iso_code is %s", - country_code)) { - diag(" value is %s", string); - } - free(string); - } -} - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "GeoIP2-City-Test.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - /* This exercises a bug where the entire top-level value is a pointer to - * another part of the data section. */ - test_one_ip(mmdb, filename, mode_desc, "2001:218::", "JP"); - /* This exercises a bug where one subnet's data shares part of the data - * with another subnet - in this case it is the "country" key (and others) - * in the top level map. We are testing that the "country" key's value is - * handled correctly. The value _should_ be a pointer to another map. */ - test_one_ip(mmdb, filename, mode_desc, "81.2.69.160", "GB"); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/get_value_t.c b/3rd/libmaxminddb/t/get_value_t.c deleted file mode 100644 index e3720bb43..000000000 --- a/3rd/libmaxminddb/t/get_value_t.c +++ /dev/null @@ -1,404 +0,0 @@ -#include "maxminddb_test_helper.h" - -void test_array_0_result(int status, - MMDB_entry_data_s entry_data, - char *function) { - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for %s() is MMDB_SUCCESS - array[0]", - function); - ok(entry_data.has_data, "found a value for array[0]"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "returned entry type is uint32 - array[0]"); - cmp_ok(entry_data.uint32, "==", 1, "entry value is 1 - array[0]"); -} - -void test_array_2_result(int status, - MMDB_entry_data_s entry_data, - char *function) { - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for %s() is MMDB_SUCCESS - array[2]", - function); - ok(entry_data.has_data, "found a value for array[2]"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "returned entry type is uint32 - array[2]"); - cmp_ok(entry_data.uint32, "==", 3, "entry value is 3 - array[2]"); -} - -void test_array_minus_3_result(int status, - MMDB_entry_data_s entry_data, - char *function) { - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for %s() is MMDB_SUCCESS - array[-3]", - function); - ok(entry_data.has_data, "found a value for array[-3]"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "returned entry type is uint32 - array[-3]"); - cmp_ok(entry_data.uint32, "==", 1, "entry value is 1 - array[-3]"); -} - -void test_array_minus_1_result(int status, - MMDB_entry_data_s entry_data, - char *function) { - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for %s() is MMDB_SUCCESS - array[-1]", - function); - ok(entry_data.has_data, "found a value for array[-1]"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "returned entry type is uint32 - array[-1]"); - cmp_ok(entry_data.uint32, "==", 3, "entry value is 3 - array[-1]"); -} - -int call_vget_value(MMDB_entry_s *entry, MMDB_entry_data_s *entry_data, ...) { - va_list keys; - va_start(keys, entry_data); - - int status = MMDB_vget_value(entry, entry_data, keys); - - va_end(keys); - - return status; -} - -void test_simple_structure(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-decoder.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const char *ip = "1.1.1.1"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = {"array", "0", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_array_0_result(status, entry_data, "MMDB_aget_value"); - - status = MMDB_get_value(&result.entry, &entry_data, "array", "0", NULL); - test_array_0_result(status, entry_data, "MMDB_get_value"); - - status = - call_vget_value(&result.entry, &entry_data, "array", "0", NULL); - test_array_0_result(status, entry_data, "MMDB_vget_value"); - } - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = {"array", "2", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_array_2_result(status, entry_data, "MMDB_aget_value"); - - status = MMDB_get_value(&result.entry, &entry_data, "array", "2", NULL); - test_array_2_result(status, entry_data, "MMDB_get_value"); - - status = - call_vget_value(&result.entry, &entry_data, "array", "2", NULL); - test_array_2_result(status, entry_data, "MMDB_vget_value"); - } - - { - MMDB_entry_data_s entry_data; - int status = - MMDB_get_value(&result.entry, &entry_data, "array", "zero", NULL); - cmp_ok(status, - "==", - MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR, - "MMDB_get_value() returns error on non-integer array index"); - } - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = {"array", "-1", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_array_minus_1_result(status, entry_data, "MMDB_aget_value"); - - status = - MMDB_get_value(&result.entry, &entry_data, "array", "-1", NULL); - test_array_minus_1_result(status, entry_data, "MMDB_get_value"); - - status = - call_vget_value(&result.entry, &entry_data, "array", "-1", NULL); - test_array_minus_1_result(status, entry_data, "MMDB_vget_value"); - } - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = {"array", "-3", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_array_minus_3_result(status, entry_data, "MMDB_aget_value"); - - status = - MMDB_get_value(&result.entry, &entry_data, "array", "-3", NULL); - test_array_minus_3_result(status, entry_data, "MMDB_get_value"); - - status = - call_vget_value(&result.entry, &entry_data, "array", "-3", NULL); - test_array_minus_3_result(status, entry_data, "MMDB_vget_value"); - } - - { - MMDB_entry_data_s entry_data; - int status = - MMDB_get_value(&result.entry, &entry_data, "array", "-4", NULL); - cmp_ok(status, - "==", - MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR, - "MMDB_get_value() returns error on too large negative integer"); - } - - { - MMDB_entry_data_s entry_data; - int status = MMDB_get_value( - &result.entry, &entry_data, "array", "-18446744073709551616", NULL); - cmp_ok( - status, - "==", - MMDB_INVALID_LOOKUP_PATH_ERROR, - "MMDB_get_value() returns error on integer smaller than LONG_MIN"); - } - - { - MMDB_entry_data_s entry_data; - int status = MMDB_get_value( - &result.entry, &entry_data, "array", "18446744073709551616", NULL); - cmp_ok( - status, - "==", - MMDB_INVALID_LOOKUP_PATH_ERROR, - "MMDB_get_value() returns error on integer larger than LONG_MAX"); - } - - MMDB_close(mmdb); - free(mmdb); -} - -void test_complex_map_a_result(int status, - MMDB_entry_data_s entry_data, - char *function) { - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for %s() is MMDB_SUCCESS - map1{map2}{array}[0]{map3}{a}", - function); - ok(entry_data.has_data, "found a value for map1{map2}{array}[0]{map3}{a}"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "returned entry type is uint32 - map1{map2}{array}[0]{map3}{a}"); - cmp_ok(entry_data.uint32, - "==", - 1, - "entry value is 1 - map1{map2}{array}[0]{map3}{a}"); -} - -void test_complex_map_c_result(int status, - MMDB_entry_data_s entry_data, - char *function) { - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for %s() is MMDB_SUCCESS - map1{map2}{array}[0]{map3}{c}", - function); - ok(entry_data.has_data, "found a value for map1{map2}{array}[0]{map3}{c}"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UINT32, - "returned entry type is uint32 - map1{map2}{array}[0]{map3}{c}"); - cmp_ok(entry_data.uint32, - "==", - 3, - "entry value is 3 - map1{map2}{array}[0]{map3}{c}"); -} - -void test_no_result(int status, - MMDB_entry_data_s entry_data, - char *function, - char *path_description) { - cmp_ok(status, - "==", - MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR, - "status for %s() is MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR - %s", - function, - path_description); - ok(!entry_data.has_data, "did not find a value for %s", path_description); -} - -void test_nested_structure(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-nested.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const char *ip = "1.1.1.1"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = { - "map1", "map2", "array", "0", "map3", "a", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_complex_map_a_result(status, entry_data, "MMDB_aget_value"); - - status = MMDB_get_value(&result.entry, - &entry_data, - "map1", - "map2", - "array", - "0", - "map3", - "a", - NULL); - test_complex_map_a_result(status, entry_data, "MMDB_get_value"); - - status = call_vget_value(&result.entry, - &entry_data, - "map1", - "map2", - "array", - "0", - "map3", - "a", - NULL); - test_complex_map_a_result(status, entry_data, "MMDB_vget_value"); - } - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = { - "map1", "map2", "array", "0", "map3", "c", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_complex_map_c_result(status, entry_data, "MMDB_aget_value"); - - status = MMDB_get_value(&result.entry, - &entry_data, - "map1", - "map2", - "array", - "0", - "map3", - "c", - NULL); - test_complex_map_c_result(status, entry_data, "MMDB_get_value"); - - status = call_vget_value(&result.entry, - &entry_data, - "map1", - "map2", - "array", - "0", - "map3", - "c", - NULL); - test_complex_map_c_result(status, entry_data, "MMDB_vget_value"); - } - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = { - "map1", "map42", "array", "0", "map3", "c", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_no_result(status, - entry_data, - "MMDB_aget_value", - "map1{map42}{array}[0]{map3}{c}"); - - status = MMDB_get_value(&result.entry, - &entry_data, - "map1", - "map42", - "array", - "0", - "map3", - "c", - NULL); - test_no_result(status, - entry_data, - "MMDB_get_value", - "map1{map42}{array}[0]{map3}{c}"); - - status = call_vget_value(&result.entry, - &entry_data, - "map1", - "map42", - "array", - "0", - "map3", - "c", - NULL); - test_no_result(status, - entry_data, - "MMDB_vget_value", - "map1{map42}{array}[0]{map3}{c}"); - } - - { - MMDB_entry_data_s entry_data; - const char *lookup_path[] = { - "map1", "map2", "array", "9", "map3", "c", NULL}; - int status = MMDB_aget_value(&result.entry, &entry_data, lookup_path); - test_no_result(status, - entry_data, - "MMDB_aget_value", - "map1{map42}{array}[9]{map3}{c}"); - - status = MMDB_get_value(&result.entry, - &entry_data, - "map1", - "map2", - "array", - "9", - "map3", - "c", - NULL); - test_no_result(status, - entry_data, - "MMDB_get_value", - "map1{map42}{array}[9]{map3}{c}"); - - status = call_vget_value(&result.entry, - &entry_data, - "map1", - "map2", - "array", - "9", - "map3", - "c", - NULL); - test_no_result(status, - entry_data, - "MMDB_vget_value", - "map1{map42}{array}[9]{map3}{c}"); - } - - MMDB_close(mmdb); - free(mmdb); -} - -void run_tests(int mode, const char *mode_desc) { - test_simple_structure(mode, mode_desc); - test_nested_structure(mode, mode_desc); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/ipv4_start_cache_t.c b/3rd/libmaxminddb/t/ipv4_start_cache_t.c deleted file mode 100644 index 3e13abcfa..000000000 --- a/3rd/libmaxminddb/t/ipv4_start_cache_t.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "maxminddb_test_helper.h" - -void test_one_ip(MMDB_s *mmdb, - const char *ip, - const char *filename, - const char *mode_desc) { - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - ok(result.found_entry, - "got a result for an IPv4 address included in a larger-than-IPv4 subnet " - "- %s - %s", - ip, - mode_desc); - - data_ok(&result, MMDB_DATA_TYPE_UTF8_STRING, "string value for IP", NULL); -} - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-no-ipv4-search-tree.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - test_one_ip(mmdb, "1.1.1.1", filename, mode_desc); - test_one_ip(mmdb, "255.255.255.255", filename, mode_desc); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/ipv6_lookup_in_ipv4_t.c b/3rd/libmaxminddb/t/ipv6_lookup_in_ipv4_t.c deleted file mode 100644 index d42309170..000000000 --- a/3rd/libmaxminddb/t/ipv6_lookup_in_ipv4_t.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "maxminddb_test_helper.h" - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-ipv4-28.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const char *ip = "::abcd"; - int gai_error, mmdb_error; - MMDB_lookup_result_s UNUSED(result) = - MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error); - - cmp_ok(mmdb_error, - "==", - MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR, - "MMDB_lookup_string sets mmdb_error to " - "MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR when we try to look up an " - "IPv6 address in an IPv4-only database"); - - struct addrinfo hints = {.ai_family = AF_INET6, .ai_flags = AI_NUMERICHOST}; - - struct addrinfo *addresses; - gai_error = getaddrinfo( - "2001:db8:85a3:0:0:8a2e:370:7334", NULL, &hints, &addresses); - if (gai_error) { - BAIL_OUT("getaddrinfo failed: %s", gai_strerror(gai_error)); - } - - mmdb_error = 0; - MMDB_lookup_sockaddr(mmdb, addresses->ai_addr, &mmdb_error); - - cmp_ok(mmdb_error, - "==", - MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR, - "MMDB_lookup_sockaddr sets mmdb_error to " - "MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR when we try to look up an " - "IPv6 address in an IPv4-only database"); - - freeaddrinfo(addresses); - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/libtap/COPYING b/3rd/libmaxminddb/t/libtap/COPYING deleted file mode 100644 index 65c5ca88a..000000000 --- a/3rd/libmaxminddb/t/libtap/COPYING +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/3rd/libmaxminddb/t/libtap/INSTALL b/3rd/libmaxminddb/t/libtap/INSTALL deleted file mode 100644 index 5b2c76df3..000000000 --- a/3rd/libmaxminddb/t/libtap/INSTALL +++ /dev/null @@ -1,41 +0,0 @@ -To install libtap on a Unix-like system: - - $ make - $ make check - $ make install - -To compile with gcc -ansi, run: - - $ ANSI=1 make - -To install to a different directory than /usr/local, supply the -PREFIX variable to make: - - $ PREFIX=/usr make install - -On Windows, the library can be created by first setting up the -correct development environment variables. Usually this is done by -running vcvars32.bat included in the Visual Studio distribution. -You should also install gnu make which can be found at -http://gnuwin32.sourceforge.net/packages/make.htm. Once this is -done, you should be able to run the following: - - > make -f Makefile.win - -If you want to use it directly in another project, you can copy tap.c -and tap.h there and it shouldn't have a problem compiling. - - $ ls - tap.c tap.h test.c - $ cat test.c - #include "tap.h" - int main () { - plan(1); - ok(50 + 5, "foo %s", "bar"); - done_testing(); - } - $ gcc test.c tap.c - $ a.out - 1..1 - ok 1 - foo bar - diff --git a/3rd/libmaxminddb/t/libtap/Makefile b/3rd/libmaxminddb/t/libtap/Makefile deleted file mode 100644 index c00bef1da..000000000 --- a/3rd/libmaxminddb/t/libtap/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -CC ?= gcc -CFLAGS += -Wall -I. -fPIC -PREFIX ?= $(DESTDIR)/usr/local -TESTS = $(patsubst %.c, %, $(wildcard t/*.c)) - -ifdef ANSI - # -D_BSD_SOURCE for MAP_ANONYMOUS - CFLAGS += -ansi -D_BSD_SOURCE - LDLIBS += -lbsd-compat -endif - -%: - $(CC) $(LDFLAGS) $(TARGET_ARCH) $(filter %.o %.a %.so, $^) $(LDLIBS) -o $@ - -%.o: - $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $(filter %.c, $^) $(LDLIBS) -o $@ - -%.a: - $(AR) rcs $@ $(filter %.o, $^) - -%.so: - $(CC) -shared $(LDFLAGS) $(TARGET_ARCH) $(filter %.o, $^) $(LDLIBS) -o $@ - -all: libtap.a libtap.so tap.pc tests - -tap.pc: - @echo generating tap.pc - @echo 'prefix='$(PREFIX) > tap.pc - @echo 'exec_prefix=$${prefix}' >> tap.pc - @echo 'libdir=$${prefix}/lib' >> tap.pc - @echo 'includedir=$${prefix}/include' >> tap.pc - @echo '' >> tap.pc - @echo 'Name: libtap' >> tap.pc - @echo 'Description: Write tests in C' >> tap.pc - @echo 'Version: 0.1.0' >> tap.pc - @echo 'URL: https://github.com/zorgnax/libtap' >> tap.pc - @echo 'Libs: -L$${libdir} -ltap' >> tap.pc - @echo 'Cflags: -I$${includedir}' >> tap.pc - -libtap.a: tap.o - -libtap.so: tap.o - -tap.o: tap.c tap.h - -tests: $(TESTS) - -$(TESTS): %: %.o libtap.a - -$(patsubst %, %.o, $(TESTS)): %.o: %.c tap.h - -clean: - rm -rf *.o t/*.o tap.pc libtap.a libtap.so $(TESTS) - -install: libtap.a tap.h libtap.so tap.pc - mkdir -p $(PREFIX)/lib $(PREFIX)/include $(PREFIX)/lib/pkgconfig - install -c libtap.a $(PREFIX)/lib - install -c libtap.so $(PREFIX)/lib - install -c tap.pc $(PREFIX)/lib/pkgconfig - install -c tap.h $(PREFIX)/include - -uninstall: - rm $(PREFIX)/lib/libtap.a $(PREFIX)/lib/libtap.so $(PREFIX)/include/tap.h - -dist: - rm libtap.zip - zip -r libtap * - -check test: all - ./t/test - -.PHONY: all clean install uninstall dist check test tests diff --git a/3rd/libmaxminddb/t/libtap/README.md b/3rd/libmaxminddb/t/libtap/README.md deleted file mode 100644 index 5332d526c..000000000 --- a/3rd/libmaxminddb/t/libtap/README.md +++ /dev/null @@ -1,268 +0,0 @@ -NAME -==== - -libtap - Write tests in C - -SYNOPSIS -======== - - #include - - int main () { - plan(5); - int bronze = 1, silver = 2, gold = 3; - ok(bronze < silver, "bronze is less than silver"); - ok(bronze > silver, "not quite"); - is("gold", "gold", "gold is gold"); - cmp_ok(silver, "<", gold, "%d <= %d", silver, gold); - like("platinum", ".*inum", "platinum matches .*inum"); - done_testing(); - } - -results in: - - 1..5 - ok 1 - bronze is less than silver - not ok 2 - not quite - # Failed test 'not quite' - # at t/synopsis.c line 7. - ok 3 - gold is gold - ok 4 - 2 <= 3 - ok 5 - platinum matches .*inum - # Looks like you failed 1 test of 5 run. - -DESCRIPTION -=========== - -tap is an easy to read and easy to write way of creating tests for -your software. This library creates functions that can be used to -generate it for your C programs. It is implemented using macros -that include file and line info automatically, and makes it so that -the format message of each test is optional. It is mostly based on -the Test::More Perl module. - -INSTALL -======= - -On **Unix** systems: - - $ make - $ make install - -For more detailed installation instructions (eg, for **Windows**), see `INSTALL`. - -FUNCTIONS -========= - -- plan(tests) -- plan(NO_PLAN) -- plan(SKIP_ALL); -- plan(SKIP_ALL, fmt, ...) - - Use this to start a series of tests. When you know how many tests there - will be, you can put a number as a number of tests you expect to run. If - you do not know how many tests there will be, you can use plan(NO_PLAN) - or not call this function. When you pass it a number of tests to run, a - message similar to the following will appear in the output: - - 1..5 - - If you pass it SKIP_ALL, the whole test will be skipped. - -- ok(test) -- ok(test, fmt, ...) - - Specify a test. the test can be any statement returning a true or false - value. You may optionally pass a format string describing the test. - - ok(r = reader_new("Of Mice and Men"), "create a new reader"); - ok(reader_go_to_page(r, 55), "can turn the page"); - ok(r->page == 55, "page turned to the right one"); - - Should print out: - - ok 1 - create a new reader - ok 2 - can turn the page - ok 3 - page turned to the right one - - On failure, a diagnostic message will be printed out. - - not ok 3 - page turned to the right one - # Failed test 'page turned to the right one' - # at reader.c line 13. - -- is(got, expected) -- is(got, expected, fmt, ...) -- isnt(got, unexpected) -- isnt(got, unexpected, fmt, ...) - - Tests that the string you got is what you expected. with isnt, it is the - reverse. - - is("this", "that", "this is that"); - - prints: - - not ok 1 - this is that - # Failed test 'this is that' - # at is.c line 6. - # got: 'this' - # expected: 'that' - -- cmp_ok(a, op, b) -- cmp_ok(a, op, b, fmt, ...) - - Compares two ints with any binary operator that doesn't require an lvalue. - This is nice to use since it provides a better error message than an - equivalent ok. - - cmp_ok(420, ">", 666); - - prints: - - not ok 1 - # Failed test at cmpok.c line 5. - # 420 - # > - # 666 - -- cmp_mem(got, expected, n) -- cmp_mem(got, expected, n, fmt, ...) - - Tests that the first n bytes of the memory you got is what you expected. - NULL pointers for got and expected are handled (if either is NULL, - the test fails), but you need to ensure n is not too large. - - char *a = "foo"; - char *b = "bar"; - cmp_mem(a, b, 3) - - prints - - not ok 1 - # Failed test at t/cmp_mem.c line 9. - # Difference starts at offset 0 - # got: 0x66 - # expected: 0x62 - -- like(got, expected) -- like(got, expected, fmt, ...) -- unlike(got, unexpected) -- unlike(got, unexpected, fmt, ...) - - Tests that the string you got matches the expected extended POSIX regex. - unlike is the reverse. These macros are the equivalent of a skip on - Windows. - - like("stranger", "^s.(r).*\\1$", "matches the regex"); - - prints: - - ok 1 - matches the regex - -- pass() -- pass(fmt, ...) -- fail() -- fail(fmt, ...) - - Speciy that a test succeeded or failed. Use these when the statement is - longer than you can fit into the argument given to an ok() test. - -- dies_ok(code) -- dies_ok(code, fmt, ...) -- lives_ok(code) -- lives_ok(code, fmt, ...) - - Tests whether the given code causes your program to exit. The code gets - passed to a macro that will test it in a forked process. If the code - succeeds it will be executed in the parent process. You can test things - like passing a function a null pointer and make sure it doesnt - dereference it and crash. - - dies_ok({abort();}, "abort does close your program"); - dies_ok({int x = 0/0;}, "divide by zero crash"); - lives_ok({pow(3.0, 5.0);}, "nothing wrong with taking 3**5"); - - On Windows, these macros are the equivalent of a skip. - -- done_testing() - - Summarizes the tests that occurred and exits the main function. If - there was no plan, it will print out the number of tests as. - - 1..5 - - It will also print a diagnostic message about how many - failures there were. - - # Looks like you failed 2 tests of 3 run. - - If all planned tests were successful, it will return 0. If any - test fails, it will return 1. If they all passed, but there - were missing tests, it will return 2. - -- diag(fmt, ...) - - print out a message to the tap output on stdout. Each line is - preceeded by a "# " so that you know its a diagnostic message. - - diag("This is\na diag\nto describe\nsomething."); - - prints: - - # This is - # a diag - # to describe - # something - - ok() and this function return an int so you can use it like: - - ok(0) || diag("doh!"); - -- skip(test, n) -- skip(test, n, fmt, ...) -- end_skip - - Skip a series of n tests if test is true. You may give a reason why you are - skipping them or not. The (possibly) skipped tests must occur between the - skip and end_skip macros. - - skip(TRUE, 2); - ok(1); - ok(0); - end_skip; - - prints: - - ok 1 # skip - ok 2 # skip - -- todo() -- todo(fmt, ...) -- end_todo - - Specifies a series of tests that you expect to fail because they are not - yet implemented. - - todo() - ok(0); - end_todo; - - prints: - - not ok 1 # TODO - # Failed (TODO) test at todo.c line 7 - -- BAIL_OUT() -- BAIL_OUT(fmt, ...) - - Immediately stops all testing. - - BAIL_OUT("Can't go no further"); - - prints - - Bail out! Can't go no further - - and exits with 255. - diff --git a/3rd/libmaxminddb/t/libtap/tap.c b/3rd/libmaxminddb/t/libtap/tap.c deleted file mode 100644 index 152e39e8e..000000000 --- a/3rd/libmaxminddb/t/libtap/tap.c +++ /dev/null @@ -1,354 +0,0 @@ -/* -libtap - Write tests in C -Copyright 2012 Jake Gelbman -This file is licensed under the LGPL -*/ - -#define _DEFAULT_SOURCE 1 - -#include -#include -#include -#include -#include "tap.h" - -static int expected_tests = NO_PLAN; -static int failed_tests; -static int current_test; -static char *todo_mesg; - -static char * -vstrdupf (const char *fmt, va_list args) { - char *str; - int size; - va_list args2; - va_copy(args2, args); - if (!fmt) - fmt = ""; - size = vsnprintf(NULL, 0, fmt, args2) + 2; - str = malloc(size); - if (!str) { - perror("malloc error"); - exit(1); - } - vsprintf(str, fmt, args); - va_end(args2); - return str; -} - -void -tap_plan (int tests, const char *fmt, ...) { - expected_tests = tests; - if (tests == SKIP_ALL) { - char *why; - va_list args; - va_start(args, fmt); - why = vstrdupf(fmt, args); - va_end(args); - printf("1..0 "); - diag("SKIP %s\n", why); - exit(0); - } - if (tests != NO_PLAN) { - printf("1..%d\n", tests); - } -} - -int -vok_at_loc (const char *file, int line, int test, const char *fmt, - va_list args) -{ - char *name = vstrdupf(fmt, args); - if (!test) { - printf("not "); - } - printf("ok %d", ++current_test); - if (*name) - printf(" - %s", name); - if (todo_mesg) { - printf(" # TODO"); - if (*todo_mesg) - printf(" %s", todo_mesg); - } - printf("\n"); - if (!test) { - printf("# Failed "); - if (todo_mesg) - printf("(TODO) "); - printf("test "); - if (*name) - printf("'%s'\n# ", name); - printf("at %s line %d.\n", file, line); - if (!todo_mesg) - failed_tests++; - } - free(name); - return test; -} - -int -ok_at_loc (const char *file, int line, int test, const char *fmt, ...) { - va_list args; - va_start(args, fmt); - vok_at_loc(file, line, test, fmt, args); - va_end(args); - return test; -} - -static int -mystrcmp (const char *a, const char *b) { - return a == b ? 0 : !a ? -1 : !b ? 1 : strcmp(a, b); -} - -#define eq(a, b) (!mystrcmp(a, b)) -#define ne(a, b) (mystrcmp(a, b)) - -int -is_at_loc (const char *file, int line, const char *got, const char *expected, - const char *fmt, ...) -{ - int test = eq(got, expected); - va_list args; - va_start(args, fmt); - vok_at_loc(file, line, test, fmt, args); - va_end(args); - if (!test) { - diag(" got: '%s'", got); - diag(" expected: '%s'", expected); - } - return test; -} - -int -isnt_at_loc (const char *file, int line, const char *got, const char *expected, - const char *fmt, ...) -{ - int test = ne(got, expected); - va_list args; - va_start(args, fmt); - vok_at_loc(file, line, test, fmt, args); - va_end(args); - if (!test) { - diag(" got: '%s'", got); - diag(" expected: anything else"); - } - return test; -} - -int -cmp_ok_at_loc (const char *file, int line, int a, const char *op, int b, - const char *fmt, ...) -{ - int test = eq(op, "||") ? a || b - : eq(op, "&&") ? a && b - : eq(op, "|") ? a | b - : eq(op, "^") ? a ^ b - : eq(op, "&") ? a & b - : eq(op, "==") ? a == b - : eq(op, "!=") ? a != b - : eq(op, "<") ? a < b - : eq(op, ">") ? a > b - : eq(op, "<=") ? a <= b - : eq(op, ">=") ? a >= b - : eq(op, "<<") ? a << b - : eq(op, ">>") ? a >> b - : eq(op, "+") ? a + b - : eq(op, "-") ? a - b - : eq(op, "*") ? a * b - : eq(op, "/") ? a / b - : eq(op, "%") ? a % b - : diag("unrecognized operator '%s'", op); - va_list args; - va_start(args, fmt); - vok_at_loc(file, line, test, fmt, args); - va_end(args); - if (!test) { - diag(" %d", a); - diag(" %s", op); - diag(" %d", b); - } - return test; -} - -static int -find_mem_diff (const char *a, const char *b, size_t n, size_t *offset) { - size_t i; - if (a == b) - return 0; - if (!a || !b) - return 2; - for (i = 0; i < n; i++) { - if (a[i] != b[i]) { - *offset = i; - return 1; - } - } - return 0; -} - -int -cmp_mem_at_loc (const char *file, int line, const void *got, - const void *expected, size_t n, const char *fmt, ...) -{ - size_t offset; - int diff = find_mem_diff(got, expected, n, &offset); - va_list args; - va_start(args, fmt); - vok_at_loc(file, line, !diff, fmt, args); - va_end(args); - if (diff == 1) { - diag(" Difference starts at offset %d", offset); - diag(" got: 0x%02x", ((unsigned char *)got)[offset]); - diag(" expected: 0x%02x", ((unsigned char *)expected)[offset]); - } - else if (diff == 2) { - diag(" got: %s", got ? "not NULL" : "NULL"); - diag(" expected: %s", expected ? "not NULL" : "NULL"); - } - return !diff; -} - -int -diag (const char *fmt, ...) { - va_list args; - char *mesg, *line; - int i; - va_start(args, fmt); - if (!fmt) - return 0; - mesg = vstrdupf(fmt, args); - line = mesg; - for (i = 0; *line; i++) { - char c = mesg[i]; - if (!c || c == '\n') { - mesg[i] = '\0'; - printf("# %s\n", line); - if (!c) - break; - mesg[i] = c; - line = mesg + i + 1; - } - } - free(mesg); - va_end(args); - return 0; -} - -int -exit_status () { - int retval = 0; - if (expected_tests == NO_PLAN) { - printf("1..%d\n", current_test); - } - else if (current_test != expected_tests) { - diag("Looks like you planned %d test%s but ran %d.", - expected_tests, expected_tests > 1 ? "s" : "", current_test); - retval = 2; - } - if (failed_tests) { - diag("Looks like you failed %d test%s of %d run.", - failed_tests, failed_tests > 1 ? "s" : "", current_test); - retval = 1; - } - return retval; -} - -int -bail_out (int ignore, const char *fmt, ...) { - va_list args; - va_start(args, fmt); - printf("Bail out! "); - vprintf(fmt, args); - printf("\n"); - va_end(args); - exit(255); - return 0; -} - -void -tap_skip (int n, const char *fmt, ...) { - char *why; - va_list args; - va_start(args, fmt); - why = vstrdupf(fmt, args); - va_end(args); - while (n --> 0) { - printf("ok %d ", ++current_test); - diag("skip %s\n", why); - } - free(why); -} - -void -tap_todo (int ignore, const char *fmt, ...) { - va_list args; - va_start(args, fmt); - todo_mesg = vstrdupf(fmt, args); - va_end(args); -} - -void -tap_end_todo () { - free(todo_mesg); - todo_mesg = NULL; -} - -#ifndef _WIN32 -#include -#include -#include - -#if defined __APPLE__ || defined BSD -#define MAP_ANONYMOUS MAP_ANON -#endif - -/* Create a shared memory int to keep track of whether a piece of code executed -dies. to be used in the dies_ok and lives_ok macros. */ -int -tap_test_died (int status) { - static int *test_died = NULL; - int prev; - if (!test_died) { - test_died = mmap(0, sizeof (int), PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_ANONYMOUS, -1, 0); - *test_died = 0; - } - prev = *test_died; - *test_died = status; - return prev; -} - -int -like_at_loc (int for_match, const char *file, int line, const char *got, - const char *expected, const char *fmt, ...) -{ - int test; - regex_t re; - va_list args; - int err = regcomp(&re, expected, REG_EXTENDED); - if (err) { - char errbuf[256]; - regerror(err, &re, errbuf, sizeof errbuf); - fprintf(stderr, "Unable to compile regex '%s': %s at %s line %d\n", - expected, errbuf, file, line); - exit(255); - } - err = regexec(&re, got, 0, NULL, 0); - regfree(&re); - test = for_match ? !err : err; - va_start(args, fmt); - vok_at_loc(file, line, test, fmt, args); - va_end(args); - if (!test) { - if (for_match) { - diag(" '%s'", got); - diag(" doesn't match: '%s'", expected); - } - else { - diag(" '%s'", got); - diag(" matches: '%s'", expected); - } - } - return test; -} -#endif diff --git a/3rd/libmaxminddb/t/libtap/tap.h b/3rd/libmaxminddb/t/libtap/tap.h deleted file mode 100644 index d1f9af35b..000000000 --- a/3rd/libmaxminddb/t/libtap/tap.h +++ /dev/null @@ -1,115 +0,0 @@ -/* -libtap - Write tests in C -Copyright 2012 Jake Gelbman -This file is licensed under the LGPL -*/ - -#ifndef __TAP_H__ -#define __TAP_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef va_copy -#ifdef __va_copy -#define va_copy __va_copy -#else -#define va_copy(d, s) ((d) = (s)) -#endif -#endif - -#include -#include -#include - -int vok_at_loc (const char *file, int line, int test, const char *fmt, - va_list args); -int ok_at_loc (const char *file, int line, int test, const char *fmt, - ...); -int is_at_loc (const char *file, int line, const char *got, - const char *expected, const char *fmt, ...); -int isnt_at_loc (const char *file, int line, const char *got, - const char *expected, const char *fmt, ...); -int cmp_ok_at_loc (const char *file, int line, int a, const char *op, - int b, const char *fmt, ...); -int cmp_mem_at_loc (const char *file, int line, const void *got, - const void *expected, size_t n, const char *fmt, ...); -int bail_out (int ignore, const char *fmt, ...); -void tap_plan (int tests, const char *fmt, ...); -int diag (const char *fmt, ...); -int exit_status (void); -void tap_skip (int n, const char *fmt, ...); -void tap_todo (int ignore, const char *fmt, ...); -void tap_end_todo (void); - -#define NO_PLAN -1 -#define SKIP_ALL -2 -#define ok(...) ok_at_loc(__FILE__, __LINE__, __VA_ARGS__, NULL) -#define is(...) is_at_loc(__FILE__, __LINE__, __VA_ARGS__, NULL) -#define isnt(...) isnt_at_loc(__FILE__, __LINE__, __VA_ARGS__, NULL) -#define cmp_ok(...) cmp_ok_at_loc(__FILE__, __LINE__, __VA_ARGS__, NULL) -#define cmp_mem(...) cmp_mem_at_loc(__FILE__, __LINE__, __VA_ARGS__, NULL) -#define plan(...) tap_plan(__VA_ARGS__, NULL) -#define done_testing() return exit_status() -#define BAIL_OUT(...) bail_out(0, "" __VA_ARGS__, NULL) -#define pass(...) ok(1, "" __VA_ARGS__) -#define fail(...) ok(0, "" __VA_ARGS__) - -#define skip(test, ...) do {if (test) {tap_skip(__VA_ARGS__, NULL); break;} -#define end_skip } while (0) - -#define todo(...) tap_todo(0, "" __VA_ARGS__, NULL) -#define end_todo tap_end_todo() - -#define dies_ok(...) dies_ok_common(1, __VA_ARGS__) -#define lives_ok(...) dies_ok_common(0, __VA_ARGS__) - -#ifdef _WIN32 -#define like(...) tap_skip(1, "like is not implemented on Windows") -#define unlike tap_skip(1, "unlike is not implemented on Windows") -#define dies_ok_common(...) \ - tap_skip(1, "Death detection is not supported on Windows") -#else -#define like(...) like_at_loc(1, __FILE__, __LINE__, __VA_ARGS__, NULL) -#define unlike(...) like_at_loc(0, __FILE__, __LINE__, __VA_ARGS__, NULL) -int like_at_loc (int for_match, const char *file, int line, - const char *got, const char *expected, - const char *fmt, ...); -#include -#include -#include -int tap_test_died (int status); -#define dies_ok_common(for_death, code, ...) \ - do { \ - int cpid; \ - int it_died; \ - tap_test_died(1); \ - cpid = fork(); \ - switch (cpid) { \ - case -1: \ - perror("fork error"); \ - exit(1); \ - case 0: \ - close(1); \ - close(2); \ - code \ - tap_test_died(0); \ - exit(0); \ - } \ - if (waitpid(cpid, NULL, 0) < 0) { \ - perror("waitpid error"); \ - exit(1); \ - } \ - it_died = tap_test_died(0); \ - if (!it_died) \ - {code} \ - ok(for_death ? it_died : !it_died, "" __VA_ARGS__); \ - } while (0) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/3rd/libmaxminddb/t/maxmind-db/.perltidyallrc b/3rd/libmaxminddb/t/maxmind-db/.perltidyallrc deleted file mode 100644 index 3779688b3..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/.perltidyallrc +++ /dev/null @@ -1,11 +0,0 @@ ---blank-lines-before-packages=0 ---iterations=2 ---no-outdent-long-comments --bar --boc --ci=4 --i=4 --l=78 --nolq --se --wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" diff --git a/3rd/libmaxminddb/t/maxmind-db/.tidyallrc b/3rd/libmaxminddb/t/maxmind-db/.tidyallrc deleted file mode 100644 index 9a73ac9ff..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/.tidyallrc +++ /dev/null @@ -1,7 +0,0 @@ -[PerlTidy] -select = **/*.{pl,pm,t,psgi} -ignore = blib/**/* -argv = --profile=$ROOT/.perltidyallrc - -[JSON] -select = **/*.json diff --git a/3rd/libmaxminddb/t/maxmind-db/LICENSE b/3rd/libmaxminddb/t/maxmind-db/LICENSE deleted file mode 100644 index f86abbd73..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/LICENSE +++ /dev/null @@ -1,4 +0,0 @@ -This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 -Unported License. To view a copy of this license, visit -http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative -Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. diff --git a/3rd/libmaxminddb/t/maxmind-db/MaxMind-DB-spec.md b/3rd/libmaxminddb/t/maxmind-db/MaxMind-DB-spec.md deleted file mode 100644 index 7b7fd2541..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/MaxMind-DB-spec.md +++ /dev/null @@ -1,558 +0,0 @@ ---- -layout: default -title: MaxMind DB File Format Specification -version: v2.0 ---- -# MaxMind DB File Format Specification - -## Description - -The MaxMind DB file format is a database format that maps IPv4 and IPv6 -addresses to data records using an efficient binary search tree. - -## Version - -This spec documents **version 2.0** of the MaxMind DB binary format. - -The version number consists of separate major and minor version numbers. It -should not be considered a decimal number. In other words, version 2.10 comes -after version 2.9. - -Code which is capable of reading a given major version of the format should -not be broken by minor version changes to the format. - -## Overview - -The binary database is split into three parts: - -1. The binary search tree. Each level of the tree corresponds to a single bit -in the 128 bit representation of an IPv6 address. -2. The data section. These are the values returned to the client for a -specific IP address, e.g. "US", "New York", or a more complex map type made up -of multiple fields. -3. Database metadata. Information about the database itself. - -## Database Metadata - -This portion of the database is stored at the end of the file. It is -documented first because understanding some of the metadata is key to -understanding how the other sections work. - -This section can be found by looking for a binary sequence matching -"\xab\xcd\xefMaxMind.com". The *last* occurrence of this string in the file -marks the end of the data section and the beginning of the metadata. Since we -allow for arbitrary binary data in the data section, some other piece of data -could contain these values. This is why you need to find the last occurrence -of this sequence. - -The maximum allowable size for the metadata section, including the marker that -starts the metadata, is 128kb. - -The metadata is stored as a map data structure. This structure is described -later in the spec. Changing a key's data type or removing a key would -consistute a major version change for this spec. - -Except where otherwise specified, each key listed is required for the database -to be considered valid. - -Adding a key constitutes a minor version change. Removing a key or changing -its type constitutes a major version change. - -The list of known keys for the current version of the format is as follows: - -### node\_count - -This is an unsigned 32-bit integer indicating the number of nodes in the -search tree. - -### record\_size - -This is an unsigned 16-bit integer. It indicates the number of bits in a -record in the search tree. Note that each node consists of *two* records. - -### ip\_version - -This is an unsigned 16-bit integer which is always 4 or 6. It indicates -whether the database contains IPv4 or IPv6 address data. - -### database\_type - -This is a string that indicates the structure of each data record associated -with an IP address. The actual definition of these structures is left up to -the database creator. - -Names starting with "GeoIP" are reserved for use by MaxMind (and "GeoIP" is a -trademark anyway). - -### languages - -An array of strings, each of which is a locale code. A given record may -contain data items that have been localized to some or all of these -locales. Records should not contain localized data for locales not included in -this array. - -This is an optional key, as this may not be relevant for all types of data. - -### binary\_format\_major\_version - -This is an unsigned 16-bit integer indicating the major version number for the -database's binary format. - -### binary\_format\_minor\_version - -This is an unsigned 16-bit integer indicating the minor version number for the -database's binary format. - -### build\_epoch - -This is an unsigned 64-bit integer that contains the database build timestamp -as a Unix epoch value. - -### description - -This key will always point to a map. The keys of that map will be language -codes, and the values will be a description in that language as a UTF-8 -string. - -The codes may include additional information such as script or country -identifiers, like "zh-TW" or "mn-Cyrl-MN". The additional identifiers will be -separated by a dash character ("-"). - -This key is optional. However, creators of databases are strongly -encouraged to include a description in at least one language. - -### Calculating the Search Tree Section Size - -The formula for calculating the search tree section size *in bytes* is as -follows: - - ( ( $record_size * 2 ) / 8 ) * $number_of_nodes - -The end of the search tree marks the beginning of the data section. - -## Binary Search Tree Section - -The database file starts with a binary search tree. The number of nodes in the -tree is dependent on how many unique netblocks are needed for the particular -database. For example, the city database needs many more small netblocks than -the country database. - -The top most node is always located at the beginning of the search tree -section's address space. The top node is node 0. - -Each node consists of two records, each of which is a pointer to an address in -the file. - -The pointers can point to one of three things. First, it may point to another -node in the search tree address space. These pointers are followed as part of -the IP address search algorithm, described below. - -The pointer can point to a value equal to `$number_of_nodes`. If this is the -case, it means that the IP address we are searching for is not in the -database. - -Finally, it may point to an address in the data section. This is the data -relevant to the given netblock. - -### Node Layout - -Each node in the search tree consists of two records, each of which is a -pointer. The record size varies by database, but inside a single database node -records are always the same size. A record may be anywhere from 24 to 128 bits -long, dependending on the number of nodes in the tree. These pointers are -stored in big-endian format (most significant byte first). - -Here are some examples of how the records are laid out in a node for 24, 28, -and 32 bit records. Larger record sizes follow this same pattern. - -#### 24 bits (small database), one node is 6 bytes - - | <------------- node --------------->| - | 23 .. 0 | 23 .. 0 | - -#### 28 bits (medium database), one node is 7 bytes - - | <------------- node --------------->| - | 23 .. 0 | 27..24 | 27..24 | 23 .. 0 | - -Note, the last 4 bits of each pointer are combined into the middle byte. - -#### 32 bits (large database), one node is 8 bytes - - | <------------- node --------------->| - | 31 .. 0 | 31 .. 0 | - -### Search Lookup Algorithm - -The first step is to convert the IP address to its big-endian binary -representation. For an IPv4 address, this becomes 32 bits. For IPv6 you get -128 bits. - -The leftmost bit corresponds to the first node in the search tree. For each -bit, a value of 0 means we choose the left record in a node, and a value of 1 -means we choose the right record. - -The record value is always interpreted as an unsigned integer. The maximum -size of the integer is dependent on the number of bits in a record (24, 28, or -32). - -If the record value is a number that is less than the *number of nodes* (not -in bytes, but the actual node count) in the search tree (this is stored in the -database metadata), then the value is a node number. In this case, we find -that node in the search tree and repeat the lookup algorithm from there. - -If the record value is equal to the number of nodes, that means that we do not -have any data for the IP address, and the search ends here. - -If the record value is *greater* than the number of nodes in the search tree, -then it is an actual pointer value pointing into the data section. The value -of the pointer is calculated from the start of the data section, *not* from -the start of the file. - -In order to determine where in the data section we should start looking, we use -the following formula: - - $data_section_offset = ( $record_value - $node_count ) - 16 - -The `16` is the size of the data section separator (see below for details). - -The reason that we subtract the `$node_count` is best demonstrated by an example. - -Let's assume we have a 24-bit tree with 1,000 nodes. Each node contains 48 -bits, or 6 bytes. The size of the tree is 6,000 bytes. - -When a record in the tree contains a number that is < 1,000, this is a *node -number*, and we look up that node. If a record contains a value >= 1,016, we -know that it is a data section value. We subtract the node count (1,000) and -then subtract 16 for the data section separator, giving us the number 0, the -first byte of the data section. - -If a record contained the value 6,000, this formula would give us an offset of -4,984 into the data section. - -In order to determine where in the file this offset really points to, we also -need to know where the data section starts. This can be calculated by -determining the size of the search tree in bytes and then adding an additional -16 bytes for the data section separator. - -So the final formula to determine the offset in the file is: - - $offset_in_file = ( $record_value - $node_count ) - + $search_tree_size_in_bytes - -### IPv4 addresses in an IPv6 tree - -When storing IPv4 addresses in an IPv6 tree, they are stored as-is, so they -occupy the first 32-bits of the address space (from 0 to 2**32 - 1). - -Creators of databases should decide on a strategy for handling the various -mappings between IPv4 and IPv6. - -The strategy that MaxMind uses for its GeoIP databases is to include a pointer -from the `::ffff:0:0/96` subnet to the root node of the IPv4 address space in -the tree. This accounts for the -[IPv4-mapped IPv6 address](http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses). - -MaxMind also includes a pointer from the `2002::/16` subnet to the root node -of the IPv4 address space in the tree. This accounts for the -[6to4 mapping](http://en.wikipedia.org/wiki/6to4) subnet. - -Database creators are encouraged to document whether they are doing something -similar for their databases. - -The Teredo subnet cannot be accounted for in the tree. Instead, code that -searches the tree can offer to decode the IPv4 portion of a Teredo address and -look that up. - -## Data Section Separator - -There are 16 bytes of NULLs in between the search tree and the data -section. This separator exists in order to make it possible for a verification -tool to distinguish between the two sections. - -This separator is not considered part of the data section itself. In other -words, the data section starts at `$size\_of\_search_tree + 16" bytes in the -file. - -## Output Data Section - -Each output data field has an associated type, and that type is encoded as a -number that begins the data field. Some types are variable length. In those -cases, the type indicator is also followed by a length. The data payload -always comes at the end of the field. - -All binary data is stored in big-endian format. - -Note that the *interpretation* of a given data type's meaning is decided by -higher-level APIs, not by the binary format itself. - -### pointer - 1 - -A pointer to another part of the data section's address space. The pointer -will point to the beginning of a field. It is illegal for a pointer to point -to another pointer. - -Pointer values start from the beginning of the data section, *not* the -beginning of the file. - -### UTF-8 string - 2 - -A variable length byte sequence that contains valid utf8. If the length is -zero then this is an empty string. - -### double - 3 - -This is stored as an IEEE-754 double (binary64) in big-endian format. The -length of a double is always 8 bytes. - -### bytes - 4 - -A variable length byte sequence containing any sort of binary data. If the -length is zero then this a zero-length byte sequence. - -This is not currently used but may be used in the future to embed non-text -data (images, etc.). - -### integer formats - -Integers are stored in variable length binary fields. - -We support 16-bit, 32-bit, 64-bit, and 128-bit unsigned integers. We also -support 32-bit signed integers. - -A 128-bit integer can use up to 16 bytes, but may use fewer. Similarly, a -32-bit integer may use from 0-4 bytes. The number of bytes used is determined -by the length specifier in the control byte. See below for details. - -A length of zero always indicates the number 0. - -When storing a signed integer, the left-most bit is the sign. A 1 is negative -and a 0 is positive. - -The type numbers for our integer types are: - -* unsigned 16-bit int - 5 -* unsigned 32-bit int - 6 -* signed 32-bit int - 8 -* unsigned 64-bit int - 9 -* unsigned 128-bit int - 10 - -The unsigned 32-bit and 128-bit types may be used to store IPv4 and IPv6 -addresses, respectively. - -The signed 32-bit integers are stored using the 2's complement representation. - -### map - 7 - -A map data type contains a set of key/value pairs. Unlike other data types, -the length information for maps indicates how many key/value pairs it -contains, not its length in bytes. This size can be zero. - -See below for the algorithm used to determine the number of pairs in the -hash. This algorithm is also used to determine the length of a field's -payload. - -### array - 11 - -An array type contains a set of ordered values. The length information for -arrays indicates how many values it contains, not its length in bytes. This -size can be zero. - -This type uses the same algorithm as maps for determining the length of a -field's payload. - -### data cache container - 12 - -This is a special data type that marks a container used to cache repeated -data. For example, instead of repeating the string "United States" over and -over in the database, we store it in the cache container and use pointers -*into* this container instead. - -Nothing in the database will ever contain a pointer to the this field -itself. Instead, various fields will point into the container. - -The primary reason for making this a separate data type versus simply inlining -the cached data is so that a database dumper tool can skip this cache when -dumping the data section. The cache contents will end up being dumped as -pointers into it are followed. - -### end marker - 13 - -The end marker marks the end of the data section. It is not strictly -necessary, but including this marker allows a data section deserializer to -process a stream of input, rather than having to find the end of the section -before beginning the deserialization. - -This data type is not followed by a payload, and its size is always zero. - -### boolean - 14 - -A true or false value. The length information for a boolean type will always -be 0 or 1, indicating the value. There is no payload for this field. - -### float - 15 - -This is stored as an IEEE-754 float (binary32) in big-endian format. The -length of a float is always 4 bytes. - -This type is provided primarily for completeness. Because of the way floating -point numbers are stored, this type can easily lose precision when serialized -and then deserialized. If this is an issue for you, consider using a double -instead. - -### Data Field Format - -Each field starts with a control byte. This control byte provides information -about the field's data type and payload size. - -The first three bits of the control byte tell you what type the field is. If -these bits are all 0, then this is an "extended" type, which means that the -*next* byte contains the actual type. Otherwise, the first three bits will -contain a number from 1 to 7, the actual type for the field. - -We've tried to assign the most commonly used types as numbers 1-7 as an -optimization. - -With an extended type, the type number in the second byte is the number minus -7. In other words, an array (type 11) will be stored with a 0 for the type in -the first byte and a 4 in the second. - -Here is an example of how the control byte may combine with the next byte to -tell us the type: - - 001XXXXX pointer - 010XXXXX UTF-8 string - 010XXXXX unsigned 32-bit int (ASCII) - 000XXXXX 00000011 unsigned 128-bit int (binary) - 000XXXXX 00000100 array - 000XXXXX 00000110 end marker - -#### Payload Size - -The next five bits in the control byte tell you how long the data field's -payload is, except for maps and pointers. Maps and pointers use this size -information a bit differently. See below. - -If the five bits are smaller than 29, then those bits are the payload size in -bytes. For example: - - 01000010 UTF-8 string - 2 bytes long - 01011100 UTF-8 string - 28 bytes long - 11000001 unsigned 32-bit int - 1 byte long - 00000011 00000011 unsigned 128-bit int - 3 bytes long - -If the five bits are equal to 29, 30, or 31, then use the following algorithm -to calculate the payload size. - -If the value is 29, then the size is 29 + *the next byte after the type -specifying bytes as an unsigned integer*. - -If the value is 30, then the size is 285 + *the next two bytes after the type -specifying bytes as a single unsigned integer*. - -If the value is 31, then the size is 65,821 + *the next three bytes after the -type specifying bytes as a single unsigned integer*. - -Some examples: - - 01011101 00110011 UTF-8 string - 80 bytes long - -In this case, the last five bits of the control byte equal 29. We treat the -next byte as an unsigned integer. The next byte is 51, so the total size is -(29 + 51) = 80. - - 01011110 00110011 00110011 UTF-8 string - 13,392 bytes long - -The last five bits of the control byte equal 30. We treat the next two bytes -as a single unsigned integer. The next two bytes equal 13,107, so the total -size is (285 + 13,107) = 13,392. - - 01011111 00110011 00110011 00110011 UTF-8 string - 3,421,264 bytes long - -The last five bits of the control byte equal 31. We treat the next three bytes -as a single unsigned integer. The next three bytes equal 3,355,443, so the -total size is (65,821 + 3,355,443) = 3,421,264. - -This means that the maximum payload size for a single field is 16,843,036 -bytes. - -The binary number types always have a known size, but for consistency's sake, -the control byte will always specify the correct size for these types. - -#### Maps - -Maps use the size in the control byte (and any following bytes) to indicate -the number of key/value pairs in the map, not the size of the payload in -bytes. - -This means that the maximum number of pairs for a single map is 16,843,036. - -Maps are laid out with each key followed by its value, followed by the next -pair, etc. - -The keys are **always** UTF-8 strings. The values may be any data type, -including maps or pointers. - -Once we know the number of pairs, we can look at each pair in turn to -determine the size of the key and the key name, as well as the value's type -and payload. - -#### Pointers - -Pointers use the last five bits in the control byte to calculate the pointer -value. - -To calculate the pointer value, we start by subdiving the five bits into two -groups. The first two bits indicate the size, and the next three bits are part -of the value, so we end up with a control byte breaking down like this: -001SSVVV. - -The size can be 0, 1, 2, or 3. - -If the size is 0, the pointer is built by appending the next byte to the last -three bits to produce an 11-bit value. - -If the size is 1, the pointer is built by appending the next two bytes to the -last three bits to produce a 19-bit value + 2048. - -If the size is 2, the pointer is built by appending the next three bytes to the -last three bits to produce a 27-bit value + 526336. - -Finally, if the size is 3, the pointer's value is contained in the next four -bytes as a 32-bit value. In this case, the last three bits of the control byte -are ignored. - -This means that we are limited to 4GB of address space for pointers, so the -data section size for the database is limited to 4GB. - -## Reference Implementations - -### Writer - -* [Perl](https://github.com/maxmind/MaxMind-DB-Writer-perl) - -### Reader - -* [C](https://github.com/maxmind/libmaxminddb) -* [C#](https://github.com/maxmind/MaxMind-DB-Reader-dotnet) -* [Java](https://github.com/maxmind/MaxMind-DB-Reader-java) -* [Perl](https://github.com/maxmind/MaxMind-DB-Reader-perl) -* [PHP](https://github.com/maxmind/MaxMind-DB-Reader-php) -* [Python](https://github.com/maxmind/MaxMind-DB-Reader-python) - -## Authors - -This specification was created by the following authors: - -* Greg Oschwald \ -* Dave Rolsky \ -* Boris Zentner \ - -## License - -This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 -Unported License. To view a copy of this license, visit -[http://creativecommons.org/licenses/by-sa/3.0/](http://creativecommons.org/licenses/by-sa/3.0/) -or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain -View, California, 94041, USA - diff --git a/3rd/libmaxminddb/t/maxmind-db/README.md b/3rd/libmaxminddb/t/maxmind-db/README.md deleted file mode 100644 index 71d2795c3..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/README.md +++ /dev/null @@ -1,4 +0,0 @@ -MaxMind DB is a binary file format that stores data indexed by IP address -subnets (IPv4 or IPv6). - -This repository contains the spec for that format. diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/README.md b/3rd/libmaxminddb/t/maxmind-db/bad-data/README.md deleted file mode 100644 index fe886fde4..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/bad-data/README.md +++ /dev/null @@ -1,7 +0,0 @@ -These are corrupt databases that have been know to cause problems such as -segfaults or unhandled errors on one or more MaxMind DB reader -implementations. Implementations _should_ return an appropriate error -or raise an exception on these databases. - -If you find a corrupt test-sized database that crashes a MMDB reader library, -please feel free to add it here by creating a pull request. diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb deleted file mode 100644 index b76f3546c7983b6cac8eb680bbf14632c5dcb945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmZ9GT}s116opS?K-_@;Kk@Ii*s4%{l2}n&@*t=$BEuvZo00ZT$RuLjfZMRoZo&ED$GBGT*|5J`e|`V)_@gH& ztOlz0ed9~wNuS-Rq{ma%8;;RLK;?|Rs~5frhaz=3dJFDUA{celXmv3u_A88N16y6H_*B|R~T z>Ahi0m-OBt)x<mFqKGn9BuSK*NU|thL_8w5inO4T zf~lB>EwL50#x~d%+hICpV0-L<9kCO3#xB?uyJ2_ifjzMo_QpQg7rmH?{jfg{z=1dj z2jdVNiowC6%l2YP<%wVm)4q*WvYe1Kx-?;mvppt`ONqxD9W|J8(PRiFe`M zcn{u-_u>8c06vHh;lua{K8lawszJM>{E^Ne?@MU}j zU&Yt(b$kQg#JBKmd(OKR~l-A@n ziAq~h+L6;SBT;Wp=pahRM5U7`oyi-pD|W-~*aLfFFYJwdurGQs6Z?shP3SMm0Kz~V zgoAMi4#iC~uR$~q7xDr=k1Z&Yi6Qj5qE#zyFqsJbfYFTPsvZq05NNPwf z4w_~}Qw=567p$|j*hZ&&SW(!F2P0a|G+%mS^?|%fUsc3ZZBJU>rd^Fb-LSK>Jjy<& zv7lCsHWfNlG#9aJg|lsHLs~=2vbbH98;IGKZd6zJYP3kiERH)X$7JQ^B|HD5qec-k zIrU*ecGk`eXPTTdHZ940aEJehE$7A!J!FQpOmFk%?cR~z<}KT{HSR4}*Ou!>cvQ%& z-CY^f4b`d(RGC(-Y6oi7m8KO~qggTCH0qQ7JF6RqXSe!;aXk_aXi+m%<4LO6pS8X` ztlDZ&jcEb9E~+j1=NxZgzPC_wuVH!TYcbm&)?y(`kJ`==P5GL!Z0P?qdK23@HxHSH zt?EY1t2vje^B%FnZSuP3mFm%dZ=O;TQH|=jTCK$tk8?(;;T#_bnQ_D3p~U=_a~&%j Ki0SLJ`o95U(DfGp diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-bytes-length.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-bytes-length.mmdb deleted file mode 100644 index 8c13018fd..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-bytes-length.mmdb +++ /dev/null @@ -1 +0,0 @@ -MaxMind.comKdescriptionBen \ No newline at end of file diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb deleted file mode 100644 index 228294e5caeb4a306bc4769372cd429f5d6f59bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmXxb#|^?j5QX8PAsV0p4z7TcZIVGYS=fXNAac&J0&1ZUPDoV1&M&dr{buHA_WAl) zc4&D)I_{SIcgpbsyBawnUlAA6n87UO&@ALdJo;tuzCz$2dU Mj2FD(4e$8)0eYiSJOBUy diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-map-key-length.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-map-key-length.mmdb deleted file mode 100644 index 23e5906041f7adb0552504d18dd266e89d43ef32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2731 zcmZ|O2XGW+7{>8;lOu&1dWWTVkOV@gfsjieA=ChY0LR|lCfRV=J@)pHAXczrZ(t>M zMaACRA$DSKGge|nQLtb~-2LMTIO8`rzj^lk-mlEworogJ7?BiFVj`)cbQ1B2+%D3L zN*bnP24-S&Y=JGY6}HAUn1yYz9k#~~*bzHnXY7Jqu^V>B9@rCmVQ*Bi5B9}=*dGVr zKpcdFaR?5@VK^K|;7A;W$Khzq#vB}jV=))UVIGdh2{;ia;bfeG`8XA)VF6CZLiA%1 z7UK+@i6vNyv#<h-1$d#S*MAXSEOH6qQoIZ= z$18BNr`Nv)ujKLYm9D084PJ}a;Z|(G>+uG>5pTkq@fN%lZ^M-$+X#2yop={+$Gh{ z*YI_G1K-5A@NIkt-^KSt3EI{w-BhDSRQJA!_o;t?AL2*&F@A!(u?auL&+v2n0>8ws za1VZs-{4;S7Qe%NxF5gAAMi)~2@l}U_zV7uzv1ur2mXl%@h?2&sR$~Vf~n}kW|)TQ zn1Pw-E^jVM3v$b3rIjeH$!#zzS#L{dCrbNdrGqFP$s4dUcEPUL4ZC9x?1{awH>%hN z`-+l7=qE~l!T=nIgK#ho!J#+|hvNtwiKAQ(xx;%)qp4(j%E}`uW2w6hxuT3q<~&ix zC-VftM4W_^MVUg#M|bU1!Zc9|l9lPA6q5Z|gvB@mXJQGK;w&t~**FL1;yj#>3$Pp) z;v!s(6}SYKVkIua<+uU^$lFjfau7opMjflL8f(zNT3m$@tV0tmjN)pvkzb1(JNEiD z+t%t+eF-Izl1MEMT2@5YOeNhPtatR-Mz?!tQP_$HBYMqLf1AeYgZY*Is)(gIzKr}$ zyBht5>EvYll>KgFpiYbKE_A7ADq`1)=DtLFA|sJGEACX~1!9hEnAH{j8a)!RisSCe z(b;)fsqR1Nm{G(`ZbO)mlf5&`ohIjw$w=`Yyit18mhv}N12 z#(ibl+A_loj|^FLdn$v5soC{`D$B0Z9QUHNmK|85+cCp38&du|YnVr7x0VLuMkE~2 zqgJTKmr`*cdwp40bF`oq(*sU@RA2nhIci~nTBv*1u+?%s=9Gr@SjaY_j(f!J0^M9b zQ7gPA)jO}mi2i%?w3!jjtd48ddQ9=TXOx)k@qv&P UH=P|ytkia|V}}DVW1ZgcH{>h!zyJUM diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-string-length.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-string-length.mmdb deleted file mode 100644 index c073c7755..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-string-length.mmdb +++ /dev/null @@ -1 +0,0 @@ -Dmap2EarrayDmap3AaAbAcMaxMind.com[binary_format_major_version[binary_format_minor_versionKbuild_epochX2|Mdatabase_type]MaxMind DB Nested Data StructuresKdescription \ No newline at end of file diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb deleted file mode 100644 index 4000d97e8..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb +++ /dev/null @@ -1 +0,0 @@ -MaxMind.com \ No newline at end of file diff --git a/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/unexpected-bytes.mmdb b/3rd/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/unexpected-bytes.mmdb deleted file mode 100644 index 29b3bc39daa9c1d3f25036f6e01c511669668c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2333 zcmajdcX$(J9KiA4TPp5}KH@%cFx%2r_G(HBv?XP$tB!fkSHPoZd7n@ z!HEyu?HA#c5cN({Tni;7n}9Ss2D9G%2N{a!4R!4sIDi1YCzT!1HQ_5By>#X1&YXD^{o#nbR~ zJVUD&pDA)yuFn=(%J3XK7th0GTD^Wbo-c9%aUouW7vm*(saCJQ3@_)f^CMl!+wZ=317xn@Kt;bU&lA_O?(UA#&_^t zd=KBp5AZ|$2tURS`~)}Pr}!Ce#7+1)ZpJV0OZ*DI#&2*7ev9AX_xJ<;h+FX|{2712 zU-38m9sj^T@h{w_Re}ohunXqnPS_Q9#$9k%%wE2msNLy3a+5tp?M3g6`{d^P68nkj zmYeJ^>HvB%9*EuXAUqfk!9(#dJRFZe1CPWWqDqOQL>)~WgU4b|?1jCt5B9}=Sb&9C zg#ED?OSICoLp6YT_Bjj`H7M7EMGeXIP+}Mk#}T4N5~DDCZ5a^|Ri2xS78Rr`a14&c zaaf5}SdHT`gf%z;C*mZWjI~&YQ*bIy!+M;KGq3??Vk6GNF!D5%Nk=e>F|@E5Td);v zY{S_Y#{@c<#1zg!7x}lyzh51}gqbSFl8y?~b*=dg4`z-(86NPAu&+TLaL`Yj=I zUdVQ0h0$bUb3?>-Og9s5PPz%x4=2pFq#K@Vxt^VLR_6WptnKVLyP`Uhw&Ss|l}bii z^YiMrmdp>uOy7){o)z{pDXTI6pN))QxlvnOLJ#O$;fSF6d2K@slE% MotCuOVtEVy2F+TlF#rGn diff --git a/3rd/libmaxminddb/t/maxmind-db/perltidyrc b/3rd/libmaxminddb/t/maxmind-db/perltidyrc deleted file mode 100644 index b7ed62478..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/perltidyrc +++ /dev/null @@ -1,12 +0,0 @@ ---blank-lines-before-packages=0 ---iterations=2 ---no-outdent-long-comments --b --bar --boc --ci=4 --i=4 --l=78 --nolq --se --wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Anonymous-IP-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Anonymous-IP-Test.json deleted file mode 100644 index 426eed496..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Anonymous-IP-Test.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "::1.2.0.0/112" : { - "is_anonymous" : true, - "is_anonymous_vpn" : true - } - }, - { - "::71.160.223.0/120" : { - "is_anonymous" : true, - "is_hosting_provider" : true - } - }, - { - "::186.30.236.0/120" : { - "is_anonymous" : true, - "is_public_proxy" : true - } - }, - { - "::65.0.0.0/109" : { - "is_anonymous" : true, - "is_tor_exit_node" : true - } - }, - { - "abcd:1000::/112" : { - "is_anonymous" : true, - "is_public_proxy" : true - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-City-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-City-Test.json deleted file mode 100644 index ec349c838..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-City-Test.json +++ /dev/null @@ -1,12616 +0,0 @@ -[ - { - "2001:218::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:220::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:230::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:238::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "24", - "longitude" : "121", - "time_zone" : "Asia/Taipei" - }, - "registered_country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - } - } - }, - { - "2001:240::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:250::/31" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35", - "longitude" : "105" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:252::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35", - "longitude" : "105" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:254::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35", - "longitude" : "105" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:256::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35", - "longitude" : "105" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:258::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:260::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:268::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:270::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:278::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:280::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:288::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "24", - "longitude" : "121", - "time_zone" : "Asia/Taipei" - }, - "registered_country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - } - } - }, - { - "2001:290::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:298::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2a0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2a8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2b0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:2b8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:2c0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2c8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2d8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "37", - "longitude" : "127.5", - "time_zone" : "Asia/Seoul" - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:2e0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1819730, - "iso_code" : "HK", - "names" : { - "de" : "Hongkong", - "en" : "Hong Kong", - "es" : "Hong Kong", - "fr" : "Hong Kong", - "ja" : "香港", - "pt-BR" : "Hong Kong", - "ru" : "Гонконг", - "zh-CN" : "香港" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "22.25", - "longitude" : "114.16667", - "time_zone" : "Asia/Hong_Kong" - }, - "registered_country" : { - "geoname_id" : 1819730, - "iso_code" : "HK", - "names" : { - "de" : "Hongkong", - "en" : "Hong Kong", - "es" : "Hong Kong", - "fr" : "Hong Kong", - "ja" : "香港", - "pt-BR" : "Hong Kong", - "ru" : "Гонконг", - "zh-CN" : "香港" - } - } - } - }, - { - "2001:2e8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2f0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2f8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2a02:cf40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:cf80::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "31.5", - "longitude" : "34.75", - "time_zone" : "Asia/Jerusalem" - }, - "registered_country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - } - } - }, - { - "2a02:cfc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d000::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.00016", - "longitude" : "8.01427", - "time_zone" : "Europe/Zurich" - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:d040::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:d080::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "26", - "longitude" : "50.5", - "time_zone" : "Asia/Bahrain" - }, - "registered_country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - } - } - }, - { - "2a02:d0c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:d100::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:d140::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:d180::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d1c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:d200::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "64", - "longitude" : "26", - "time_zone" : "Europe/Helsinki" - }, - "registered_country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - } - } - }, - { - "2a02:d240::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "53", - "longitude" : "28", - "time_zone" : "Europe/Minsk" - }, - "registered_country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - } - } - }, - { - "2a02:d280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49.75", - "longitude" : "15", - "time_zone" : "Europe/Prague" - }, - "registered_country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - } - } - }, - { - "2a02:d2c0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:d300::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49", - "longitude" : "32" - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:d340::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d380::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:d3c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:d400::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47", - "longitude" : "20", - "time_zone" : "Europe/Budapest" - }, - "registered_country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - } - } - }, - { - "2a02:d440::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:d480::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d4c0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "64", - "longitude" : "26", - "time_zone" : "Europe/Helsinki" - }, - "registered_country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - } - } - }, - { - "2a02:d4e0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d500::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "48.69096", - "longitude" : "9.14062", - "time_zone" : "Europe/Vaduz" - } - } - }, - { - "2a02:d540::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:d580::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d5c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "40", - "longitude" : "-4" - }, - "registered_country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - } - } - }, - { - "2a02:d600::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d640::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d680::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:d6a0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d6c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 732800, - "iso_code" : "BG", - "names" : { - "de" : "Bulgarien", - "en" : "Bulgaria", - "es" : "Bulgaria", - "fr" : "Bulgarie", - "ja" : "ブルガリア共和国", - "pt-BR" : "Bulgária", - "ru" : "Болгария", - "zh-CN" : "保加利亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "43", - "longitude" : "25", - "time_zone" : "Europe/Sofia" - }, - "registered_country" : { - "geoname_id" : 732800, - "iso_code" : "BG", - "names" : { - "de" : "Bulgarien", - "en" : "Bulgaria", - "es" : "Bulgaria", - "fr" : "Bulgarie", - "ja" : "ブルガリア共和国", - "pt-BR" : "Bulgária", - "ru" : "Болгария", - "zh-CN" : "保加利亚" - } - } - } - }, - { - "2a02:d700::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d740::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.00016", - "longitude" : "8.01427", - "time_zone" : "Europe/Zurich" - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:d780::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:d7c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d800::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "25", - "time_zone" : "Europe/Bucharest" - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - } - } - }, - { - "2a02:d840::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:d880::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:d8c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:d900::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:d940::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2802361, - "iso_code" : "BE", - "names" : { - "de" : "Belgien", - "en" : "Belgium", - "es" : "Bélgica", - "fr" : "Belgique", - "ja" : "ベルギー王国", - "pt-BR" : "Bélgica", - "ru" : "Бельгия", - "zh-CN" : "比利时" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "50.83333", - "longitude" : "4", - "time_zone" : "Europe/Brussels" - }, - "registered_country" : { - "geoname_id" : 2802361, - "iso_code" : "BE", - "names" : { - "de" : "Belgien", - "en" : "Belgium", - "es" : "Bélgica", - "fr" : "Belgique", - "ja" : "ベルギー王国", - "pt-BR" : "Bélgica", - "ru" : "Бельгия", - "zh-CN" : "比利时" - } - } - } - }, - { - "2a02:d980::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:d9c0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:da00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:da40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:da80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.33333", - "longitude" : "13.33333", - "time_zone" : "Europe/Vienna" - }, - "registered_country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - } - } - }, - { - "2a02:dac0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:db00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:db40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "25", - "time_zone" : "Europe/Bucharest" - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - } - } - }, - { - "2a02:db80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dbc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dc00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dc40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:dc80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dcc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49", - "longitude" : "32" - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:dd00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 783754, - "iso_code" : "AL", - "names" : { - "de" : "Albanien", - "en" : "Albania", - "es" : "Albania", - "fr" : "Albanie", - "ja" : "アルバニア共和国", - "pt-BR" : "Albânia", - "ru" : "Албания", - "zh-CN" : "阿尔巴尼亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "41", - "longitude" : "20", - "time_zone" : "Europe/Tirane" - }, - "registered_country" : { - "geoname_id" : 783754, - "iso_code" : "AL", - "names" : { - "de" : "Albanien", - "en" : "Albania", - "es" : "Albania", - "fr" : "Albanie", - "ja" : "アルバニア共和国", - "pt-BR" : "Albânia", - "ru" : "Албания", - "zh-CN" : "阿尔巴尼亚" - } - } - } - }, - { - "2a02:dd40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:dd80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:ddc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:de00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:de40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "31.5", - "longitude" : "34.75", - "time_zone" : "Asia/Jerusalem" - }, - "registered_country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - } - } - }, - { - "2a02:de80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dec0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "33.83333", - "longitude" : "35.83333", - "time_zone" : "Asia/Beirut" - }, - "registered_country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - } - } - }, - { - "2a02:df00::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:df40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:df80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:dfc0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:e000::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e040::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:e080::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 285570, - "iso_code" : "KW", - "names" : { - "de" : "Kuwait", - "en" : "Kuwait", - "es" : "Kuwait", - "fr" : "Koweït", - "ja" : "クウェート", - "pt-BR" : "Kuwait", - "ru" : "Кувейт", - "zh-CN" : "科威特" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "29.5", - "longitude" : "47.75", - "time_zone" : "Asia/Kuwait" - }, - "registered_country" : { - "geoname_id" : 285570, - "iso_code" : "KW", - "names" : { - "de" : "Kuwait", - "en" : "Kuwait", - "es" : "Kuwait", - "fr" : "Koweït", - "ja" : "クウェート", - "pt-BR" : "Kuwait", - "ru" : "Кувейт", - "zh-CN" : "科威特" - } - } - } - }, - { - "2a02:e0c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.00016", - "longitude" : "8.01427", - "time_zone" : "Europe/Zurich" - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:e100::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:e140::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:e180::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:e1c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:e200::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.33333", - "longitude" : "13.33333", - "time_zone" : "Europe/Vienna" - }, - "registered_country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - } - } - }, - { - "2a02:e220::/30" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "25", - "longitude" : "45", - "time_zone" : "Asia/Riyadh" - }, - "registered_country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - } - } - }, - { - "2a02:e240::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e2c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:e300::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "53", - "longitude" : "28", - "time_zone" : "Europe/Minsk" - }, - "registered_country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - } - } - }, - { - "2a02:e340::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:e380::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:e3c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e400::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:e440::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e480::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e4c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:e500::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e540::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 6290252, - "iso_code" : "RS", - "names" : { - "de" : "Serbien", - "en" : "Serbia", - "es" : "Serbia", - "fr" : "Serbie", - "ja" : "セルビア", - "pt-BR" : "Sérvia", - "ru" : "Сербия", - "zh-CN" : "塞尔维亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "44.81892", - "longitude" : "20.45998", - "time_zone" : "Europe/Belgrade" - }, - "registered_country" : { - "geoname_id" : 6290252, - "iso_code" : "RS", - "names" : { - "de" : "Serbien", - "en" : "Serbia", - "es" : "Serbia", - "fr" : "Serbie", - "ja" : "セルビア", - "pt-BR" : "Sérvia", - "ru" : "Сербия", - "zh-CN" : "塞尔维亚" - } - } - } - }, - { - "2a02:e580::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:e5c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e600::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e620::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e640::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e680::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "31", - "longitude" : "36", - "time_zone" : "Asia/Amman" - }, - "registered_country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - } - } - }, - { - "2a02:e6c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e700::/29" : { - "continent" : { - "code" : "AF", - "geoname_id" : 6255146, - "names" : { - "de" : "Afrika", - "en" : "Africa", - "es" : "África", - "fr" : "Afrique", - "ja" : "アフリカ", - "pt-BR" : "África", - "ru" : "Африка", - "zh-CN" : "非洲" - } - }, - "country" : { - "geoname_id" : 2215636, - "iso_code" : "LY", - "names" : { - "de" : "Libysch-Arabische Dschamahirija", - "en" : "Libya", - "es" : "Libia, República Árabe", - "fr" : "Libye", - "ja" : "社会主義人民リビア・アラブ国", - "pt-BR" : "Líbia Árabe Jamahiriya", - "ru" : "Ливия", - "zh-CN" : "阿拉伯利比亚民众国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "28", - "longitude" : "17", - "time_zone" : "Africa/Tripoli" - }, - "registered_country" : { - "geoname_id" : 2215636, - "iso_code" : "LY", - "names" : { - "de" : "Libysch-Arabische Dschamahirija", - "en" : "Libya", - "es" : "Libia, República Árabe", - "fr" : "Libye", - "ja" : "社会主義人民リビア・アラブ国", - "pt-BR" : "Líbia Árabe Jamahiriya", - "ru" : "Ливия", - "zh-CN" : "阿拉伯利比亚民众国" - } - } - } - }, - { - "2a02:e740::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e780::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:e7c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:e800::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e840::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e880::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e900::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2963597, - "iso_code" : "IE", - "names" : { - "de" : "Irland", - "en" : "Ireland", - "es" : "República de Irlanda", - "fr" : "Irlande", - "ja" : "アイルランド", - "pt-BR" : "Irlanda", - "ru" : "Ирландия", - "zh-CN" : "爱尔兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "53", - "longitude" : "-8", - "time_zone" : "Europe/Dublin" - }, - "registered_country" : { - "geoname_id" : 2963597, - "iso_code" : "IE", - "names" : { - "de" : "Irland", - "en" : "Ireland", - "es" : "República de Irlanda", - "fr" : "Irlande", - "ja" : "アイルランド", - "pt-BR" : "Irlanda", - "ru" : "Ирландия", - "zh-CN" : "爱尔兰" - } - } - } - }, - { - "2a02:e940::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "25", - "time_zone" : "Europe/Bucharest" - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - } - } - }, - { - "2a02:e980::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "31.5", - "longitude" : "34.75", - "time_zone" : "Asia/Jerusalem" - }, - "registered_country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - } - } - }, - { - "2a02:e9c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:ea00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.00016", - "longitude" : "8.01427", - "time_zone" : "Europe/Zurich" - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:ea40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:ea80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:eac0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:eb00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:eb40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:eb80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ebc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:ec00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:ec40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ec80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "48.69096", - "longitude" : "9.14062", - "time_zone" : "Europe/Vaduz" - } - } - }, - { - "2a02:ecc0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 587116, - "iso_code" : "AZ", - "names" : { - "de" : "Aserbaidschan", - "en" : "Azerbaijan", - "es" : "Azerbaiyán", - "fr" : "Azerbaïdjan", - "ja" : "アゼルバイジャン共和国", - "pt-BR" : "Azerbaijão", - "ru" : "Азербайджан", - "zh-CN" : "阿塞拜疆" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "40.5", - "longitude" : "47.5", - "time_zone" : "Asia/Baku" - }, - "registered_country" : { - "geoname_id" : 587116, - "iso_code" : "AZ", - "names" : { - "de" : "Aserbaidschan", - "en" : "Azerbaijan", - "es" : "Azerbaiyán", - "fr" : "Azerbaïdjan", - "ja" : "アゼルバイジャン共和国", - "pt-BR" : "Azerbaijão", - "ru" : "Азербайджан", - "zh-CN" : "阿塞拜疆" - } - } - } - }, - { - "2a02:ed00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:ed40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:ed80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:edc0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "25", - "longitude" : "45", - "time_zone" : "Asia/Riyadh" - }, - "registered_country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - } - } - }, - { - "2a02:ee00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49", - "longitude" : "32" - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:ee40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ee80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:eec0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:ef00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ef40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ef80::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:efc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f000::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49.75", - "longitude" : "15", - "time_zone" : "Europe/Prague" - }, - "registered_country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - } - } - }, - { - "2a02:f040::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "26", - "longitude" : "50.5", - "time_zone" : "Asia/Bahrain" - }, - "registered_country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - } - } - }, - { - "2a02:f080::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49", - "longitude" : "32" - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:f0a0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f0c0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "31", - "longitude" : "36", - "time_zone" : "Asia/Amman" - }, - "registered_country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - } - } - }, - { - "2a02:f100::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f140::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f180::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:f1c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49", - "longitude" : "32" - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:f200::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f240::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:f280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "46", - "longitude" : "2", - "time_zone" : "Europe/Paris" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:f2c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f300::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:f340::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f380::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f3c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f400::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 290557, - "iso_code" : "AE", - "names" : { - "de" : "Vereinigte Arabische Emirate", - "en" : "United Arab Emirates", - "es" : "Emiratos Árabes Unidos", - "fr" : "Émirats Arabes Unis", - "ja" : "アラブ首長国連邦", - "pt-BR" : "Emirados Árabes Unidos", - "ru" : "Объединенные Арабские Эмираты", - "zh-CN" : "阿拉伯联合酋长国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "24", - "longitude" : "54", - "time_zone" : "Asia/Dubai" - }, - "registered_country" : { - "geoname_id" : 290557, - "iso_code" : "AE", - "names" : { - "de" : "Vereinigte Arabische Emirate", - "en" : "United Arab Emirates", - "es" : "Emiratos Árabes Unidos", - "fr" : "Émirats Arabes Unis", - "ja" : "アラブ首長国連邦", - "pt-BR" : "Emirados Árabes Unidos", - "ru" : "Объединенные Арабские Эмираты", - "zh-CN" : "阿拉伯联合酋长国" - } - } - } - }, - { - "2a02:f440::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f480::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:f4c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "40", - "longitude" : "-4" - }, - "registered_country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - } - } - }, - { - "2a02:f500::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f540::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f560::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f580::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 174982, - "iso_code" : "AM", - "names" : { - "de" : "Armenien", - "en" : "Armenia", - "es" : "Armenia", - "fr" : "Arménie", - "ja" : "アルメニア共和国", - "pt-BR" : "Armênia", - "ru" : "Армения", - "zh-CN" : "亚美尼亚" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "40", - "longitude" : "45", - "time_zone" : "Asia/Yerevan" - }, - "registered_country" : { - "geoname_id" : 174982, - "iso_code" : "AM", - "names" : { - "de" : "Armenien", - "en" : "Armenia", - "es" : "Armenia", - "fr" : "Arménie", - "ja" : "アルメニア共和国", - "pt-BR" : "Armênia", - "ru" : "Армения", - "zh-CN" : "亚美尼亚" - } - } - } - }, - { - "2a02:f5c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f600::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f640::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f680::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f6c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f700::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "33.83333", - "longitude" : "35.83333", - "time_zone" : "Asia/Beirut" - }, - "registered_country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - } - } - }, - { - "2a02:f740::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f780::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:f7c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f800::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "60", - "longitude" : "100" - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f840::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f880::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f8c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f900::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "32", - "longitude" : "53", - "time_zone" : "Asia/Tehran" - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:f940::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47", - "longitude" : "20", - "time_zone" : "Europe/Budapest" - }, - "registered_country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - } - } - }, - { - "2a02:f980::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f9c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fa00::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "25", - "longitude" : "45", - "time_zone" : "Asia/Riyadh" - }, - "registered_country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - } - } - }, - { - "2a02:fa40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "39.05901", - "longitude" : "34.91155", - "time_zone" : "Europe/Istanbul" - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:fa80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:fac0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:fb00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:fb40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fb80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:fbc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52", - "longitude" : "20", - "time_zone" : "Europe/Warsaw" - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:fc00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "15", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:fc40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "56", - "longitude" : "10", - "time_zone" : "Europe/Copenhagen" - }, - "registered_country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - } - } - }, - { - "2a02:fc80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "62", - "longitude" : "10", - "time_zone" : "Europe/Oslo" - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:fcc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fd00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:fd40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:fd80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "56", - "longitude" : "10", - "time_zone" : "Europe/Copenhagen" - }, - "registered_country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - } - } - }, - { - "2a02:fdc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "47.33333", - "longitude" : "13.33333", - "time_zone" : "Europe/Vienna" - }, - "registered_country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - } - } - }, - { - "2a02:fe00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "52.5", - "longitude" : "5.75", - "time_zone" : "Europe/Amsterdam" - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:fe40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fe80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:fec0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.75844", - "longitude" : "-2.69531", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:ff00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "42.83333", - "longitude" : "12.83333", - "time_zone" : "Europe/Rome" - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:ff40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3042225, - "iso_code" : "IM", - "names" : { - "de" : "Insel Man", - "en" : "Isle of Man", - "es" : "Isla de Man", - "fr" : "Île de Man", - "ja" : "マン島", - "pt-BR" : "Ilha de Man", - "ru" : "Мэн, о-в", - "zh-CN" : "曼岛" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "54.25", - "longitude" : "-4.5", - "time_zone" : "Europe/Isle_of_Man" - }, - "registered_country" : { - "geoname_id" : 3042225, - "iso_code" : "IM", - "names" : { - "de" : "Insel Man", - "en" : "Isle of Man", - "es" : "Isla de Man", - "fr" : "Île de Man", - "ja" : "マン島", - "pt-BR" : "Ilha de Man", - "ru" : "Мэн, о-в", - "zh-CN" : "曼岛" - } - } - } - }, - { - "2a02:ff80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5", - "longitude" : "10.5", - "time_zone" : "Europe/Berlin" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:ffc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2411586, - "iso_code" : "GI", - "names" : { - "de" : "Gibraltar", - "en" : "Gibraltar", - "es" : "Gibraltar", - "fr" : "Gibraltar", - "ja" : "ジブラルタル", - "pt-BR" : "Gibraltar", - "ru" : "Гибралтар" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "36.13333", - "longitude" : "-5.35", - "time_zone" : "Europe/Gibraltar" - }, - "registered_country" : { - "geoname_id" : 2411586, - "iso_code" : "GI", - "names" : { - "de" : "Gibraltar", - "en" : "Gibraltar", - "es" : "Gibraltar", - "fr" : "Gibraltar", - "ja" : "ジブラルタル", - "pt-BR" : "Gibraltar", - "ru" : "Гибралтар" - } - } - } - }, - { - "::2.125.160.216/125" : { - "city" : { - "geoname_id" : "2655045", - "names" : { - "en" : "Boxford" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.7500", - "longitude" : "-1.2500", - "time_zone" : "Europe/London" - }, - "postal" : { - "code" : "OX1" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - }, - { - "geoname_id" : 3333217, - "iso_code" : "WBK", - "names" : { - "en" : "West Berkshire", - "ru" : "Западный Беркшир", - "zh-CN" : "西伯克郡" - } - } - ] - } - }, - { - "::81.2.69.142/127" : { - "city" : { - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 10, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ] - } - }, - { - "::81.2.69.144/124" : { - "city" : { - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 3, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ] - } - }, - { - "::81.2.69.160/123" : { - "city" : { - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ] - } - }, - { - "::81.2.69.192/124" : { - "city" : { - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ] - } - }, - { - "::216.160.83.56/125" : { - "city" : { - "geoname_id" : "5803556", - "names" : { - "en" : "Milton", - "ru" : "Мильтон" - } - }, - "continent" : { - "code" : "NA", - "geoname_id" : 6255149, - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "América del Norte", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "location" : { - "accuracy_radius" : 22, - "latitude" : "47.2513", - "longitude" : "-122.3149", - "metro_code" : "819", - "time_zone" : "America/Los_Angeles" - }, - "postal" : { - "code" : "98354" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 5815135, - "iso_code" : "WA", - "names" : { - "en" : "Washington", - "es" : "Washington", - "fr" : "État de Washington", - "ja" : "ワシントン州", - "ru" : "Вашингтон", - "zh-CN" : "华盛顿州" - } - } - ] - } - }, - { - "::89.160.20.112/124" : { - "city" : { - "geoname_id" : "2694762", - "names" : { - "de" : "Linköping", - "en" : "Linköping", - "fr" : "Linköping", - "ja" : "リンシェーピング", - "zh-CN" : "林雪平" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 76, - "latitude" : "58.4167", - "longitude" : "15.6167", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 2685867, - "iso_code" : "E", - "names" : { - "en" : "Östergötland County", - "fr" : "Comté d'Östergötland" - } - } - ] - } - }, - { - "::89.160.20.128/121" : { - "city" : { - "geoname_id" : "2694762", - "names" : { - "de" : "Linköping", - "en" : "Linköping", - "fr" : "Linköping", - "ja" : "リンシェーピング", - "zh-CN" : "林雪平" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 76, - "latitude" : "58.4167", - "longitude" : "15.6167", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 2685867, - "iso_code" : "E", - "names" : { - "en" : "Östergötland County", - "fr" : "Comté d'Östergötland" - } - } - ] - } - }, - { - "::67.43.156.0/120" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1252634, - "iso_code" : "BT", - "names" : { - "de" : "Bhutan", - "en" : "Bhutan", - "es" : "Bután", - "fr" : "Bhutan", - "ja" : "ブータン王国", - "pt-BR" : "Butão", - "ru" : "Бутан", - "zh-CN" : "不丹" - } - }, - "location" : { - "accuracy_radius" : 534, - "latitude" : "27.5000", - "longitude" : "90.5000", - "time_zone" : "Asia/Thimphu" - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "traits" : { - "is_anonymous_proxy" : 1 - } - } - }, - { - "::202.196.224.0/116" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "location" : { - "accuracy_radius" : 121, - "latitude" : "13", - "longitude" : "122", - "time_zone" : "Asia/Manila" - }, - "postal" : { - "code" : "34021" - }, - "registered_country" : { - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "represented_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - }, - "type" : "military" - } - } - }, - { - "::175.16.199.0/120" : { - "city" : { - "geoname_id" : 2038180, - "names" : { - "de" : "Chángchūn", - "en" : "Changchun", - "fr" : "Changchun", - "ja" : "長春市", - "ru" : "Чанчунь", - "zh-CN" : "长春" - } - }, - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "China", - "es" : "China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : 43.88, - "longitude" : 125.3228, - "time_zone" : "Asia/Harbin" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "China", - "es" : "China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "subdivisions" : [ - { - "geoname_id" : 2036500, - "iso_code" : "22", - "names" : { - "en" : "Jilin Sheng", - "zh-CN" : "吉林" - } - } - ] - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Connection-Type-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Connection-Type-Test.json deleted file mode 100644 index d02256607..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Connection-Type-Test.json +++ /dev/null @@ -1,102 +0,0 @@ -[ - { - "::1.0.0.0/120" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.1.0/120" : { - "connection_type" : "Cable/DSL" - } - }, - { - "::1.0.2.0/119" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.4.0/118" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.8.0/117" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.16.0/116" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.32.0/115" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.64.0/114" : { - "connection_type" : "Dialup" - } - }, - { - "::1.0.128.0/113" : { - "connection_type" : "Dialup" - } - }, - { - "::80.214.0.0/116" : { - "connection_type" : "Cellular" - } - }, - { - "::96.1.0.0/112" : { - "connection_type" : "Cable/DSL" - } - }, - { - "::96.10.0.0/111" : { - "connection_type" : "Cable/DSL" - } - }, - { - "::96.69.0.0/112" : { - "connection_type" : "Cable/DSL" - } - }, - { - "::96.94.0.0/111" : { - "connection_type" : "Cable/DSL" - } - }, - { - "::108.96.0.0/107" : { - "connection_type" : "Cellular" - } - }, - { - "::175.16.199.0/120" : { - "connection_type" : "Dialup" - } - }, - { - "::187.156.138.0/120" : { - "connection_type" : "Cable/DSL" - } - }, - { - "::201.243.200.0/120" : { - "connection_type" : "Corporate" - } - }, - { - "::207.179.48.0/116" : { - "connection_type" : "Cellular" - } - }, - { - "2003::/24" : { - "connection_type" : "Cable/DSL" - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Country-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Country-Test.json deleted file mode 100644 index e9d47e0e8..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Country-Test.json +++ /dev/null @@ -1,10975 +0,0 @@ -[ - { - "2001:218::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:220::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:230::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:238::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - }, - "registered_country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - } - } - }, - { - "2001:240::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:250::/31" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:252::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:254::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:256::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2001:258::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:260::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:268::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:270::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:278::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:280::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:288::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - }, - "registered_country" : { - "geoname_id" : 1668284, - "iso_code" : "TW", - "names" : { - "de" : "Taiwan", - "en" : "Taiwan", - "es" : "Taiwán", - "fr" : "Taïwan", - "ja" : "台湾", - "pt-BR" : "Taiwan", - "ru" : "Тайвань", - "zh-CN" : "台湾" - } - } - } - }, - { - "2001:290::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:298::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2a0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2a8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2b0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:2b8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:2c0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2c8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2d8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - }, - "registered_country" : { - "geoname_id" : 1835841, - "iso_code" : "KR", - "names" : { - "de" : "Republik Korea", - "en" : "South Korea", - "es" : "Corea, República de", - "fr" : "Corée du Sud", - "ja" : "大韓民国", - "pt-BR" : "Coréia, República da", - "ru" : "Южная Корея", - "zh-CN" : "韩国" - } - } - } - }, - { - "2001:2e0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1819730, - "iso_code" : "HK", - "names" : { - "de" : "Hongkong", - "en" : "Hong Kong", - "es" : "Hong Kong", - "fr" : "Hong Kong", - "ja" : "香港", - "pt-BR" : "Hong Kong", - "ru" : "Гонконг", - "zh-CN" : "香港" - } - }, - "registered_country" : { - "geoname_id" : 1819730, - "iso_code" : "HK", - "names" : { - "de" : "Hongkong", - "en" : "Hong Kong", - "es" : "Hong Kong", - "fr" : "Hong Kong", - "ja" : "香港", - "pt-BR" : "Hong Kong", - "ru" : "Гонконг", - "zh-CN" : "香港" - } - } - } - }, - { - "2001:2e8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2f0::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:2f8::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2a02:cf40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:cf80::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - }, - "registered_country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - } - } - }, - { - "2a02:cfc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d000::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:d040::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:d080::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - }, - "registered_country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - } - } - }, - { - "2a02:d0c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:d100::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:d140::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:d180::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d1c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:d200::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - }, - "registered_country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - } - } - }, - { - "2a02:d240::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - } - } - }, - { - "2a02:d280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - }, - "registered_country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - } - } - }, - { - "2a02:d2c0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:d300::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:d340::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d380::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:d3c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:d400::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - }, - "registered_country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - } - } - }, - { - "2a02:d440::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:d480::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d4c0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - }, - "registered_country" : { - "geoname_id" : 660013, - "iso_code" : "FI", - "names" : { - "de" : "Finnland", - "en" : "Finland", - "es" : "Finlandia", - "fr" : "Finlande", - "ja" : "フィンランド共和国", - "pt-BR" : "Finlândia", - "ru" : "Финляндия", - "zh-CN" : "芬兰" - } - } - } - }, - { - "2a02:d4e0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d500::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "location" : { - "latitude" : "48.69096", - "longitude" : "9.14062", - "time_zone" : "Europe/Vaduz" - } - } - }, - { - "2a02:d540::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:d580::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d5c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - }, - "registered_country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - } - } - }, - { - "2a02:d600::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d640::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d680::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:d6a0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d6c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 732800, - "iso_code" : "BG", - "names" : { - "de" : "Bulgarien", - "en" : "Bulgaria", - "es" : "Bulgaria", - "fr" : "Bulgarie", - "ja" : "ブルガリア共和国", - "pt-BR" : "Bulgária", - "ru" : "Болгария", - "zh-CN" : "保加利亚" - } - }, - "registered_country" : { - "geoname_id" : 732800, - "iso_code" : "BG", - "names" : { - "de" : "Bulgarien", - "en" : "Bulgaria", - "es" : "Bulgaria", - "fr" : "Bulgarie", - "ja" : "ブルガリア共和国", - "pt-BR" : "Bulgária", - "ru" : "Болгария", - "zh-CN" : "保加利亚" - } - } - } - }, - { - "2a02:d700::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:d740::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:d780::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:d7c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:d800::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - } - } - }, - { - "2a02:d840::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:d880::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:d8c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:d900::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:d940::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2802361, - "iso_code" : "BE", - "names" : { - "de" : "Belgien", - "en" : "Belgium", - "es" : "Bélgica", - "fr" : "Belgique", - "ja" : "ベルギー王国", - "pt-BR" : "Bélgica", - "ru" : "Бельгия", - "zh-CN" : "比利时" - } - }, - "registered_country" : { - "geoname_id" : 2802361, - "iso_code" : "BE", - "names" : { - "de" : "Belgien", - "en" : "Belgium", - "es" : "Bélgica", - "fr" : "Belgique", - "ja" : "ベルギー王国", - "pt-BR" : "Bélgica", - "ru" : "Бельгия", - "zh-CN" : "比利时" - } - } - } - }, - { - "2a02:d980::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:d9c0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:da00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:da40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:da80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - }, - "registered_country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - } - } - }, - { - "2a02:dac0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:db00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:db40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - } - } - }, - { - "2a02:db80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dbc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dc00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dc40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:dc80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dcc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:dd00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 783754, - "iso_code" : "AL", - "names" : { - "de" : "Albanien", - "en" : "Albania", - "es" : "Albania", - "fr" : "Albanie", - "ja" : "アルバニア共和国", - "pt-BR" : "Albânia", - "ru" : "Албания", - "zh-CN" : "阿尔巴尼亚" - } - }, - "registered_country" : { - "geoname_id" : 783754, - "iso_code" : "AL", - "names" : { - "de" : "Albanien", - "en" : "Albania", - "es" : "Albania", - "fr" : "Albanie", - "ja" : "アルバニア共和国", - "pt-BR" : "Albânia", - "ru" : "Албания", - "zh-CN" : "阿尔巴尼亚" - } - } - } - }, - { - "2a02:dd40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:dd80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:ddc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:de00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:de40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - }, - "registered_country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - } - } - }, - { - "2a02:de80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:dec0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - }, - "registered_country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - } - } - }, - { - "2a02:df00::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:df40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:df80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:dfc0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:e000::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e040::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:e080::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 285570, - "iso_code" : "KW", - "names" : { - "de" : "Kuwait", - "en" : "Kuwait", - "es" : "Kuwait", - "fr" : "Koweït", - "ja" : "クウェート", - "pt-BR" : "Kuwait", - "ru" : "Кувейт", - "zh-CN" : "科威特" - } - }, - "registered_country" : { - "geoname_id" : 285570, - "iso_code" : "KW", - "names" : { - "de" : "Kuwait", - "en" : "Kuwait", - "es" : "Kuwait", - "fr" : "Koweït", - "ja" : "クウェート", - "pt-BR" : "Kuwait", - "ru" : "Кувейт", - "zh-CN" : "科威特" - } - } - } - }, - { - "2a02:e0c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:e100::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:e140::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:e180::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:e1c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:e200::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - }, - "registered_country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - } - } - }, - { - "2a02:e220::/30" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - }, - "registered_country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - } - } - }, - { - "2a02:e240::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e2c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:e300::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 630336, - "iso_code" : "BY", - "names" : { - "de" : "Weißrussland", - "en" : "Belarus", - "es" : "Bielorrusia", - "fr" : "Biélorussie", - "ja" : "ベラルーシ共和国", - "pt-BR" : "Bielo-Rússia", - "ru" : "Беларусь", - "zh-CN" : "白俄罗斯" - } - } - } - }, - { - "2a02:e340::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:e380::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:e3c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e400::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:e440::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e480::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e4c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:e500::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e540::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 6290252, - "iso_code" : "RS", - "names" : { - "de" : "Serbien", - "en" : "Serbia", - "es" : "Serbia", - "fr" : "Serbie", - "ja" : "セルビア", - "pt-BR" : "Sérvia", - "ru" : "Сербия", - "zh-CN" : "塞尔维亚" - } - }, - "registered_country" : { - "geoname_id" : 6290252, - "iso_code" : "RS", - "names" : { - "de" : "Serbien", - "en" : "Serbia", - "es" : "Serbia", - "fr" : "Serbie", - "ja" : "セルビア", - "pt-BR" : "Sérvia", - "ru" : "Сербия", - "zh-CN" : "塞尔维亚" - } - } - } - }, - { - "2a02:e580::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:e5c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e600::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e620::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e640::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:e680::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - }, - "registered_country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - } - } - }, - { - "2a02:e6c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e700::/29" : { - "continent" : { - "code" : "AF", - "geoname_id" : 6255146, - "names" : { - "de" : "Afrika", - "en" : "Africa", - "es" : "África", - "fr" : "Afrique", - "ja" : "アフリカ", - "pt-BR" : "África", - "ru" : "Африка", - "zh-CN" : "非洲" - } - }, - "country" : { - "geoname_id" : 2215636, - "iso_code" : "LY", - "names" : { - "de" : "Libysch-Arabische Dschamahirija", - "en" : "Libya", - "es" : "Libia, República Árabe", - "fr" : "Libye", - "ja" : "社会主義人民リビア・アラブ国", - "pt-BR" : "Líbia Árabe Jamahiriya", - "ru" : "Ливия", - "zh-CN" : "阿拉伯利比亚民众国" - } - }, - "registered_country" : { - "geoname_id" : 2215636, - "iso_code" : "LY", - "names" : { - "de" : "Libysch-Arabische Dschamahirija", - "en" : "Libya", - "es" : "Libia, República Árabe", - "fr" : "Libye", - "ja" : "社会主義人民リビア・アラブ国", - "pt-BR" : "Líbia Árabe Jamahiriya", - "ru" : "Ливия", - "zh-CN" : "阿拉伯利比亚民众国" - } - } - } - }, - { - "2a02:e740::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e780::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:e7c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:e800::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:e840::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e880::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:e900::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2963597, - "iso_code" : "IE", - "names" : { - "de" : "Irland", - "en" : "Ireland", - "es" : "República de Irlanda", - "fr" : "Irlande", - "ja" : "アイルランド", - "pt-BR" : "Irlanda", - "ru" : "Ирландия", - "zh-CN" : "爱尔兰" - } - }, - "registered_country" : { - "geoname_id" : 2963597, - "iso_code" : "IE", - "names" : { - "de" : "Irland", - "en" : "Ireland", - "es" : "República de Irlanda", - "fr" : "Irlande", - "ja" : "アイルランド", - "pt-BR" : "Irlanda", - "ru" : "Ирландия", - "zh-CN" : "爱尔兰" - } - } - } - }, - { - "2a02:e940::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - } - } - }, - { - "2a02:e980::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - }, - "registered_country" : { - "geoname_id" : 294640, - "iso_code" : "IL", - "names" : { - "de" : "Israel", - "en" : "Israel", - "es" : "Israel", - "fr" : "Israël", - "ja" : "イスラエル国", - "pt-BR" : "Israel", - "ru" : "Израиль", - "zh-CN" : "以色列" - } - } - } - }, - { - "2a02:e9c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:ea00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - }, - "registered_country" : { - "geoname_id" : 2658434, - "iso_code" : "CH", - "names" : { - "de" : "Schweiz", - "en" : "Switzerland", - "es" : "Suiza", - "fr" : "Suisse", - "ja" : "スイス連邦", - "pt-BR" : "Suíça", - "ru" : "Швейцария", - "zh-CN" : "瑞士" - } - } - } - }, - { - "2a02:ea40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:ea80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:eac0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:eb00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:eb40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:eb80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ebc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:ec00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:ec40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ec80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "location" : { - "latitude" : "48.69096", - "longitude" : "9.14062", - "time_zone" : "Europe/Vaduz" - } - } - }, - { - "2a02:ecc0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 587116, - "iso_code" : "AZ", - "names" : { - "de" : "Aserbaidschan", - "en" : "Azerbaijan", - "es" : "Azerbaiyán", - "fr" : "Azerbaïdjan", - "ja" : "アゼルバイジャン共和国", - "pt-BR" : "Azerbaijão", - "ru" : "Азербайджан", - "zh-CN" : "阿塞拜疆" - } - }, - "registered_country" : { - "geoname_id" : 587116, - "iso_code" : "AZ", - "names" : { - "de" : "Aserbaidschan", - "en" : "Azerbaijan", - "es" : "Azerbaiyán", - "fr" : "Azerbaïdjan", - "ja" : "アゼルバイジャン共和国", - "pt-BR" : "Azerbaijão", - "ru" : "Азербайджан", - "zh-CN" : "阿塞拜疆" - } - } - } - }, - { - "2a02:ed00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:ed40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:ed80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:edc0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - }, - "registered_country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - } - } - }, - { - "2a02:ee00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:ee40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ee80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:eec0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:ef00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ef40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:ef80::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:efc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f000::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - }, - "registered_country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - } - } - }, - { - "2a02:f040::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - }, - "registered_country" : { - "geoname_id" : 290291, - "iso_code" : "BH", - "names" : { - "de" : "Bahrain", - "en" : "Bahrain", - "es" : "Bahréin", - "fr" : "Bahreïn", - "ja" : "バーレーン", - "pt-BR" : "Bahrain", - "ru" : "Бахрейн", - "zh-CN" : "巴林" - } - } - } - }, - { - "2a02:f080::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:f0a0::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f0c0::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - }, - "registered_country" : { - "geoname_id" : 248816, - "iso_code" : "JO", - "names" : { - "de" : "Jordanien", - "en" : "Hashemite Kingdom of Jordan", - "es" : "Jordania", - "fr" : "Jordanie", - "ja" : "ヨルダン・ハシミテ王国", - "pt-BR" : "Jordânia", - "ru" : "Иордания", - "zh-CN" : "约旦" - } - } - } - }, - { - "2a02:f100::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f140::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f180::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:f1c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - }, - "registered_country" : { - "geoname_id" : 690791, - "iso_code" : "UA", - "names" : { - "de" : "Ukraine", - "en" : "Ukraine", - "es" : "Ucrania", - "fr" : "Ukraine", - "ja" : "ウクライナ共和国", - "pt-BR" : "Ucrânia", - "ru" : "Украина", - "zh-CN" : "乌克兰" - } - } - } - }, - { - "2a02:f200::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f240::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:f280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "2a02:f2c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f300::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:f340::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f380::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f3c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f400::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 290557, - "iso_code" : "AE", - "names" : { - "de" : "Vereinigte Arabische Emirate", - "en" : "United Arab Emirates", - "es" : "Emiratos Árabes Unidos", - "fr" : "Émirats Arabes Unis", - "ja" : "アラブ首長国連邦", - "pt-BR" : "Emirados Árabes Unidos", - "ru" : "Объединенные Арабские Эмираты", - "zh-CN" : "阿拉伯联合酋长国" - } - }, - "registered_country" : { - "geoname_id" : 290557, - "iso_code" : "AE", - "names" : { - "de" : "Vereinigte Arabische Emirate", - "en" : "United Arab Emirates", - "es" : "Emiratos Árabes Unidos", - "fr" : "Émirats Arabes Unis", - "ja" : "アラブ首長国連邦", - "pt-BR" : "Emirados Árabes Unidos", - "ru" : "Объединенные Арабские Эмираты", - "zh-CN" : "阿拉伯联合酋长国" - } - } - } - }, - { - "2a02:f440::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f480::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:f4c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - }, - "registered_country" : { - "geoname_id" : 2510769, - "iso_code" : "ES", - "names" : { - "de" : "Spanien", - "en" : "Spain", - "es" : "España", - "fr" : "Espagne", - "ja" : "スペイン", - "pt-BR" : "Espanha", - "ru" : "Испания", - "zh-CN" : "西班牙" - } - } - } - }, - { - "2a02:f500::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f540::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f560::/30" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f580::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 174982, - "iso_code" : "AM", - "names" : { - "de" : "Armenien", - "en" : "Armenia", - "es" : "Armenia", - "fr" : "Arménie", - "ja" : "アルメニア共和国", - "pt-BR" : "Armênia", - "ru" : "Армения", - "zh-CN" : "亚美尼亚" - } - }, - "registered_country" : { - "geoname_id" : 174982, - "iso_code" : "AM", - "names" : { - "de" : "Armenien", - "en" : "Armenia", - "es" : "Armenia", - "fr" : "Arménie", - "ja" : "アルメニア共和国", - "pt-BR" : "Armênia", - "ru" : "Армения", - "zh-CN" : "亚美尼亚" - } - } - } - }, - { - "2a02:f5c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f600::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f640::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f680::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f6c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f700::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - }, - "registered_country" : { - "geoname_id" : 272103, - "iso_code" : "LB", - "names" : { - "de" : "Libanon", - "en" : "Lebanon", - "es" : "Líbano", - "fr" : "Liban", - "ja" : "レバノン共和国", - "pt-BR" : "Líbano", - "ru" : "Ливан", - "zh-CN" : "黎巴嫩" - } - } - } - }, - { - "2a02:f740::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f780::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:f7c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f800::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - }, - "registered_country" : { - "geoname_id" : 2017370, - "iso_code" : "RU", - "names" : { - "de" : "Russland", - "en" : "Russia", - "es" : "Rusia", - "fr" : "Russie", - "ja" : "ロシア", - "pt-BR" : "Rússia", - "ru" : "Россия", - "zh-CN" : "俄罗斯" - } - } - } - }, - { - "2a02:f840::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:f880::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:f8c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:f900::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - }, - "registered_country" : { - "geoname_id" : 130758, - "iso_code" : "IR", - "names" : { - "de" : "Iran (Islamische Republik)", - "en" : "Iran", - "es" : "Irán (República Islámica)", - "fr" : "Iran (République islamique de)", - "ja" : "イラン・イスラム共和国", - "pt-BR" : "República Islâmica do Irã", - "ru" : "Иран", - "zh-CN" : "伊朗伊斯兰共和国" - } - } - } - }, - { - "2a02:f940::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - }, - "registered_country" : { - "geoname_id" : 719819, - "iso_code" : "HU", - "names" : { - "de" : "Ungarn", - "en" : "Hungary", - "es" : "Hungría", - "fr" : "Hongrie", - "ja" : "ハンガリー共和国", - "pt-BR" : "Hungria", - "ru" : "Венгрия", - "zh-CN" : "匈牙利" - } - } - } - }, - { - "2a02:f980::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:f9c0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fa00::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - }, - "registered_country" : { - "geoname_id" : 102358, - "iso_code" : "SA", - "names" : { - "de" : "Saudi-Arabien", - "en" : "Saudi Arabia", - "es" : "Arabia Saudita", - "fr" : "Arabie saoudite", - "ja" : "サウジアラビア王国", - "pt-BR" : "Arábia Saudita", - "ru" : "Саудовская Аравия", - "zh-CN" : "沙特阿拉伯" - } - } - } - }, - { - "2a02:fa40::/29" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - }, - "registered_country" : { - "geoname_id" : 298795, - "iso_code" : "TR", - "names" : { - "de" : "Türkei", - "en" : "Turkey", - "es" : "Turquía", - "fr" : "Turquie", - "ja" : "トルコ共和国", - "pt-BR" : "Turquia", - "ru" : "Турция", - "zh-CN" : "土耳其" - } - } - } - }, - { - "2a02:fa80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:fac0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:fb00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:fb40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fb80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:fbc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - }, - "registered_country" : { - "geoname_id" : 798544, - "iso_code" : "PL", - "names" : { - "de" : "Polen", - "en" : "Poland", - "es" : "Polonia", - "fr" : "Pologne", - "ja" : "ポーランド共和国", - "pt-BR" : "Polônia", - "ru" : "Польша", - "zh-CN" : "波兰" - } - } - } - }, - { - "2a02:fc00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - } - } - }, - { - "2a02:fc40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - }, - "registered_country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - } - } - }, - { - "2a02:fc80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - }, - "registered_country" : { - "geoname_id" : 3144096, - "iso_code" : "NO", - "names" : { - "de" : "Norwegen", - "en" : "Norway", - "es" : "Noruega", - "fr" : "Norvège", - "ja" : "ノルウェー王国", - "pt-BR" : "Noruega", - "ru" : "Норвегия", - "zh-CN" : "挪威" - } - } - } - }, - { - "2a02:fcc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fd00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:fd40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:fd80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - }, - "registered_country" : { - "geoname_id" : 2623032, - "iso_code" : "DK", - "names" : { - "de" : "Dänemark", - "en" : "Denmark", - "es" : "Dinamarca", - "fr" : "Danemark", - "ja" : "デンマーク王国", - "pt-BR" : "Dinamarca", - "ru" : "Дания", - "zh-CN" : "丹麦" - } - } - } - }, - { - "2a02:fdc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - }, - "registered_country" : { - "geoname_id" : 2782113, - "iso_code" : "AT", - "names" : { - "de" : "Österreich", - "en" : "Austria", - "es" : "Austria", - "fr" : "Autriche", - "ja" : "オーストリア共和国", - "pt-BR" : "Áustria", - "ru" : "Австрия", - "zh-CN" : "奥地利" - } - } - } - }, - { - "2a02:fe00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - }, - "registered_country" : { - "geoname_id" : 2750405, - "iso_code" : "NL", - "names" : { - "de" : "Niederlande", - "en" : "Netherlands", - "es" : "Holanda", - "fr" : "Pays-Bas", - "ja" : "オランダ王国", - "pt-BR" : "Países Baixos", - "ru" : "Нидерланды", - "zh-CN" : "荷兰" - } - } - } - }, - { - "2a02:fe40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:fe80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:fec0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "2a02:ff00::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - }, - "registered_country" : { - "geoname_id" : 3175395, - "iso_code" : "IT", - "names" : { - "de" : "Italien", - "en" : "Italy", - "es" : "Italia", - "fr" : "Italie", - "ja" : "イタリア共和国", - "pt-BR" : "Itália", - "ru" : "Италия", - "zh-CN" : "意大利" - } - } - } - }, - { - "2a02:ff40::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 3042225, - "iso_code" : "IM", - "names" : { - "de" : "Insel Man", - "en" : "Isle of Man", - "es" : "Isla de Man", - "fr" : "Île de Man", - "ja" : "マン島", - "pt-BR" : "Ilha de Man", - "ru" : "Мэн, о-в", - "zh-CN" : "曼岛" - } - }, - "registered_country" : { - "geoname_id" : 3042225, - "iso_code" : "IM", - "names" : { - "de" : "Insel Man", - "en" : "Isle of Man", - "es" : "Isla de Man", - "fr" : "Île de Man", - "ja" : "マン島", - "pt-BR" : "Ilha de Man", - "ru" : "Мэн, о-в", - "zh-CN" : "曼岛" - } - } - } - }, - { - "2a02:ff80::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "2a02:ffc0::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2411586, - "iso_code" : "GI", - "names" : { - "de" : "Gibraltar", - "en" : "Gibraltar", - "es" : "Gibraltar", - "fr" : "Gibraltar", - "ja" : "ジブラルタル", - "pt-BR" : "Gibraltar", - "ru" : "Гибралтар" - } - }, - "registered_country" : { - "geoname_id" : 2411586, - "iso_code" : "GI", - "names" : { - "de" : "Gibraltar", - "en" : "Gibraltar", - "es" : "Gibraltar", - "fr" : "Gibraltar", - "ja" : "ジブラルタル", - "pt-BR" : "Gibraltar", - "ru" : "Гибралтар" - } - } - } - }, - { - "::2.125.160.216/125" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "postal" : { - "code" : "OX1" - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - } - } - }, - { - "::81.2.69.142/127" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - } - } - }, - { - "::81.2.69.144/124" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - } - } - }, - { - "::81.2.69.160/123" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - } - } - }, - { - "::81.2.69.192/124" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - } - } - }, - { - "::216.160.83.56/125" : { - "continent" : { - "code" : "NA", - "geoname_id" : 6255149, - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "América del Norte", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "postal" : { - "code" : "98354" - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - } - } - }, - { - "::89.160.20.112/124" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "::89.160.20.128/121" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - } - } - }, - { - "::67.43.156.0/120" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1252634, - "iso_code" : "BT", - "names" : { - "de" : "Bhutan", - "en" : "Bhutan", - "es" : "Bután", - "fr" : "Bhutan", - "ja" : "ブータン王国", - "pt-BR" : "Butão", - "ru" : "Бутан", - "zh-CN" : "不丹" - } - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "traits" : { - "is_anonymous_proxy" : 1 - } - } - }, - { - "::202.196.224.0/116" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "postal" : { - "code" : "34021" - }, - "registered_country" : { - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "represented_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - }, - "type" : "military" - } - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-DensityIncome-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-DensityIncome-Test.json deleted file mode 100644 index 21e571798..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-DensityIncome-Test.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "::5.83.124.0/118" : { - "average_income" : 32323, - "population_density" : 1232 - } - }, - { - "::216.160.83.0/120" : { - "average_income" : 24626, - "population_density" : 1341 - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Domain-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Domain-Test.json deleted file mode 100644 index c8baa7924..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Domain-Test.json +++ /dev/null @@ -1,452 +0,0 @@ -[ - { - "::1.2.0.0/112" : { - "domain" : "maxmind.com" - } - }, - { - "::71.160.223.0/120" : { - "domain" : "verizon.net" - } - }, - { - "::186.30.236.0/120" : { - "domain" : "replaced.com" - } - }, - { - "2a02:2770:3::/64" : { - "domain" : "sgotti.org" - } - }, - { - "2a02:8420:48f4:b000::/64" : { - "domain" : "sfr.net" - } - }, - { - "::142.217.194.0/119" : { - "domain" : "telebecinternet.net" - } - }, - { - "::142.217.196.0/118" : { - "domain" : "telebecinternet.net" - } - }, - { - "::142.217.200.0/117" : { - "domain" : "telebecinternet.net" - } - }, - { - "::142.217.208.0/118" : { - "domain" : "telebecinternet.net" - } - }, - { - "::142.217.212.0/119" : { - "domain" : "telebecinternet.net" - } - }, - { - "::142.217.214.0/120" : { - "domain" : "telebecinternet.net" - } - }, - { - "::208.110.201.0/120" : { - "domain" : "comcastbusiness.net" - } - }, - { - "::208.110.202.0/119" : { - "domain" : "comcastbusiness.net" - } - }, - { - "::208.110.204.0/118" : { - "domain" : "comcastbusiness.net" - } - }, - { - "::208.110.208.0/116" : { - "domain" : "comcastbusiness.net" - } - }, - { - "::222.230.136.0/118" : { - "domain" : "gol.ne.jp" - } - }, - { - "::65.115.240.0/116" : { - "domain" : "qwest.net" - } - }, - { - "::65.116.0.0/118" : { - "domain" : "qwest.net" - } - }, - { - "::65.116.4.0/120" : { - "domain" : "qwest.net" - } - }, - { - "::65.23.96.0/115" : { - "domain" : "nuvox.net" - } - }, - { - "::66.92.78.0/119" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.92.80.0/116" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.92.96.0/115" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.92.128.0/113" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.93.0.0/113" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.93.128.0/114" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.93.192.0/115" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.93.224.0/116" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.93.240.0/117" : { - "domain" : "speakeasy.net" - } - }, - { - "::66.93.248.0/119" : { - "domain" : "speakeasy.net" - } - }, - { - "::67.43.156.0/120" : { - "domain" : "shoesfin.NET" - } - }, - { - "::69.218.198.0/119" : { - "domain" : "ameritech.net" - } - }, - { - "::69.218.200.0/117" : { - "domain" : "ameritech.net" - } - }, - { - "::69.218.208.0/116" : { - "domain" : "ameritech.net" - } - }, - { - "::69.218.224.0/115" : { - "domain" : "ameritech.net" - } - }, - { - "::69.219.0.0/114" : { - "domain" : "ameritech.net" - } - }, - { - "::69.219.64.0/116" : { - "domain" : "ameritech.net" - } - }, - { - "::69.219.80.0/118" : { - "domain" : "ameritech.net" - } - }, - { - "::69.219.84.0/120" : { - "domain" : "ameritech.net" - } - }, - { - "::70.46.0.0/113" : { - "domain" : "nuvox.net" - } - }, - { - "::70.46.128.0/118" : { - "domain" : "nuvox.net" - } - }, - { - "::70.46.132.0/120" : { - "domain" : "nuvox.net" - } - }, - { - "::71.136.2.0/119" : { - "domain" : "pacbell.net" - } - }, - { - "::71.136.4.0/118" : { - "domain" : "pacbell.net" - } - }, - { - "::71.136.8.0/117" : { - "domain" : "pacbell.net" - } - }, - { - "::71.136.16.0/116" : { - "domain" : "pacbell.net" - } - }, - { - "::71.136.32.0/115" : { - "domain" : "pacbell.net" - } - }, - { - "::71.136.64.0/114" : { - "domain" : "pacbell.net" - } - }, - { - "::71.136.128.0/113" : { - "domain" : "pacbell.net" - } - }, - { - "::71.137.0.0/112" : { - "domain" : "pacbell.net" - } - }, - { - "::71.138.0.0/113" : { - "domain" : "pacbell.net" - } - }, - { - "::71.138.128.0/114" : { - "domain" : "pacbell.net" - } - }, - { - "::71.138.192.0/116" : { - "domain" : "pacbell.net" - } - }, - { - "::71.138.208.0/119" : { - "domain" : "pacbell.net" - } - }, - { - "::74.0.88.0/117" : { - "domain" : "covad.net" - } - }, - { - "::74.0.96.0/115" : { - "domain" : "covad.net" - } - }, - { - "::74.0.128.0/113" : { - "domain" : "covad.net" - } - }, - { - "::74.1.0.0/112" : { - "domain" : "covad.net" - } - }, - { - "::74.2.0.0/113" : { - "domain" : "covad.net" - } - }, - { - "::74.2.128.0/115" : { - "domain" : "covad.net" - } - }, - { - "::74.2.160.0/117" : { - "domain" : "covad.net" - } - }, - { - "::74.2.168.0/118" : { - "domain" : "covad.net" - } - }, - { - "::74.2.172.0/119" : { - "domain" : "covad.net" - } - }, - { - "::74.2.174.0/120" : { - "domain" : "covad.net" - } - }, - { - "::75.77.84.0/118" : { - "domain" : "nuvox.net" - } - }, - { - "::75.77.88.0/117" : { - "domain" : "nuvox.net" - } - }, - { - "::75.77.96.0/115" : { - "domain" : "nuvox.net" - } - }, - { - "::75.77.128.0/113" : { - "domain" : "nuvox.net" - } - }, - { - "::78.26.67.0/120" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.68.0/118" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.72.0/117" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.80.0/116" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.96.0/117" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.104.0/118" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.108.0/119" : { - "domain" : "popwifi.it" - } - }, - { - "::78.26.110.0/120" : { - "domain" : "popwifi.it" - } - }, - { - "::81.2.64.0/115" : { - "domain" : "in-addr.arpa" - } - }, - { - "::83.206.0.0/112" : { - "domain" : "oleane.fr" - } - }, - { - "::89.160.0.0/116" : { - "domain" : "bredband2.com" - } - }, - { - "::89.160.16.0/117" : { - "domain" : "bredband2.com" - } - }, - { - "::89.160.24.0/118" : { - "domain" : "bredband2.com" - } - }, - { - "::89.160.28.0/119" : { - "domain" : "bredband2.com" - } - }, - { - "::89.160.30.0/120" : { - "domain" : "bredband2.com" - } - }, - { - "::89.92.0.0/111" : { - "domain" : "bbox.fr" - } - }, - { - "::89.94.0.0/112" : { - "domain" : "bbox.fr" - } - }, - { - "::89.95.0.0/113" : { - "domain" : "bbox.fr" - } - }, - { - "::89.95.128.0/114" : { - "domain" : "bbox.fr" - } - }, - { - "::89.95.192.0/115" : { - "domain" : "bbox.fr" - } - }, - { - "::89.95.224.0/116" : { - "domain" : "bbox.fr" - } - }, - { - "::89.95.240.0/119" : { - "domain" : "bbox.fr" - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Enterprise-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Enterprise-Test.json deleted file mode 100644 index ca4260801..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Enterprise-Test.json +++ /dev/null @@ -1,666 +0,0 @@ -[ - { - "::2.125.160.216/125" : { - "city" : { - "confidence" : 50, - "geoname_id" : "2655045", - "names" : { - "en" : "Boxford" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.7500", - "longitude" : "-1.2500", - "time_zone" : "Europe/London" - }, - "postal" : { - "code" : "OX1", - "confidence" : 20 - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "subdivisions" : [ - { - "confidence" : 70, - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - }, - { - "geoname_id" : 3333217, - "iso_code" : "WBK", - "names" : { - "en" : "West Berkshire", - "ru" : "Западный Беркшир", - "zh-CN" : "西伯克郡" - } - } - ] - } - }, - { - "::67.43.156.0/120" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 1252634, - "iso_code" : "BT", - "names" : { - "de" : "Bhutan", - "en" : "Bhutan", - "es" : "Bután", - "fr" : "Bhutan", - "ja" : "ブータン王国", - "pt-BR" : "Butão", - "ru" : "Бутан", - "zh-CN" : "不丹" - } - }, - "location" : { - "accuracy_radius" : 534, - "latitude" : "27.5000", - "longitude" : "90.5000", - "time_zone" : "Asia/Thimphu" - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "traits" : { - "autonomous_system_number" : 35908, - "domain" : "shoesfin.NET", - "is_anonymous_proxy" : true, - "isp" : "Loud Packet", - "organization" : "zudoarichikito_", - "user_type" : "search_engine_spider" - } - } - }, - { - "::74.209.24.0/116" : { - "city" : { - "confidence" : "11", - "geoname_id" : "5112335", - "names" : { - "en" : "Chatham" - } - }, - "continent" : { - "code" : "NA", - "geoname_id" : "6255149", - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "Norteamérica", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "confidence" : "99", - "geoname_id" : "6252001", - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "location" : { - "accuracy_radius" : "27", - "latitude" : "42.347800", - "longitude" : "-73.554900", - "metro_code" : "532", - "time_zone" : "America/New_York" - }, - "postal" : { - "code" : "12037", - "confidence" : "11" - }, - "registered_country" : { - "geoname_id" : "6252001", - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "confidence" : "93", - "geoname_id" : "5128638", - "iso_code" : "NY", - "names" : { - "de" : "New York", - "en" : "New York", - "es" : "Nueva York", - "fr" : "New York", - "ja" : "ニューヨーク州", - "pt-BR" : "Nova Iorque", - "ru" : "Нью-Йорк", - "zh-CN" : "纽约州" - } - } - ], - "traits" : { - "autonomous_system_number" : "14671", - "autonomous_system_organization" : "FairPoint Communications", - "connection_type" : "Cable/DSL", - "domain" : "frpt.net", - "is_anonymous_proxy" : true, - "is_legitimate_proxy" : true, - "is_satellite_provider" : true, - "isp" : "Fairpoint Communications", - "organization" : "Fairpoint Communications", - "user_type" : "residential" - } - } - }, - { - "::81.2.69.160/123" : { - "city" : { - "confidence" : 42, - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "confidence" : 42, - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ], - "traits" : { - "connection_type" : "Corporate", - "domain" : "in-addr.arpa", - "isp" : "Andrews & Arnold Ltd", - "organization" : "STONEHOUSE office network", - "user_type" : "government" - } - } - }, - { - "::89.160.20.112/124" : { - "city" : { - "confidence" : 51, - "geoname_id" : "2694762", - "names" : { - "de" : "Linköping", - "en" : "Linköping", - "fr" : "Linköping", - "ja" : "リンシェーピング", - "zh-CN" : "林雪平" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 76, - "latitude" : "58.4167", - "longitude" : "15.6167", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "subdivisions" : [ - { - "confidence" : 51, - "geoname_id" : 2685867, - "iso_code" : "E", - "names" : { - "en" : "Östergötland County", - "fr" : "Comté d'Östergötland" - } - } - ], - "traits" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB", - "connection_type" : "Corporate", - "domain" : "bredband2.com", - "isp" : "Bredband2 AB", - "organization" : "Bevtec", - "user_type" : "government" - } - } - }, - { - "::175.16.199.0/120" : { - "city" : { - "confidence" : 50, - "geoname_id" : 2038180, - "names" : { - "de" : "Chángchūn", - "en" : "Changchun", - "fr" : "Changchun", - "ja" : "長春市", - "ru" : "Чанчунь", - "zh-CN" : "长春" - } - }, - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "China", - "es" : "China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : 43.88, - "longitude" : 125.3228, - "time_zone" : "Asia/Harbin" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "China", - "es" : "China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "subdivisions" : [ - { - "confidence" : 70, - "geoname_id" : 2036500, - "iso_code" : "22", - "names" : { - "en" : "Jilin Sheng", - "zh-CN" : "吉林" - } - } - ], - "traits" : { - "user_type" : "dialup" - } - } - }, - { - "::202.196.224.0/116" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "location" : { - "accuracy_radius" : 121, - "latitude" : "13", - "longitude" : "122", - "time_zone" : "Asia/Manila" - }, - "postal" : { - "code" : "34021", - "confidence" : 20 - }, - "registered_country" : { - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "represented_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - }, - "type" : "military" - } - } - }, - { - "::216.160.83.56/125" : { - "city" : { - "confidence" : 40, - "geoname_id" : "5803556", - "names" : { - "en" : "Milton", - "ru" : "Мильтон" - } - }, - "continent" : { - "code" : "NA", - "geoname_id" : 6255149, - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "América del Norte", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "location" : { - "accuracy_radius" : 22, - "latitude" : "47.2513", - "longitude" : "-122.3149", - "metro_code" : "819", - "time_zone" : "America/Los_Angeles" - }, - "postal" : { - "code" : "98354", - "confidence" : 40 - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "subdivisions" : [ - { - "confidence" : 99, - "geoname_id" : 5815135, - "iso_code" : "WA", - "names" : { - "en" : "Washington", - "es" : "Washington", - "fr" : "État de Washington", - "ja" : "ワシントン州", - "ru" : "Вашингтон", - "zh-CN" : "华盛顿州" - } - } - ], - "traits" : { - "autonomous_system_number" : 209, - "connection_type" : "Cable/DSL", - "isp" : "Century Link", - "organization" : "Lariat Software", - "user_type" : "government" - } - } - }, - { - "::212.47.235.81/128" : { - "traits" : { - "is_anonymous_proxy" : true - } - } - }, - { - "::212.47.235.82/128" : { - "traits" : { - "is_satellite_provider" : true - } - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-ISP-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-ISP-Test.json deleted file mode 100644 index 2ef4993a5..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-ISP-Test.json +++ /dev/null @@ -1,12585 +0,0 @@ -[ - { - "::1.0.128.0/113" : { - "isp" : "TOT Public Company Limited", - "organization" : "TOT Public Company Limited" - } - }, - { - "::1.128.0.0/107" : { - "autonomous_system_number" : 1221, - "autonomous_system_organization" : "Telstra Pty Ltd", - "isp" : "Telstra Internet", - "organization" : "Telstra Internet" - } - }, - { - "::4.0.0.0/104" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::5.83.124.0/118" : { - "isp" : "WifiNetCom" - } - }, - { - "::5.145.96.0/117" : { - "isp" : "Finecom" - } - }, - { - "::8.0.0.0/107" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.32.0.0/112" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.0.0/116" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.16.0/119" : { - "isp" : "Level 3 Communications", - "organization" : "Co-Mo Connect" - } - }, - { - "::8.33.18.0/119" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.20.0/118" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.24.0/117" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.32.0/115" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.64.0/114" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.33.128.0/113" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.34.0.0/111" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.36.0.0/110" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.40.0.0/109" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.48.0.0/108" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.64.0.0/106" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::8.128.0.0/105" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::12.0.0.0/106" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.64.0.0/108" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.80.0.0/112" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.0.0/114" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.64.0/116" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.80.0/117" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.88.0/118" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.92.0/118" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.96.0/115" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.81.128.0/113" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.82.0.0/111" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.84.0.0/111" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.86.0.0/112" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.0.0/114" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.64.0/115" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.96.0/116" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.112.0/118" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.116.0/119" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.118.0/119" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Worldnet Services" - } - }, - { - "::12.87.120.0/117" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.87.128.0/113" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.88.0.0/109" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.0.0/116" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.16.0/120" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.17.0/120" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.18.0/119" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.20.0/118" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.24.0/117" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.32.0/115" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.64.0/114" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.96.128.0/113" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.97.0.0/112" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.98.0.0/111" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.100.0.0/110" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.104.0.0/109" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.112.0.0/108" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::12.128.0.0/105" : { - "isp" : "AT&T Services", - "organization" : "AT&T Services" - } - }, - { - "::15.0.0.0/104" : { - "autonomous_system_number" : 71, - "autonomous_system_organization" : "Hewlett-Packard Company", - "isp" : "Hewlett-Packard Company", - "organization" : "Hewlett-Packard Company" - } - }, - { - "::16.0.0.0/104" : { - "autonomous_system_number" : 71, - "autonomous_system_organization" : "Hewlett-Packard Company", - "isp" : "Hewlett-Packard Company", - "organization" : "Hewlett-Packard Company" - } - }, - { - "::17.0.0.0/104" : { - "isp" : "Apple", - "organization" : "Apple" - } - }, - { - "::18.0.0.0/104" : { - "autonomous_system_number" : 3, - "autonomous_system_organization" : "Massachusetts Institute of Technology", - "isp" : "Massachusetts Institute of Technology", - "organization" : "Massachusetts Institute of Technology" - } - }, - { - "::23.32.0.0/107" : { - "autonomous_system_number" : 35994, - "autonomous_system_organization" : "Akamai Technologies, Inc.", - "isp" : "Akamai Technologies", - "organization" : "Akamai Technologies" - } - }, - { - "::23.192.0.0/107" : { - "autonomous_system_number" : 35994, - "autonomous_system_organization" : "Akamai Technologies, Inc.", - "isp" : "Akamai Technologies", - "organization" : "Akamai Technologies" - } - }, - { - "::24.38.243.141/128" : { - "organization" : "LAWN MULLEN & GOOD INTERNATIONAL" - } - }, - { - "::27.0.16.0/116" : { - "isp" : "GLBB" - } - }, - { - "::27.192.0.0/107" : { - "autonomous_system_number" : 4837, - "autonomous_system_organization" : "CNCGROUP China169 Backbone", - "isp" : "China Unicom Liaoning", - "organization" : "China Unicom Liaoning" - } - }, - { - "::31.64.0.0/106" : { - "autonomous_system_number" : 12576, - "autonomous_system_organization" : "Orange Personal Communications Services" - } - }, - { - "::31.224.0.0/107" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::32.0.0.0/106" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.0.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.2.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.3.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.4.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.6.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.7.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.8.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.9.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.10.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.11.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.12.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.13.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.14.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.16.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.17.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.18.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.20.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.21.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.22.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.24.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.25.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.26.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.27.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.28.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.29.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.30.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.31.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.32.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.34.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.35.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.36.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.37.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.38.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.40.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.41.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.42.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.44.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.46.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.47.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.48.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.49.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.50.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.52.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.56.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.60.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.61.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.62.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.63.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.64.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.66.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.67.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.68.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.72.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.74.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.75.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.76.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.80.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.82.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.84.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.85.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.86.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.88.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.90.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.92.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.96.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.100.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.101.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.102.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.103.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.104.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.106.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.108.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.109.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.110.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.111.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.112.0/117" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.120.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.124.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.125.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.126.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.127.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.128.0/117" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.136.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.140.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.141.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.142.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.144.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.145.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.146.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.148.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.149.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.150.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.152.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.154.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.155.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.156.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.157.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.158.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.159.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.160.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.161.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.162.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.164.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.168.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.169.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.170.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.172.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.176.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.180.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.182.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.183.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.184.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.186.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.187.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.188.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.190.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.192.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.196.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.197.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.198.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.200.0/117" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.208.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.209.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.210.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.211.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.212.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.213.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.214.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.216.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.217.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.218.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.219.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.220.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.221.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.222.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.224.0/118" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.228.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.230.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.232.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.234.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.235.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.236.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.238.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.239.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.240.0/119" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.242.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.243.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.244.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.245.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.246.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.247.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.248.0/120" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.249.0/120" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.64.250.0/119" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.64.252.0/118" : { - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::32.65.0.0/112" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.66.0.0/111" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.68.0.0/110" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.72.0.0/109" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.80.0.0/108" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.96.0.0/107" : { - "organization" : "AT&T Wireless" - } - }, - { - "::32.128.0.0/105" : { - "organization" : "AT&T Wireless" - } - }, - { - "::35.0.0.0/105" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc.", - "isp" : "Merit Network", - "organization" : "Merit Network" - } - }, - { - "::35.128.0.0/107" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc.", - "isp" : "Merit Network", - "organization" : "Merit Network" - } - }, - { - "::36.192.0.0/107" : { - "autonomous_system_number" : 9394, - "autonomous_system_organization" : "China TieTong Telecommunications Corporation", - "isp" : "China TieTong", - "organization" : "China TieTong" - } - }, - { - "::37.43.3.0/120" : { - "isp" : "PFA Mihalascu Viorel" - } - }, - { - "::37.60.16.0/117" : { - "organization" : "Metroset" - } - }, - { - "::37.110.0.0/115" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.32.0/117" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.40.0/120" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.0/124" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.16/125" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.24/128" : { - "organization" : "Onlime" - } - }, - { - "::37.110.41.25/128" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.26/127" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.28/126" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.32/123" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.64/122" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.41.128/121" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.42.0/119" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.44.0/118" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.48.0/116" : { - "organization" : "National Cable Networks" - } - }, - { - "::37.110.64.0/114" : { - "organization" : "National Cable Networks" - } - }, - { - "::38.0.0.0/106" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.64.0.0/109" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.72.0.0/112" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.0.0/113" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.128.0/119" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.130.0/120" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "SUMO FIBER" - } - }, - { - "::38.73.131.0/120" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.132.0/119" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.134.0/119" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "SUMO FIBER" - } - }, - { - "::38.73.136.0/117" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.144.0/116" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.160.0/115" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.73.192.0/114" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.74.0.0/111" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.76.0.0/110" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.80.0.0/108" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.96.0.0/109" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.104.0.0/112" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.0.0/122" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.0.64/123" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "GHD" - } - }, - { - "::38.105.0.96/123" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.0.128/121" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.1.0/120" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.2.0/119" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.4.0/118" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.8.0/117" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.16.0/116" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.32.0/115" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.64.0/114" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.105.128.0/113" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.106.0.0/111" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.0.0/114" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.64.0/116" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.0/124" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.16/125" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.24/126" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.28/127" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.30/128" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "La Presse" - } - }, - { - "::38.108.80.31/128" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.32/123" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.64/122" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.80.128/121" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.81.0/120" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.82.0/119" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.84.0/118" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.88.0/117" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.96.0/115" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.108.128.0/113" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.109.0.0/112" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.110.0.0/115" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.110.32.0/116" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.110.48.0/118" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Athena Broadband" - } - }, - { - "::38.110.52.0/118" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.110.56.0/117" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.110.64.0/114" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.110.128.0/113" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.111.0.0/112" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.112.0.0/108" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::38.128.0.0/105" : { - "autonomous_system_number" : 174, - "autonomous_system_organization" : "Cogent Communications", - "isp" : "Cogent Communications", - "organization" : "Cogent Communications" - } - }, - { - "::39.32.0.0/107" : { - "autonomous_system_number" : 45595, - "autonomous_system_organization" : "Pakistan Telecom Company Limited", - "isp" : "PTCL", - "organization" : "PTCL" - } - }, - { - "::39.64.0.0/107" : { - "autonomous_system_number" : 4837, - "autonomous_system_organization" : "CNCGROUP China169 Backbone", - "isp" : "China Unicom Liaoning", - "organization" : "China Unicom Liaoning" - } - }, - { - "::39.192.0.0/106" : { - "autonomous_system_number" : 23693, - "autonomous_system_organization" : "PT. Telekomunikasi Selular", - "isp" : "Telkomsel", - "organization" : "Telkomsel" - } - }, - { - "::41.74.98.48/124" : { - "organization" : "MapleTel" - } - }, - { - "::41.112.0.0/108" : { - "isp" : "MTN SA" - } - }, - { - "::44.0.0.0/104" : { - "autonomous_system_number" : 7377, - "autonomous_system_organization" : "University of California at San Diego", - "isp" : "University of California at San Diego", - "organization" : "University of California at San Diego" - } - }, - { - "::47.64.0.0/109" : { - "isp" : "Vodafone D2 GmbH" - } - }, - { - "::47.72.0.0/128" : { - "isp" : "Vodafone New Zealand" - } - }, - { - "::49.64.0.0/107" : { - "autonomous_system_number" : 4134, - "autonomous_system_organization" : "Chinanet", - "isp" : "China Telecom", - "organization" : "China Telecom" - } - }, - { - "::50.73.224.133/128" : { - "organization" : "iWiSP llc" - } - }, - { - "::50.128.0.0/105" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::53.0.0.0/104" : { - "autonomous_system_number" : 31399, - "autonomous_system_organization" : "Daimler Autonomous System", - "isp" : "Daimler", - "organization" : "Daimler" - } - }, - { - "::55.0.0.0/104" : { - "autonomous_system_number" : 721, - "autonomous_system_organization" : "DoD Network Information Center" - } - }, - { - "::57.0.0.0/104" : { - "autonomous_system_number" : 2647, - "autonomous_system_organization" : "SITA", - "isp" : "SITA", - "organization" : "SITA" - } - }, - { - "::59.0.0.0/107" : { - "autonomous_system_number" : 4766, - "autonomous_system_organization" : "Korea Telecom", - "isp" : "Korea Telecom", - "organization" : "Korea Telecom" - } - }, - { - "::60.64.0.0/106" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp.", - "isp" : "Softbank BB Corp", - "organization" : "Softbank BB Corp" - } - }, - { - "::60.128.0.0/107" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp.", - "isp" : "Softbank BB Corp", - "organization" : "Softbank BB Corp" - } - }, - { - "::62.7.87.0/120" : { - "organization" : "Fibrestream Limited" - } - }, - { - "::62.51.0.0/112" : { - "isp" : "America Online" - } - }, - { - "::62.67.0.0/112" : { - "isp" : "Level 3 Communications", - "organization" : "Level 3 Communications" - } - }, - { - "::62.75.0.0/115" : { - "isp" : "OTEGLOBE", - "organization" : "OTEGLOBE" - } - }, - { - "::62.82.202.128/125" : { - "isp" : "Urania Telecom" - } - }, - { - "::62.91.95.0/120" : { - "isp" : "Bisping & Bisping, ISP and Citycarrier", - "organization" : "Bisping & Bisping, ISP and Citycarrier" - } - }, - { - "::62.91.96.0/119" : { - "isp" : "Bisping & Bisping, ISP and Citycarrier", - "organization" : "Bisping & Bisping, ISP and Citycarrier" - } - }, - { - "::62.91.98.0/120" : { - "isp" : "Bisping & Bisping, ISP and Citycarrier", - "organization" : "Bisping & Bisping, ISP and Citycarrier" - } - }, - { - "::62.107.0.0/112" : { - "isp" : "Telia Stofa A/S", - "organization" : "Telia Stofa A/S" - } - }, - { - "::62.178.0.0/111" : { - "isp" : "UPC Austria GmbH", - "organization" : "UPC Austria GmbH" - } - }, - { - "::62.254.186.96/123" : { - "isp" : "East Renfrewshire Council Barrhead Library", - "organization" : "East Renfrewshire Council Barrhead Library" - } - }, - { - "::63.147.126.103/128" : { - "isp" : "SuperDuper Telecommunications Network" - } - }, - { - "::64.17.248.0/118" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.252.0/119" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.254.0/121" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.254.128/122" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.254.192/124" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.254.208/125" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.254.216/125" : { - "autonomous_system_number" : 33224, - "isp" : "Towerstream I", - "organization" : "Karlin Peebles LLP" - } - }, - { - "::64.17.254.224/123" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.17.255.0/120" : { - "autonomous_system_number" : 33224 - } - }, - { - "::64.124.194.51/128" : { - "organization" : "Kontera" - } - }, - { - "::64.143.224.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::64.143.229.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::64.143.246.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::64.213.52.32/123" : { - "organization" : "Beyond Next" - } - }, - { - "::65.23.96.0/116" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.112.0/117" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.120.0/120" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.0/121" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.128/122" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.192/124" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.208/125" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.216/126" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.220/128" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.221/128" : { - "autonomous_system_number" : 11456, - "isp" : "Nuvox Communications", - "organization" : "Endodontic Associates Of Savannah" - } - }, - { - "::65.23.121.222/127" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.121.224/123" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.122.0/119" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.23.124.0/118" : { - "autonomous_system_number" : 11456 - } - }, - { - "::65.115.241.0/120" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.115.242.0/119" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.115.244.0/118" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.115.248.0/117" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.0.0/119" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.2.0/120" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.0/122" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.64/124" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.80/127" : { - "autonomous_system_number" : 209, - "isp" : "Century Link", - "organization" : "ATMI" - } - }, - { - "::65.116.3.82/128" : { - "autonomous_system_number" : 209, - "isp" : "Century Link", - "organization" : "ATMI" - } - }, - { - "::65.116.3.83/128" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.84/126" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.88/125" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.96/123" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.3.128/121" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.4.0/118" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.8.0/118" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.116.12.0/119" : { - "autonomous_system_number" : 209 - } - }, - { - "::65.128.0.0/107" : { - "autonomous_system_number" : 209, - "autonomous_system_organization" : "Qwest Communications Company, LLC", - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::65.192.0.0/107" : { - "autonomous_system_number" : 701, - "autonomous_system_organization" : "MCI Communications Services, Inc. d/b/a Verizon Business", - "isp" : "Verizon Business", - "organization" : "Verizon Business" - } - }, - { - "::66.62.204.0/120" : { - "organization" : "Johnson Services, LLC." - } - }, - { - "::66.92.0.0/113" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.128.0/115" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.160.0/116" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.176.0/118" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.180.0/120" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.181.0/121" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.181.128/122" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.181.192/123" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.181.224/124" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.181.240/124" : { - "autonomous_system_number" : 23504, - "isp" : "Speakeasy", - "organization" : "Vikco Insurance" - } - }, - { - "::66.92.182.0/119" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.184.0/117" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.92.192.0/114" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.93.0.0/112" : { - "autonomous_system_number" : 23504 - } - }, - { - "::66.249.146.128/121" : { - "isp" : "Digicel Antigua" - } - }, - { - "::66.249.156.136/125" : { - "isp" : "Digicel Antigua" - } - }, - { - "::67.43.149.0/120" : { - "autonomous_system_number" : 35908 - } - }, - { - "::67.43.150.0/119" : { - "autonomous_system_number" : 35908 - } - }, - { - "::67.43.152.0/118" : { - "autonomous_system_number" : 35908 - } - }, - { - "::67.43.156.0/122" : { - "autonomous_system_number" : 35908, - "isp" : "Loud Packet", - "organization" : "zudoarichikito_" - } - }, - { - "::67.43.156.64/122" : { - "autonomous_system_number" : 35908, - "isp" : "Loud Packet", - "organization" : "ania_jab?o?ska" - } - }, - { - "::67.43.156.128/122" : { - "autonomous_system_number" : 35908, - "isp" : "Loud Packet", - "organization" : "halle_moore" - } - }, - { - "::67.43.156.192/122" : { - "autonomous_system_number" : 35908, - "isp" : "Loud Packet", - "organization" : "park_tai" - } - }, - { - "::67.43.157.0/120" : { - "autonomous_system_number" : 35908 - } - }, - { - "::67.43.158.0/119" : { - "autonomous_system_number" : 35908 - } - }, - { - "::67.160.0.0/107" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::68.2.0.0/111" : { - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::68.4.0.0/110" : { - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::68.9.0.0/112" : { - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::68.12.0.0/112" : { - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::68.20.32.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.23.176.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.32.0.0/107" : { - "organization" : "Comcast Cable" - } - }, - { - "::68.64.64.0/115" : { - "isp" : "WCS", - "organization" : "WCS" - } - }, - { - "::68.65.192.0/114" : { - "isp" : "Colostore.com", - "organization" : "Colostore.com" - } - }, - { - "::68.67.80.0/116" : { - "isp" : "Wave Broadband", - "organization" : "Wave Broadband" - } - }, - { - "::68.72.8.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.73.96.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.75.32.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.78.64.0/116" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.82.0.0/112" : { - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::68.94.48.0/116" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.94.64.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.97.0.0/112" : { - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::68.102.0.0/111" : { - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::68.136.0.0/110" : { - "isp" : "UUNET Technologies", - "organization" : "UUNET Technologies" - } - }, - { - "::68.144.0.0/109" : { - "isp" : "Shaw Communications", - "organization" : "Shaw Communications" - } - }, - { - "::68.168.80.0/116" : { - "isp" : "Dbs International", - "organization" : "Dbs International" - } - }, - { - "::68.168.96.0/116" : { - "isp" : "Codero", - "organization" : "Codero" - } - }, - { - "::68.171.80.0/116" : { - "isp" : "Tri-County Telephone", - "organization" : "Tri-County Telephone" - } - }, - { - "::68.171.192.0/116" : { - "isp" : "Datacenter101", - "organization" : "Datacenter101" - } - }, - { - "::68.176.0.0/112" : { - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::68.177.0.0/114" : { - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::68.177.64.0/117" : { - "isp" : "CenturyLink", - "organization" : "Cibola Internet Services" - } - }, - { - "::68.177.72.0/117" : { - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::68.177.80.0/116" : { - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::68.177.96.0/115" : { - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::68.177.128.0/113" : { - "isp" : "CenturyLink", - "organization" : "CenturyLink" - } - }, - { - "::68.181.0.0/112" : { - "isp" : "University of Southern California", - "organization" : "University of Southern California" - } - }, - { - "::68.182.0.0/112" : { - "isp" : "Telus Communications", - "organization" : "Telus Communications" - } - }, - { - "::68.183.0.0/112" : { - "isp" : "DSL Extreme", - "organization" : "DSL Extreme" - } - }, - { - "::68.232.64.0/115" : { - "isp" : "Yak Communications (Canada) Corp", - "organization" : "Yak Communications (Canada) Corp" - } - }, - { - "::68.232.96.0/116" : { - "isp" : "Channel Clarity Holdings, LLC", - "organization" : "Channel Clarity Holdings, LLC" - } - }, - { - "::68.240.0.0/109" : { - "isp" : "Sprint PCS", - "organization" : "Sprint PCS" - } - }, - { - "::68.253.48.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::68.255.96.0/116" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::69.218.35.0/120" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.36.0/118" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.40.0/117" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.48.0/116" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.64.0/114" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.128.0/114" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.192.0/115" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.224.0/116" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.240.0/117" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.248.0/119" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.250.0/120" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.251.0/124" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.251.16/124" : { - "autonomous_system_number" : 7132, - "isp" : "AT&T Internet Services", - "organization" : "r x optical" - } - }, - { - "::69.218.251.32/123" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.251.64/122" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.251.128/121" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.218.252.0/118" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.219.0.0/114" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.219.64.0/116" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.219.80.0/118" : { - "autonomous_system_number" : 7132 - } - }, - { - "::69.220.29.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::69.220.30.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::70.46.21.0/120" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.22.0/119" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.24.0/117" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.32.0/115" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.64.0/115" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.96.0/116" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.112.0/117" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.120.0/119" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.122.0/120" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.0/121" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.128/124" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.144/128" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.145/128" : { - "autonomous_system_number" : 11456, - "isp" : "FDN Communications", - "organization" : "DSLAM WAN Allocation" - } - }, - { - "::70.46.123.146/127" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.148/126" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.152/125" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.160/123" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.123.192/122" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.124.0/118" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.46.128.0/113" : { - "autonomous_system_number" : 11456 - } - }, - { - "::70.160.0.0/107" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::70.192.0.0/107" : { - "autonomous_system_number" : 6167, - "autonomous_system_organization" : "Cellco Partnership DBA Verizon Wireless", - "isp" : "Verizon Wireless", - "organization" : "Verizon Wireless" - } - }, - { - "::70.224.0.0/107" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.96.0.0/107" : { - "autonomous_system_number" : 701, - "autonomous_system_organization" : "MCI Communications Services, Inc. d/b/a Verizon Business", - "isp" : "Verizon Business", - "organization" : "Verizon Business" - } - }, - { - "::71.128.0.0/110" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.132.0.0/111" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.0.0/114" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.64.0/117" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.72.0/118" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.76.0/119" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.78.0/119" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.80.0/116" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.96.0/115" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.134.128.0/113" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.135.0.0/112" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.136.0.0/111" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.0.0/114" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.64.0/115" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.96.0/117" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.104.0/121" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.104.128/122" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.104.192/123" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.104.224/124" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.104.240/125" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "Leung Yin Lam Dba" - } - }, - { - "::71.138.104.248/125" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.105.0/120" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.106.0/119" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.108.0/118" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.112.0/116" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.138.128.0/113" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.139.0.0/112" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.0.0/113" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.128.0/114" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.192.0/118" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.196.0/119" : { - "autonomous_system_number" : 7132, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.198.0/119" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.200.0/117" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.208.0/116" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.140.224.0/115" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.141.0.0/112" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.142.0.0/111" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::71.144.0.0/108" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::72.96.0.0/107" : { - "autonomous_system_number" : 6167, - "autonomous_system_organization" : "Cellco Partnership DBA Verizon Wireless", - "isp" : "Verizon Wireless", - "organization" : "Verizon Wireless" - } - }, - { - "::72.192.0.0/108" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.208.0.0/110" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.212.0.0/111" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.0.0/118" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.4.0/119" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.0/122" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.64/125" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.72/128" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Loud Packet", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.73/128" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.74/127" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.76/126" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.80/124" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.96/123" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.6.128/121" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.7.0/120" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.8.0/117" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.16.0/116" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.32.0/115" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.64.0/114" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.214.128.0/113" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.215.0.0/112" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::72.216.0.0/109" : { - "autonomous_system_number" : 22773, - "autonomous_system_organization" : "Cox Communications Inc.", - "isp" : "Cox Communications", - "organization" : "Cox Communications" - } - }, - { - "::73.0.0.0/104" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::74.0.32.0/115" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.64.0/114" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.128.0/117" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.136.0/120" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.0/121" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.128/122" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.192/127" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.194/128" : { - "autonomous_system_number" : 18566, - "isp" : "Covad Communications", - "organization" : "Covad Communications" - } - }, - { - "::74.0.137.195/128" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.196/126" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.200/125" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.208/124" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.137.224/123" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.138.0/119" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.140.0/118" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.144.0/116" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.0.160.0/117" : { - "autonomous_system_number" : 18566 - } - }, - { - "::74.39.211.192/122" : { - "organization" : "WHEC TV" - } - }, - { - "::74.160.0.0/107" : { - "autonomous_system_number" : 6389, - "autonomous_system_organization" : "BellSouth.net Inc.", - "isp" : "BellSouth.net", - "organization" : "BellSouth.net" - } - }, - { - "::74.217.148.71/128" : { - "organization" : "INTERNAP" - } - }, - { - "::74.224.0.0/107" : { - "autonomous_system_number" : 6389, - "autonomous_system_organization" : "BellSouth.net Inc.", - "isp" : "BellSouth.net", - "organization" : "BellSouth.net" - } - }, - { - "::75.0.0.0/107" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::75.55.67.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.55.69.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.55.79.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.55.97.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.55.98.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.55.102.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.55.110.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.62.54.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.62.59.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.62.61.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.62.63.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::75.77.40.0/117" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.48.0/116" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.64.0/114" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.128.0/114" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.192.0/116" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.208.0/119" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.210.0/120" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.211.0/121" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.211.128/122" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.211.192/124" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.211.208/126" : { - "autonomous_system_number" : 11456, - "isp" : "Nuvox Communications", - "organization" : "Child Care Assoc. Of Brevard County (pinewood)" - } - }, - { - "::75.77.211.212/126" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.211.216/125" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.211.224/123" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.212.0/118" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.216.0/117" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.77.224.0/115" : { - "autonomous_system_number" : 11456 - } - }, - { - "::75.192.0.0/106" : { - "autonomous_system_number" : 6167, - "autonomous_system_organization" : "Cellco Partnership DBA Verizon Wireless", - "isp" : "Verizon Wireless", - "organization" : "Verizon Wireless" - } - }, - { - "::76.96.0.0/107" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::76.128.0.0/107" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::76.224.0.0/107" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc.", - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::77.74.230.0/119" : { - "organization" : "Cutuknet" - } - }, - { - "::77.128.0.0/107" : { - "autonomous_system_number" : 15557, - "autonomous_system_organization" : "Societe Francaise du Radiotelephone S.A", - "isp" : "SFR", - "organization" : "SFR" - } - }, - { - "::78.26.64.0/118" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.68.0/119" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.70.0/121" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.70.128/122" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.70.192/124" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.70.208/125" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl", - "isp" : "ASDASD srl a socio unico", - "organization" : "Marino Dalla Gasperina" - } - }, - { - "::78.26.70.216/125" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.70.224/123" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.71.0/120" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.72.0/117" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.80.0/116" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.96.0/116" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.112.0/117" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.120.0/118" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.26.124.0/119" : { - "autonomous_system_number" : 28929, - "autonomous_system_organization" : "ASDASD srl" - } - }, - { - "::78.138.56.64/125" : { - "organization" : "Clever Technology and Systems Nigeria" - } - }, - { - "::78.192.0.0/106" : { - "isp" : "Free SAS", - "organization" : "Free SAS" - } - }, - { - "::79.101.50.0/120" : { - "organization" : "SokoWireless.NET!" - } - }, - { - "::79.172.210.0/120" : { - "isp" : "SzerverPlex Ltd." - } - }, - { - "::79.192.0.0/106" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::80.64.0.0/116" : { - "isp" : "TDC Oy Finland", - "organization" : "TDC Oy Finland" - } - }, - { - "::80.64.192.0/116" : { - "isp" : "DataGuard AS", - "organization" : "DataGuard AS" - } - }, - { - "::80.65.32.0/116" : { - "isp" : "WRonline GbR", - "organization" : "WRonline GbR" - } - }, - { - "::80.66.160.0/116" : { - "isp" : "University of Jyvaskyla, Commercial Internet Servi", - "organization" : "University of Jyvaskyla, Commercial Internet Servi" - } - }, - { - "::80.71.224.0/116" : { - "isp" : "Your Voice S.p.A.", - "organization" : "Your Voice S.p.A." - } - }, - { - "::80.75.224.0/116" : { - "isp" : "Teleport Consulting & Systemmanagement GmbH", - "organization" : "Teleport Consulting & Systemmanagement GmbH" - } - }, - { - "::80.81.192.0/116" : { - "isp" : "DE-CIX Management GmbH", - "organization" : "DE-CIX Management GmbH" - } - }, - { - "::80.128.0.0/107" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::81.2.69.160/125" : { - "isp" : "Andrews & Arnold Ltd", - "organization" : "STONEHOUSE office network" - } - }, - { - "::81.128.0.0/107" : { - "autonomous_system_number" : 2856, - "autonomous_system_organization" : "BTnet UK Regional network", - "isp" : "BT", - "organization" : "BT" - } - }, - { - "::81.178.22.65/128" : { - "organization" : "Caravan Guard Ltd" - } - }, - { - "::82.0.0.0/107" : { - "isp" : "Virgin Media", - "organization" : "Virgin Media" - } - }, - { - "::82.99.0.0/116" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.16.0/120" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.17.0/122" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.17.64/123" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.17.96/123" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only", - "isp" : "IP-Only Telecommunication Networks AB", - "organization" : "Effectiv Solutions" - } - }, - { - "::82.99.17.128/121" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.18.0/119" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.20.0/118" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.24.0/117" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.99.32.0/115" : { - "autonomous_system_number" : 12552, - "autonomous_system_organization" : "IP-Only" - } - }, - { - "::82.137.8.0/117" : { - "isp" : "RCS & RDS Mobile" - } - }, - { - "::82.224.0.0/107" : { - "isp" : "Free SAS", - "organization" : "Free SAS" - } - }, - { - "::83.0.0.0/107" : { - "isp" : "Orange Polska Spolka Akcyjna", - "organization" : "Orange Polska Spolka Akcyjna" - } - }, - { - "::83.100.215.128/121" : { - "organization" : "Fibrestream Limited" - } - }, - { - "::83.206.10.0/119" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.12.0/118" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.16.0/116" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.32.0/118" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.36.0/121" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.36.128/122" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.36.192/123" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.36.224/125" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange", - "isp" : "France Telecom", - "organization" : "Transports Routiers De Marchandises" - } - }, - { - "::83.206.36.232/125" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.36.240/124" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.37.0/120" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.38.0/119" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.40.0/117" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.48.0/116" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::83.206.64.0/119" : { - "autonomous_system_number" : 3215, - "autonomous_system_organization" : "France Telecom - Orange" - } - }, - { - "::84.128.0.0/106" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::84.234.48.0/116" : { - "isp" : "Linkservice, Ltd" - } - }, - { - "::85.88.0.0/119" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.2.0/121" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.2.128/122" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.2.192/123" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.2.224/123" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH", - "isp" : "Surfplanet GmbH", - "organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.3.0/120" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.4.0/118" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.8.0/117" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::85.88.16.0/116" : { - "autonomous_system_number" : 33984, - "autonomous_system_organization" : "Surfplanet GmbH" - } - }, - { - "::86.0.0.0/107" : { - "isp" : "Virgin Media", - "organization" : "Virgin Media" - } - }, - { - "::86.105.244.0/118" : { - "organization" : "2K Telecom SRL" - } - }, - { - "::86.128.0.0/106" : { - "isp" : "BT", - "organization" : "BT" - } - }, - { - "::87.128.0.0/106" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::87.229.77.0/120" : { - "isp" : "SzerverPlex Ltd." - } - }, - { - "::88.160.0.0/107" : { - "isp" : "Free SAS", - "organization" : "Free SAS" - } - }, - { - "::89.45.176.0/116" : { - "organization" : "2K Telecom SRL" - } - }, - { - "::89.80.0.0/109" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.88.0.0/110" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.0.0/113" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.128.0/114" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.192.0/116" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.208.0/118" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.212.0/119" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP", - "isp" : "Bouygues Telecom", - "organization" : "Bouygues Telecom" - } - }, - { - "::89.92.214.0/119" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.216.0/117" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.92.224.0/115" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.93.0.0/112" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.94.0.0/111" : { - "autonomous_system_number" : 5410, - "autonomous_system_organization" : "Bouygues Telecom ISP" - } - }, - { - "::89.140.209.0/120" : { - "organization" : "WICO" - } - }, - { - "::89.160.0.0/116" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.16.0/118" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.20.0/122" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.20.64/123" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.20.96/124" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.20.112/125" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB", - "isp" : "Bredband2 AB", - "organization" : "Bevtec" - } - }, - { - "::89.160.20.120/125" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.20.128/121" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.21.0/120" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.22.0/119" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.24.0/117" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.32.0/115" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.160.64.0/114" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB" - } - }, - { - "::89.187.32.0/115" : { - "isp" : "Monitoring, PA" - } - }, - { - "::91.0.0.0/106" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::91.204.152.0/118" : { - "organization" : "X-Com Partners" - } - }, - { - "::91.211.200.0/118" : { - "isp" : "Specialist Ltd." - } - }, - { - "::91.223.175.0/120" : { - "organization" : "DATA-COM Piotr Data" - } - }, - { - "::91.225.116.0/118" : { - "organization" : "RostNet" - } - }, - { - "::91.231.240.0/120" : { - "organization" : "TELL-NET" - } - }, - { - "::91.236.68.0/118" : { - "isp" : "Air-Net Elektronik" - } - }, - { - "::91.238.12.0/118" : { - "isp" : "Linkservice, Ltd" - } - }, - { - "::93.170.6.0/120" : { - "isp" : "VHG" - } - }, - { - "::93.183.128.0/115" : { - "isp" : "ESCOM Ltd." - } - }, - { - "::93.192.0.0/106" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG", - "isp" : "Deutsche Telekom AG", - "organization" : "Deutsche Telekom AG" - } - }, - { - "::94.103.0.0/116" : { - "isp" : "Monitoring, PA" - } - }, - { - "::94.156.200.0/117" : { - "organization" : "Linkplus" - } - }, - { - "::94.199.176.0/119" : { - "isp" : "SzerverPlex Ltd." - } - }, - { - "::94.243.192.0/116" : { - "organization" : "It Region" - } - }, - { - "::95.167.144.0/118" : { - "organization" : "Internet67" - } - }, - { - "::96.128.0.0/106" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::97.0.0.0/106" : { - "autonomous_system_number" : 6167, - "autonomous_system_organization" : "Cellco Partnership DBA Verizon Wireless", - "isp" : "Verizon Wireless", - "organization" : "Verizon Wireless" - } - }, - { - "::97.128.0.0/105" : { - "autonomous_system_number" : 6167, - "autonomous_system_organization" : "Cellco Partnership DBA Verizon Wireless", - "isp" : "Verizon Wireless", - "organization" : "Verizon Wireless" - } - }, - { - "::98.192.0.0/106" : { - "autonomous_system_number" : 7922, - "autonomous_system_organization" : "Comcast Cable Communications, Inc.", - "isp" : "Comcast Cable", - "organization" : "Comcast Cable" - } - }, - { - "::100.43.128.0/120" : { - "isp" : "Firecold_Inc", - "organization" : "Firecold_Inc" - } - }, - { - "::100.43.129.0/122" : { - "isp" : "bernice_ulloa", - "organization" : "bernice_ulloa" - } - }, - { - "::100.43.129.64/123" : { - "isp" : "cheng_shih", - "organization" : "cheng_shih" - } - }, - { - "::100.43.129.96/123" : { - "isp" : "loránd_csapó", - "organization" : "loránd_csapó" - } - }, - { - "::100.43.129.128/124" : { - "isp" : "dewei_feng", - "organization" : "dewei_feng" - } - }, - { - "::100.43.129.144/124" : { - "isp" : "radoslav_ja?ar", - "organization" : "radoslav_ja?ar" - } - }, - { - "::100.43.129.160/124" : { - "isp" : "jakub_henderson", - "organization" : "jakub_henderson" - } - }, - { - "::100.43.129.176/124" : { - "isp" : "elisa_blom", - "organization" : "elisa_blom" - } - }, - { - "::100.43.129.192/125" : { - "isp" : "gertrude_burnham", - "organization" : "gertrude_burnham" - } - }, - { - "::100.43.129.200/125" : { - "isp" : "mariam_lovett", - "organization" : "mariam_lovett" - } - }, - { - "::100.43.129.208/125" : { - "isp" : "nicolas_correia", - "organization" : "nicolas_correia" - } - }, - { - "::100.43.129.224/125" : { - "isp" : "rostislav_sou?ek", - "organization" : "rostislav_sou?ek" - } - }, - { - "::100.43.129.232/125" : { - "isp" : "rinkashijikashikuchi_", - "organization" : "rinkashijikashikuchi_" - } - }, - { - "::100.43.129.240/125" : { - "isp" : "huân_??", - "organization" : "huân_??" - } - }, - { - "::100.43.129.248/125" : { - "isp" : "hooriya_harb", - "organization" : "hooriya_harb" - } - }, - { - "::100.43.130.0/121" : { - "isp" : "koufuu_iwasaki", - "organization" : "koufuu_iwasaki" - } - }, - { - "::100.43.130.128/123" : { - "isp" : "ashley_nuckols", - "organization" : "ashley_nuckols" - } - }, - { - "::100.43.130.160/123" : { - "isp" : "julian_barbosa", - "organization" : "julian_barbosa" - } - }, - { - "::100.43.130.192/123" : { - "isp" : "dora_barker", - "organization" : "dora_barker" - } - }, - { - "::100.43.130.224/123" : { - "isp" : "ema_vörös", - "organization" : "ema_vörös" - } - }, - { - "::100.43.131.0/121" : { - "isp" : "kang_ts'ai", - "organization" : "kang_ts'ai" - } - }, - { - "::100.43.131.128/121" : { - "isp" : "dominik_bognár", - "organization" : "dominik_bognár" - } - }, - { - "::100.43.132.0/121" : { - "isp" : "lahbib_coenen", - "organization" : "lahbib_coenen" - } - }, - { - "::100.43.132.128/124" : { - "isp" : "markus_jones", - "organization" : "markus_jones" - } - }, - { - "::100.43.132.144/124" : { - "isp" : "tình_hàn", - "organization" : "tình_hàn" - } - }, - { - "::100.43.132.160/124" : { - "isp" : "luana_beneventi", - "organization" : "luana_beneventi" - } - }, - { - "::100.43.132.176/124" : { - "isp" : "alec_bigley", - "organization" : "alec_bigley" - } - }, - { - "::100.43.132.192/124" : { - "isp" : "walif_boutros", - "organization" : "walif_boutros" - } - }, - { - "::100.43.132.208/124" : { - "isp" : "freddy_hedlund", - "organization" : "freddy_hedlund" - } - }, - { - "::100.43.132.224/124" : { - "isp" : "bernice_ulloa", - "organization" : "bernice_ulloa" - } - }, - { - "::100.43.132.240/124" : { - "isp" : "frigg_torland", - "organization" : "frigg_torland" - } - }, - { - "::100.43.133.0/122" : { - "isp" : "gergely_csorba", - "organization" : "gergely_csorba" - } - }, - { - "::100.43.133.64/123" : { - "isp" : "aglae_aguilar", - "organization" : "aglae_aguilar" - } - }, - { - "::100.43.133.96/124" : { - "isp" : "jeannine_lambert", - "organization" : "jeannine_lambert" - } - }, - { - "::100.43.133.112/124" : { - "isp" : "sandra_sundström", - "organization" : "sandra_sundström" - } - }, - { - "::100.43.133.128/124" : { - "isp" : "teegan_johnston", - "organization" : "teegan_johnston" - } - }, - { - "::100.43.133.144/124" : { - "isp" : "pinabel_tremblay", - "organization" : "pinabel_tremblay" - } - }, - { - "::100.43.133.160/124" : { - "isp" : "ptolomeo_alcalá", - "organization" : "ptolomeo_alcalá" - } - }, - { - "::100.43.133.176/124" : { - "isp" : "guang_ch'ien", - "organization" : "guang_ch'ien" - } - }, - { - "::100.43.133.192/124" : { - "isp" : "grace_hardess", - "organization" : "grace_hardess" - } - }, - { - "::100.43.133.208/125" : { - "isp" : "walerian_król", - "organization" : "walerian_król" - } - }, - { - "::100.43.133.216/125" : { - "isp" : "walerian_król", - "organization" : "emma_paulsen" - } - }, - { - "::100.43.133.224/125" : { - "isp" : "julia_wulf", - "organization" : "julia_wulf" - } - }, - { - "::100.43.133.232/125" : { - "isp" : "joacim_lindgren", - "organization" : "joacim_lindgren" - } - }, - { - "::100.43.133.248/125" : { - "isp" : "qing_yuan_ho", - "organization" : "qing_yuan_ho" - } - }, - { - "::100.43.134.0/121" : { - "isp" : "ferrau_chicoine", - "organization" : "ferrau_chicoine" - } - }, - { - "::100.43.134.128/124" : { - "isp" : "kenneth_hix", - "organization" : "kenneth_hix" - } - }, - { - "::100.43.134.144/124" : { - "isp" : "lok_lu", - "organization" : "lok_lu" - } - }, - { - "::100.43.134.160/124" : { - "isp" : "martino_marcelo", - "organization" : "martino_marcelo" - } - }, - { - "::100.43.134.176/124" : { - "isp" : "kevin_lucio", - "organization" : "kevin_lucio" - } - }, - { - "::100.43.134.192/124" : { - "isp" : "enza_folliero", - "organization" : "enza_folliero" - } - }, - { - "::100.43.134.208/124" : { - "isp" : "miloslav_severa", - "organization" : "miloslav_severa" - } - }, - { - "::100.43.134.224/124" : { - "isp" : "santana_de_munnik", - "organization" : "santana_de_munnik" - } - }, - { - "::100.43.134.240/124" : { - "isp" : "yasunori_kotani", - "organization" : "yasunori_kotani" - } - }, - { - "::100.43.135.0/122" : { - "isp" : "henry_matthews", - "organization" : "henry_matthews" - } - }, - { - "::100.43.135.64/123" : { - "isp" : "mirikashitakuari_", - "organization" : "mirikashitakuari_" - } - }, - { - "::100.43.135.96/124" : { - "isp" : "billy_watkins", - "organization" : "billy_watkins" - } - }, - { - "::100.43.135.112/124" : { - "isp" : "júlia_azevedo", - "organization" : "júlia_azevedo" - } - }, - { - "::100.43.135.128/124" : { - "isp" : "jun_liao", - "organization" : "jun_liao" - } - }, - { - "::100.43.135.144/124" : { - "isp" : "yi_jie_p'eng", - "organization" : "yi_jie_p'eng" - } - }, - { - "::100.43.135.160/124" : { - "isp" : "gerlac_tijerina", - "organization" : "gerlac_tijerina" - } - }, - { - "::100.43.135.176/124" : { - "isp" : "yuriy_kvarda", - "organization" : "yuriy_kvarda" - } - }, - { - "::100.43.135.192/124" : { - "isp" : "châu_l?u", - "organization" : "châu_l?u" - } - }, - { - "::100.43.135.208/125" : { - "isp" : "christina_downing", - "organization" : "christina_downing" - } - }, - { - "::100.43.135.216/125" : { - "isp" : "christina_downing", - "organization" : "christian_hallen" - } - }, - { - "::100.43.135.224/125" : { - "isp" : "konrad_karlsson", - "organization" : "konrad_karlsson" - } - }, - { - "::100.43.135.232/125" : { - "isp" : "malcolm_isaksson", - "organization" : "malcolm_isaksson" - } - }, - { - "::100.43.135.248/125" : { - "isp" : "fábio_castro", - "organization" : "fábio_castro" - } - }, - { - "::100.43.136.0/124" : { - "isp" : "pío_meléndez", - "organization" : "pío_meléndez" - } - }, - { - "::100.43.136.16/124" : { - "isp" : "max_austerlitz", - "organization" : "max_austerlitz" - } - }, - { - "::100.43.136.32/124" : { - "isp" : "george_sanchez", - "organization" : "george_sanchez" - } - }, - { - "::100.43.136.48/124" : { - "isp" : "ricard_bekken", - "organization" : "ricard_bekken" - } - }, - { - "::100.43.136.64/124" : { - "isp" : "dieter_fisher", - "organization" : "dieter_fisher" - } - }, - { - "::100.43.136.80/124" : { - "isp" : "fiddah_kassis", - "organization" : "fiddah_kassis" - } - }, - { - "::100.43.136.96/124" : { - "isp" : "lahbib_coenen", - "organization" : "lahbib_coenen" - } - }, - { - "::100.43.136.112/125" : { - "isp" : "isa_touma", - "organization" : "isa_touma" - } - }, - { - "::100.43.136.120/125" : { - "isp" : "adam_crouch", - "organization" : "adam_crouch" - } - }, - { - "::100.43.136.128/125" : { - "isp" : "evelyn_dahl", - "organization" : "evelyn_dahl" - } - }, - { - "::100.43.136.144/125" : { - "isp" : "fuse_nordlie", - "organization" : "fuse_nordlie" - } - }, - { - "::100.43.136.152/125" : { - "isp" : "monika_jakobsson", - "organization" : "monika_jakobsson" - } - }, - { - "::100.43.136.160/125" : { - "isp" : "korneliusz_kowalczyk", - "organization" : "korneliusz_kowalczyk" - } - }, - { - "::100.43.136.168/125" : { - "isp" : "li_na_kê", - "organization" : "li_na_kê" - } - }, - { - "::100.43.136.176/125" : { - "isp" : "gustava_monaldo", - "organization" : "gustava_monaldo" - } - }, - { - "::100.43.136.184/125" : { - "isp" : "richard_best", - "organization" : "richard_best" - } - }, - { - "::100.43.136.192/125" : { - "isp" : "dirk_daecher", - "organization" : "dirk_daecher" - } - }, - { - "::100.43.136.200/125" : { - "isp" : "george_davis", - "organization" : "george_davis" - } - }, - { - "::100.43.136.208/125" : { - "isp" : "takitatakikato_", - "organization" : "takitatakikato_" - } - }, - { - "::100.43.136.216/125" : { - "isp" : "vsevolod_artemiev", - "organization" : "vsevolod_artemiev" - } - }, - { - "::100.43.136.224/125" : { - "isp" : "rimomeikashite_", - "organization" : "rimomeikashite_" - } - }, - { - "::100.43.136.240/125" : { - "isp" : "regõ_kultsár", - "organization" : "regõ_kultsár" - } - }, - { - "::100.43.136.248/125" : { - "isp" : "turner_ménard", - "organization" : "turner_ménard" - } - }, - { - "::100.43.137.0/123" : { - "isp" : "henio_zawadzki", - "organization" : "henio_zawadzki" - } - }, - { - "::100.43.137.112/125" : { - "isp" : "zhu_tang", - "organization" : "zhu_tang" - } - }, - { - "::100.43.137.120/125" : { - "isp" : "hakem_asfour", - "organization" : "hakem_asfour" - } - }, - { - "::100.43.137.128/125" : { - "isp" : "michael_herring", - "organization" : "michael_herring" - } - }, - { - "::100.43.137.136/125" : { - "isp" : "valeriya_lazareva", - "organization" : "valeriya_lazareva" - } - }, - { - "::100.43.137.144/125" : { - "isp" : "leila_silva", - "organization" : "leila_silva" - } - }, - { - "::100.43.137.160/125" : { - "isp" : "ignacy_sobczak", - "organization" : "ignacy_sobczak" - } - }, - { - "::100.43.137.168/125" : { - "isp" : "sophie_lacharité", - "organization" : "sophie_lacharité" - } - }, - { - "::100.43.137.176/125" : { - "isp" : "isaac_holmes", - "organization" : "isaac_holmes" - } - }, - { - "::101.0.0.0/118" : { - "isp" : "China Telecom FUJIAN", - "organization" : "China Telecom FUJIAN" - } - }, - { - "::101.0.4.0/118" : { - "isp" : "PT Universal Broadband", - "organization" : "PT Universal Broadband" - } - }, - { - "::101.0.32.0/115" : { - "isp" : "Broadband Pacenet Pvt. Ltd", - "organization" : "Broadband Pacenet Pvt. Ltd" - } - }, - { - "::101.0.64.0/114" : { - "isp" : "Digital Pacific Information Technology", - "organization" : "Digital Pacific Information Technology" - } - }, - { - "::101.0.128.0/113" : { - "isp" : "Savecom International Inc.", - "organization" : "Savecom International Inc." - } - }, - { - "::101.1.4.0/118" : { - "isp" : "Hong Kong Science Park", - "organization" : "Hong Kong Science Park" - } - }, - { - "::101.1.8.0/117" : { - "isp" : "jeonju university", - "organization" : "jeonju university" - } - }, - { - "::101.1.64.0/114" : { - "isp" : "Ehime Catv Co.,ltd.", - "organization" : "Ehime Catv Co.,ltd." - } - }, - { - "::101.1.128.0/113" : { - "isp" : "STNet, Incorporated", - "organization" : "STNet, Incorporated" - } - }, - { - "::101.2.0.0/113" : { - "isp" : "Unitech Wireless", - "organization" : "Unitech Wireless" - } - }, - { - "::101.2.128.0/115" : { - "isp" : "Ehime Catv Co.,ltd.", - "organization" : "Ehime Catv Co.,ltd." - } - }, - { - "::101.2.160.0/117" : { - "isp" : "Chittagong Online Limited.", - "organization" : "Chittagong Online Limited." - } - }, - { - "::101.2.172.0/118" : { - "isp" : "China Telecom FUJIAN", - "organization" : "China Telecom FUJIAN" - } - }, - { - "::101.2.176.0/116" : { - "isp" : "Bharti Airtel Lanka Pvt. Limited", - "organization" : "Bharti Airtel Lanka Pvt. Limited" - } - }, - { - "::101.2.192.0/114" : { - "isp" : "Webcentral.com", - "organization" : "Webcentral.com" - } - }, - { - "::101.3.0.0/116" : { - "isp" : "Global Mobile Corp.", - "organization" : "Globalmobile" - } - }, - { - "::101.3.16.0/116" : { - "isp" : "Global Mobile Corp.", - "organization" : "Global Mobile Corp." - } - }, - { - "::101.3.32.0/115" : { - "isp" : "Global Mobile Corp.", - "organization" : "Global Mobile Corp." - } - }, - { - "::101.3.64.0/114" : { - "isp" : "Global Mobile Corp.", - "organization" : "Global Mobile Corp." - } - }, - { - "::101.3.128.0/113" : { - "isp" : "Global Mobile Corp.", - "organization" : "Global Mobile Corp." - } - }, - { - "::101.4.0.0/112" : { - "isp" : "China Education and Research Network", - "organization" : "China Education and Research Network" - } - }, - { - "::101.5.0.0/112" : { - "isp" : "China Education and Research Network", - "organization" : "Tsinghua University" - } - }, - { - "::101.6.0.0/112" : { - "isp" : "China Education and Research Network", - "organization" : "China Education and Research Network" - } - }, - { - "::101.7.0.0/113" : { - "isp" : "China Education and Research Network", - "organization" : "China Education and Research Network" - } - }, - { - "::101.7.128.0/114" : { - "isp" : "China Education and Research Network", - "organization" : "China Education and Research Network" - } - }, - { - "::101.7.192.0/115" : { - "isp" : "China Education and Research Network", - "organization" : "China Education and Research Network" - } - }, - { - "::101.7.224.0/116" : { - "isp" : "China Education and Research Network", - "organization" : "China Education and Research Network" - } - }, - { - "::101.7.240.0/116" : { - "isp" : "China Education and Research Network", - "organization" : "Shijiazhuang Netdingthing Technology Co.,Ltd" - } - }, - { - "::101.8.0.0/109" : { - "isp" : "Taiwan Mobile Co., Ltd.", - "organization" : "Taiwan Mobile Co., Ltd." - } - }, - { - "::101.16.0.0/108" : { - "isp" : "China Unicom Hebei", - "organization" : "China Unicom Hebei" - } - }, - { - "::101.38.0.0/111" : { - "isp" : "Changping District,Beijing", - "organization" : "Changping District,Beijing" - } - }, - { - "::101.40.0.0/111" : { - "isp" : "Changping District,Beijing", - "organization" : "Changping District,Beijing" - } - }, - { - "::101.44.0.0/110" : { - "isp" : "ChengDu Dr.Peng Telecom & Media Group Industry Co.", - "organization" : "ChengDu Dr.Peng Telecom & Media Group Industry Co." - } - }, - { - "::101.50.0.0/118" : { - "isp" : "PT. Beon Intermedia", - "organization" : "PT. Beon Intermedia" - } - }, - { - "::101.50.16.0/116" : { - "isp" : "PT. Mnet Indonesia", - "organization" : "PT. Mnet Indonesia" - } - }, - { - "::101.51.0.0/112" : { - "isp" : "TOT Public Company Limited", - "organization" : "TOT Public Company Limited" - } - }, - { - "::101.53.64.0/115" : { - "isp" : "INDICLUB", - "organization" : "INDICLUB" - } - }, - { - "::101.55.0.0/113" : { - "isp" : "Korea Data Telecommunication Co., Ltd.", - "organization" : "Korea Data Telecommunication Co., Ltd." - } - }, - { - "::101.56.0.0/109" : { - "isp" : "Reliance Communications", - "organization" : "Reliance Communications" - } - }, - { - "::101.64.0.0/109" : { - "isp" : "UNICOM ZheJiang", - "organization" : "UNICOM ZheJiang" - } - }, - { - "::101.77.0.0/112" : { - "isp" : "Jiangsu Electrical Technology Education Center", - "organization" : "Jiangsu Electrical Technology Education Center" - } - }, - { - "::101.78.8.0/117" : { - "isp" : "Enterprise of Telecommunications Lao", - "organization" : "Enterprise of Telecommunications Lao" - } - }, - { - "::101.78.128.0/113" : { - "isp" : "Wharf T&T Limited", - "organization" : "Wharf T&T Limited" - } - }, - { - "::101.79.0.0/112" : { - "isp" : "HCLC", - "organization" : "HCLC" - } - }, - { - "::101.80.0.0/108" : { - "isp" : "China Telecom SHANGHAI", - "organization" : "China Telecom SHANGHAI" - } - }, - { - "::101.98.0.0/112" : { - "isp" : "CallPlus Services Limited", - "organization" : "CallPlus Services Limited" - } - }, - { - "::101.99.0.0/114" : { - "isp" : "CMC Telecom Infrastructure Company", - "organization" : "CMC Telecom Infrastructure Company" - } - }, - { - "::101.99.128.0/113" : { - "isp" : "Kuentos Communications, Inc.", - "organization" : "Kuentos Communications, Inc." - } - }, - { - "::101.100.0.0/112" : { - "isp" : "Vector Communications Ltd", - "organization" : "Vector Communications Ltd" - } - }, - { - "::101.101.0.0/114" : { - "isp" : "Office des Postes et des Telecomm. de Nouvelle Cal", - "organization" : "Office des Postes et des Telecomm. de Nouvelle Cal" - } - }, - { - "::101.101.112.0/116" : { - "isp" : "China Telecom Guangdong", - "organization" : "China Telecom Guangdong" - } - }, - { - "::101.101.128.0/115" : { - "isp" : "JNDINFO", - "organization" : "JNDINFO" - } - }, - { - "::101.101.160.0/116" : { - "isp" : "JNDINFO", - "organization" : "JND Communication" - } - }, - { - "::101.101.176.0/116" : { - "isp" : "JNDINFO", - "organization" : "JNDINFO" - } - }, - { - "::101.101.192.0/116" : { - "isp" : "JNDINFO", - "organization" : "JND Communication" - } - }, - { - "::101.101.208.0/116" : { - "isp" : "JNDINFO", - "organization" : "JNDINFO" - } - }, - { - "::101.101.224.0/115" : { - "isp" : "JNDINFO", - "organization" : "JNDINFO" - } - }, - { - "::101.102.0.0/114" : { - "isp" : "SANYO Information Technology Solutions Co., Ltd.", - "organization" : "SANYO Information Technology Solutions Co., Ltd." - } - }, - { - "::101.102.64.0/115" : { - "isp" : "China Telecom Guangdong", - "organization" : "China Telecom Guangdong" - } - }, - { - "::101.102.112.0/116" : { - "isp" : "China Telecom Guangdong", - "organization" : "China Telecom Guangdong" - } - }, - { - "::101.102.128.0/113" : { - "isp" : "SOFTBANK TELECOM Corp.", - "organization" : "SOFTBANK TELECOM Corp." - } - }, - { - "::101.103.0.0/112" : { - "isp" : "Telstra Internet", - "organization" : "Telstra Internet" - } - }, - { - "::101.104.0.0/110" : { - "isp" : "Beijing Teletron Telecom Engineering Co., Ltd.", - "organization" : "Beijing Teletron Telecom Engineering Co., Ltd." - } - }, - { - "::101.108.0.0/111" : { - "isp" : "TOT Public Company Limited", - "organization" : "TOT Public Company Limited" - } - }, - { - "::101.110.0.0/114" : { - "isp" : "SOFTBANK TELECOM Corp.", - "organization" : "SOFTBANK TELECOM Corp." - } - }, - { - "::101.110.64.0/115" : { - "isp" : "China Telecom Guangdong", - "organization" : "China Telecom Guangdong" - } - }, - { - "::101.110.128.0/113" : { - "isp" : "NTT", - "organization" : "NTT" - } - }, - { - "::101.111.0.0/112" : { - "isp" : "its communications Inc.", - "organization" : "its communications Inc." - } - }, - { - "::101.112.0.0/109" : { - "isp" : "Vodafone Australia", - "organization" : "Vodafone Australia" - } - }, - { - "::101.120.0.0/110" : { - "isp" : "Beijing Bosheng Technology Co., Ltd.", - "organization" : "Beijing Bosheng Technology Co., Ltd." - } - }, - { - "::101.124.0.0/111" : { - "isp" : "KNET Techonlogy (BeiJing) Co.,Ltd.", - "organization" : "KNET Techonlogy (BeiJing) Co.,Ltd." - } - }, - { - "::101.126.0.0/112" : { - "isp" : "Beijing Bitone United Networks Technology Service", - "organization" : "Beijing Bitone United Networks Technology Service" - } - }, - { - "::101.127.0.0/112" : { - "isp" : "Renjiao International Technology Corporation Ltd", - "organization" : "Renjiao International Technology Corporation Ltd" - } - }, - { - "::101.128.32.0/115" : { - "isp" : "China Telecom Guangdong", - "organization" : "China Telecom Guangdong" - } - }, - { - "::101.128.64.0/114" : { - "isp" : "PT. Cyberindo Aditama", - "organization" : "PT. Cyberindo Aditama" - } - }, - { - "::101.128.128.0/113" : { - "isp" : "Internet Initiative Japan Inc.", - "organization" : "Internet Initiative Japan Inc." - } - }, - { - "::101.129.0.0/112" : { - "isp" : "China Central Television", - "organization" : "China Central Television" - } - }, - { - "::101.130.0.0/111" : { - "isp" : "Shanghai Yixuan network technology CO.,LTD", - "organization" : "Shanghai Yixuan network technology CO.,LTD" - } - }, - { - "::101.132.0.0/110" : { - "isp" : "BeiJing Kuandaitong Telecom Technology Co.,Ltd", - "organization" : "BeiJing Kuandaitong Telecom Technology Co.,Ltd" - } - }, - { - "::101.136.0.0/111" : { - "isp" : "Asia Pacific On-Line Service Inc.", - "organization" : "Asia Pacific On-Line Service Inc." - } - }, - { - "::101.138.0.0/112" : { - "isp" : "Asia Pacific On-Line Service Inc.", - "organization" : "Asia Pacific Onlie Service Inc." - } - }, - { - "::101.139.0.0/112" : { - "isp" : "Asia Pacific On-Line Service Inc.", - "organization" : "Asia Pacific On-Line Service Inc." - } - }, - { - "::101.140.0.0/110" : { - "isp" : "K-Opticom Corporation", - "organization" : "K-Opticom Corporation" - } - }, - { - "::101.144.0.0/108" : { - "isp" : "China TieTong", - "organization" : "China TieTong" - } - }, - { - "::101.160.0.0/107" : { - "isp" : "Telstra Internet", - "organization" : "Telstra Internet" - } - }, - { - "::101.192.0.0/110" : { - "isp" : "BeiJing NBLLNET Co.,Ltd", - "organization" : "BeiJing NBLLNET Co.,Ltd" - } - }, - { - "::101.196.0.0/112" : { - "isp" : "Beijing Yuexintong Information Technology Company", - "organization" : "Shanghai Xindong Network Co,.Ltd." - } - }, - { - "::101.197.0.0/112" : { - "isp" : "Beijing Yuexintong Information Technology Company", - "organization" : "Beijing Yuexintong Information Technology Company" - } - }, - { - "::101.198.0.0/111" : { - "isp" : "Beijing Yuexintong Information Technology Company", - "organization" : "Beijing Yuexintong Information Technology Company" - } - }, - { - "::101.200.0.0/111" : { - "isp" : "KNET Techonlogy (BeiJing) Co.,Ltd.", - "organization" : "KNET Techonlogy (BeiJing) Co.,Ltd." - } - }, - { - "::101.202.0.0/112" : { - "isp" : "Dreamline Co.", - "organization" : "Dreamline Co." - } - }, - { - "::101.203.0.0/113" : { - "isp" : "eAccess Ltd.", - "organization" : "eAccess Ltd." - } - }, - { - "::101.203.128.0/115" : { - "isp" : "China Telecom Guangdong", - "organization" : "China Telecom Guangdong" - } - }, - { - "::101.203.168.0/118" : { - "isp" : "Universitas Negeri Yogyakarta", - "organization" : "Universitas Negeri Yogyakarta" - } - }, - { - "::101.203.192.0/114" : { - "isp" : "Bit-isle", - "organization" : "Bit-isle" - } - }, - { - "::101.204.0.0/110" : { - "isp" : "UNICOM Sichuan", - "organization" : "UNICOM Sichuan" - } - }, - { - "::101.208.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel gprs customer Delhi" - } - }, - { - "::101.210.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel gprs customer Kolkata" - } - }, - { - "::101.212.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel gprs customer Chennai" - } - }, - { - "::101.214.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel gprs customer Hyderabad" - } - }, - { - "::101.216.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel gprs customer Delhi" - } - }, - { - "::101.218.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel GPRS Customer East" - } - }, - { - "::101.220.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel GPRS Customer West" - } - }, - { - "::101.222.0.0/111" : { - "isp" : "Aircel Ltd.", - "organization" : "Aircel GPRS Customer South" - } - }, - { - "::101.224.0.0/109" : { - "isp" : "China Telecom SHANGHAI", - "organization" : "China Telecom SHANGHAI" - } - }, - { - "::101.234.72.0/118" : { - "isp" : "Sliced Tech Holdings Unit Trust", - "organization" : "Sliced Tech Holdings Unit Trust" - } - }, - { - "::101.235.0.0/115" : { - "isp" : "C&M Communication Co.,Ltd.", - "organization" : "C&M Communication Co.,Ltd." - } - }, - { - "::101.235.48.0/116" : { - "isp" : "C&M Communication Co.,Ltd.", - "organization" : "C&M Communication Co.,Ltd." - } - }, - { - "::101.235.64.0/115" : { - "isp" : "C&M Communication Co.,Ltd.", - "organization" : "C&M Communication Co.,Ltd." - } - }, - { - "::101.235.96.0/116" : { - "isp" : "C&M Communication Co.,Ltd.", - "organization" : "C&M Communication Co.,Ltd." - } - }, - { - "::101.235.176.0/116" : { - "isp" : "C&M Communication Co.,Ltd.", - "organization" : "C&M Communication Co.,Ltd." - } - }, - { - "::101.240.0.0/110" : { - "isp" : "Beijing Gehua Catv Network Co., Ltd.", - "organization" : "Beijing Gehua Catv Network Co., Ltd." - } - }, - { - "::101.255.0.0/112" : { - "isp" : "PT Remala Abadi", - "organization" : "PT Remala Abadi" - } - }, - { - "::103.1.108.0/118" : { - "isp" : "Simtronic Technologies Pty Ltd", - "organization" : "Simtronic Technologies Pty Ltd" - } - }, - { - "::103.1.124.0/118" : { - "isp" : "Tata Indicom", - "organization" : "Tata Indicom" - } - }, - { - "::103.1.128.0/118" : { - "isp" : "Fiserv India", - "organization" : "Fiserv India" - } - }, - { - "::103.1.136.0/118" : { - "isp" : "MobileOne", - "organization" : "MobileOne" - } - }, - { - "::103.1.144.0/120" : { - "isp" : "U Mobile Sdn Bhd", - "organization" : "U Mobile Sdn Bhd" - } - }, - { - "::103.1.146.0/120" : { - "isp" : "U Mobile Sdn Bhd", - "organization" : "U Mobile Sdn Bhd" - } - }, - { - "::103.1.152.0/118" : { - "isp" : "Hostemo Technology Sdn Bhd", - "organization" : "Hostemo Technology Sdn Bhd" - } - }, - { - "::103.1.164.0/118" : { - "isp" : "Total Access Communication PLC", - "organization" : "Total Access Communication PLC" - } - }, - { - "::103.1.172.0/118" : { - "isp" : "Godaddy.com", - "organization" : "Godaddy.com" - } - }, - { - "::103.1.180.0/118" : { - "isp" : "Digicel Pacific Ltd", - "organization" : "Digicel Pacific Ltd" - } - }, - { - "::103.1.184.0/118" : { - "isp" : "Mammoth Media Pty Ltd", - "organization" : "Mammoth Media Pty Ltd" - } - }, - { - "::103.1.188.0/118" : { - "isp" : "Beagle Internet Pty Ltd", - "organization" : "Beagle Internet Pty Ltd" - } - }, - { - "::103.6.100.0/118" : { - "isp" : "KINX", - "organization" : "KINX" - } - }, - { - "::103.9.32.0/118" : { - "isp" : "AMWAYKOREA", - "organization" : "AMWAYKOREA" - } - }, - { - "::103.10.4.0/118" : { - "isp" : "ASUSTek COMPUTER INC.", - "organization" : "ASUSTek COMPUTER INC." - } - }, - { - "::103.10.32.0/118" : { - "isp" : "The Cavalry", - "organization" : "The Cavalry" - } - }, - { - "::103.10.44.0/118" : { - "isp" : "Elementary IT & Communications Ltd", - "organization" : "Elementary IT & Communications Ltd" - } - }, - { - "::103.10.52.0/118" : { - "isp" : "Drik ICT Ltd", - "organization" : "Drik ICT Ltd" - } - }, - { - "::103.10.64.0/118" : { - "isp" : "Three Indonesia", - "organization" : "Three Indonesia" - } - }, - { - "::103.10.76.0/118" : { - "isp" : "Augere Wireless Broadband Bangladesh Limited", - "organization" : "Augere Wireless Broadband Bangladesh Limited" - } - }, - { - "::103.10.84.0/118" : { - "isp" : "Elink-space (Beijing) Technology Co,. Ltd '", - "organization" : "Elink-space (Beijing) Technology Co,. Ltd '" - } - }, - { - "::103.10.96.0/118" : { - "isp" : "Neuviz (PT. Piranti Prestasi Informasi)", - "organization" : "Neuviz (PT. Piranti Prestasi Informasi)" - } - }, - { - "::103.10.104.0/118" : { - "isp" : "Bogor Agricultural University", - "organization" : "Bogor Agricultural University" - } - }, - { - "::103.10.120.0/118" : { - "isp" : "PT Sumber Data Indonesia", - "organization" : "PT Sumber Data Indonesia" - } - }, - { - "::103.10.132.0/118" : { - "isp" : "Vainavi Industries Ltd.", - "organization" : "Vainavi Industries Ltd." - } - }, - { - "::103.10.144.0/120" : { - "isp" : "Universitas Muhammadiyah Malang", - "organization" : "Universitas Muhammadiyah Malang" - } - }, - { - "::103.10.152.0/118" : { - "isp" : "Meralco Avenue", - "organization" : "Meralco Avenue" - } - }, - { - "::103.10.169.0/120" : { - "isp" : "Universitas Riau", - "organization" : "Universitas Riau" - } - }, - { - "::103.10.172.0/118" : { - "isp" : "Wavecom Wireless Ltd", - "organization" : "Wavecom Wireless Ltd" - } - }, - { - "::103.10.176.0/118" : { - "isp" : "Liberty Broadcasting Network Inc.", - "organization" : "Liberty Broadcasting Network Inc." - } - }, - { - "::103.10.196.0/120" : { - "isp" : "Hostemo Technology Sdn Bhd", - "organization" : "Hostemo Technology Sdn Bhd" - } - }, - { - "::103.10.198.0/120" : { - "isp" : "Hostemo Technology Sdn Bhd", - "organization" : "Hostemo Technology Sdn Bhd" - } - }, - { - "::103.10.208.0/118" : { - "isp" : "Meghbela Cable & Broadband Services (P) Ltd", - "organization" : "Meghbela Cable & Broadband Services (P) Ltd" - } - }, - { - "::103.10.224.0/118" : { - "isp" : "Indusind Media and Communications Ltd.", - "organization" : "Indusind Media and Communications Ltd." - } - }, - { - "::103.10.236.0/118" : { - "isp" : "Goldfield Industrial Building", - "organization" : "Goldfield Industrial Building" - } - }, - { - "::103.10.248.0/118" : { - "isp" : "Andheri East", - "organization" : "Andheri East" - } - }, - { - "::103.11.28.0/118" : { - "isp" : "PT Sumber Data Indonesia", - "organization" : "PT Sumber Data Indonesia" - } - }, - { - "::103.11.52.0/118" : { - "isp" : "RackCentral Pty Ltd", - "organization" : "RackCentral Pty Ltd" - } - }, - { - "::103.11.124.0/118" : { - "isp" : "Unleash Computers Ltd", - "organization" : "Unleash Computers Ltd" - } - }, - { - "::103.11.152.0/118" : { - "isp" : "Web Werks India Pvt.", - "organization" : "Web Werks India Pvt." - } - }, - { - "::103.11.172.0/118" : { - "isp" : "Joint stock Commercial Bank for Foreign Trade of V", - "organization" : "Joint stock Commercial Bank for Foreign Trade of V" - } - }, - { - "::103.11.192.0/118" : { - "isp" : "MCS Com Co Ltd", - "organization" : "MCS Com Co Ltd" - } - }, - { - "::103.11.204.0/118" : { - "isp" : "VentraIP Group (Australia) Pty Ltd", - "organization" : "VentraIP Group (Australia) Pty Ltd" - } - }, - { - "::103.11.228.1/128" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.2/127" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.4/126" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.8/125" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.16/124" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.32/123" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.64/122" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.228.128/121" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.229.0/120" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.230.0/119" : { - "isp" : "i-System Technology Limited", - "organization" : "i-System Technology Limited" - } - }, - { - "::103.11.244.0/118" : { - "isp" : "Langham Place Office Tower", - "organization" : "Langham Place Office Tower" - } - }, - { - "::103.23.84.0/118" : { - "isp" : "C&M Communication Co.,Ltd.", - "organization" : "C&M Communication Co.,Ltd." - } - }, - { - "::103.23.132.0/118" : { - "organization" : "Digi" - } - }, - { - "::103.28.60.0/118" : { - "isp" : "Cmb Taegu Dongbu Broadcast", - "organization" : "Cmb Taegu Dongbu Broadcast" - } - }, - { - "::103.246.248.0/120" : { - "organization" : "QuickWeb Hosting Solutions" - } - }, - { - "::104.64.0.0/106" : { - "autonomous_system_number" : 35994, - "autonomous_system_organization" : "Akamai Technologies, Inc.", - "isp" : "Akamai Technologies", - "organization" : "Akamai Technologies" - } - }, - { - "::105.110.0.0/115" : { - "isp" : "Fawri wilaya Batna", - "organization" : "Fawri wilaya Batna" - } - }, - { - "::105.111.0.0/113" : { - "isp" : "Anis wilaya oran", - "organization" : "Anis wilaya oran" - } - }, - { - "::105.111.192.0/114" : { - "isp" : "Anis wilaya Bechar", - "organization" : "Anis wilaya Bechar" - } - }, - { - "::105.112.0.0/108" : { - "isp" : "Airtel Networks Limited", - "organization" : "Airtel Networks Limited" - } - }, - { - "::105.128.0.0/108" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom 3G" - } - }, - { - "::105.144.0.0/109" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom 3G" - } - }, - { - "::105.152.0.0/111" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom 3G" - } - }, - { - "::105.154.0.0/112" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom 3G" - } - }, - { - "::105.155.0.0/112" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::105.156.0.0/111" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::105.158.0.0/112" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::105.159.0.0/112" : { - "isp" : "Maroc Telecom", - "organization" : "IAM" - } - }, - { - "::105.160.0.0/109" : { - "isp" : "Safaricom Limited", - "organization" : "Safaricom Limited" - } - }, - { - "::105.168.0.0/109" : { - "isp" : "Unitel SA", - "organization" : "Unitel SA" - } - }, - { - "::105.176.0.0/111" : { - "isp" : "MTN Business Solutions (Pty) Ltd", - "organization" : "MTN Business Solutions (Pty) Ltd" - } - }, - { - "::105.180.0.0/110" : { - "isp" : "Mobinil 3G", - "organization" : "Mobinil 3G" - } - }, - { - "::105.184.0.0/110" : { - "isp" : "Telkom Internet", - "organization" : "Telkom Internet" - } - }, - { - "::105.192.0.0/110" : { - "isp" : "Mobinil 3G", - "organization" : "Mobinil 3G" - } - }, - { - "::105.196.0.0/110" : { - "isp" : "Airtel Networks Nigeria Ltd", - "organization" : "Airtel Networks Nigeria Ltd" - } - }, - { - "::105.200.0.0/110" : { - "isp" : "Etisalat Misr", - "organization" : "Etisalat" - } - }, - { - "::105.204.0.0/111" : { - "isp" : "Etisalat Misr", - "organization" : "Etisalat" - } - }, - { - "::105.206.0.0/112" : { - "isp" : "Etisalat Misr", - "organization" : "Etisalat" - } - }, - { - "::105.207.0.0/113" : { - "isp" : "Etisalat Misr", - "organization" : "Etisalat" - } - }, - { - "::105.207.128.0/113" : { - "isp" : "Etisalat Misr", - "organization" : "Etisalat Misr" - } - }, - { - "::105.208.0.0/108" : { - "isp" : "MTN SA", - "organization" : "MTN SA" - } - }, - { - "::105.224.0.0/110" : { - "isp" : "Telkom Internet", - "organization" : "Telkom Internet" - } - }, - { - "::105.228.0.0/111" : { - "isp" : "Telkom Internet", - "organization" : "Telkom Internet" - } - }, - { - "::105.230.0.0/112" : { - "isp" : "Airtel Broadband", - "organization" : "Airtel Broadband" - } - }, - { - "::105.231.0.0/113" : { - "isp" : "Second segment of Broadband IPs", - "organization" : "Second segment of Broadband IPs" - } - }, - { - "::105.231.128.0/114" : { - "isp" : "Third segment of Airtel Broadband IPs", - "organization" : "Third segment of Airtel Broadband IPs" - } - }, - { - "::105.231.192.0/114" : { - "isp" : "Reserved for Internet APN Allocation", - "organization" : "Reserved for Internet APN Allocation" - } - }, - { - "::105.232.0.0/113" : { - "isp" : "MTC - Mobile Telecommunications, Ltd.", - "organization" : "MTC Netman" - } - }, - { - "::105.232.128.0/113" : { - "isp" : "MTC - Mobile Telecommunications, Ltd.", - "organization" : "MTC - Mobile Telecommunications, Ltd." - } - }, - { - "::105.233.0.0/114" : { - "isp" : "Cybersmart", - "organization" : "Cybersmart-ADSL-DBN ADSL IP numbers assigned to Db" - } - }, - { - "::105.233.64.0/114" : { - "isp" : "Cybersmart", - "organization" : "Cybersmart-ADSL-JHB ADSL IP for Northern regios" - } - }, - { - "::105.233.128.0/113" : { - "isp" : "Cybersmart", - "organization" : "Cybersmart" - } - }, - { - "::105.234.0.0/113" : { - "isp" : "Airtel Malawi GPRS subscribers", - "organization" : "Airtel Malawi GPRS subscribers" - } - }, - { - "::105.234.128.0/113" : { - "isp" : "Airtel Malawi network", - "organization" : "Airtel Malawi network" - } - }, - { - "::105.235.0.0/113" : { - "isp" : "MTN Cote d'Ivoire S.A", - "organization" : "MTN Cote d'Ivoire S.A" - } - }, - { - "::105.235.128.0/116" : { - "isp" : "Wataniya Telecom Algerie", - "organization" : "Wataniya Telecom Algerie" - } - }, - { - "::105.235.144.0/116" : { - "isp" : "Emtel Ltd", - "organization" : "Emtel Ltd" - } - }, - { - "::105.235.160.0/116" : { - "isp" : "Bytes Connect, a Division of Bytes Technology Grou", - "organization" : "Bytes Connect, a Division of Bytes Technology Grou" - } - }, - { - "::105.235.176.0/116" : { - "isp" : "Telecel Faso", - "organization" : "Telecel Faso" - } - }, - { - "::105.235.192.0/116" : { - "isp" : "Icsl Network", - "organization" : "Icsl Network" - } - }, - { - "::105.235.216.0/117" : { - "isp" : "Abari Communications Mozambique Lda", - "organization" : "Abari Communications Mozambique Lda" - } - }, - { - "::105.235.224.0/116" : { - "isp" : "Guineanet", - "organization" : "Guineanet" - } - }, - { - "::105.235.240.0/116" : { - "isp" : "Orange Botswana", - "organization" : "Orange Botswana" - } - }, - { - "::105.236.0.0/111" : { - "isp" : "MTN Business Solutions (Pty) Ltd", - "organization" : "MTN Business Solutions (Pty) Ltd" - } - }, - { - "::105.238.0.0/111" : { - "isp" : "Zain Sudan", - "organization" : "Zain Sudan" - } - }, - { - "::105.240.0.0/108" : { - "isp" : "Vodacom", - "organization" : "Vodacom" - } - }, - { - "::106.186.80.0/117" : { - "isp" : "GLBB" - } - }, - { - "::108.66.24.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.68.60.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.68.92.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.69.8.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.69.180.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.70.56.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.74.80.0/116" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.75.232.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.80.92.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.83.64.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.85.4.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.90.88.0/117" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.95.60.0/118" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.96.0.0/107" : { - "isp" : "Sprint PCS", - "organization" : "Sprint PCS" - } - }, - { - "::108.144.0.0/108" : { - "isp" : "AT&T Wireless", - "organization" : "AT&T Wireless" - } - }, - { - "::108.160.48.0/116" : { - "isp" : "Telebeep", - "organization" : "Telebeep" - } - }, - { - "::108.160.64.0/116" : { - "isp" : "Sebastian", - "organization" : "Sebastian" - } - }, - { - "::108.160.80.0/116" : { - "isp" : "Quadro Communications Co-Operative", - "organization" : "Quadro Communications Co-Operative" - } - }, - { - "::108.163.64.0/114" : { - "isp" : "Region 14 Education Service Center", - "organization" : "Region 14 Education Service Center" - } - }, - { - "::108.163.192.0/114" : { - "isp" : "SingleHop", - "organization" : "SingleHop" - } - }, - { - "::108.164.0.0/112" : { - "isp" : "The Cosmopolitan of Las Vegas", - "organization" : "The Cosmopolitan of Las Vegas" - } - }, - { - "::108.165.0.0/112" : { - "isp" : "Ace Data Centers", - "organization" : "Ace Data Centers" - } - }, - { - "::108.170.192.0/114" : { - "isp" : "Google", - "organization" : "Google" - } - }, - { - "::108.171.32.0/115" : { - "isp" : "Smart Solutions IT", - "organization" : "Smart Solutions IT" - } - }, - { - "::108.171.72.0/117" : { - "isp" : "Cogeco Cable", - "organization" : "Cogeco Cable" - } - }, - { - "::108.172.0.0/111" : { - "isp" : "Telus Communications", - "organization" : "Telus Communications" - } - }, - { - "::108.174.80.0/116" : { - "isp" : "Volusion", - "organization" : "Volusion" - } - }, - { - "::108.180.0.0/111" : { - "isp" : "Telus Communications", - "organization" : "Telus Communications" - } - }, - { - "::108.182.0.0/111" : { - "isp" : "Time Warner Cable", - "organization" : "Time Warner Cable" - } - }, - { - "::108.184.0.0/111" : { - "isp" : "Time Warner Cable", - "organization" : "Time Warner Cable" - } - }, - { - "::108.187.0.0/112" : { - "isp" : "SpeedVM Network Group LLC", - "organization" : "SpeedVM Network Group LLC" - } - }, - { - "::108.190.0.0/111" : { - "isp" : "Bright House Networks", - "organization" : "Bright House Networks" - } - }, - { - "::108.192.0.0/107" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.224.0.0/110" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.228.0.0/112" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.229.0.0/113" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T" - } - }, - { - "::108.229.128.0/113" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.230.0.0/111" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.232.0.0/109" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.240.0.0/110" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.244.0.0/113" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.244.128.0/115" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.244.160.0/116" : { - "isp" : "AT&T Internet Services", - "organization" : "Lisle IDC - Silver Lining" - } - }, - { - "::108.244.176.0/116" : { - "isp" : "AT&T Internet Services", - "organization" : "Atlanta - Silver Lining" - } - }, - { - "::108.244.192.0/114" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.245.0.0/112" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.246.0.0/111" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::108.248.0.0/109" : { - "isp" : "AT&T Internet Services", - "organization" : "AT&T Internet Services" - } - }, - { - "::109.104.250.0/121" : { - "organization" : "Navigadsl srl" - } - }, - { - "::109.105.192.0/115" : { - "organization" : "Cutuknet" - } - }, - { - "::109.235.55.192/123" : { - "organization" : "Encryption Limited" - } - }, - { - "::110.8.112.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.9.0.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.9.96.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.10.16.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.11.64.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.11.176.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.11.240.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.12.80.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.12.128.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.13.112.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.13.128.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.14.48.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.14.160.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.14.192.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.15.192.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.15.224.0/116" : { - "isp" : "SK Broadband Co Ltd", - "organization" : "SK Broadband Co Ltd" - } - }, - { - "::110.35.0.0/116" : { - "isp" : "CMB Daejeon Broadcasting Co,.Ltd", - "organization" : "CMB Daejeon Broadcasting Co,.Ltd" - } - }, - { - "::110.35.53.0/120" : { - "isp" : "CMB Daejeon Broadcasting Co,.Ltd", - "organization" : "CMB Daejeon Broadcasting Co,.Ltd" - } - }, - { - "::110.35.54.0/119" : { - "isp" : "CMB Daejeon Broadcasting Co,.Ltd", - "organization" : "CMB Daejeon Broadcasting Co,.Ltd" - } - }, - { - "::110.35.56.0/120" : { - "isp" : "CMB Daejeon Broadcasting Co,.Ltd", - "organization" : "CMB Daejeon Broadcasting Co,.Ltd" - } - }, - { - "::111.0.0.0/106" : { - "autonomous_system_number" : 9808, - "autonomous_system_organization" : "Guangdong Mobile Communication Co.Ltd.", - "isp" : "Guangdong Mobile", - "organization" : "Guangdong Mobile" - } - }, - { - "::111.91.128.0/116" : { - "isp" : "NHN", - "organization" : "NHN" - } - }, - { - "::111.91.144.0/118" : { - "isp" : "Korea Cable TV Kwangju Broadcast", - "organization" : "Korea Cable TV Kwangju Broadcast" - } - }, - { - "::111.91.160.0/116" : { - "isp" : "Korea Cable TV Kwangju Broadcast", - "organization" : "Korea Cable TV Kwangju Broadcast" - } - }, - { - "::112.0.0.0/106" : { - "autonomous_system_number" : 9808, - "autonomous_system_organization" : "Guangdong Mobile Communication Co.Ltd.", - "isp" : "Guangdong Mobile", - "organization" : "Guangdong Mobile" - } - }, - { - "::112.72.160.0/116" : { - "isp" : "Hyundai Communications & Network", - "organization" : "Hyundai Communications & Network" - } - }, - { - "::112.72.192.0/116" : { - "isp" : "Hyundai Communications & Network", - "organization" : "Hyundai Communications & Network" - } - }, - { - "::112.72.224.0/115" : { - "isp" : "Hyundai Communications & Network", - "organization" : "Hyundai Communications & Network" - } - }, - { - "::112.76.0.0/111" : { - "isp" : "Dacom-pubnetplus", - "organization" : "Dacom-pubnetplus" - } - }, - { - "::112.121.0.0/115" : { - "isp" : "Tbroad Abc Broadcasting Co.,ltd.", - "organization" : "Tbroad Abc Broadcasting Co.,ltd." - } - }, - { - "::113.30.0.0/116" : { - "isp" : "TBROAD Dongdaemun cable networks,Inc.", - "organization" : "TBROAD Dongdaemun cable networks,Inc." - } - }, - { - "::113.30.32.0/116" : { - "isp" : "TBROAD Dongdaemun cable networks,Inc.", - "organization" : "TBROAD Dongdaemun cable networks,Inc." - } - }, - { - "::113.30.64.0/116" : { - "isp" : "HCLC", - "organization" : "HCLC" - } - }, - { - "::113.30.96.0/116" : { - "isp" : "HCLC", - "organization" : "HCLC" - } - }, - { - "::113.30.121.0/120" : { - "isp" : "HCLC", - "organization" : "HCLC" - } - }, - { - "::113.30.122.0/119" : { - "isp" : "HCLC", - "organization" : "HCLC" - } - }, - { - "::113.30.124.0/120" : { - "isp" : "HCLC", - "organization" : "HCLC" - } - }, - { - "::113.61.16.0/116" : { - "isp" : "Korea Cable TV Jeonboog Broadcast", - "organization" : "Korea Cable TV Jeonboog Broadcast" - } - }, - { - "::113.130.66.0/119" : { - "isp" : "ONSE Telecom", - "organization" : "ONSE Telecom" - } - }, - { - "::113.130.68.0/119" : { - "isp" : "ONSE Telecom", - "organization" : "ONSE Telecom" - } - }, - { - "::113.130.128.0/116" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::113.130.208.0/116" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::113.131.16.0/116" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::113.131.192.0/116" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::114.23.240.0/120" : { - "isp" : "Swiift Internet Limited" - } - }, - { - "::114.30.48.0/116" : { - "isp" : "korea cable pohang broadcasting", - "organization" : "korea cable pohang broadcasting" - } - }, - { - "::114.30.128.0/113" : { - "isp" : "HO Nam Cable TV co.,LTD", - "organization" : "HO Nam Cable TV co.,LTD" - } - }, - { - "::114.31.48.0/116" : { - "isp" : "HyosungITX", - "organization" : "HyosungITX" - } - }, - { - "::114.108.144.0/117" : { - "isp" : "Lg Dacom Kidc", - "organization" : "Lg Dacom Kidc" - } - }, - { - "::114.108.160.0/116" : { - "isp" : "Lg Dacom Kidc", - "organization" : "Lg Dacom Kidc" - } - }, - { - "::114.108.176.0/118" : { - "isp" : "Lg Dacom Kidc", - "organization" : "Lg Dacom Kidc" - } - }, - { - "::114.141.224.0/116" : { - "isp" : "Piranha Systems", - "organization" : "Piranha Systems" - } - }, - { - "::114.179.160.0/115" : { - "isp" : "GLBB" - } - }, - { - "::115.68.16.0/116" : { - "isp" : "Smileserv", - "organization" : "Smileserv" - } - }, - { - "::115.71.0.0/116" : { - "isp" : "G&j, Ltd.", - "organization" : "G&j, Ltd." - } - }, - { - "::115.144.16.0/116" : { - "isp" : "HAIonNet", - "organization" : "HAIonNet" - } - }, - { - "::115.144.224.0/116" : { - "isp" : "HAIonNet", - "organization" : "HAIonNet" - } - }, - { - "::116.67.0.0/113" : { - "isp" : "National Computing & Information Agency", - "organization" : "National Computing & Information Agency" - } - }, - { - "::116.68.32.0/115" : { - "isp" : "Korea Nazarene University", - "organization" : "Korea Nazarene University" - } - }, - { - "::116.90.216.0/117" : { - "isp" : "Catholic University of DAEGU", - "organization" : "Catholic University of DAEGU" - } - }, - { - "::116.200.16.0/116" : { - "isp" : "Korea Telecom Freetel Corp.", - "organization" : "Korea Telecom Freetel Corp." - } - }, - { - "::116.201.0.0/116" : { - "isp" : "Korea Telecom Freetel Corp.", - "organization" : "Korea Telecom Freetel Corp." - } - }, - { - "::116.201.240.0/116" : { - "isp" : "Korea Telecom Freetel Corp.", - "organization" : "Korea Telecom Freetel Corp." - } - }, - { - "::117.58.132.0/118" : { - "isp" : "TCN Daegu Broadcasting Co., Ltd", - "organization" : "TCN Daegu Broadcasting Co., Ltd" - } - }, - { - "::117.58.136.0/117" : { - "isp" : "TCN Daegu Broadcasting Co., Ltd", - "organization" : "TCN Daegu Broadcasting Co., Ltd" - } - }, - { - "::117.128.0.0/106" : { - "autonomous_system_number" : 9808, - "autonomous_system_organization" : "Guangdong Mobile Communication Co.Ltd.", - "isp" : "Guangdong Mobile", - "organization" : "Guangdong Mobile" - } - }, - { - "::118.67.128.0/115" : { - "isp" : "NURILINK", - "organization" : "NURILINK" - } - }, - { - "::118.67.160.0/116" : { - "isp" : "NURILINK", - "organization" : "NURILINK" - } - }, - { - "::118.67.176.0/116" : { - "isp" : "NURILINK", - "organization" : "SRUN" - } - }, - { - "::118.91.96.0/115" : { - "isp" : "Tbroad Gangseo", - "organization" : "Tbroad Gangseo" - } - }, - { - "::118.234.112.0/116" : { - "isp" : "Korea Telecom Freetel Corp.", - "organization" : "Korea Telecom Freetel Corp." - } - }, - { - "::119.30.136.0/118" : { - "isp" : "IP4 Networks, Inc.", - "organization" : "IP4 Networks, Inc." - } - }, - { - "::119.63.224.0/116" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::119.77.108.0/118" : { - "isp" : "Korea Cable TV Kwangju Broadcast", - "organization" : "Korea Cable TV Kwangju Broadcast" - } - }, - { - "::119.235.240.0/117" : { - "isp" : "Cmb Taegu Dongbu Broadcast", - "organization" : "Cmb Taegu Dongbu Broadcast" - } - }, - { - "::120.73.0.0/112" : { - "isp" : "KUMHO", - "organization" : "KUMHO" - } - }, - { - "::120.136.6.0/120" : { - "organization" : "Maxum Data Ltd" - } - }, - { - "::120.192.0.0/106" : { - "autonomous_system_number" : 9808, - "autonomous_system_organization" : "Guangdong Mobile Communication Co.Ltd.", - "isp" : "Guangdong Mobile", - "organization" : "Guangdong Mobile" - } - }, - { - "::121.0.128.0/118" : { - "isp" : "Duruan", - "organization" : "Duruan" - } - }, - { - "::121.0.144.0/118" : { - "isp" : "Duruan", - "organization" : "Duruan" - } - }, - { - "::121.254.224.0/116" : { - "isp" : "Lg Dacom Kidc", - "organization" : "Lg Dacom Kidc" - } - }, - { - "::122.128.64.0/117" : { - "isp" : "CMB Kwnagju Broadcasting", - "organization" : "CMB Kwnagju Broadcasting" - } - }, - { - "::122.128.72.0/118" : { - "isp" : "CMB Kwnagju Broadcasting", - "organization" : "CMB Kwnagju Broadcasting" - } - }, - { - "::122.252.192.0/115" : { - "isp" : "CMB", - "organization" : "CMB" - } - }, - { - "::123.98.192.0/115" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::123.254.64.0/115" : { - "isp" : "Cj-hellovision", - "organization" : "Cj-hellovision" - } - }, - { - "::124.0.34.0/120" : { - "isp" : "SK Telecom", - "organization" : "SK Telecom" - } - }, - { - "::124.0.203.0/120" : { - "isp" : "SK Telecom", - "organization" : "SK Telecom" - } - }, - { - "::124.198.0.0/116" : { - "isp" : "HAIonNet", - "organization" : "HAIonNet" - } - }, - { - "::124.198.112.0/116" : { - "isp" : "HAIonNet", - "organization" : "HAIonNet" - } - }, - { - "::126.0.0.0/104" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp.", - "isp" : "Softbank BB Corp", - "organization" : "Softbank BB Corp" - } - }, - { - "::129.90.0.0/112" : { - "isp" : "Intevep S.A.", - "organization" : "Intevep S.A." - } - }, - { - "::131.178.0.0/112" : { - "isp" : "Instituto Tecnológico y de Estudios Superiores de", - "organization" : "Instituto Tecnológico y de Estudios Superiores de" - } - }, - { - "::132.0.0.0/106" : { - "autonomous_system_number" : 721, - "autonomous_system_organization" : "DoD Network Information Center" - } - }, - { - "::132.247.0.0/112" : { - "isp" : "Universidad Nacional Autonoma de Mexico", - "organization" : "Universidad Nacional Autonoma de Mexico" - } - }, - { - "::132.248.0.0/112" : { - "isp" : "Universidad Nacional Autonoma de Mexico", - "organization" : "Universidad Nacional Autonoma de Mexico" - } - }, - { - "::132.254.0.0/112" : { - "isp" : "Instituto Tecnológico y de Estudios Superiores de", - "organization" : "Instituto Tecnológico y de Estudios Superiores de" - } - }, - { - "::134.90.248.0/117" : { - "organization" : "Geny SRL" - } - }, - { - "::139.82.0.0/112" : { - "isp" : "Pontificia Universidade Catolica do Rio de Janeiro", - "organization" : "Pontificia Universidade Catolica do Rio de Janeiro" - } - }, - { - "::140.148.0.0/112" : { - "isp" : "Universidad de Las Americas-Puebla", - "organization" : "Universidad de Las Americas-Puebla" - } - }, - { - "::140.191.0.0/112" : { - "isp" : "United Nations Development Programme", - "organization" : "United Nations Development Programme" - } - }, - { - "::141.208.0.0/112" : { - "isp" : "TeliaSonera Finland Oyj", - "organization" : "TeliaSonera Finland Oyj" - } - }, - { - "::142.217.208.0/118" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.212.0/119" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.214.0/120" : { - "autonomous_system_number" : 35911, - "isp" : "Telebec", - "organization" : "LINO Solutions Internet de Télébec" - } - }, - { - "::142.217.215.0/120" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.216.0/117" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.224.0/117" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.232.0/118" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.236.0/119" : { - "autonomous_system_number" : 35911 - } - }, - { - "::142.217.238.0/120" : { - "autonomous_system_number" : 35911 - } - }, - { - "::143.54.0.0/112" : { - "isp" : "Universidade Federal do Rio Grande do Sul", - "organization" : "Universidade Federal do Rio Grande do Sul" - } - }, - { - "::143.106.0.0/112" : { - "isp" : "Universidade Estadual de Campinas - UNICAMP", - "organization" : "Universidade Estadual de Campinas - UNICAMP" - } - }, - { - "::143.107.0.0/112" : { - "isp" : "Universidade de Sao Paulo", - "organization" : "Universidade de Sao Paulo" - } - }, - { - "::143.108.0.0/112" : { - "isp" : "Fundacao de Amparo a Pesquisa do Estado de Sao Pau", - "organization" : "Fundacao de Amparo a Pesquisa do Estado de Sao Pau" - } - }, - { - "::144.22.0.0/111" : { - "isp" : "Oracle Corporation", - "organization" : "Oracle Corporation" - } - }, - { - "::145.15.0.0/112" : { - "isp" : "Nederlandse Spoorwegen PI block", - "organization" : "Nederlandse Spoorwegen PI block" - } - }, - { - "::145.128.0.0/106" : { - "autonomous_system_number" : 1103, - "autonomous_system_organization" : "SURFnet, The Netherlands", - "isp" : "SURFnet, The Netherlands", - "organization" : "SURFnet, The Netherlands" - } - }, - { - "::146.83.0.0/112" : { - "isp" : "Red Universitaria Nacional", - "organization" : "Red Universitaria Nacional" - } - }, - { - "::146.134.0.0/112" : { - "isp" : "Laboratorio Nacional de Computacao Cientifica", - "organization" : "Laboratorio Nacional de Computacao Cientifica" - } - }, - { - "::146.155.0.0/112" : { - "isp" : "SECICO", - "organization" : "SECICO" - } - }, - { - "::146.164.0.0/112" : { - "isp" : "Federal University of Rio de Janeiro", - "organization" : "Federal University of Rio de Janeiro" - } - }, - { - "::146.255.0.0/121" : { - "organization" : "Surebroadband Ltd" - } - }, - { - "::147.65.0.0/112" : { - "isp" : "Instituto de Matematica Pura e Aplicada", - "organization" : "Instituto de Matematica Pura e Aplicada" - } - }, - { - "::147.194.0.0/112" : { - "isp" : "Comwave" - } - }, - { - "::148.0.0.0/112" : { - "isp" : "Claro Dominican Republic", - "organization" : "Claro Dominican Republic" - } - }, - { - "::148.101.0.0/112" : { - "isp" : "Claro Dominican Republic", - "organization" : "Claro Dominican Republic" - } - }, - { - "::148.201.0.0/112" : { - "isp" : "Iteso, A.c.", - "organization" : "Iteso, A.c." - } - }, - { - "::148.202.0.0/112" : { - "isp" : "Universidad de Guadalajara", - "organization" : "Universidad de Guadalajara" - } - }, - { - "::148.203.0.0/112" : { - "isp" : "Volkswagen de Mexico, S.A. de C.V.", - "organization" : "Volkswagen de Mexico, S.A. de C.V." - } - }, - { - "::148.204.0.0/112" : { - "isp" : "Instituto Politecnico Nacional", - "organization" : "Instituto Politecnico Nacional" - } - }, - { - "::148.205.0.0/112" : { - "isp" : "Instituto Tecnologico Autonomo de Mexico(ITAM)", - "organization" : "Instituto Tecnologico Autonomo de Mexico(ITAM)" - } - }, - { - "::148.206.0.0/112" : { - "isp" : "Universidad Autonoma Metropolitana", - "organization" : "Universidad Autonoma Metropolitana" - } - }, - { - "::148.207.0.0/120" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.1.0/120" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "CONACYT" - } - }, - { - "::148.207.2.0/119" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.4.0/118" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.8.0/117" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.16.0/116" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.32.0/115" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.64.0/114" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.207.128.0/113" : { - "isp" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)", - "organization" : "Consejo Nacional de Ciencia y Tenologia (CONACYT)" - } - }, - { - "::148.208.0.0/112" : { - "isp" : "Secretaria de Educacion e Investigacion Tecnologic", - "organization" : "Secretaria de Educacion e Investigacion Tecnologic" - } - }, - { - "::148.209.0.0/112" : { - "isp" : "Universidad Autonoma de Yucatan", - "organization" : "Universidad Autonoma de Yucatan" - } - }, - { - "::148.210.0.0/112" : { - "isp" : "Universidad Autonoma De Ciudad Juarez", - "organization" : "Universidad Autonoma De Ciudad Juarez" - } - }, - { - "::148.211.0.0/112" : { - "isp" : "Universidad Autonoma De Aguascalientes", - "organization" : "Universidad Autonoma De Aguascalientes" - } - }, - { - "::148.212.0.0/112" : { - "isp" : "Universidad Autonoma de Coahuila", - "organization" : "Universidad Autonoma de Coahuila" - } - }, - { - "::148.213.0.0/112" : { - "isp" : "Universidad de Colima", - "organization" : "Universidad de Colima" - } - }, - { - "::148.214.0.0/112" : { - "isp" : "Universidad de Guanajuato", - "organization" : "Universidad de Guanajuato" - } - }, - { - "::148.215.0.0/112" : { - "isp" : "Universidad Autonoma del Estado de Mexico", - "organization" : "Universidad Autonoma del Estado de Mexico" - } - }, - { - "::148.216.0.0/112" : { - "isp" : "Universidad Michoacana de San Nicolas de Hidalgo", - "organization" : "Universidad Michoacana de San Nicolas de Hidalgo" - } - }, - { - "::148.217.0.0/112" : { - "isp" : "Universidad Autonoma De Zacatecas", - "organization" : "Universidad Autonoma De Zacatecas" - } - }, - { - "::148.218.0.0/112" : { - "isp" : "Universidad Autonoma Del Estado De Morelos", - "organization" : "Universidad Autonoma Del Estado De Morelos" - } - }, - { - "::148.219.0.0/112" : { - "isp" : "Universidad Autonoma de Tlaxcala", - "organization" : "Universidad Autonoma de Tlaxcala" - } - }, - { - "::148.220.0.0/112" : { - "isp" : "Universidad Autonoma de Queretaro", - "organization" : "Universidad Autonoma de Queretaro" - } - }, - { - "::148.221.0.0/112" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.222.0.0/112" : { - "isp" : "Universidad Autonóma de Chiapas", - "organization" : "Universidad Autonóma de Chiapas" - } - }, - { - "::148.223.0.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Grupo Domos" - } - }, - { - "::148.223.0.16/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.0.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.0.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.0.128/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Informacion Medica de Desarrollo - INFOMED" - } - }, - { - "::148.223.0.192/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.1.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Banorte (Clase C)" - } - }, - { - "::148.223.2.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.4.0/118" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.8.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.10.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.11.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.11.16/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Editora de Mar" - } - }, - { - "::148.223.11.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.11.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.11.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.12.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.13.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Gestión de direccionamiento UniNet" - } - }, - { - "::148.223.14.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.16.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "UNL" - } - }, - { - "::148.223.16.16/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.16.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.16.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.16.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Multimedios Estrella de Oro" - } - }, - { - "::148.223.17.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.18.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.20.0/118" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.24.0/117" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.32.0/115" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.64.0/115" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.96.0/117" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.104.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.0/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.32/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.48/125" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.56/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.60/127" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.62/128" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Inea Parroquia De Nuestro Senor De La Misericordia" - } - }, - { - "::148.223.106.63/128" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.128/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.192/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Kappa Imagenes Digitales" - } - }, - { - "::148.223.106.208/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.106.224/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.107.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.108.0/118" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.112.0/116" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.128.0/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.128.64/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Clara Alfaro" - } - }, - { - "::148.223.128.80/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "INAOE" - } - }, - { - "::148.223.128.96/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.128.128/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.128.160/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Conexiones Worldspan Tuxtla" - } - }, - { - "::148.223.128.192/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.129.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "TapNet" - } - }, - { - "::148.223.130.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.132.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.132.16/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.132.20/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Cia Periodistica Del Sol De Puebla" - } - }, - { - "::148.223.132.24/125" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.132.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.132.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.132.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.133.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.134.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.135.0/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.135.32/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Sergio Perez Bocanegra" - } - }, - { - "::148.223.135.48/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.135.64/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.135.96/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "CCYTT" - } - }, - { - "::148.223.135.112/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.135.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.136.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Cliente Tnet (Clase C)" - } - }, - { - "::148.223.137.0/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Conexiones Worldspan" - } - }, - { - "::148.223.137.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.137.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.137.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.138.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.139.0/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Enrique Estrada" - } - }, - { - "::148.223.139.32/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Ciber Café La Academia" - } - }, - { - "::148.223.139.48/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.139.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.139.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.140.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.141.0/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.141.128/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.141.192/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.141.224/125" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.141.232/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Centro De Capacitacion En Computacion De San Andre" - } - }, - { - "::148.223.141.236/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.141.240/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.16/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Karlinka" - } - }, - { - "::148.223.142.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.64/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.96/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Centro Profesional de Computación del Golfo" - } - }, - { - "::148.223.142.112/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.128/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.144/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Eduardo Guerrero" - } - }, - { - "::148.223.142.160/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.142.192/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.143.0/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.143.64/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Univ. Tec.Tabasco" - } - }, - { - "::148.223.143.80/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.143.96/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.143.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.144.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.145.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Integri" - } - }, - { - "::148.223.145.16/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.145.32/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.145.48/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Coremi" - } - }, - { - "::148.223.145.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.145.128/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Felipe Batista" - } - }, - { - "::148.223.145.144/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Hector Ruben Fdez" - } - }, - { - "::148.223.145.160/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.145.192/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.146.0/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.146.64/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Marco Antonio Guevara" - } - }, - { - "::148.223.146.80/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.146.96/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.146.128/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.146.192/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Browse Puebla" - } - }, - { - "::148.223.146.208/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.146.224/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.147.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.148.0/119" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.150.0/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Conexiones Worldspan" - } - }, - { - "::148.223.150.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.150.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.150.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.151.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.152.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.153.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.153.16/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.153.20/126" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Bursametrica Management" - } - }, - { - "::148.223.153.24/125" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.153.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.153.64/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.153.128/121" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.154.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.0/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.32/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Mexicana de Importaciones y Exportaciones" - } - }, - { - "::148.223.155.48/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.64/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.80/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Electronica Steren" - } - }, - { - "::148.223.155.96/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.128/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.160/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.155.176/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Agencia Aduanera de America" - } - }, - { - "::148.223.155.192/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.156.0/118" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "CONECEL" - } - }, - { - "::148.223.160.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Centro de Computo Juce" - } - }, - { - "::148.223.161.0/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.161.64/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.161.80/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Canacar" - } - }, - { - "::148.223.161.96/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.161.128/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.161.192/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Trainingware" - } - }, - { - "::148.223.161.208/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.161.224/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Multiservicios Promocionales" - } - }, - { - "::148.223.162.0/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Hipotecaria Nacional" - } - }, - { - "::148.223.162.16/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Empaques de Carton Uninet" - } - }, - { - "::148.223.162.32/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Conexiones Worldspan" - } - }, - { - "::148.223.162.64/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "SNTE" - } - }, - { - "::148.223.162.80/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.162.96/123" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.162.128/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Agencia de Comunicaion Interactiva" - } - }, - { - "::148.223.162.144/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.162.160/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "IFE Tlalpan" - } - }, - { - "::148.223.162.176/124" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.162.192/122" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.163.0/120" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.164.0/118" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.168.0/117" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.176.0/116" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.223.192.0/114" : { - "isp" : "Uninet S.A. de C.V.", - "organization" : "Uninet S.A. de C.V." - } - }, - { - "::148.240.0.0/119" : { - "isp" : "Axtel Infraestructura-core", - "organization" : "Axtel Infraestructura-core" - } - }, - { - "::148.243.0.0/112" : { - "isp" : "Axtel, S.A.B. de C.V.", - "organization" : "Axtel, S.A.B. de C.V." - } - }, - { - "::148.245.0.0/120" : { - "isp" : "Informacion Al Dia Y Comput SA", - "organization" : "Informacion Al Dia Y Comput SA" - } - }, - { - "::149.5.110.0/119" : { - "organization" : "Fibrestream Limited" - } - }, - { - "::154.50.194.0/119" : { - "organization" : "Wireless Connect Ltd." - } - }, - { - "::168.70.0.0/112" : { - "organization" : "HKTNET" - } - }, - { - "::169.158.0.0/112" : { - "isp" : "Centro Nacional de Intercambio Automatizado", - "organization" : "Centro Nacional de Intercambio Automatizado" - } - }, - { - "::171.25.212.0/118" : { - "organization" : "F-KOM" - } - }, - { - "::172.128.0.0/106" : { - "autonomous_system_number" : 1668, - "autonomous_system_organization" : "AOL Transit Data Network", - "isp" : "America Online", - "organization" : "America Online" - } - }, - { - "::173.227.197.0/120" : { - "organization" : "Circle 1 Network" - } - }, - { - "::174.36.207.24/128" : { - "organization" : "Goversoft" - } - }, - { - "::174.127.224.0/115" : { - "isp" : "Condointernet.net" - } - }, - { - "::174.192.0.0/106" : { - "autonomous_system_number" : 6167, - "autonomous_system_organization" : "Cellco Partnership DBA Verizon Wireless", - "isp" : "Verizon Wireless", - "organization" : "Verizon Wireless" - } - }, - { - "::176.128.0.0/106" : { - "autonomous_system_number" : 12844, - "autonomous_system_organization" : "Bouygues Telecom", - "isp" : "Bouygues Telecom", - "organization" : "Bouygues Telecom" - } - }, - { - "::177.0.0.0/110" : { - "isp" : "Oi Internet", - "organization" : "Oi Internet" - } - }, - { - "::177.10.0.0/116" : { - "isp" : "Regency Comunicações Ltda", - "organization" : "Regency Comunicações Ltda" - } - }, - { - "::177.10.24.0/117" : { - "isp" : "M.A. Informática Ltda.", - "organization" : "M.A. Informática Ltda." - } - }, - { - "::177.10.48.0/117" : { - "isp" : "Banner Serviços de Telecom e Internet Ltda.", - "organization" : "Banner Serviços de Telecom e Internet Ltda." - } - }, - { - "::177.10.56.0/117" : { - "isp" : "Hoinaski & Sklasky Ltda", - "organization" : "Hoinaski & Sklasky Ltda" - } - }, - { - "::177.10.64.0/117" : { - "isp" : "Silveira & Ziquinatti Ltda", - "organization" : "Silveira & Ziquinatti Ltda" - } - }, - { - "::177.10.96.0/117" : { - "isp" : "Naja Telecomunicações Ltda.", - "organization" : "Naja Telecomunicações Ltda." - } - }, - { - "::177.10.112.0/118" : { - "isp" : "Eletrosul Centrais Elétricas S.A.", - "organization" : "Eletrosul Centrais Elétricas S.A." - } - }, - { - "::177.10.116.0/118" : { - "isp" : "Space Net Serv. De TelecomunicaÇÃo Em Inf. Ltda-me", - "organization" : "Space Net Serv. De TelecomunicaÇÃo Em Inf. Ltda-me" - } - }, - { - "::177.10.120.0/118" : { - "isp" : "JF Soluções Informática Ltda.", - "organization" : "JF Soluções Informática Ltda." - } - }, - { - "::177.10.124.0/118" : { - "isp" : "Info House Informática e Papeis Ltda", - "organization" : "Info House Informática e Papeis Ltda" - } - }, - { - "::177.10.132.0/118" : { - "isp" : "P3 Host Internet Brasil", - "organization" : "P3 Host Internet Brasil" - } - }, - { - "::177.10.136.0/118" : { - "isp" : "Bluephone Solucoes Tecnologicas Ltda", - "organization" : "Bluephone Solucoes Tecnologicas Ltda" - } - }, - { - "::177.10.144.0/117" : { - "isp" : "NETWS Telecomunicações Ltda.", - "organization" : "NETWS Telecomunicações Ltda." - } - }, - { - "::177.10.160.0/117" : { - "isp" : "Chapeco Tecnologia em Telecomunicações Ltda.", - "organization" : "Chapeco Tecnologia em Telecomunicações Ltda." - } - }, - { - "::177.10.192.0/117" : { - "isp" : "Afinet Solucoes Em Tecnologia Da Informacao Ltda", - "organization" : "Afinet Solucoes Em Tecnologia Da Informacao Ltda" - } - }, - { - "::177.10.208.0/117" : { - "isp" : "Mil Negocios Ltda.", - "organization" : "Mil Negocios Ltda." - } - }, - { - "::177.10.216.0/118" : { - "isp" : "Fox Conect Provedor de Internet LTDA", - "organization" : "Fox Conect Provedor de Internet LTDA" - } - }, - { - "::177.10.224.0/117" : { - "isp" : "G30 Telecom ServiÇos Em TelecomunicaÇÕes Ltda", - "organization" : "G30 Telecom ServiÇos Em TelecomunicaÇÕes Ltda" - } - }, - { - "::177.10.240.0/117" : { - "isp" : "Midasnet Telecomunicacoes Ltda", - "organization" : "Midasnet Telecomunicacoes Ltda" - } - }, - { - "::177.10.248.0/117" : { - "isp" : "Viveiros & Araujo Serviços de Provedores da Intern", - "organization" : "Viveiros & Araujo Serviços de Provedores da Intern" - } - }, - { - "::177.11.16.0/118" : { - "isp" : "Rodolfo Romao De Oliveira Neto & Cia Ltda", - "organization" : "Rodolfo Romao De Oliveira Neto & Cia Ltda" - } - }, - { - "::177.11.24.0/118" : { - "isp" : "Ajaxtel Telecomunicações Ltda.", - "organization" : "Ajaxtel Telecomunicações Ltda." - } - }, - { - "::177.11.32.0/117" : { - "isp" : "Mcnet Serviços de Comunicações Ltda", - "organization" : "Mcnet Serviços de Comunicações Ltda" - } - }, - { - "::177.11.56.0/118" : { - "isp" : "R.D.S. Bortoluzzi & Cia Ltda - ME", - "organization" : "R.D.S. Bortoluzzi & Cia Ltda - ME" - } - }, - { - "::177.11.60.0/118" : { - "isp" : "Tolrs Informática Ltda", - "organization" : "Tolrs Informática Ltda" - } - }, - { - "::177.11.64.0/120" : { - "isp" : "Digicontrol ServiÇos De Provedores Ltda", - "organization" : "Pablo William Silva Tavares de Lira" - } - }, - { - "::177.11.65.0/120" : { - "isp" : "Digicontrol ServiÇos De Provedores Ltda", - "organization" : "Digicontrol ServiÇos De Provedores Ltda" - } - }, - { - "::177.11.66.0/119" : { - "isp" : "Digicontrol ServiÇos De Provedores Ltda", - "organization" : "Digicontrol ServiÇos De Provedores Ltda" - } - }, - { - "::177.11.68.0/118" : { - "isp" : "Digicontrol ServiÇos De Provedores Ltda", - "organization" : "Digicontrol ServiÇos De Provedores Ltda" - } - }, - { - "::177.11.80.0/118" : { - "isp" : "PRIMEHOST do BRASIL Ltda", - "organization" : "PRIMEHOST do BRASIL Ltda" - } - }, - { - "::177.11.84.0/118" : { - "isp" : "Minas Turbo Provedor de Internet", - "organization" : "Minas Turbo Provedor de Internet" - } - }, - { - "::177.11.88.0/118" : { - "isp" : "Br2 Internet Ltda", - "organization" : "Br2 Internet Ltda" - } - }, - { - "::177.11.100.0/118" : { - "isp" : "Conexis Internet Provider Ltda - Me", - "organization" : "Conexis Internet Provider Ltda - Me" - } - }, - { - "::177.11.104.0/118" : { - "isp" : "Nolasco & Nonnenmacher Comercio e Rep. Ltda.", - "organization" : "Nolasco & Nonnenmacher Comercio e Rep. Ltda." - } - }, - { - "::177.11.112.0/117" : { - "isp" : "Interneith Via Radio Ltda.", - "organization" : "Interneith Via Radio Ltda." - } - }, - { - "::177.11.144.0/117" : { - "isp" : "Apn - Processamento de Dados e Soluçoes em Interne", - "organization" : "Apn - Processamento de Dados e Soluçoes em Interne" - } - }, - { - "::177.11.152.0/117" : { - "isp" : "Minas Net Ldta Me", - "organization" : "Minas Net Ldta Me" - } - }, - { - "::177.11.160.0/117" : { - "isp" : "Netway Provedor De Internet Ltda", - "organization" : "Netway Provedor De Internet Ltda" - } - }, - { - "::177.11.176.0/117" : { - "isp" : "Catanduva sistemas a cabo ltda.", - "organization" : "Catanduva sistemas a cabo ltda." - } - }, - { - "::177.11.184.0/117" : { - "isp" : "Telecomunicacões Minas Mais Ltda", - "organization" : "Telecomunicacões Minas Mais Ltda" - } - }, - { - "::177.11.192.0/117" : { - "isp" : "Bom Tempo Informática Ltda", - "organization" : "Bom Tempo Informática Ltda" - } - }, - { - "::177.11.208.0/118" : { - "isp" : "Arikinet Internet Ltda - EPP", - "organization" : "Arikinet Internet Ltda - EPP" - } - }, - { - "::177.11.212.0/118" : { - "isp" : "E&L Producoes de Software Ltda", - "organization" : "E&L Producoes de Software Ltda" - } - }, - { - "::177.11.232.0/117" : { - "isp" : "Microfox Informatica Ltda", - "organization" : "Microfox Informatica Ltda" - } - }, - { - "::177.11.240.0/118" : { - "isp" : "Mapfre Vera Cruz Seguradora S/a", - "organization" : "Mapfre Vera Cruz Seguradora S/a" - } - }, - { - "::177.11.248.0/118" : { - "isp" : "Norte Line Telecomunicações Ltda.", - "organization" : "Norte Line Telecomunicações Ltda." - } - }, - { - "::177.12.0.0/114" : { - "isp" : "Predialnet Provedor De Internet Ltda", - "organization" : "Predialnet Provedor De Internet Ltda" - } - }, - { - "::177.12.128.0/115" : { - "isp" : "Pronto Net Ltda.", - "organization" : "Pronto Net Ltda." - } - }, - { - "::177.12.160.0/117" : { - "organization" : "IPV6 Internet Ltda" - } - }, - { - "::177.12.176.0/116" : { - "isp" : "W r de bel entreterimentos s/s ltda", - "organization" : "W r de bel entreterimentos s/s ltda" - } - }, - { - "::177.12.192.0/116" : { - "isp" : "Alonso Oliveira Neto Me", - "organization" : "Alonso Oliveira Neto Me" - } - }, - { - "::177.12.208.0/116" : { - "isp" : "IP2 Telecomunicação Ltda.", - "organization" : "IP2 Telecomunicação Ltda." - } - }, - { - "::177.12.240.0/116" : { - "isp" : "TURBO 10 Telecomunicações Ltda.", - "organization" : "TURBO 10 Telecomunicações Ltda." - } - }, - { - "::177.100.0.0/112" : { - "isp" : "Vcb Provedor De Acesso Ltda", - "organization" : "Vcb Provedor De Acesso Ltda" - } - }, - { - "::177.101.0.0/116" : { - "isp" : "Click.com telecomunicações ltda-me", - "organization" : "Click.com telecomunicações ltda-me" - } - }, - { - "::177.101.16.0/116" : { - "isp" : "Universidade Estadual De Ponta Grossa", - "organization" : "Universidade Estadual De Ponta Grossa" - } - }, - { - "::177.101.32.0/117" : { - "isp" : "Unica Tecnology Ltda", - "organization" : "Unica Tecnology Ltda" - } - }, - { - "::177.101.40.0/118" : { - "isp" : "Unica Tecnology Ltda", - "organization" : "Unica Tecnology Ltda" - } - }, - { - "::177.101.44.0/118" : { - "isp" : "Unica Tecnology Ltda", - "organization" : "Microtell Informatica - Comercio & Prestacao De S" - } - }, - { - "::177.101.80.0/116" : { - "isp" : "Intercol - Internet Colatina Ltda-ME", - "organization" : "Intercol - Internet Colatina Ltda-ME" - } - }, - { - "::177.101.96.0/115" : { - "isp" : "T.p.a. InformÁtica Ltda", - "organization" : "T.p.a. InformÁtica Ltda" - } - }, - { - "::177.101.128.0/116" : { - "isp" : "Ampernet Telecomunicações Ltda", - "organization" : "Ampernet Telecomunicações Ltda" - } - }, - { - "::177.101.176.0/116" : { - "isp" : "Mar Provedor de Internet Ltda", - "organization" : "Mar Provedor de Internet Ltda" - } - }, - { - "::177.101.192.0/114" : { - "isp" : "Sul Americana Tecnologia e Informática Ltda.", - "organization" : "Sul Americana Tecnologia e Informática Ltda." - } - }, - { - "::177.102.0.0/111" : { - "isp" : "Vivo", - "organization" : "Vivo" - } - }, - { - "::177.104.0.0/116" : { - "isp" : "Jgm Brasil TelecomunicaÇÕes Ltda", - "organization" : "Jgm Brasil TelecomunicaÇÕes Ltda" - } - }, - { - "::177.104.16.0/116" : { - "isp" : "Inetsafe Comercio De Equipamentos Eletronicos Ltda", - "organization" : "Inetsafe Comercio De Equipamentos Eletronicos Ltda" - } - }, - { - "::177.104.64.0/115" : { - "isp" : "Infoline - Comunicações e Informações Eletrônicas", - "organization" : "Infoline - Comunicações e Informações Eletrônicas" - } - }, - { - "::177.104.192.0/116" : { - "isp" : "J W Mateus Informatica - Me", - "organization" : "J W Mateus Informatica - Me" - } - }, - { - "::177.104.208.0/116" : { - "isp" : "Brasconect Informatica LTDA", - "organization" : "Brasconect Informatica LTDA" - } - }, - { - "::177.104.224.0/116" : { - "isp" : "Tech Cable do Brasil Sist. de Telec. Ltda", - "organization" : "Tech Cable do Brasil Sist. de Telec. Ltda" - } - }, - { - "::177.105.0.0/114" : { - "isp" : "Ufla - Universidade Federal De Lavras", - "organization" : "Ufla - Universidade Federal De Lavras" - } - }, - { - "::177.105.64.0/116" : { - "isp" : "Netprimus Tecnologia Ltda", - "organization" : "Netprimus Tecnologia Ltda" - } - }, - { - "::177.105.112.0/116" : { - "isp" : "Evanildo Barbeta Boituva ME", - "organization" : "Evanildo Barbeta Boituva ME" - } - }, - { - "::177.105.160.0/116" : { - "isp" : "LB Redes Telecomunicações LTDA", - "organization" : "LB Redes Telecomunicações LTDA" - } - }, - { - "::177.105.176.0/116" : { - "isp" : "Sidys Comunicações Ltda.", - "organization" : "Sidys Comunicações Ltda." - } - }, - { - "::177.105.208.0/116" : { - "isp" : "Portalmail Informatica Ltda", - "organization" : "Portalmail Informatica Ltda" - } - }, - { - "::177.105.224.0/116" : { - "isp" : "Internet Pinheirense Ltda - ME", - "organization" : "Internet Pinheirense Ltda - ME" - } - }, - { - "::177.106.0.0/112" : { - "isp" : "CTBC", - "organization" : "CTBC" - } - }, - { - "::177.107.0.0/116" : { - "isp" : "Byteweb Comunicação Multimídia Ltda.", - "organization" : "Byteweb Comunicação Multimídia Ltda." - } - }, - { - "::177.107.64.0/116" : { - "isp" : "Redenilf Serviços de Telecomunicações Ltda", - "organization" : "Redenilf Serviços de Telecomunicações Ltda" - } - }, - { - "::177.107.96.0/116" : { - "isp" : "Star Conect Telecom Ltda", - "organization" : "Star Conect Telecom Ltda" - } - }, - { - "::177.107.112.0/116" : { - "isp" : "OpçãoNet Informática Ltda ME", - "organization" : "OpçãoNet Informática Ltda ME" - } - }, - { - "::177.107.128.0/115" : { - "isp" : "Link Sol LTDA - ME", - "organization" : "Link Sol LTDA - ME" - } - }, - { - "::177.107.178.0/122" : { - "isp" : "New Master Provedor De Acesso A Internet", - "organization" : "New Master Provedor De Acesso A Internet" - } - }, - { - "::177.107.190.0/121" : { - "isp" : "New Master Provedor De Acesso A Internet", - "organization" : "New Master Provedor De Acesso A Internet" - } - }, - { - "::177.107.224.0/115" : { - "isp" : "Gigalink de Nova Friburgo Soluções em Rede Multimi", - "organization" : "Gigalink de Nova Friburgo Soluções em Rede Multimi" - } - }, - { - "::177.108.0.0/110" : { - "isp" : "Tim Celular S.A.", - "organization" : "Tim Celular S.A." - } - }, - { - "::177.112.0.0/109" : { - "isp" : "Vivo", - "organization" : "Vivo" - } - }, - { - "::177.120.0.0/111" : { - "isp" : "Tim Celular S.A.", - "organization" : "Tim Celular S.A." - } - }, - { - "::180.0.0.0/106" : { - "autonomous_system_number" : 4713, - "autonomous_system_organization" : "NTT Communications Corporation", - "isp" : "NTT", - "organization" : "NTT" - } - }, - { - "::180.131.208.0/116" : { - "isp" : "GLBB" - } - }, - { - "::180.131.224.0/115" : { - "isp" : "GLBB" - } - }, - { - "::182.54.235.0/120" : { - "organization" : "GPLHost" - } - }, - { - "::183.0.0.0/106" : { - "autonomous_system_number" : 4134, - "autonomous_system_organization" : "Chinanet", - "isp" : "China Telecom", - "organization" : "China Telecom" - } - }, - { - "::183.192.0.0/106" : { - "autonomous_system_number" : 9808, - "autonomous_system_organization" : "Guangdong Mobile Communication Co.Ltd.", - "isp" : "Guangdong Mobile", - "organization" : "Guangdong Mobile" - } - }, - { - "::184.71.70.142/128" : { - "organization" : "Trans Canada Internet" - } - }, - { - "::184.170.240.0/119" : { - "organization" : "QuickWeb Hosting Solutions" - } - }, - { - "::185.5.42.0/119" : { - "isp" : "SmartLabs LLC" - } - }, - { - "::186.249.64.0/116" : { - "organization" : "WE Radio Comunicação LTDA EPP" - } - }, - { - "::187.95.224.0/115" : { - "organization" : "Voax Provedor de Internet" - } - }, - { - "::187.109.192.0/120" : { - "organization" : "RedeTeleSul" - } - }, - { - "::188.35.4.0/118" : { - "isp" : "CityLink ISP", - "organization" : "CityLink Ltd" - } - }, - { - "::188.35.144.0/119" : { - "organization" : "CityLink Ltd" - } - }, - { - "::188.35.149.0/120" : { - "organization" : "indtelecom" - } - }, - { - "::188.138.21.170/128" : { - "organization" : "MitiHost Solutions" - } - }, - { - "::190.110.5.0/120" : { - "organization" : "FiberXpress Dominicana" - } - }, - { - "::190.113.240.0/118" : { - "isp" : "FIX WIRELESS" - } - }, - { - "::192.102.6.0/119" : { - "organization" : "HostVDS-NET" - } - }, - { - "::192.114.160.0/115" : { - "isp" : "Golden Lines Cable", - "organization" : "Golden Lines Cable" - } - }, - { - "::192.175.40.0/118" : { - "organization" : "Fibrestream Limited" - } - }, - { - "::193.41.172.0/118" : { - "organization" : "P.P.H.U Multicom" - } - }, - { - "::193.43.210.0/119" : { - "organization" : "FOP Molochko Nina Vasilevna" - } - }, - { - "::193.43.246.250/128" : { - "organization" : "Amdocs" - } - }, - { - "::193.67.0.0/112" : { - "isp" : "Verizon Nederland B.V.", - "organization" : "Verizon Nederland B.V." - } - }, - { - "::193.95.0.0/113" : { - "isp" : "Agence Tunisienne Internet - ATI", - "organization" : "Agence Tunisienne Internet - ATI" - } - }, - { - "::193.106.152.0/118" : { - "organization" : "X-Com Partners" - } - }, - { - "::193.108.56.0/118" : { - "isp" : "SLW Internet Service Ltd.", - "organization" : "SLW Internet Service Ltd." - } - }, - { - "::193.130.58.96/124" : { - "isp" : "Buckhaven High school", - "organization" : "Buckhaven High school" - } - }, - { - "::193.170.79.0/120" : { - "isp" : "University of Technology, Vienna", - "organization" : "University of Technology, Vienna" - } - }, - { - "::193.183.144.0/120" : { - "organization" : "H & M Hennes & Mauritz AB" - } - }, - { - "::193.227.0.0/114" : { - "isp" : "Egyptian Universities Network", - "organization" : "Egyptian Universities Network" - } - }, - { - "::193.235.18.0/119" : { - "isp" : "AB Svenska Spel", - "organization" : "AB Svenska Spel" - } - }, - { - "::193.235.20.0/119" : { - "isp" : "AB Svenska Spel", - "organization" : "AB Svenska Spel" - } - }, - { - "::194.8.240.0/119" : { - "organization" : "CDcorp" - } - }, - { - "::194.28.112.0/118" : { - "isp" : "Specialist Ltd." - } - }, - { - "::194.30.180.0/120" : { - "organization" : "w3 GmbH" - } - }, - { - "::194.50.128.0/118" : { - "isp" : "CityLink ISP" - } - }, - { - "::194.82.232.0/118" : { - "isp" : "Forestry Commision", - "organization" : "Forestry Commision" - } - }, - { - "::194.84.23.0/121" : { - "isp" : "WEB Hotel, Moscow", - "organization" : "WEB Hotel, Moscow" - } - }, - { - "::194.105.206.0/120" : { - "isp" : "Hotel Astoria network", - "organization" : "Hotel Astoria network" - } - }, - { - "::194.117.119.228/126" : { - "isp" : "Seaside Hotels, S.A.", - "organization" : "Seaside Hotels, S.A." - } - }, - { - "::194.126.180.112/124" : { - "organization" : "Small Private Enterprise Kvant-II" - } - }, - { - "::194.140.181.0/120" : { - "organization" : "WICO" - } - }, - { - "::194.140.228.0/120" : { - "organization" : "Sevonline" - } - }, - { - "::194.149.160.0/115" : { - "isp" : "Free SAS", - "organization" : "Free SAS" - } - }, - { - "::194.165.152.248/125" : { - "isp" : "Rawdat Al-Ma'aref Schools & College", - "organization" : "Rawdat Al-Ma'aref Schools & College" - } - }, - { - "::194.178.0.0/112" : { - "isp" : "Verizon Nederland B.V.", - "organization" : "Verizon Nederland B.V." - } - }, - { - "::194.242.234.0/119" : { - "isp" : "CASPUR", - "organization" : "CASPUR" - } - }, - { - "::194.242.236.0/118" : { - "isp" : "CASPUR", - "organization" : "CASPUR" - } - }, - { - "::194.242.240.0/119" : { - "isp" : "CASPUR", - "organization" : "CASPUR" - } - }, - { - "::195.22.192.0/115" : { - "isp" : "TELECOM ITALIA SPARKLE S.p.A.", - "organization" : "TELECOM ITALIA SPARKLE S.p.A." - } - }, - { - "::195.32.0.0/113" : { - "isp" : "Officine Informatiche Srl", - "organization" : "Officine Informatiche Srl" - } - }, - { - "::195.43.0.0/115" : { - "isp" : "Egyptian National Scientific & Technical Informati", - "organization" : "Egyptian National Scientific & Technical Informati" - } - }, - { - "::195.130.224.0/115" : { - "isp" : "Tiscali SpA", - "organization" : "Tiscali SpA" - } - }, - { - "::195.134.192.0/115" : { - "isp" : "Interoute Communications Limited", - "organization" : "Interoute Communications Limited" - } - }, - { - "::195.137.0.0/113" : { - "isp" : "Tiscali UK Limited", - "organization" : "Tiscali UK Limited" - } - }, - { - "::195.194.74.224/123" : { - "isp" : "Blackpool Sixth Form College", - "organization" : "Blackpool Sixth Form College" - } - }, - { - "::195.194.136.0/118" : { - "isp" : "Aberdeen College", - "organization" : "Aberdeen College" - } - }, - { - "::195.206.64.0/115" : { - "isp" : "BT", - "organization" : "BT" - } - }, - { - "::195.242.32.0/115" : { - "isp" : "Verizon Sweden AB", - "organization" : "Verizon Sweden AB" - } - }, - { - "::195.246.32.0/115" : { - "isp" : "Egyptian Universities Network (EUN)", - "organization" : "Egyptian Universities Network (EUN)" - } - }, - { - "::196.1.56.0/117" : { - "isp" : "Frogfoot Networks", - "organization" : "Frogfoot Networks" - } - }, - { - "::196.1.144.0/116" : { - "isp" : "CMC Networks", - "organization" : "CMC Networks" - } - }, - { - "::196.3.164.0/118" : { - "isp" : "Global Internet Access", - "organization" : "Global Internet Access" - } - }, - { - "::196.3.168.0/117" : { - "isp" : "Global Internet Access", - "organization" : "Global Internet Access" - } - }, - { - "::196.3.176.0/118" : { - "isp" : "Global Internet Access", - "organization" : "Global Internet Access" - } - }, - { - "::196.4.173.0/120" : { - "isp" : "Gkn Chep SA", - "organization" : "Gkn Chep SA" - } - }, - { - "::196.4.174.0/119" : { - "isp" : "Gkn Chep SA", - "organization" : "Gkn Chep SA" - } - }, - { - "::196.4.176.0/117" : { - "isp" : "Gkn Chep SA", - "organization" : "Gkn Chep SA" - } - }, - { - "::196.4.184.0/118" : { - "isp" : "Gkn Chep SA", - "organization" : "Gkn Chep SA" - } - }, - { - "::196.4.188.0/120" : { - "isp" : "Gkn Chep SA", - "organization" : "Gkn Chep SA" - } - }, - { - "::196.12.128.0/116" : { - "isp" : "Rwandatel, SA", - "organization" : "Rwandatel, SA" - } - }, - { - "::196.12.144.0/118" : { - "isp" : "Rwandatel, SA", - "organization" : "Wireless Broadband Customer" - } - }, - { - "::196.12.148.0/118" : { - "isp" : "Rwandatel, SA", - "organization" : "Rwandatel, SA" - } - }, - { - "::196.12.152.0/117" : { - "isp" : "Rwandatel, SA", - "organization" : "Rwandatel, SA" - } - }, - { - "::196.12.192.0/114" : { - "isp" : "Wana Corporate", - "organization" : "Wana Corporate" - } - }, - { - "::196.22.160.0/115" : { - "isp" : "MWEB", - "organization" : "MWEB" - } - }, - { - "::196.22.192.0/116" : { - "isp" : "Data Pro Business Online", - "organization" : "Data Pro Business Online" - } - }, - { - "::196.22.208.0/118" : { - "isp" : "Data Pro Business Online", - "organization" : "JHB Waverley MetroEthernet, Hosting and Lease Line" - } - }, - { - "::196.22.212.0/118" : { - "isp" : "Data Pro Business Online", - "organization" : "Data Pro Business Online" - } - }, - { - "::196.22.216.0/117" : { - "isp" : "Data Pro Business Online", - "organization" : "Data Pro Business Online" - } - }, - { - "::196.22.236.0/118" : { - "isp" : "Durban Lease Line and Hosting Zone Range", - "organization" : "Durban Lease Line and Hosting Zone Range" - } - }, - { - "::196.27.96.0/115" : { - "isp" : "Zimbabwe Online", - "organization" : "Zimbabwe Online" - } - }, - { - "::196.28.249.0/120" : { - "isp" : "ONATEL", - "organization" : "ONATEL" - } - }, - { - "::196.28.250.0/119" : { - "isp" : "ONATEL", - "organization" : "ONATEL" - } - }, - { - "::196.28.252.0/120" : { - "isp" : "ONATEL", - "organization" : "ONATEL" - } - }, - { - "::196.29.187.0/124" : { - "isp" : "Al Salam Rotana Hotel- sudan", - "organization" : "Al Salam Rotana Hotel- sudan" - } - }, - { - "::196.32.112.0/116" : { - "isp" : "Universite de Bamako", - "organization" : "Universite de Bamako" - } - }, - { - "::196.32.232.0/117" : { - "isp" : "Amobia Communications", - "organization" : "Amobia Communications" - } - }, - { - "::196.41.224.0/115" : { - "isp" : "Sarl ICOSNET", - "organization" : "Sarl ICOSNET" - } - }, - { - "::196.43.64.0/116" : { - "isp" : "Allocated to Broad band internet in the following", - "organization" : "Allocated to Broad band internet in the following" - } - }, - { - "::196.43.80.0/117" : { - "isp" : "Allocated to Broad band internet in the following", - "organization" : "Allocated to Broad band internet in the following" - } - }, - { - "::196.43.128.0/114" : { - "isp" : "Research and Education Network of Uganda - RENU", - "organization" : "Research and Education Network of Uganda - RENU" - } - }, - { - "::196.43.194.0/120" : { - "isp" : "Association of African Universities", - "organization" : "Association of African Universities" - } - }, - { - "::196.43.199.0/120" : { - "isp" : "Zimbabwe Open University", - "organization" : "Zimbabwe Open University" - } - }, - { - "::196.43.224.0/120" : { - "isp" : "Nigeria Air Force", - "organization" : "Nigeria Air Force" - } - }, - { - "::196.43.235.0/120" : { - "isp" : "Bowen University", - "organization" : "Bowen University" - } - }, - { - "::196.44.160.0/116" : { - "isp" : "University of Dar es Salaam", - "organization" : "University of Dar es Salaam" - } - }, - { - "::196.44.176.0/116" : { - "isp" : "Yo! Africa", - "organization" : "Yo! Africa" - } - }, - { - "::196.44.240.0/116" : { - "isp" : "MTN RwandaCell", - "organization" : "MTN RwandaCell" - } - }, - { - "::196.200.19.206/128" : { - "isp" : "The Institute for Social Accou", - "organization" : "The Institute for Social Accou" - } - }, - { - "::196.200.20.40/125" : { - "isp" : "Tribe Hotel", - "organization" : "Tribe Hotel" - } - }, - { - "::196.200.28.0/118" : { - "isp" : "Accesskenya Group Ltd", - "organization" : "Accesskenya Group Ltd" - } - }, - { - "::196.200.32.0/116" : { - "isp" : "Wananchi Online", - "organization" : "Wananchi Online" - } - }, - { - "::196.200.63.0/120" : { - "isp" : "Afribone - Universite", - "organization" : "Afribone - Universite" - } - }, - { - "::196.200.80.0/116" : { - "isp" : "Ikatel SA", - "organization" : "Ikatel SA" - } - }, - { - "::196.202.208.0/118" : { - "isp" : "Orange Broadband Kenya", - "organization" : "Orange Broadband Kenya" - } - }, - { - "::196.202.240.0/118" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.244.0/120" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.245.0/125" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Sub allocation to Lerotholi Polytechnic Institute" - } - }, - { - "::196.202.245.8/125" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.245.16/124" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.245.32/123" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.245.64/122" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.245.128/121" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.202.246.0/119" : { - "isp" : "Telecom Lesotho (PTY) LTD", - "organization" : "Telecom Lesotho (PTY) LTD" - } - }, - { - "::196.206.0.0/113" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.206.128.0/114" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.206.192.0/115" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.206.224.0/117" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.206.232.0/117" : { - "isp" : "Maroc Telecom", - "organization" : "MarocTelecom" - } - }, - { - "::196.206.240.0/116" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.207.16.0/116" : { - "isp" : "Communication Solutions Ltd.", - "organization" : "Communication Solutions Ltd." - } - }, - { - "::196.208.16.0/116" : { - "isp" : "Internet Solutions", - "organization" : "Internet Solutions" - } - }, - { - "::196.208.224.0/116" : { - "isp" : "Internet Solutions", - "organization" : "Internet Solutions" - } - }, - { - "::196.216.48.0/118" : { - "isp" : "Network assigned to Silver Customers in Luanda, An", - "organization" : "Network assigned to Silver Customers in Luanda, An" - } - }, - { - "::196.216.64.0/119" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.66.0/120" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.67.0/121" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.67.128/122" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.67.192/126" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.67.196/126" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "PushMobileMediaSGK" - } - }, - { - "::196.216.67.200/125" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.67.208/124" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.67.224/123" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.68.0/118" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.72.0/117" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.80.0/116" : { - "isp" : "Swift Global Kenya Limited", - "organization" : "Swift Global Kenya Limited" - } - }, - { - "::196.216.172.0/118" : { - "isp" : "Grindrod Management Services (Pty) Ltd", - "organization" : "Grindrod Management Services (Pty) Ltd" - } - }, - { - "::196.216.180.0/118" : { - "isp" : "Zenith Bank Ghana Ltd", - "organization" : "Zenith Bank Ghana Ltd" - } - }, - { - "::196.216.184.0/118" : { - "isp" : "Finbank PLC", - "organization" : "Finbank PLC" - } - }, - { - "::196.216.200.0/118" : { - "isp" : "Central Bank of Nigeria", - "organization" : "Central Bank of Nigeria" - } - }, - { - "::196.216.204.0/118" : { - "isp" : "Seacom Ltd", - "organization" : "Seacom Ltd" - } - }, - { - "::196.216.240.0/119" : { - "isp" : "Cairo American College", - "organization" : "Cairo American College" - } - }, - { - "::196.217.0.0/113" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.217.192.0/115" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.217.224.0/116" : { - "isp" : "Maroc Telecom", - "organization" : "Maroc Telecom" - } - }, - { - "::196.220.96.0/115" : { - "isp" : "National University of Science and Technology", - "organization" : "National University of Science and Technology" - } - }, - { - "::196.220.208.0/116" : { - "isp" : "Beehive Social Enterprise", - "organization" : "Beehive Social Enterprise" - } - }, - { - "::196.220.224.0/116" : { - "isp" : "University of Jos Nigeria", - "organization" : "University of Jos Nigeria" - } - }, - { - "::196.220.240.0/116" : { - "isp" : "University of Lagos", - "organization" : "University of Lagos" - } - }, - { - "::196.221.20.0/118" : { - "isp" : "RT-ADSL-project", - "organization" : "RT-ADSL-project" - } - }, - { - "::196.221.24.0/117" : { - "isp" : "RT-ADSL-project", - "organization" : "RT-ADSL-project" - } - }, - { - "::196.244.0.0/112" : { - "isp" : "Fiber Grid Inc", - "organization" : "Fiber Grid Inc" - } - }, - { - "::196.252.0.0/111" : { - "isp" : "North West University", - "organization" : "North West University" - } - }, - { - "::196.254.0.0/111" : { - "isp" : "University of the Free State", - "organization" : "University of the Free State" - } - }, - { - "::198.41.28.0/118" : { - "isp" : "Granite Networks" - } - }, - { - "::198.161.136.0/117" : { - "isp" : "SilverIP Communications" - } - }, - { - "::198.178.28.0/118" : { - "isp" : "Allo Communications LLC" - } - }, - { - "::199.120.69.0/120" : { - "organization" : "Premier Communications" - } - }, - { - "::199.192.166.0/119" : { - "organization" : "SUMO FIBER" - } - }, - { - "::199.193.222.128/121" : { - "organization" : "Alamo Broadband" - } - }, - { - "::200.110.139.0/120" : { - "organization" : "Argentina Virtual Networks S.R.L." - } - }, - { - "::200.110.145.0/123" : { - "organization" : "Argentina Virtual Networks S.R.L." - } - }, - { - "::202.3.80.0/116" : { - "organization" : "DIGINET-NZ" - } - }, - { - "::202.93.153.0/120" : { - "organization" : "LATELZ Co., Ltd." - } - }, - { - "::203.118.242.0/120" : { - "organization" : "LATELZ Co., Ltd." - } - }, - { - "::203.148.64.0/116" : { - "organization" : "LGCNS China" - } - }, - { - "::204.128.241.208/128" : { - "isp" : "YourHomeISP" - } - }, - { - "::206.16.137.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::206.16.139.0/120" : { - "isp" : "AT&T Synaptic Cloud Hosting", - "organization" : "AT&T Synaptic Cloud Hosting" - } - }, - { - "::207.34.130.0/120" : { - "organization" : "Lytton Area Wireless Society" - } - }, - { - "::207.241.128.0/116" : { - "isp" : "CMS Internet LLC" - } - }, - { - "::208.20.196.16/125" : { - "organization" : "Hilite International" - } - }, - { - "::208.35.54.80/124" : { - "organization" : "Hilite International" - } - }, - { - "::208.110.194.0/119" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.196.0/118" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.200.0/117" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.208.0/117" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.216.0/120" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.0/122" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.64/123" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.96/125" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.104/127" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.106/128" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.107/128" : { - "autonomous_system_number" : 11025, - "isp" : "Comcast - Houston", - "organization" : "Comcast - Houston" - } - }, - { - "::208.110.217.108/126" : { - "autonomous_system_number" : 11025, - "isp" : "Comcast - Houston", - "organization" : "Comcast - Houston" - } - }, - { - "::208.110.217.112/127" : { - "autonomous_system_number" : 11025, - "isp" : "Comcast - Houston", - "organization" : "Comcast - Houston" - } - }, - { - "::208.110.217.114/127" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.116/126" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.120/125" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.217.128/121" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.218.0/119" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.110.220.0/118" : { - "autonomous_system_number" : 11025 - } - }, - { - "::208.178.194.148/126" : { - "organization" : "Beyond Next" - } - }, - { - "::208.192.0.0/106" : { - "autonomous_system_number" : 701, - "autonomous_system_organization" : "MCI Communications Services, Inc. d/b/a Verizon Business", - "isp" : "Verizon Business", - "organization" : "Verizon Business" - } - }, - { - "::209.66.114.182/128" : { - "organization" : "International Business Times" - } - }, - { - "::209.222.88.24/125" : { - "organization" : "MitiHost Solutions" - } - }, - { - "::212.1.224.0/115" : { - "isp" : "Net By Net Holding LLC", - "organization" : "Net By Net Holding LLC" - } - }, - { - "::212.5.224.0/115" : { - "isp" : "Nonprofit Partnership for the Development of Finan", - "organization" : "Nonprofit Partnership for the Development of Finan" - } - }, - { - "::212.10.176.0/116" : { - "isp" : "Telia Stofa A/S", - "organization" : "Telia Stofa A/S" - } - }, - { - "::212.11.128.0/115" : { - "isp" : "Moscow Mayor's Office", - "organization" : "Moscow Mayor's Office" - } - }, - { - "::212.11.160.0/115" : { - "isp" : "SPSNET", - "organization" : "SPSNET" - } - }, - { - "::212.23.224.0/115" : { - "isp" : "COLT Technology Services Group Limited", - "organization" : "COLT Technology Services Group Limited" - } - }, - { - "::212.50.183.0/120" : { - "organization" : "Fibrestream Limited" - } - }, - { - "::212.55.234.0/119" : { - "isp" : "Slovanet a.s.", - "organization" : "Slovanet a.s." - } - }, - { - "::212.55.236.0/120" : { - "isp" : "Slovanet a.s.", - "organization" : "Slovanet a.s." - } - }, - { - "::212.73.150.0/120" : { - "organization" : "Linkplus" - } - }, - { - "::212.75.32.0/115" : { - "isp" : "Scan Plus GmbH", - "organization" : "Scan Plus GmbH" - } - }, - { - "::212.102.192.0/115" : { - "isp" : "ICM NetServ Ltd", - "organization" : "ICM NetServ Ltd" - } - }, - { - "::212.121.224.0/115" : { - "isp" : "Altecom" - } - }, - { - "::212.132.153.192/124" : { - "isp" : "St Andrew's Primary School", - "organization" : "St Andrew's Primary School" - } - }, - { - "::212.137.30.248/125" : { - "isp" : "Ufi Army Torch Hub Nuneaton", - "organization" : "Ufi Army Torch Hub Nuneaton" - } - }, - { - "::212.173.48.112/124" : { - "isp" : "Glenfall County Primary School", - "organization" : "Glenfall County Primary School" - } - }, - { - "::212.173.250.56/125" : { - "isp" : "Ashleworth CE Primary School", - "organization" : "Ashleworth CE Primary School" - } - }, - { - "::212.200.145.192/124" : { - "organization" : "SokoWireless.NET!" - } - }, - { - "::212.201.51.0/120" : { - "isp" : "Saechsische Landesbibliothek -", - "organization" : "Saechsische Landesbibliothek -" - } - }, - { - "::212.201.52.0/118" : { - "isp" : "Saechsische Landesbibliothek -", - "organization" : "Saechsische Landesbibliothek -" - } - }, - { - "::212.201.56.0/117" : { - "isp" : "Saechsische Landesbibliothek -", - "organization" : "Saechsische Landesbibliothek -" - } - }, - { - "::213.18.209.72/125" : { - "isp" : "Dinglewell Infant School", - "organization" : "Dinglewell Infant School" - } - }, - { - "::213.21.192.0/114" : { - "isp" : "VERSIA Ltd", - "organization" : "VERSIA Ltd" - } - }, - { - "::213.54.0.0/112" : { - "isp" : "nacamar GmbH", - "organization" : "nacamar GmbH" - } - }, - { - "::213.148.199.0/120" : { - "isp" : "Altecom" - } - }, - { - "::213.148.200.0/117" : { - "isp" : "Altecom" - } - }, - { - "::213.148.208.0/117" : { - "isp" : "Altecom" - } - }, - { - "::213.148.216.0/118" : { - "isp" : "Altecom" - } - }, - { - "::213.148.220.0/120" : { - "isp" : "Altecom" - } - }, - { - "::213.157.184.0/120" : { - "isp" : "RCS & RDS Mobile" - } - }, - { - "::213.159.160.0/115" : { - "isp" : "Telefonaktiebolaget L M Ericsson", - "organization" : "Telefonaktiebolaget L M Ericsson" - } - }, - { - "::213.171.52.172/126" : { - "isp" : "Network for OAO Megdunarodnyi airport Domodedovo", - "organization" : "Network for OAO Megdunarodnyi airport Domodedovo" - } - }, - { - "::213.203.120.0/118" : { - "isp" : "Jet Multimedia", - "organization" : "Jet Multimedia" - } - }, - { - "::213.233.96.0/119" : { - "isp" : "MobiFon S.A.", - "organization" : "MobiFon S.A." - } - }, - { - "::213.249.135.0/123" : { - "isp" : "York County Council LAN", - "organization" : "York County Council LAN" - } - }, - { - "::213.254.64.0/114" : { - "isp" : "ONO", - "organization" : "ONO" - } - }, - { - "::214.0.0.0/104" : { - "autonomous_system_number" : 721, - "autonomous_system_organization" : "DoD Network Information Center" - } - }, - { - "::215.0.0.0/105" : { - "autonomous_system_number" : 721, - "autonomous_system_organization" : "DoD Network Information Center" - } - }, - { - "::216.83.161.0/120" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.162.0/119" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.164.0/118" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.168.0/119" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.170.0/120" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.171.0/121" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.171.128/122" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.171.192/123" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA", - "isp" : "Sungard Network Solutions", - "organization" : "Sungard Network Solutions" - } - }, - { - "::216.83.171.224/123" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.172.0/118" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.83.176.0/116" : { - "autonomous_system_number" : 7381, - "autonomous_system_organization" : "SunGard Availability Services USA" - } - }, - { - "::216.154.16.197/128" : { - "organization" : "Silonet.ca - Your Rural Internet Service Provider" - } - }, - { - "::216.160.26.0/119" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.28.0/118" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.32.0/115" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.64.0/116" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.80.0/119" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.82.0/120" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.83.0/123" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.83.32/124" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.83.48/125" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.83.56/125" : { - "autonomous_system_number" : 209, - "isp" : "Century Link", - "organization" : "Lariat Software" - } - }, - { - "::216.160.83.64/122" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.83.128/121" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.84.0/118" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.88.0/117" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.96.0/115" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.128.0/114" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.192.0/117" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.200.0/118" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.204.0/119" : { - "autonomous_system_number" : 209 - } - }, - { - "::216.160.206.0/120" : { - "autonomous_system_number" : 209 - } - }, - { - "::217.12.96.0/116" : { - "isp" : "Alfa-Bank Moscow Russia", - "organization" : "Alfa-Bank Moscow Russia" - } - }, - { - "::217.17.192.0/116" : { - "isp" : "IKS Service GmbH" - } - }, - { - "::217.28.128.0/116" : { - "isp" : "Cobweb Solutions Ltd", - "organization" : "Cobweb Solutions Ltd" - } - }, - { - "::217.35.170.0/119" : { - "isp" : "Start Services", - "organization" : "Start Services" - } - }, - { - "::217.35.172.0/118" : { - "isp" : "Start Services", - "organization" : "Start Services" - } - }, - { - "::217.63.203.160/123" : { - "isp" : "Basisschool De Zaaier", - "organization" : "Basisschool De Zaaier" - } - }, - { - "::217.76.36.0/120" : { - "isp" : "AO VNIITEMR(Machinery&Robotics Institute), Moscow", - "organization" : "AO VNIITEMR(Machinery&Robotics Institute), Moscow" - } - }, - { - "::217.112.224.0/116" : { - "isp" : "SFR", - "organization" : "SFR" - } - }, - { - "::217.117.217.224/125" : { - "organization" : "GIGANET.cz" - } - }, - { - "::217.117.217.240/125" : { - "organization" : "GIGANET.cz" - } - }, - { - "::217.125.152.0/118" : { - "isp" : "Telefonica de Espana", - "organization" : "Telefonica de Espana" - } - }, - { - "::217.125.160.0/115" : { - "isp" : "Telefonica de Espana", - "organization" : "Telefonica de Espana" - } - }, - { - "::217.125.192.0/114" : { - "isp" : "Telefonica de Espana", - "organization" : "Telefonica de Espana" - } - }, - { - "::217.141.185.128/124" : { - "isp" : "Hotel Benessere", - "organization" : "Hotel Benessere" - } - }, - { - "::217.141.234.72/126" : { - "isp" : "Comunedisalerno", - "organization" : "Comunedisalerno" - } - }, - { - "::217.147.234.0/120" : { - "isp" : "Tbilisi Pedagogical University", - "organization" : "Tbilisi Pedagogical University" - } - }, - { - "::217.164.0.0/111" : { - "isp" : "Emirates Telecommunications Corporation", - "organization" : "Emirates Telecommunications Corporation" - } - }, - { - "::217.172.0.0/116" : { - "isp" : "T-Systems Italia Spa", - "organization" : "T-Systems Italia Spa" - } - }, - { - "::217.176.17.0/123" : { - "isp" : "Brettenham Infant School", - "organization" : "Brettenham Infant School" - } - }, - { - "::217.176.21.0/123" : { - "isp" : "Shildon County Primary School", - "organization" : "Shildon County Primary School" - } - }, - { - "::217.176.23.0/123" : { - "isp" : "The Campion School", - "organization" : "The Campion School" - } - }, - { - "::217.176.49.128/122" : { - "isp" : "Josca's Preparatory School", - "organization" : "Josca's Preparatory School" - } - }, - { - "::217.176.85.128/121" : { - "isp" : "Dundonald High School", - "organization" : "Dundonald High School" - } - }, - { - "::217.176.154.232/125" : { - "isp" : "Folly Hill County First School", - "organization" : "Folly Hill County First School" - } - }, - { - "::217.176.154.240/125" : { - "isp" : "Beauclerc County Infant School", - "organization" : "Beauclerc County Infant School" - } - }, - { - "::217.176.156.168/125" : { - "isp" : "Holly Lodge County Primary School", - "organization" : "Holly Lodge County Primary School" - } - }, - { - "::217.176.156.200/125" : { - "isp" : "Laleham CE Primary School", - "organization" : "Laleham CE Primary School" - } - }, - { - "::217.176.159.204/126" : { - "isp" : "Surrey County Council", - "organization" : "Surrey County Council" - } - }, - { - "::217.176.255.0/122" : { - "isp" : "Tanfield Lea Junior School", - "organization" : "Tanfield Lea Junior School" - } - }, - { - "::217.183.12.128/123" : { - "isp" : "Tuddenham CE (VC) Primary School", - "organization" : "Tuddenham CE (VC) Primary School" - } - }, - { - "::217.183.15.64/123" : { - "isp" : "West Drayton Primary School", - "organization" : "West Drayton Primary School" - } - }, - { - "::217.183.18.192/123" : { - "isp" : "Wellington Primary School", - "organization" : "Wellington Primary School" - } - }, - { - "::217.183.55.128/122" : { - "isp" : "Brede Primary School", - "organization" : "Brede Primary School" - } - }, - { - "::217.183.59.0/122" : { - "isp" : "Grove CE Primary School", - "organization" : "Grove CE Primary School" - } - }, - { - "::217.183.130.64/123" : { - "isp" : "Longney CE Primary School", - "organization" : "Longney CE Primary School" - } - }, - { - "::217.183.140.96/123" : { - "isp" : "Ketton CE Primary School", - "organization" : "Ketton CE Primary School" - } - }, - { - "::217.195.192.0/116" : { - "isp" : "FiberSunucu internet Hizmetleri Ugur Pala", - "organization" : "FiberSunucu internet Hizmetleri Ugur Pala" - } - }, - { - "::217.204.110.64/122" : { - "isp" : "Radisson Edwardian Hotels - radisson-gw", - "organization" : "Radisson Edwardian Hotels - radisson-gw" - } - }, - { - "::219.0.0.0/106" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp.", - "isp" : "Softbank BB Corp", - "organization" : "Softbank BB Corp" - } - }, - { - "::220.0.0.0/106" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp.", - "isp" : "Softbank BB Corp", - "organization" : "Softbank BB Corp" - } - }, - { - "::222.229.88.0/117" : { - "organization" : "Connected Intelligence" - } - }, - { - "::222.229.128.0/113" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.0.0/113" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.128.0/117" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.136.0/119" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC", - "isp" : "VECTANT Ltd.", - "organization" : "VECTANT Ltd." - } - }, - { - "::222.230.138.0/119" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.140.0/118" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.144.0/116" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.160.0/115" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "::222.230.192.0/114" : { - "autonomous_system_number" : 2519, - "autonomous_system_organization" : "JPNIC" - } - }, - { - "2001:1700::/27" : { - "autonomous_system_number" : 6730, - "autonomous_system_organization" : "Sunrise Communications AG" - } - }, - { - "2001:1c00::/23" : { - "autonomous_system_number" : 9143, - "autonomous_system_organization" : "Ziggo B.V." - } - }, - { - "2001:2000::/20" : { - "autonomous_system_number" : 1299, - "autonomous_system_organization" : "TeliaSonera International Carrier" - } - }, - { - "2001:4540::/27" : { - "autonomous_system_number" : 9924, - "autonomous_system_organization" : "Taiwan Fixed Network, Telco and Network Service Provider." - } - }, - { - "2001:4580::/26" : { - "autonomous_system_number" : 4780, - "autonomous_system_organization" : "Digital United Inc." - } - }, - { - "2001:4600::/24" : { - "autonomous_system_number" : 2119, - "autonomous_system_organization" : "Telenor Norge AS" - } - }, - { - "2001:5000::/24" : { - "autonomous_system_number" : 1273, - "autonomous_system_organization" : "Cable and Wireless Worldwide plc" - } - }, - { - "2001:5100::/24" : { - "autonomous_system_number" : 2529, - "autonomous_system_organization" : "Now maintained by Cable & Wireless Worldwide" - } - }, - { - "2001:5200::/23" : { - "autonomous_system_number" : 1273, - "autonomous_system_organization" : "Cable and Wireless Worldwide plc" - } - }, - { - "2001:5400::/22" : { - "autonomous_system_number" : 1273, - "autonomous_system_organization" : "Cable and Wireless Worldwide plc" - } - }, - { - "2001:8000::/20" : { - "autonomous_system_number" : 1221, - "autonomous_system_organization" : "Telstra Pty Ltd" - } - }, - { - "2001:b000::/21" : { - "autonomous_system_number" : 17419, - "autonomous_system_organization" : "HiNet IPv6 Service Network.," - } - }, - { - "2003::/19" : { - "autonomous_system_number" : 3320, - "autonomous_system_organization" : "Deutsche Telekom AG" - } - }, - { - "2400::/20" : { - "autonomous_system_number" : 4766, - "autonomous_system_organization" : "Korea Telecom" - } - }, - { - "2400:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2400:2000::/20" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp." - } - }, - { - "2400:3000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2400:4000::/22" : { - "autonomous_system_number" : 4713, - "autonomous_system_organization" : "NTT Communications Corporation" - } - }, - { - "2400:4400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2400:4800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2400:5000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2400:6000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2400:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:8000::/26" : { - "autonomous_system_number" : 9919, - "autonomous_system_organization" : "New Century InfoComm Tech Co., Ltd." - } - }, - { - "2401:8040::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:8080::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:8100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:8200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:8400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:8800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:9000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:a000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2401:c000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2402::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:8000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:9000::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:9800::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:9900::/24" : { - "autonomous_system_number" : 17676, - "autonomous_system_organization" : "Softbank BB Corp." - } - }, - { - "2403:9a00::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:9c00::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:a000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2403:c000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404::/26" : { - "autonomous_system_number" : 17709, - "autonomous_system_organization" : "Eastern Broadband Telecom Co.,Ltd" - } - }, - { - "2404:40::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:80::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2404:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2405::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2406::/15" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2408::/22" : { - "autonomous_system_number" : 55817, - "autonomous_system_organization" : "Nippon Telegraph and Telephone Corporation PF Labs" - } - }, - { - "2408:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2408:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2408:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2408:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2408:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2408:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2409::/23" : { - "autonomous_system_number" : 55391, - "autonomous_system_organization" : "INTERNET MULTIFEED CO." - } - }, - { - "2409:200::/23" : { - "autonomous_system_number" : 55392, - "autonomous_system_organization" : "INTERNET MULTIFEED CO." - } - }, - { - "2409:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2409:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2409:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2409:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2409:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2409:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240a::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240b::/22" : { - "autonomous_system_number" : 2516, - "autonomous_system_organization" : "KDDI KDDI CORPORATION" - } - }, - { - "240b:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240b:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240b:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240b:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240b:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240b:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240c::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d::/27" : { - "autonomous_system_number" : 2527, - "autonomous_system_organization" : "So-net Entertainment Corporation" - } - }, - { - "240d:20::/27" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:40::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:80::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240d:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e::/24" : { - "autonomous_system_number" : 4134, - "autonomous_system_organization" : "Chinanet" - } - }, - { - "240e:100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240e:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f::/24" : { - "autonomous_system_number" : 2516, - "autonomous_system_organization" : "KDDI KDDI CORPORATION" - } - }, - { - "240f:100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "240f:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:800::/27" : { - "autonomous_system_number" : 701, - "autonomous_system_organization" : "MCI Communications Services, Inc. d/b/a Verizon Business" - } - }, - { - "2600:820::/27" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:840::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:880::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:900::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:a00::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:c00::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1000::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1400::/27" : { - "autonomous_system_number" : 31377, - "autonomous_system_organization" : "Akamai International B.V." - } - }, - { - "2600:1420::/27" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1440::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1480::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1500::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1600::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:1800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:4000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5000::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5400::/27" : { - "autonomous_system_number" : 19108, - "autonomous_system_organization" : "Suddenlink Communications" - } - }, - { - "2600:5420::/27" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5440::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5480::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5500::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5600::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:5800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:6000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:7000::/24" : { - "autonomous_system_number" : 6939, - "autonomous_system_organization" : "Hurricane Electric, Inc." - } - }, - { - "2600:7100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:7200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:7400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:7800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2601::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602::/24" : { - "autonomous_system_number" : 209, - "autonomous_system_organization" : "NOVARTIS-DMZ-US" - } - }, - { - "2602:100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:200::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:300::/24" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services, Inc." - } - }, - { - "2602:400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2602:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2603::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2604::/14" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2608::/13" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2800::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2800:2000::/20" : { - "autonomous_system_number" : 10318, - "autonomous_system_organization" : "S.A." - } - }, - { - "2800:3000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2800:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2800:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2801::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2802::/15" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2804::/15" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:1000::/24" : { - "autonomous_system_number" : 8151, - "autonomous_system_organization" : "Uninet S.A. de C.V." - } - }, - { - "2806:1100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:1200::/23" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:1400::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:1800::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2806:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2807::/16" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2808::/13" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2a00::/22" : { - "autonomous_system_number" : 3209, - "autonomous_system_organization" : "Vodafone GmbH" - } - }, - { - "2a00:800::/25" : { - "autonomous_system_number" : 1257, - "autonomous_system_organization" : "TELE2" - } - }, - { - "2a00:2000::/23" : { - "autonomous_system_number" : 5400, - "autonomous_system_organization" : "British Telecommunications plc" - } - }, - { - "2a00:2200::/24" : { - "autonomous_system_number" : 5400, - "autonomous_system_organization" : "British Telecommunications plc" - } - }, - { - "2a00:2300::/25" : { - "autonomous_system_number" : 5400, - "autonomous_system_organization" : "British Telecommunications plc" - } - }, - { - "2a00:2380::/25" : { - "autonomous_system_number" : 2856, - "autonomous_system_organization" : "BTnet UK Regional network" - } - }, - { - "2a01:2e0::/28" : { - "autonomous_system_number" : 8374, - "autonomous_system_organization" : "Polkomtel Sp. z o.o." - } - }, - { - "2a01:800::/24" : { - "autonomous_system_number" : 3209, - "autonomous_system_organization" : "Vodafone GmbH" - } - }, - { - "2a01:c00::/26" : { - "autonomous_system_number" : 13184, - "autonomous_system_organization" : "Telefonica Germany GmbH & Co.OHG" - } - }, - { - "2a01:e00::/26" : { - "autonomous_system_number" : 12322, - "autonomous_system_organization" : "Free SAS" - } - }, - { - "2a01:1000::/21" : { - "autonomous_system_number" : 5617, - "autonomous_system_organization" : "Telekomunikacja Polska S.A." - } - }, - { - "2a01:2000::/20" : { - "autonomous_system_number" : 3269, - "autonomous_system_organization" : "Telecom Italia S.p.a." - } - }, - { - "2a01:c000::/19" : { - "autonomous_system_number" : 5511, - "autonomous_system_organization" : "Orange S.A." - } - }, - { - "2a02:1200::/27" : { - "autonomous_system_number" : 3303, - "autonomous_system_organization" : "Swisscom (Switzerland) Ltd" - } - }, - { - "2a02:1400::/26" : { - "autonomous_system_number" : 2119, - "autonomous_system_organization" : "Telenor Norge AS" - } - }, - { - "2a02:1800::/24" : { - "autonomous_system_number" : 6848, - "autonomous_system_organization" : "Telenet N.V." - } - }, - { - "2a02:2e00::/27" : { - "autonomous_system_number" : 12715, - "autonomous_system_organization" : "Jazz Telecom S.A." - } - }, - { - "2a02:3000::/23" : { - "autonomous_system_number" : 6805, - "autonomous_system_organization" : "Telefonica Germany GmbH & Co.OHG" - } - }, - { - "2a02:8100::/27" : { - "autonomous_system_number" : 31334, - "autonomous_system_organization" : "Kabel Deutschland Vertrieb und Service GmbH" - } - }, - { - "2a02:8200::/27" : { - "autonomous_system_number" : 9145, - "autonomous_system_organization" : "EWE TEL GmbH" - } - }, - { - "2a02:8400::/25" : { - "autonomous_system_number" : 15557, - "autonomous_system_organization" : "Societe Francaise du Radiotelephone S.A" - } - }, - { - "2a02:9000::/23" : { - "autonomous_system_number" : 3352, - "autonomous_system_organization" : "TELEFONICA DE ESPANA" - } - }, - { - "2a02:a000::/26" : { - "autonomous_system_number" : 5432, - "autonomous_system_organization" : "Belgacom regional ASN" - } - }, - { - "2a02:a200::/27" : { - "autonomous_system_number" : 6830, - "autonomous_system_organization" : "Liberty Global Operations B.V." - } - }, - { - "2a02:a300::/27" : { - "autonomous_system_number" : 6830, - "autonomous_system_organization" : "Liberty Global Operations B.V." - } - }, - { - "2a02:a400::/26" : { - "autonomous_system_number" : 1136, - "autonomous_system_organization" : "KPN Internet Solutions" - } - }, - { - "2a02:a440::/26" : { - "autonomous_system_number" : 8737, - "autonomous_system_organization" : "Koninklijke KPN N.V." - } - }, - { - "2a02:a800::/26" : { - "autonomous_system_number" : 6739, - "autonomous_system_organization" : "Cableuropa - ONO" - } - }, - { - "2a02:aa00::/27" : { - "autonomous_system_number" : 6830, - "autonomous_system_organization" : "Liberty Global Operations B.V." - } - }, - { - "2a04:2400::/27" : { - "autonomous_system_number" : 6830, - "autonomous_system_organization" : "Liberty Global Operations B.V." - } - }, - { - "2c00::/13" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c08::/14" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0c::/15" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0e::/20" : { - "autonomous_system_number" : 24863, - "autonomous_system_organization" : "LINKdotNET" - } - }, - { - "2c0e:1000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0e:2000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0e:4000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0e:8000::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f::/17" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:8000::/18" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:c000::/19" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:e000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:f000::/21" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:f800::/22" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:fc00::/27" : { - "autonomous_system_number" : 3741, - "autonomous_system_organization" : "IS" - } - }, - { - "2c0f:fc20::/27" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:fc40::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:fc80::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:fd00::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:fe00::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:ff00::/26" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2c0f:ff40::/26" : { - "autonomous_system_number" : 10474, - "autonomous_system_organization" : "MWEB-10474" - } - }, - { - "2c0f:ff80::/25" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Precision-Enterprise-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Precision-Enterprise-Test.json deleted file mode 100644 index 0e5796592..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Precision-Enterprise-Test.json +++ /dev/null @@ -1,1035 +0,0 @@ -[ - { - "::2.125.160.216/125" : { - "city" : { - "confidence" : 50, - "geoname_id" : "2655045", - "names" : { - "en" : "Boxford" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.7500", - "longitude" : "-1.2500", - "time_zone" : "Europe/London" - }, - "postal" : { - "code" : "OX1", - "confidence" : 20 - }, - "registered_country" : { - "geoname_id" : 3017382, - "iso_code" : "FR", - "names" : { - "de" : "Frankreich", - "en" : "France", - "es" : "Francia", - "fr" : "France", - "ja" : "フランス共和国", - "pt-BR" : "França", - "ru" : "Франция", - "zh-CN" : "法国" - } - }, - "subdivisions" : [ - { - "confidence" : 70, - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - }, - { - "geoname_id" : 3333217, - "iso_code" : "WBK", - "names" : { - "en" : "West Berkshire", - "ru" : "Западный Беркшир", - "zh-CN" : "西伯克郡" - } - } - ] - } - }, - { - "::5.83.124.0/118" : { - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "traits" : { - "is_anonymous_proxy" : true, - "isp" : "WifiNetCom" - } - } - }, - { - "::12.87.118.0/119" : { - "traits" : { - "autonomous_system_number" : 7018, - "isp" : "AT&T Services", - "organization" : "AT&T Worldnet Services" - } - } - }, - { - "::67.43.156.0/120" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 1252634, - "iso_code" : "BT", - "names" : { - "de" : "Bhutan", - "en" : "Bhutan", - "es" : "Bután", - "fr" : "Bhutan", - "ja" : "ブータン王国", - "pt-BR" : "Butão", - "ru" : "Бутан", - "zh-CN" : "不丹" - } - }, - "location" : { - "accuracy_radius" : 534, - "latitude" : "27.5000", - "longitude" : "90.5000", - "time_zone" : "Asia/Thimphu" - }, - "registered_country" : { - "geoname_id" : 798549, - "iso_code" : "RO", - "names" : { - "de" : "Rumänien", - "en" : "Romania", - "es" : "Rumanía", - "fr" : "Roumanie", - "ja" : "ルーマニア", - "pt-BR" : "Romênia", - "ru" : "Румыния", - "zh-CN" : "罗马尼亚" - } - }, - "traits" : { - "autonomous_system_number" : 35908, - "domain" : "shoesfin.NET", - "is_anonymous_proxy" : true, - "isp" : "Loud Packet", - "organization" : "zudoarichikito_", - "user_type" : "search_engine_spider" - } - } - }, - { - "::74.209.24.0/116" : { - "city" : { - "confidence" : "11", - "geoname_id" : "5112335", - "names" : { - "en" : "Chatham" - } - }, - "continent" : { - "code" : "NA", - "geoname_id" : "6255149", - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "Norteamérica", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "confidence" : "99", - "geoname_id" : "6252001", - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "location" : { - "accuracy_radius" : "27", - "latitude" : "42.347800", - "longitude" : "-73.554900", - "metro_code" : "532", - "time_zone" : "America/New_York" - }, - "postal" : { - "code" : "12037", - "confidence" : "11" - }, - "registered_country" : { - "geoname_id" : "6252001", - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "confidence" : "93", - "geoname_id" : "5128638", - "iso_code" : "NY", - "names" : { - "de" : "New York", - "en" : "New York", - "es" : "Nueva York", - "fr" : "New York", - "ja" : "ニューヨーク州", - "pt-BR" : "Nova Iorque", - "ru" : "Нью-Йорк", - "zh-CN" : "纽约州" - } - } - ], - "traits" : { - "autonomous_system_number" : "14671", - "autonomous_system_organization" : "FairPoint Communications", - "connection_type" : "Cable/DSL", - "domain" : "frpt.net", - "is_anonymous_proxy" : true, - "is_legitimate_proxy" : true, - "is_satellite_provider" : true, - "isp" : "Fairpoint Communications", - "organization" : "Fairpoint Communications", - "user_type" : "residential" - } - } - }, - { - "::81.2.69.142/127" : { - "city" : { - "confidence" : 50, - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 10, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "confidence" : 70, - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ], - "traits" : { - "domain" : "in-addr.arpa" - } - } - }, - { - "::81.2.69.160/123" : { - "city" : { - "confidence" : 42, - "geoname_id" : "2643743", - "names" : { - "de" : "London", - "en" : "London", - "es" : "Londres", - "fr" : "Londres", - "ja" : "ロンドン", - "pt-BR" : "Londres", - "ru" : "Лондон" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "51.5142", - "longitude" : "-0.0931", - "time_zone" : "Europe/London" - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "confidence" : 42, - "geoname_id" : 6269131, - "iso_code" : "ENG", - "names" : { - "en" : "England", - "es" : "Inglaterra", - "fr" : "Angleterre", - "pt-BR" : "Inglaterra" - } - } - ], - "traits" : { - "connection_type" : "Corporate", - "domain" : "in-addr.arpa", - "isp" : "Andrews & Arnold Ltd", - "organization" : "STONEHOUSE office network", - "user_type" : "government" - } - } - }, - { - "::89.160.20.112/124" : { - "city" : { - "confidence" : 51, - "geoname_id" : "2694762", - "names" : { - "de" : "Linköping", - "en" : "Linköping", - "fr" : "Linköping", - "ja" : "リンシェーピング", - "zh-CN" : "林雪平" - } - }, - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 2661886, - "iso_code" : "SE", - "names" : { - "de" : "Schweden", - "en" : "Sweden", - "es" : "Suecia", - "fr" : "Suède", - "ja" : "スウェーデン王国", - "pt-BR" : "Suécia", - "ru" : "Швеция", - "zh-CN" : "瑞典" - } - }, - "location" : { - "accuracy_radius" : 76, - "latitude" : "58.4167", - "longitude" : "15.6167", - "time_zone" : "Europe/Stockholm" - }, - "registered_country" : { - "geoname_id" : 2921044, - "iso_code" : "DE", - "names" : { - "de" : "Deutschland", - "en" : "Germany", - "es" : "Alemania", - "fr" : "Allemagne", - "ja" : "ドイツ連邦共和国", - "pt-BR" : "Alemanha", - "ru" : "Германия", - "zh-CN" : "德国" - } - }, - "subdivisions" : [ - { - "confidence" : 51, - "geoname_id" : 2685867, - "iso_code" : "E", - "names" : { - "en" : "Östergötland County", - "fr" : "Comté d'Östergötland" - } - } - ], - "traits" : { - "autonomous_system_number" : 29518, - "autonomous_system_organization" : "Bredband2 AB", - "connection_type" : "Corporate", - "domain" : "bredband2.com", - "isp" : "Bredband2 AB", - "organization" : "Bevtec", - "user_type" : "government" - } - } - }, - { - "::128.101.101.101/128" : { - "city" : { - "confidence" : 50, - "geoname_id" : 5037649, - "names" : { - "de" : "Minneapolis", - "en" : "Minneapolis", - "es" : "Mineápolis", - "fr" : "Minneapolis", - "ja" : "ミネアポリス", - "pt-BR" : "Minneapolis", - "ru" : "Миннеаполис", - "zh-CN" : "明尼阿波利斯" - } - }, - "continent" : { - "code" : "NA", - "geoname_id" : 6255149, - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "Norteamérica", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "Сша", - "zh-CN" : "美国" - } - }, - "location" : { - "accuracy_radius" : 3, - "latitude" : 44.9759, - "longitude" : -93.2166, - "metro_code" : 613, - "time_zone" : "America/Chicago" - }, - "postal" : { - "code" : "55414", - "confidence" : 20 - }, - "registered_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "Сша", - "zh-CN" : "美国" - } - }, - "subdivisions" : [ - { - "confidence" : 70, - "geoname_id" : 5037779, - "iso_code" : "MN", - "names" : { - "en" : "Minnesota", - "es" : "Minnesota", - "ja" : "ミネソタ州", - "ru" : "Миннесота" - } - } - ], - "traits" : { - "autonomous_system_number" : 2313, - "autonomous_system_organization" : "Precision AS Org", - "isp" : "Precision ISP", - "organization" : "Precision Org" - } - } - }, - { - "::175.16.199.0/120" : { - "city" : { - "confidence" : 50, - "geoname_id" : 2038180, - "names" : { - "de" : "Chángchūn", - "en" : "Changchun", - "fr" : "Changchun", - "ja" : "長春市", - "ru" : "Чанчунь", - "zh-CN" : "长春" - } - }, - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "China", - "es" : "China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : 43.88, - "longitude" : 125.3228, - "time_zone" : "Asia/Harbin" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "China", - "es" : "China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "subdivisions" : [ - { - "confidence" : 70, - "geoname_id" : 2036500, - "iso_code" : "22", - "names" : { - "en" : "Jilin Sheng", - "zh-CN" : "吉林" - } - } - ], - "traits" : { - "user_type" : "dialup" - } - } - }, - { - "::188.35.144.0/119" : { - "traits" : { - "organization" : "CityLink Ltd" - } - } - }, - { - "::202.196.224.0/116" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "location" : { - "accuracy_radius" : 121, - "latitude" : "13", - "longitude" : "122", - "time_zone" : "Asia/Manila" - }, - "postal" : { - "code" : "34021", - "confidence" : 20 - }, - "registered_country" : { - "geoname_id" : 1694008, - "iso_code" : "PH", - "names" : { - "de" : "Philippinen", - "en" : "Philippines", - "es" : "Filipinas", - "fr" : "Philippines", - "ja" : "フィリピン共和国", - "pt-BR" : "Filipinas", - "ru" : "Филиппины", - "zh-CN" : "菲律宾" - } - }, - "represented_country" : { - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - }, - "type" : "military" - } - } - }, - { - "::216.160.83.56/125" : { - "city" : { - "confidence" : 40, - "geoname_id" : "5803556", - "names" : { - "en" : "Milton", - "ru" : "Мильтон" - } - }, - "continent" : { - "code" : "NA", - "geoname_id" : 6255149, - "names" : { - "de" : "Nordamerika", - "en" : "North America", - "es" : "América del Norte", - "fr" : "Amérique du Nord", - "ja" : "北アメリカ", - "pt-BR" : "América do Norte", - "ru" : "Северная Америка", - "zh-CN" : "北美洲" - } - }, - "country" : { - "confidence" : 99, - "geoname_id" : 6252001, - "iso_code" : "US", - "names" : { - "de" : "USA", - "en" : "United States", - "es" : "Estados Unidos", - "fr" : "États-Unis", - "ja" : "アメリカ合衆国", - "pt-BR" : "Estados Unidos", - "ru" : "США", - "zh-CN" : "美国" - } - }, - "location" : { - "accuracy_radius" : 22, - "latitude" : "47.2513", - "longitude" : "-122.3149", - "metro_code" : "819", - "time_zone" : "America/Los_Angeles" - }, - "postal" : { - "code" : "98354", - "confidence" : 40 - }, - "registered_country" : { - "geoname_id" : 2635167, - "iso_code" : "GB", - "names" : { - "de" : "Vereinigtes Königreich", - "en" : "United Kingdom", - "es" : "Reino Unido", - "fr" : "Royaume-Uni", - "ja" : "イギリス", - "pt-BR" : "Reino Unido", - "ru" : "Великобритания", - "zh-CN" : "英国" - } - }, - "subdivisions" : [ - { - "confidence" : 99, - "geoname_id" : 5815135, - "iso_code" : "WA", - "names" : { - "en" : "Washington", - "es" : "Washington", - "fr" : "État de Washington", - "ja" : "ワシントン州", - "ru" : "Вашингтон", - "zh-CN" : "华盛顿州" - } - } - ], - "traits" : { - "autonomous_system_number" : 209, - "connection_type" : "Cable/DSL", - "isp" : "Century Link", - "organization" : "Lariat Software", - "user_type" : "government" - } - } - }, - { - "2001:218::/32" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35.68536", - "longitude" : "139.75309", - "time_zone" : "Asia/Tokyo" - }, - "registered_country" : { - "geoname_id" : 1861060, - "iso_code" : "JP", - "names" : { - "de" : "Japan", - "en" : "Japan", - "es" : "Japón", - "fr" : "Japon", - "ja" : "日本", - "pt-BR" : "Japão", - "ru" : "Япония", - "zh-CN" : "日本" - } - } - } - }, - { - "2001:250::/31" : { - "continent" : { - "code" : "AS", - "geoname_id" : 6255147, - "names" : { - "de" : "Asien", - "en" : "Asia", - "es" : "Asia", - "fr" : "Asie", - "ja" : "アジア", - "pt-BR" : "Ásia", - "ru" : "Азия", - "zh-CN" : "亚洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "35", - "longitude" : "105" - }, - "registered_country" : { - "geoname_id" : 1814991, - "iso_code" : "CN", - "names" : { - "de" : "China", - "en" : "People's Republic of China", - "es" : "República Popular China", - "fr" : "Chine", - "ja" : "中国", - "pt-BR" : "China", - "ru" : "Китай", - "zh-CN" : "中国" - } - } - } - }, - { - "2a02:d280::/29" : { - "continent" : { - "code" : "EU", - "geoname_id" : 6255148, - "names" : { - "de" : "Europa", - "en" : "Europe", - "es" : "Europa", - "fr" : "Europe", - "ja" : "ヨーロッパ", - "pt-BR" : "Europa", - "ru" : "Европа", - "zh-CN" : "欧洲" - } - }, - "country" : { - "confidence" : 95, - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - }, - "location" : { - "accuracy_radius" : 100, - "latitude" : "49.75", - "longitude" : "15", - "time_zone" : "Europe/Prague" - }, - "registered_country" : { - "geoname_id" : 3077311, - "iso_code" : "CZ", - "names" : { - "de" : "Tschechische Republik", - "en" : "Czech Republic", - "es" : "República Checa", - "fr" : "Tchéquie", - "ja" : "チェコ共和国", - "pt-BR" : "República Checa", - "ru" : "Чешская Республика", - "zh-CN" : "捷克共和国" - } - } - } - }, - { - "::212.47.235.81/128" : { - "traits" : { - "is_anonymous_proxy" : true - } - } - }, - { - "::212.47.235.82/128" : { - "traits" : { - "is_satellite_provider" : true - } - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoLite2-ASN-Test.json b/3rd/libmaxminddb/t/maxmind-db/source-data/GeoLite2-ASN-Test.json deleted file mode 100644 index 94b733b6f..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/GeoLite2-ASN-Test.json +++ /dev/null @@ -1,37 +0,0 @@ -[ - { - "::1.128.0.0/107" : { - "autonomous_system_number" : 1221, - "autonomous_system_organization" : "Telstra Pty Ltd" - } - }, - { - "::12.81.92.0/118" : { - "autonomous_system_number" : 7018, - "autonomous_system_organization" : "AT&T Services" - } - }, - { - "::12.81.96.0/115" : { - "autonomous_system_number" : 7018 - } - }, - { - "2600:6000::/20" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - }, - { - "2600:7000::/24" : { - "autonomous_system_number" : 6939, - "autonomous_system_organization" : "Hurricane Electric, Inc." - } - }, - { - "2600:7100::/24" : { - "autonomous_system_number" : 237, - "autonomous_system_organization" : "Merit Network Inc." - } - } -] diff --git a/3rd/libmaxminddb/t/maxmind-db/source-data/README b/3rd/libmaxminddb/t/maxmind-db/source-data/README deleted file mode 100644 index 11a3e7b30..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/source-data/README +++ /dev/null @@ -1,13 +0,0 @@ -All of these but the City and Enterprise files are JSON dumps of the databases -created by the GeoIP2 build integration tests -(TestFor::MM::Integration::GeoIP2::Build). - -Additional data was added to match our legacy test databases. - -The City file is of unknown origin. - -The Enterprise file is a single example IP address, modified slightly to -include all fields. - -The Precision files is the normal GeoIP2 files with an additional marker -(128.101.101.101) to differentiate the two. diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb deleted file mode 100644 index 14b418102ffde5bbf7c5ddbfed88c045bb211e6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4024 zcmZA32Y3`k6u|K}M<{|2MM0{Z(yJJX2uN2*LJ5S9a9narI7n`fyGuww1*IyebU{#x zf*^|0L8=N^K>-D&2}tj~*l>3LM;6VO@B4l4&6~2bvzdq}5%q?MOaB%V$)h7fB!(z2 zcdme0G@`1&M4;>&0I_lT2H@Xv1GIWM6&=tBtcjy5HR9QJRfQA6n@z;wL!(20}VyK)}X&lVXZ1dg=x_ z$&grsS?v*BGC?GhC<_MbX}J<6+ee@$eZlN?X-b$A2bv~lT|H&M^u3_TU5<+kbPwZ54MHmJ0kDu=u@KEB6D=~p~&3a!DJq7@4@>p9~Qs|un-pIzJSH7>?8OX zmcS=A);jMlcd5v-+@vfQSwZDWSOu${k~Pe?7CwV@BI})!4J0?hCXvlf+vg;|5c!g1 z^qg(gk=~_kc2d65Urr&Bul2rM7x{+dxA2`#UJ&_Sb68|M$sOfM#2Jm&8r$LMezPQXd0@)VV)Mb6N67S1^( z=j{?}mWxjElE`Hzx*~Fwe%DCqV*Q%!6L~}ACT+LiHvFO2`41(3iu^_LZ<~8h$Q|q6 zv&xh%K;;vapAH3_w);dCBw}Uiey6Q4gB1}KOTP!;K`06j!NZ_8 z*;-O@c*Mq9wJO12C83n4(v*~evbmLdKkW|XzzvVV<4_(dKt-qom7xk$g=$b8YS>6$ zQMH);38)QELLAhAx=;`5!&A@z_~WP=5;cOx@C-D8rqB$U1NWb5Nz@9Sh3B9(v;pov zl|YmTZGrnwwI}KTNzf5GK{9lPF3=UaL3ii@J)svo551uec%UzMLEnGY(MScKP4p90 z{Ya)kf8hR81BeDfI&lA~0Fenn7^IIIcZUjz3X_aLCS<{2UHOWrY@!?(qRA_2D7*kK z!b>m=hQrG?`Z(SF>#atJ8mS{bbTx`oH(JyfCpnfR_n&%A)Hu6Mji-dK(H>Lp*_(Qu zf74-tsEN)flSEB+qA8S2g=z4XsObzn!>Q!{Q!_=)a+2?edY8)CFvn?|D{3Ce_uze) z4-4P}SO|;YLs$$S0r#I;Li7oI3QJ)bEQb}a5>~-#SOaU}Ggt@fVFPT0O|Th02YvTh z=krV00$X7ld<9>_H}EZd2j2ttpV~q61N;a(VHfO%pWtWM1AE~Y_!aiSemDRJ;Sl@= zhv5huh2P;A9ETHd5>CNsI0I+l9Gr&>a1k!SWw-)Y;Tl|r8*meD!EN{h{)E45TW+Q9U3Okv%KkUSrSHEyI>Qy>iXo{x{rBha(YF4u#~UyMIT>bVSmjT;H}qr$ z1Mb+PZkIdO%16wQ$H?|aJOR^ZMDxiy-`@;J{DCx2Fl1)=eMTtS)Im1|GgH$2sa8vN zjyrbo_KWSj+3oxRU#(O#<8-eSf502c@$@r88QzE|!#hAvkY$9zelsxF_5W6Xz-gV6 zn3CyF_j!zHawA>ppo3#FyoWrYBs<7WHsZH5`9KEHRKOQ z^zcVo7=hk#6uEPY-0?~7&PF)mZWSHNU8SFQpy7_zSu@md>(#oAY;Q&|-EappLqRia zgxzK!J*R4dKbX7xeDUetKw73Z%?PU)Jz0XaXP#6uGZ6X0l{YbDq?#e0C+r_$%q{aT Dy-~t4 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb deleted file mode 100644 index dc803d41e6d43cd83b776082ded7a3ec109c869f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19041 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 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb deleted file mode 100644 index c0a0807581df4c7f4474bcf81b27401331c913a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19423 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 G_WuRtDsa{S diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test.mmdb deleted file mode 100644 index b93cf7dcd7d6e9ec2a83eb81020a112e97060237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19403 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 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Connection-Type-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Connection-Type-Test.mmdb deleted file mode 100644 index ec6cbd2d5a36d94e1bee5d045164438dbbd5f4ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2463 zcmZA0cYG6N7{Kx8O4)mrRp8hyw4f;NNh;8m3Q9#0FRZ6U@VM-@h|}@pb{p+B+#!A zzC<-lhAFTKYzk9hGuRxa!4|M3Yz14xHn1&h2iwCAup{gQJHvE{K@IEzGhimnf?BA9 zdYBCjuq(`gxv-mv{3NnF(L88`JzzfU346f;*c%qYKClS(g*Yq*NAGu~NJ7&hk|db| z1x?Uw2)~ak5lNF=3d_KS40zx}7WUKVXAd9;c__eg*xwK~Tl)U3dfQ{ouR~Ud9H5i> zAP2%haInD~a3!6Gh#VRv4-+{&ijJUVmB^7SKMIb9W9Zb+6AnBMj@O5{SmXqv6X7H{ z8BWnH=ZKt2bQ+wllV^#XL3E}e92;Kj?EggP(sG_&aFNLQ#hP3oa$zyj>&!J*L!05B z)?8k8yI#Y+!W2cS>zUyx5903 zd(?6VQ|=VGi`w0APtqF-K;*%wWi82v;9-$RnDS`U@))(p;R%r^X?ZGY zd0J#0$!Fl%sP>%5^HKDI`99%6UZV5msP>A;tNP8>i@X*kUuWAl;7xc7-WGX>Dep!L z-lNtI@52WoAJX|z)cLWcOau^OHU?kWu3Pv0BHO!tNW5pUrZ9GhX3aEsM zFbNtB`gis3zxFvv-}6*5pZ2|YzBQ|6)TAA^kZrfE+L)7Y)s&ifvvn{lrd+q+I)N$p zLDmnPyjrtvLxa=OkoHoOlYVCX!bIA0g4TGGA7q?-JmW0&gZOe4z8`t!~t(txu_3GDv5`R7pEU@!D&`Gt5ok-=lLlWPx=Kfzt*a%4^+|*Qt@1Rg=#DR8?h)rz5oCK diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Country-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Country-Test.mmdb deleted file mode 100644 index d7124e488236427c2b247125776cbf648cd2012e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16189 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 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-DensityIncome-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-DensityIncome-Test.mmdb deleted file mode 100644 index 0c45343ba3134695f405704ef9297c6dc5906f15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1650 zcmZA0S5wqr6vpubV(((Fv5NvK_FljOh@xUa#1M90FuI$>WLH^x@4a`yuGqWW$)z*S z_!Z>ND=+*42L6swbMu?$yzRW1L?lT>>O_*Ena_2R6jF0&0WF~ww1zg&7TQ63=l~s| z6Lf|ykP2O)8+3;r&=Yz=Z|DPkp&#^z0ieM^7zBf12n>Z`FdRle8jOTdkPaD;38P^Q zjD;*12jgJ^OoT}=8K%Hgm1dmOvpa z^*JH3jI0{`=s3X#entrszav_WKJ zkRl>ck`)x~rk_9@kxfC-rRYHn;_w-^h*Sj&5)`+JY@@gxb_7#)itGx~Zjn8ty|54V z!vQ!5jn_ORayUpwM2?b<1;yhu@e@wMDL4&h;4GYj^Kbz!!X>y2SKumKgEEmDoPHB- zK{eFCZMXw>;U3(F2k_A6BU?Wbc}%eup1@Oh2G8LIyo6Wq8s5NLcn9y{1C;%PAO3n8 z78{$DYg8)Tv_f`N)$hz+=Gaa=V#G|_(!vnpQAconIa|BVk=Rc4&P{a&h-KbAcAQ5yPsC`)|lgO7Tz2 bv+S_aLw4MXeX7fMRmgV3x@T@xHGO{pqnS*n diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Domain-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Domain-Test.mmdb deleted file mode 100644 index 216372f670f97ffd4b12b11894dee6fee1418267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4947 zcmZA22bfgV6$kMDd4m*1dQm_ent;I4i%73-qexNe@@D4k?!e4@!^|w~VvP~IsMy5< z8e_rU5@U&?F*fWyv0x2J6pby3Cg$AxAND5U`}lry&OPVe``*mA2N1vu^*@OL@+r`Q z(E+3-X+>I-HsnBZ5NS&eChbUj(t&g&ok(ZWg>)s|NOy7wIh6DuJxMQe80k$8Cvnn; z^dj^K?agRWH33B3?W0wFj7W_lM!Sj8AV2uF=Q+mN5+#0q?uex){zX!60Ou~+YrG!naTAe zugB_}Dk%CBFY2BT0}aZhY}f#7WM!i!^@2@qvrWJWE;^A7ClNj66t{M&O?q3ob{hFP zaJntQX5IQ+CeI*elC#L!;Q1>{0<5!q@nJ-8USq&YHg<1$U&23*dh zd7oDRSGwpb9=nZP4P0Z_aIIF}2PZCu+9?6488cgY*L_6v)t)U)tQaud0k+(K>z zcG?q6rMckki^(T|CtdP)z*E}3n`^%(PXo_r$!_3T@|?x~6rZ;xX6*&;qMz_0@REyO z23~Q|tH5i`k=f!6ZTJ*;(f8bsINZtkBbB(?QzR*a|+(*77Uy;9&ugNzSbAoC3 zPSNx96TT;Z2maxb{{()p5q@k=n%;ji`IAMoTa%(1Jd3H4n0*v!0Xe`WTQb>-v?gsV z-sg~mv~MJnZ6OD1)DO~*Tel}2NJr9%bS7Q2p$DX^Mn6KjS?pc9Lk@A#p*&AZdfGlM zhV+6Q=Azz^!(9|N`$77Uz83Se{aIq3b^zoE8_7VI9K=T%3^~#zhd_pE#6MOt3{vKz z;gAu{(f*QAkkPhX#*ndOoW(xhcpfwXa+FI>gdEMvNiI1VGDWXD6EYQuwSi0{(=B$h z8Fn+XHp}+uC&+A544FgbTFfgb*W?;V1rMs!=s4b`3R2DFJTjjwAPdQ{7JKX>$YLg! zxa3mAy1VFjZoP~whpb@3N>{RqYpY2OV*EP9XJx`wCLt-kZl09^g!9kdrH;vZl15D5 zysRbbNQPudNFqp%2d%f5KJ%6e?${!vfyoVIBWWZ}L}#DrJAs^NiRm{cC&6+uIfa~R zF%73_$z2egeX`6p*W&T?y)DkAlJHsu7hmn);q}cee{_i&c zzDM3CACNudL-G;%n0#Wv8pvn7gqeRjJN7c-{1csh=7~7}MCYH0z99R^m*gvA=3i+L zeGU1B$#2Pb6aAyA4c>u7=bwq%5}ki0(*3-4@Y*x#piG6=(XDlY*O^flm+Z>EZlpUrGyh7P zmF8a$uJwf1i)*F%*PBsk{>2&fA$>_d(w__^^Of-~ z!{Lo!awHi=Mw2mQEEz|}lL@3W|0Xix{PQL;noOoxV%r!^Bh$$YGLx8_&4M?Z(Ht_D z979Y=IXuokuae0sQcdQO`NT9VfVYs5n}6OSc#D}_LY5NKz?tfC{&}2#-g0;=T**p! zs~D|z$r^b4DcT>A&zGElmt;wb1f(?o>KN6NG+9g5kqpUNVz*fEzyJ2kNkv&d9ad)j z#%wxFl_jI>p172U4I84yvM?x`VEx9RP%H)2g z2Kyg!kv?nEFBB6Eg>)Dc3j1$V7n!@3ta*erfasi2U|r*lQ!c+ZR=Ts4%-aW2Of>-Q9&RqBrq zs?{$lUaBy=4vp&#<3XdJ&1Hgkt|6a`3PB+rg_)+o73o~_m0Ol){IIUUuL}y&LXW8k cqf}6nj2gn?E-$Ri2gxX(swt#51v`5E2UD*RL;wH) diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Enterprise-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Enterprise-Test.mmdb deleted file mode 100644 index ae9b21b8b50758659258b82fc2fc7a71b99c9937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6545 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 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-ISP-Test.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/GeoIP2-ISP-Test.mmdb deleted file mode 100644 index 875738ec000058462b7cd09ca3800305aa8e31be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75113 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 F{RD;zY&ie` diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-string-value-entries.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-string-value-entries.mmdb deleted file mode 100644 index 799a31c19cc74ef5ac9ffc01c3fb67ab98ce488c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmajZNlwEs6b9g*Qs#M{!Auft2u%UOl4(IpS4bd)s>n@DF>36{P7!6#Jz&i#H~@!W z$%-ow9uWvO*wUxp_ItL0CSV!Jkj-S4Y$038HZmz|2RbNsl3ips*+ce{ePmMK4-8Nq zB!|dha)cZu$H=699GIXyNlpO_maI{920b57n(`|`=Q`}Fc&;HR$D@wDFN0w>BxG}t88Mo}_^HRH7kkR+g lvqv?qs&!r!wkexjT~Im@p0DdFeqJsb;cF9kR^Exn@ec^|f7Ac~ diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-pointers-24.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-pointers-24.mmdb deleted file mode 100644 index d534c4678827af4e69a139c7be2c105b429566af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmZ9`%T59@7zNM~oakBG z(Zi$ntaMM(srKIQ%DY`T)0NZheA?;nWM1CBEdF3g<)my~`@Akm#k~f*)n1JUtj6!O z$L@vaORZYQ|68g4Zl8;#x~w`(xZ19m##Jo$XgNIKCGHCrG+dFt5Pnc}gl~J&4Z{CE zvO-zy!$kh4mu*%qdkzx0id4cE1?m1yVV+gFD%W{g_=XvN5k4v??FeS;x(Z&CMNin; LbC@riq80xJPzQA& diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb deleted file mode 100644 index 49d80775b4c10ed9463c26091bfa6ea0ca1ec9ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmZ9{%TB^T7zN-X*8Ba2c*hHgZU`V6U0O&)NZqIlbla*~`Pr^y*I=+6Rk zl;_C>a*!Ho0!t4e7roN-j5S Z*VH}H=ABsK?5ePzYG$l#$~sLQd;=QMd;b6c diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-decoder.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-decoder.mmdb deleted file mode 100644 index e0e73b0549a2123878febab10c1b2ee2ef103cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2933 zcmZ|Q2Urtl9LMqhg(%>}z4hFR8x(PZKtMs<14WFNcb@>HFmQ+%Nxo?|uKtbGe8pqD&NVh_XW@PLzQnPLTs5^{CXx zcuc@VY=8~15jMsq*c6kn88*ij*b-Y|YixsUu^qO@4%iVpVQ1`uDt5(g*d2RdPwa)g zu@CmeWbB9iaR3g)K{yzPU<#(t;c8rCt6W81hwE_z zZp2Nv8MoNlKai~=+X&mSuDFwY9-faE*jg_~6OoJXV(ORRrFa=$j#t>)>+iBB+u=&A z>+ovwHFzyvhkI=8$yFlP$MOv#H&VO_Z^m2jR$F`iZFsxLUcw!CC*Fno@NQds{yliF z?dkUJr}6+kh!5ez_y|6VkKyC^1U`vR;eM>f1tL!q4&pQTEIxS88*ij*b-Y|YixsUu^qO@4%iVpVQ1`uDt1Nd<8%|HJGn=!(o>XPid@Zz~JVs1#DSzK2PoOpfI#qD+nDX@u!G180gdi!d9lYl{eTM420_ z6pJ#CT!Qn_jqI*yWDk1LhdP#G8J43T7vdreU>4%}5Gmg2mP)Ms3XP(D21G;8NyvtJ=(Zg$V zeP+}X(5=70y5TAfm|Db{V83(ujYz6>lVw+E!NYk`>)nu)bcxF)rS0LEnzEl`+E8&6 zL?fl??r_w5IH2MzNagOvu=Is76h5 zDkrRS_AW9)waKE67kI&tDz>lV4n^+3Q>vy=~Ev)jXGY=+NMYSZs zVIS?GmQITrey{1%yQ;Oj_NfEZ+TDBi)*LU?mKFL9-$1WfakSXuH?&ZtyVML-Xc2dX zw$Kc@m*}Ce-!!Tm|2^wB&Yay-;EDPJKDQn;z2#2FoYvW!3Vm8c^Jrn+9jOfJvrq4% z=47cky4^-douP*#1wK9O4f%r+Yl|aUx>3^ie90u^uaoqO}amR%#3An`bK%zp%lOEK=q|6kkfp*dkM!5SPa`q{F03Skc zo_qy|zeK?{`Q>Z-wJ9(JqydW@CT((r93{udxHb+x4eqd4HkI~cCWPez_k%d zcC7!WLjIjTmĺ?G?!zh+xEiTslru!xnJ;a=1VdEttis1$JHYY|5Admj#$Zg(?P z==Gd-?RsD%m9GiO4KIrD_ZRj>oylsGRk^Y3_=)&ZQL2D@zG}+oHC@u&S32;FX!B0; E8$DBaJOBUy diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-28.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-28.mmdb deleted file mode 100644 index 728beb762c5132ba939ad53db086fd55eae8e83e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmZ9{$xg#C5C-5Ogni%2R-i1sR%%(qIjsb=3MV)K2g^;|#;CC)J4Lj2-h-Zb3Lb!m zfEy=X0jEzFo>O+yYKYd8kjGB^O+hD(4Q!)^bkpaHOJk{Pjw>>~$= zLd-k$ygNKPFBbaiBnf92PE++!sxGDKVp0#94@)m^UoL%gx$p~~3_tJcTu{{^4XHvJ zlaSs^MIM;aT#BCc|CEd0)8|^f&09WUk@N!Fy2+HET%X3YPBkNOCt{T=rsJB=w5NC! zn|U7&6K=AZs|@Zr-QfDqMy?!i!8EJ#=;tf!ixw5lHf=I(*=B@kstV~d;>os%U-LD^ MJgI!5d6)IF-^T-ZKmY&$ diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-32.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-32.mmdb deleted file mode 100644 index 162c7fd49ceaf84a486df473a961ffdd2138bbc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmZ9GNlwEs7==R!^E{Oq!q9D{mO-r3NL^0Ed7b zE3UvFc%lVIpT76od6o^s7%&VYOPKH=Y{5hDFgyaMol#;8^Ef;KPr_61G&}>R{aIoT z^E|u&FTzW32405K{tB^*c@17C+r$QOL~Ifcu|-@E+r$l#_N&AW@-Dmw@534<_12ps zqO*MN`#VmD)1Tp_FCX^hLSN3O8Rdh*^XsR}9$X>AT%ejCx4w`}x4o*;O_q2~cBiy= z&vh)6?3({ih3uU^Rs5D{gdUGnP`AwMO!3hTS;Bl4b1!K}ymZOqq!RKt&>~9czITU9 zH{G;L_|NIoul{V<#k!C@=4BE6zQQ_hFj;G{8jnqjuAov`s*rnuYRTj!ThTmFI`m@E H;a&R+O>%fd diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-24.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-24.mmdb deleted file mode 100644 index 4249d47b4c8f84454702ad6e9e2ae183c12a6256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1545 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 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-28.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-28.mmdb deleted file mode 100644 index 4707051ca4a5486efca90ea8b2197b0cc61632a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2089 zcmZA0hkp}g9LMorVyz0I;s9i5St=@}3#>r}(?Z*X;3_HtrkCW}Ty5@R2DHTmT0t2O z_Ox|Faf9GML=;fAd!ns_A+vvh&*f8VW zL^K8i5QGruPzhC_npwgk2B{kEgBpl{2^QFOQIY#eF^EF~k}wsffn8TCQb($X>54~0 z9uRS;f7XKv)%Oo6RC7M8P#vV|9BP|qP%sl7g~w7j+V{x5!{ey}nFX`q33w9bz+9LI z^WiCY8lHh?VF4_JMX(r_z*1NS%V7nqgjKK_o`Xhcg6H7{crk@Twa3f6^egZxtbw)A z4C~-Ecpct=H{mUK8{UESumRqMjj##cgZJSB_z*V3N3bP@!|tq)MYfXcp7=x@_Wo@X z`IJHRbKBc&@85RV0XyMy_yTspZrB5RVIS;=1Mnq$1r;LSaKCTiJNO=cfFI!}_!)kI zgYYZ-rZ~;gEh4Q9{tkb@pYRtPg2QkGj>6w?435JII0>hqA`KNf9W8Dn>T$Vpvs0fD zb}aih7N(_ww3L^Ya_!WyOnz$8rkAnWi~ngKWmu(%{F=iNuws@*P~W2 zoZ+0r$F(&NqywS+42m{v&l2d$);*xKfe=|L+N^2d#Oy{Yd%SdG`5 diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-32.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-32.mmdb deleted file mode 100644 index f1ccfcb564945b1ab8906b5d6f4a8066512367d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2331 zcmZA0hkH|17{~FXmNEncgeu6WfFQ%tO$|e63ta|5*+tUZ5-a_h$*|Nwe&g*`nlGb8s%s^J}iXU-`^@*51bt@I(9v7vMr% zgo|+rF2!ZI96!cS@KgK@SKvzg9KXO-xEj~sTKp1AuoS<-ukjndX4z}sGPfQ#;CHwY zH{tjA18&AGxD|iIpKu#)#~rv6cj3?Y3+~2W@i*Lqd+~R_X4$WQh$FoN2oK{CJc{Lb43FapJc+09G-e9VGCqgr@d94NOL!Tt;8nba z*YSq%5#tJBCF7fT3vc5;_%Hs4Rro*N!Mk`5@8bh}h?!3*V*RHgL35>9ERo?g-#8gl zYh!#siU~+j0Vz_Zx?`ei7OmnKOSbsb{KyBAEtV)tge5|bQ~cwYCqryNh~HHHz^Y8O zYPuubZsb>GWNEtMF0^GE?tH~-%U5y@x2-^Rdo)8Y4SIT2)9Y7D(zAS8p2McP47)Qp zXk2JwvDKk?l`O@h+PsA>HEE>k@uoXekKL`gyyCpd1XZ`n$*?4zODJ-V3YZ8>bZWZl yQPVV6-MY6@af*N>U6hiH{1@JM=MfG!yW?+6W5>s diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-nested.mmdb b/3rd/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-nested.mmdb deleted file mode 100644 index d77e4ca2b027254194f89e2cd090116bc1fa2ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2590 zcmajdcT^Nt6vy%VV8z}Qv5&n10`^K(0l@+mL|kTf2N+~$)|p)+rkKQ--g}RvC#LtF zV0tmVcVe1pruVk|nBceo26-g51iX@9l74eB&E7E~V3UU>Xj@K{yzP;7}Zf!%@Q#I1)$UXdHuMaU71v z2{;ia;bct549vtSn1$JxgHv%DPRAKI6KCOUoP%?59?r)Fn2ULsj|EtWMYs?b;bJVt z5-i0fScc`e6qn(0kqbmtkSnkfSK=yMjcc$9*J3rU!x~(Veyl|u0~o{*8dxWCgh;)} zW|j>iCZQ2GU=xPXLfg~(AR{6h2@bXwqvRNF!h<}$YnwEB=PR;~)4Z{^h9z6((Ua`mh70U`OnPoiV<>i>R*TZiz~F zQ9Z~#u~(wro6tv8-$bRKsQ%<_H~`adAP&O8I0T2{FdU8=j=+(katNbDjV6r2u{aLL z;{=?DlW;PoV+Lm86wJbGPpLhinnpc-4%0==NaUHKW+n1$!W^87^F+-jEWr5QTtc3x z{6wWdR3W(t7vdsZjKx@jrMLvkupF1-GF*-;umUS_C9cBNxCX0mEmq??tiko@M@~cO z8&a+ z(3+GNY)#&|dtaHpxy-ae89_U|w>n^2y3_2hvz@RW^@sIF+wpHQ9M`n1mZbmQHLU}8 zca#QVW>d&-MC@RLFR3cEV0&3ekLm&4HT==$h*9JFXOLEyuaz5a)Cg&X@dm9T>coQ4 zm}9u5A;S$iW+WP))|PKrHM#%0MXQWINlOgU(zT#%MRn71wUA*%nwmAMeNy~1GC2j! x-9N6xjO_n!DaB2?RUgyq4OjW%qf0D1WcY)2%!=+(ZmDAgZ71Y+%`HYt+TRwV$&~;A diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/README.md b/3rd/libmaxminddb/t/maxmind-db/test-data/README.md deleted file mode 100644 index e656b1500..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/test-data/README.md +++ /dev/null @@ -1,26 +0,0 @@ -The write-test-dbs script will create a small set of test databases with a -variety of data and record sizes (24, 28, & 32 bit). - -These test databases are useful for testing code that reads MaxMind DB files. - -There is also a `maps-with-pointers.raw` file. This contains the raw output of -the MaxMind::DB::Writer::Serializer module, when given a series of maps which -share some keys and values. It is used to test that decoder code can handle -pointers to map keys and values, as well as to the whole map. - -There are several ways to figure out what IP addresses are actually in the -test databases. You can take a look at the -[souce-data directory](https://github.com/maxmind/MaxMind-DB/tree/master/source-data) -in this repository. This directory contains JSON files which are used to -generate many (but not all) of the database files. - -You can also use the -[mmdb-dump-database script](https://github.com/maxmind/MaxMind-DB-Reader-perl/blob/master/eg/mmdb-dump-database) -in the -[MaxMind-DB-Reader-perl repository](https://github.com/maxmind/MaxMind-DB-Reader-perl). - -Some databases are intentionally broken and cannot be dumped. You can look at -the -[script which generates these databases](https://github.com/maxmind/MaxMind-DB/blob/master/test-data/write-test-data.pl) -to see what IP addresses they include, which will be necessary for those -databases which cannot be dumped because they contain intentional errors. diff --git a/3rd/libmaxminddb/t/maxmind-db/test-data/maps-with-pointers.raw b/3rd/libmaxminddb/t/maxmind-db/test-data/maps-with-pointers.raw deleted file mode 100644 index c9b25010e44a75403c00755cdc3013e4feec969c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59 wcmaFpk&~a79-p0B=?!L-CFYc-8a`BDMB*Af^n@ugQs8>1pr#range_as_subnets(@ipv4_range); - for my $record_size (@sizes) { - write_test_db( - $record_size, - \@ipv4_subnets, - { ip_version => 4 }, - 'ipv4', - ); - } - - write_broken_pointers_test_db( - 24, - \@ipv4_subnets, - { ip_version => 4 }, - 'broken-pointers', - ); - - write_broken_search_tree_db( - 24, - \@ipv4_subnets, - { ip_version => 4 }, - 'broken-search-tree', - ); - - my @ipv6_subnets = Net::Works::Network->range_as_subnets( - '::1:ffff:ffff', - '::2:0000:0059' - ); - - for my $record_size (@sizes) { - write_test_db( - $record_size, - \@ipv6_subnets, - { ip_version => 6 }, - 'ipv6', - ); - - write_test_db( - $record_size, - [ - @ipv6_subnets, - Net::Works::Network->range_as_subnets( @ipv4_range, 6 ), - ], - { ip_version => 6 }, - 'mixed', - ); - } - - write_decoder_test_db(); - write_deeply_nested_structures_db(); - - write_geoip2_dbs(); - write_broken_geoip2_city_db(); - write_invalid_node_count(); - - write_no_ipv4_tree_db(); - - write_no_map_db( \@ipv4_subnets ); - - write_test_serialization_data(); - - write_db_with_metadata_pointers(); -} - -sub write_broken_pointers_test_db { - no warnings 'redefine'; - - my $orig_store_data = MaxMind::DB::Writer::Serializer->can('store_data'); - - # This breaks the value of the record for the 1.1.1.32 network, causing it - # to point outside the database. - local *MaxMind::DB::Writer::Serializer::store_data = sub { - my $data_pointer = shift->$orig_store_data(@_); - my $value = $_[1]; - if ( ref($value) eq 'HASH' - && exists $value->{ip} - && $value->{ip} eq '1.1.1.32' ) { - - $data_pointer += 100_000; - } - return $data_pointer; - }; - - # The next hack will poison the data section for the 1.1.16/28 subnet - # value. It's value will be a pointer that resolves to an offset outside - # the database. - - my $key_to_poison = key_for_data( { ip => '1.1.1.16' } ); - - my $orig_position_for_data - = MaxMind::DB::Writer::Serializer->can('_position_for_data'); - local *MaxMind::DB::Writer::Serializer::_position_for_data = sub { - my $key = $_[1]; - - if ( $key eq $key_to_poison ) { - return 1_000_000; - } - else { - return shift->$orig_position_for_data(@_); - } - }; - - write_test_db(@_); - - return; -} - -sub write_broken_search_tree_db { - my $filename = ( write_test_db(@_) )[1]; - - my $content = read_file( $filename, { binmode => ':raw' } ); - - # This causes the right record of the first node to be 0, meaning it - # points back to the top of the tree. This should never happen in a - # database that follows the spec. - substr( $content, 5, 1 ) = "\0"; - write_file( $filename, $content, { binmode => ':raw' } ); - - return; -} - -sub write_test_db { - my $record_size = shift; - my $subnets = shift; - my $metadata = shift; - my $ip_version_name = shift; - - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => $subnets->[0]->version(), - record_size => $record_size, - alias_ipv6_to_ipv4 => ( $subnets->[0]->version() == 6 ? 1 : 0 ), - map_key_type_callback => sub { 'utf8_string' }, - standard_test_metadata(), - %{$metadata}, - ); - - for my $subnet ( @{$subnets} ) { - $writer->insert_network( - $subnet, - { ip => $subnet->first()->as_string() } - ); - } - - my $filename = sprintf( - "$Dir/MaxMind-DB-test-%s-%i.mmdb", - $ip_version_name, - $record_size, - ); - open my $fh, '>', $filename; - - $writer->write_tree($fh); - - close $fh; - - return ( $writer, $filename ); -} - -{ - # We will store this once for each subnet so we will also be testing - # pointers, since the serializer will generate a pointer to this - # structure. - my %all_types = ( - utf8_string => 'unicode! ☯ - ♫', - double => 42.123456, - bytes => pack( 'N', 42 ), - uint16 => 100, - uint32 => 2**28, - int32 => -1 * ( 2**28 ), - uint64 => uint128(1) << 60, - uint128 => uint128(1) << 120, - array => [ 1, 2, 3, ], - map => { - mapX => { - utf8_stringX => 'hello', - arrayX => [ 7, 8, 9 ], - }, - }, - boolean => 1, - float => 1.1, - ); - - my %all_types_0 = ( - utf8_string => q{}, - double => 0, - bytes => q{}, - uint16 => 0, - uint32 => 0, - int32 => 0, - uint64 => uint128(0), - uint128 => uint128(0), - array => [], - map => {}, - boolean => 0, - float => 0, - ); - - sub write_decoder_test_db { - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => 6, - record_size => 24, - database_type => 'MaxMind DB Decoder Test', - languages => ['en'], - description => { - en => - 'MaxMind DB Decoder Test database - contains every MaxMind DB data type', - }, - alias_ipv6_to_ipv4 => 1, - remove_reserved_networks => 0, - map_key_type_callback => sub { - my $key = $_[0]; - $key =~ s/X$//; - return $key eq 'array' ? [ 'array', 'uint32' ] : $key; - }, - ); - - my @subnets - = map { Net::Works::Network->new_from_string( string => $_ ) } - qw( - ::1.1.1.0/120 - ::2.2.0.0/112 - ::3.0.0.0/104 - ::4.5.6.7/128 - abcd::/64 - 1000::1234:0000/112 - ); - - for my $subnet (@subnets) { - $writer->insert_network( - $subnet, - \%all_types, - ); - } - - $writer->insert_network( - Net::Works::Network->new_from_string( string => '::0.0.0.0/128' ), - \%all_types_0, - ); - - open my $fh, '>', "$Dir/MaxMind-DB-test-decoder.mmdb"; - $writer->write_tree($fh); - close $fh; - - return; - } -} - -{ - my %nested = ( - map1 => { - map2 => { - array => [ - { - map3 => { a => 1, b => 2, c => 3 }, - }, - ], - }, - }, - ); - - sub write_deeply_nested_structures_db { - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => 6, - record_size => 24, - ip_version => 6, - database_type => 'MaxMind DB Nested Data Structures', - languages => ['en'], - description => { - en => - 'MaxMind DB Nested Data Structures Test database - contains deeply nested map/array structures', - }, - alias_ipv6_to_ipv4 => 1, - map_key_type_callback => sub { - my $key = shift; - return - $key =~ /^map/ ? 'map' - : $key eq 'array' ? [ 'array', 'map' ] - : 'uint32'; - } - ); - - my @subnets - = map { Net::Works::Network->new_from_string( string => $_ ) } - qw( - ::1.1.1.0/120 - ::2.2.0.0/112 - ::3.0.0.0/104 - ::4.5.6.7/128 - abcd::/64 - 1000::1234:0000/112 - ); - - for my $subnet (@subnets) { - $writer->insert_network( - $subnet, - \%nested, - ); - } - - open my $fh, '>', "$Dir/MaxMind-DB-test-nested.mmdb"; - $writer->write_tree($fh); - close $fh; - - return; - } -} - -sub write_geoip2_dbs { - _write_geoip2_db( @{$_}, 'Test' ) - for ( - [ 'GeoIP2-Anonymous-IP', 1 ], - [ 'GeoIP2-City', 0 ], - [ 'GeoIP2-Connection-Type', 0 ], - [ 'GeoIP2-Country', 0 ], - [ 'GeoIP2-DensityIncome', 0 ], - [ 'GeoIP2-Domain', 0 ], - [ 'GeoIP2-Enterprise', 0 ], - [ 'GeoIP2-ISP', 0 ], - [ 'GeoIP2-Precision-Enterprise', 0 ], - [ 'GeoLite2-ASN', 0 ], - ); -} - -sub write_broken_geoip2_city_db { - no warnings 'redefine'; - - # This is how we _used_ to encode doubles. Storing them this way with the - # current reader tools can lead to weird errors. This broken database is a - # good way to test the robustness of reader code in the face of broken - # databases. - local *MaxMind::DB::Writer::Serializer::_encode_double = sub { - my $self = shift; - my $value = shift; - - $self->_simple_encode( double => $value ); - }; - - _write_geoip2_db( 'GeoIP2-City', 0, 'Test Broken Double Format' ); -} - -sub write_invalid_node_count { - no warnings 'redefine'; - local *MaxMind::DB::Writer::Tree::node_count = sub { 100000 }; - - _write_geoip2_db( 'GeoIP2-City', 0, 'Test Invalid Node Count' ); -} - -sub _universal_map_key_type_callback { - my $map = { - - # languages - de => 'utf8_string', - en => 'utf8_string', - es => 'utf8_string', - fr => 'utf8_string', - ja => 'utf8_string', - 'pt-BR' => 'utf8_string', - ru => 'utf8_string', - 'zh-CN' => 'utf8_string', - - # production - accuracy_radius => 'uint16', - autonomous_system_number => 'uint32', - autonomous_system_organization => 'utf8_string', - average_income => 'uint32', - city => 'map', - code => 'utf8_string', - confidence => 'uint16', - connection_type => 'utf8_string', - continent => 'map', - country => 'map', - domain => 'utf8_string', - geoname_id => 'uint32', - is_anonymous => 'boolean', - is_anonymous_proxy => 'boolean', - is_anonymous_vpn => 'boolean', - is_hosting_provider => 'boolean', - is_legitimate_proxy => 'boolean', - is_public_proxy => 'boolean', - is_satellite_provider => 'boolean', - is_tor_exit_node => 'boolean', - iso_code => 'utf8_string', - isp => 'utf8_string', - latitude => 'double', - location => 'map', - longitude => 'double', - metro_code => 'uint16', - names => 'map', - organization => 'utf8_string', - population_density => 'uint32', - postal => 'map', - registered_country => 'map', - represented_country => 'map', - subdivisions => [ 'array', 'map' ], - time_zone => 'utf8_string', - traits => 'map', - traits => 'map', - type => 'utf8_string', - user_type => 'utf8_string', - - # for testing only - foo => 'utf8_string', - bar => 'utf8_string', - buzz => 'utf8_string', - our_value => 'utf8_string', - }; - - my $callback = sub { - my $key = shift; - - return $map->{$key} || die <<"ERROR"; -Unknown tree key '$key'. - -The universal_map_key_type_callback doesn't know what type to use for the passed -key. If you are adding a new key that will be used in a frozen tree / mmdb then -you should update the mapping in both our internal code and here. -ERROR - }; - - return $callback; -} - -sub _write_geoip2_db { - my $type = shift; - my $populate_all_networks = shift; - my $description = shift; - - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => 6, - record_size => 28, - ip_version => 6, - database_type => $type, - languages => [ 'en', $type eq 'GeoIP2-City' ? ('zh') : () ], - description => { - en => ( $type =~ s/-/ /gr ) - . " $description Database (fake GeoIP2 data, for example purposes only)", - $type eq 'GeoIP2-City' ? ( zh => '小型数据库' ) : (), - }, - alias_ipv6_to_ipv4 => 1, - map_key_type_callback => _universal_map_key_type_callback(), - ); - - _populate_all_networks($writer) if $populate_all_networks; - - my $nodes = decode_json( - read_file( - "$Dir/../source-data/$type-Test.json", - binmode => ':raw' - ) - ); - - for my $node (@$nodes) { - for my $network ( keys %$node ) { - $writer->insert_network( - Net::Works::Network->new_from_string( string => $network ), - $node->{$network} - ); - } - } - - my $suffix = $description =~ s/ /-/gr; - open my $output_fh, '>', "$Dir/$type-$suffix.mmdb"; - $writer->write_tree($output_fh); - close $output_fh; - - return; -} - -sub _populate_all_networks { - my $writer = shift; - - my $max_uint128 = uint128(0) - 1; - my @networks = Net::Works::Network->range_as_subnets( - Net::Works::Address->new_from_integer( - integer => 0, - version => 6, - ), - Net::Works::Address->new_from_integer( - integer => $max_uint128, - version => 6, - ), - ); - - for my $network (@networks) { - $writer->insert_network( $network => {} ); - } -} - -sub write_no_ipv4_tree_db { - my $subnets = shift; - - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => 6, - record_size => 24, - ip_version => 6, - database_type => 'MaxMind DB No IPv4 Search Tree', - languages => ['en'], - description => { - en => 'MaxMind DB No IPv4 Search Tree', - }, - remove_reserved_networks => 0, - root_data_type => 'utf8_string', - map_key_type_callback => sub { {} }, - ); - - my $subnet = Net::Works::Network->new_from_string( string => '::/64' ); - $writer->insert_network( $subnet, $subnet->as_string() ); - - open my $output_fh, '>', "$Dir/MaxMind-DB-no-ipv4-search-tree.mmdb"; - $writer->write_tree($output_fh); - close $output_fh; - - return; -} - -# The point of this database is to provide something where we can test looking -# up a single value. In other words, each IP address points to a non-compound -# value, a string rather than a map or array. -sub write_no_map_db { - my $subnets = shift; - - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => 4, - record_size => 24, - database_type => 'MaxMind DB String Value Entries', - languages => ['en'], - description => { - en => - 'MaxMind DB String Value Entries (no maps or arrays as values)', - }, - root_data_type => 'utf8_string', - map_key_type_callback => sub { {} }, - ); - - for my $subnet ( @{$subnets} ) { - $writer->insert_network( $subnet, $subnet->as_string() ); - } - - open my $output_fh, '>', "$Dir/MaxMind-DB-string-value-entries.mmdb"; - $writer->write_tree($output_fh); - close $output_fh; - - return; -} - -sub write_test_serialization_data { - my $serializer = MaxMind::DB::Writer::Serializer->new( - map_key_type_callback => sub { 'utf8_string' } ); - - $serializer->store_data( map => { long_key => 'long_value1' } ); - $serializer->store_data( map => { long_key => 'long_value2' } ); - $serializer->store_data( map => { long_key2 => 'long_value1' } ); - $serializer->store_data( map => { long_key2 => 'long_value2' } ); - $serializer->store_data( map => { long_key => 'long_value1' } ); - $serializer->store_data( map => { long_key2 => 'long_value2' } ); - - open my $fh, '>', 'maps-with-pointers.raw'; - print {$fh} ${ $serializer->buffer() } - or die "Cannot write to maps-with-pointers.raw: $!"; - close $fh; - - return; -} - -sub write_db_with_metadata_pointers { - my $repeated_string = 'Lots of pointers in metadata'; - my $writer = MaxMind::DB::Writer::Tree->new( - ip_version => 6, - record_size => 24, - map_key_type_callback => sub { 'utf8_string' }, - database_type => $repeated_string, - languages => [ 'en', 'es', 'zh' ], - description => { - en => $repeated_string, - es => $repeated_string, - zh => $repeated_string, - }, - - ); - - _populate_all_networks($writer); - - open my $fh, '>', 'MaxMind-DB-test-metadata-pointers.mmdb'; - - $writer->write_tree($fh); - - close $fh; -} - -main(); diff --git a/3rd/libmaxminddb/t/maxmind-db/tidyall.ini b/3rd/libmaxminddb/t/maxmind-db/tidyall.ini deleted file mode 100644 index ae979b8bc..000000000 --- a/3rd/libmaxminddb/t/maxmind-db/tidyall.ini +++ /dev/null @@ -1,5 +0,0 @@ -[PerlTidy] -select = **/*.{pl,pm,t} - -[JSON] -select = **/*.json diff --git a/3rd/libmaxminddb/t/maxminddb_test_helper.c b/3rd/libmaxminddb/t/maxminddb_test_helper.c deleted file mode 100644 index 0bd53deff..000000000 --- a/3rd/libmaxminddb/t/maxminddb_test_helper.c +++ /dev/null @@ -1,247 +0,0 @@ -#if HAVE_CONFIG_H -#include -#endif - -#define _POSIX_C_SOURCE 200112L -#include -#include -#include - -#include "maxminddb.h" -#include "maxminddb_test_helper.h" - -#ifdef _WIN32 -#include -#else -#include -#include -#endif - -void for_all_record_sizes(const char *filename_fmt, - void (*tests)(int record_size, - const char *filename, - const char *description)) { - int sizes[] = {24, 28, 32}; - for (int i = 0; i < 3; i++) { - int size = sizes[i]; - - char filename[500]; - snprintf(filename, 500, filename_fmt, size); - - char description[14]; - snprintf(description, 14, "%i bit record", size); - - tests(size, filename, description); - } -} - -void for_all_modes(void (*tests)(int mode, const char *description)) { - tests(MMDB_MODE_MMAP, "mmap mode"); -} - -const char *test_database_path(const char *filename) { - char *test_db_dir; -#ifdef _WIN32 - test_db_dir = "../t/maxmind-db/test-data"; -#else - char cwd[500]; - char *UNUSED(tmp) = getcwd(cwd, 500); - - if (strcmp(basename(cwd), "t") == 0) { - test_db_dir = "./maxmind-db/test-data"; - } else { - test_db_dir = "./t/maxmind-db/test-data"; - } -#endif - - char *path = malloc(500); - assert(NULL != path); - - snprintf(path, 500, "%s/%s", test_db_dir, filename); - - return (const char *)path; -} - -const char *dup_entry_string_or_bail(MMDB_entry_data_s entry_data) { - const char *string = - mmdb_strndup(entry_data.utf8_string, entry_data.data_size); - if (NULL == string) { - BAIL_OUT("mmdb_strndup failed"); - } - - return string; -} - -MMDB_s *open_ok(const char *db_file, int mode, const char *mode_desc) { - if (0 != access(db_file, R_OK)) { - BAIL_OUT("could not read the specified file - %s\nIf you are in a git " - "checkout try running 'git submodule update --init'", - db_file); - } - - MMDB_s *mmdb = (MMDB_s *)calloc(1, sizeof(MMDB_s)); - - if (NULL == mmdb) { - BAIL_OUT("could not allocate memory for our MMDB_s struct"); - } - - int status = MMDB_open(db_file, mode, mmdb); - - int is_ok = ok(MMDB_SUCCESS == status, - "open %s status is success - %s", - db_file, - mode_desc); - - if (!is_ok) { - diag("open status code = %d (%s)", status, MMDB_strerror(status)); - free(mmdb); - return NULL; - } - - is_ok = ok(mmdb->file_size > 0, - "mmdb struct has been set for %s - %s", - db_file, - mode_desc); - - if (!is_ok) { - free(mmdb); - return NULL; - } - - return mmdb; -} - -MMDB_lookup_result_s lookup_string_ok(MMDB_s *mmdb, - const char *ip, - const char *file, - const char *mode_desc) { - int gai_error, mmdb_error; - MMDB_lookup_result_s result = - MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error); - - test_lookup_errors( - gai_error, mmdb_error, "MMDB_lookup_string", ip, file, mode_desc); - - return result; -} - -MMDB_lookup_result_s lookup_sockaddr_ok(MMDB_s *mmdb, - const char *ip, - const char *file, - const char *mode_desc) { - int ai_flags = AI_NUMERICHOST; - struct addrinfo hints = {.ai_socktype = SOCK_STREAM}; - struct addrinfo *addresses = NULL; - - if (ip[0] == ':') { - hints.ai_flags = ai_flags; -#if defined AI_V4MAPPED && !defined __FreeBSD__ - hints.ai_flags |= AI_V4MAPPED; -#endif - hints.ai_family = AF_INET6; - } else { - hints.ai_flags = ai_flags; - hints.ai_family = AF_INET; - } - - int gai_error = getaddrinfo(ip, NULL, &hints, &addresses); - - int mmdb_error = 0; - MMDB_lookup_result_s result = {.found_entry = false}; - if (gai_error == 0) { - result = MMDB_lookup_sockaddr(mmdb, addresses->ai_addr, &mmdb_error); - } - if (NULL != addresses) { - freeaddrinfo(addresses); - } - - test_lookup_errors( - gai_error, mmdb_error, "MMDB_lookup_sockaddr", ip, file, mode_desc); - - return result; -} - -void test_lookup_errors(int gai_error, - int mmdb_error, - const char *function, - const char *ip, - const char *file, - const char *mode_desc) { - - int is_ok = ok(0 == gai_error, - "no getaddrinfo error in call to %s for %s - %s - %s", - function, - ip, - file, - mode_desc); - - if (!is_ok) { - diag("error from call to getaddrinfo for %s - %s", - ip, - gai_strerror(gai_error)); - } - - is_ok = ok(0 == mmdb_error, - "no MMDB error in call to %s for %s - %s - %s", - function, - ip, - file, - mode_desc); - - if (!is_ok) { - diag("MMDB error - %s", MMDB_strerror(mmdb_error)); - } -} - -MMDB_entry_data_s data_ok(MMDB_lookup_result_s *result, - uint32_t expect_type, - const char *description, - ...) { - va_list keys; - va_start(keys, description); - - MMDB_entry_data_s data; - int status = MMDB_vget_value(&result->entry, &data, keys); - - va_end(keys); - - if (cmp_ok(status, - "==", - MMDB_SUCCESS, - "no error from call to MMDB_vget_value - %s", - description)) { - - if (!cmp_ok(data.type, - "==", - expect_type, - "got the expected data type - %s", - description)) { - - diag(" data type value is %i but expected %i", - data.type, - expect_type); - } - } else { - diag(" error from MMDB_vget_value - %s", MMDB_strerror(status)); - } - - return data; -} - -void compare_double(double got, double expect) { - double diff = fabs(got - expect); - int is_ok = ok(diff < 0.01, "double value was approximately %2.6f", expect); - if (!is_ok) { - diag( - " got %2.6f but expected %2.6f (diff = %2.6f)", got, expect, diff); - } -} - -void compare_float(float got, float expect) { - float diff = fabsf(got - expect); - int is_ok = ok(diff < 0.01, "float value was approximately %2.1f", expect); - if (!is_ok) { - diag( - " got %2.4f but expected %2.1f (diff = %2.1f)", got, expect, diff); - } -} diff --git a/3rd/libmaxminddb/t/maxminddb_test_helper.h b/3rd/libmaxminddb/t/maxminddb_test_helper.h deleted file mode 100644 index c08900cc0..000000000 --- a/3rd/libmaxminddb/t/maxminddb_test_helper.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Some test files may require something newer */ -#if !defined(_GNU_SOURCE) && !defined(_POSIX_C_SOURCE) -#define _POSIX_C_SOURCE 200112L -#endif - -#if HAVE_CONFIG_H -#include -#endif -#include "libtap/tap.h" -#include "maxminddb-compat-util.h" -#include "maxminddb.h" -#include -#include -#include - -#ifdef _WIN32 -#include -#include - -#define R_OK 4 - -#else -#include -#endif - -#if (_MSC_VER && _MSC_VER < 1900) -/* _snprintf has security issues, but I don't think it is worth - worrying about for the unit tests. */ -#define snprintf _snprintf -#endif - -#ifndef MMDB_TEST_HELPER_C -#define MMDB_TEST_HELPER_C (1) - -#ifdef __GNUC__ -#define UNUSED(x) UNUSED_##x __attribute__((__unused__)) -#else -#define UNUSED -#endif - -#define MAX_DESCRIPTION_LENGTH 500 - -extern void for_all_record_sizes(const char *filename_fmt, - void (*tests)(int record_size, - const char *filename, - const char *description)); -extern void for_all_modes(void (*tests)(int mode, const char *description)); -extern const char *test_database_path(const char *filename); -extern const char *dup_entry_string_or_bail(MMDB_entry_data_s entry_data); -extern MMDB_s *open_ok(const char *db_file, int mode, const char *mode_desc); -extern MMDB_lookup_result_s lookup_string_ok(MMDB_s *mmdb, - const char *ip, - const char *file, - const char *mode_desc); -extern MMDB_lookup_result_s lookup_sockaddr_ok(MMDB_s *mmdb, - const char *ip, - const char *file, - const char *mode_desc); -extern void test_lookup_errors(int gai_error, - int mmdb_error, - const char *function, - const char *ip, - const char *file, - const char *mode_desc); -extern MMDB_entry_data_s data_ok(MMDB_lookup_result_s *result, - uint32_t expect_type, - const char *description, - ...); -extern void compare_double(double got, double expect); -extern void compare_float(float got, float expect); - -#endif diff --git a/3rd/libmaxminddb/t/metadata_pointers_t.c b/3rd/libmaxminddb/t/metadata_pointers_t.c deleted file mode 100644 index 645be6ced..000000000 --- a/3rd/libmaxminddb/t/metadata_pointers_t.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "maxminddb_test_helper.h" - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-metadata-pointers.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - char *repeated_string = "Lots of pointers in metadata"; - - is(mmdb->metadata.database_type, - repeated_string, - "decoded pointer database_type"); - - for (uint16_t i = 0; i < mmdb->metadata.description.count; i++) { - const char *language = - mmdb->metadata.description.descriptions[i]->language; - const char *description = - mmdb->metadata.description.descriptions[i]->description; - is(description, repeated_string, "%s description", language); - } - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/metadata_t.c b/3rd/libmaxminddb/t/metadata_t.c deleted file mode 100644 index 696e3ecc9..000000000 --- a/3rd/libmaxminddb/t/metadata_t.c +++ /dev/null @@ -1,271 +0,0 @@ -#include "maxminddb_test_helper.h" - -void test_metadata(MMDB_s *mmdb, const char *mode_desc) { - cmp_ok(mmdb->metadata.node_count, - "==", - 37, - "node_count is 37 - %s", - mode_desc); - cmp_ok(mmdb->metadata.record_size, - "==", - 24, - "record_size is 24 - %s", - mode_desc); - cmp_ok( - mmdb->metadata.ip_version, "==", 4, "ip_version is 4 - %s", mode_desc); - is(mmdb->metadata.database_type, - "Test", - "database_type is Test - %s", - mode_desc); - // 2013-07-01T00:00:00Z - uint64_t expect_epoch = 1372636800; - int is_ok = cmp_ok(mmdb->metadata.build_epoch, - ">=", - expect_epoch, - "build_epoch > %lli", - expect_epoch); - if (!is_ok) { - diag(" epoch is %lli", mmdb->metadata.build_epoch); - } - - cmp_ok(mmdb->metadata.binary_format_major_version, - "==", - 2, - "binary_format_major_version is 2 - %s", - mode_desc); - cmp_ok(mmdb->metadata.binary_format_minor_version, - "==", - 0, - "binary_format_minor_version is 0 - %s", - mode_desc); - - cmp_ok(mmdb->metadata.languages.count, - "==", - 2, - "found 2 languages - %s", - mode_desc); - is(mmdb->metadata.languages.names[0], - "en", - "first language is en - %s", - mode_desc); - is(mmdb->metadata.languages.names[1], - "zh", - "second language is zh - %s", - mode_desc); - - cmp_ok(mmdb->metadata.description.count, - "==", - 2, - "found 2 descriptions - %s", - mode_desc); - for (uint16_t i = 0; i < mmdb->metadata.description.count; i++) { - const char *language = - mmdb->metadata.description.descriptions[i]->language; - const char *description = - mmdb->metadata.description.descriptions[i]->description; - if (strncmp(language, "en", 2) == 0) { - ok(1, "found en description"); - is(description, "Test Database", "en description"); - } else if (strncmp(language, "zh", 2) == 0) { - ok(1, "found zh description"); - is(description, "Test Database Chinese", "zh description"); - } else { - ok(0, - "found unknown description in unexpected language - %s", - language); - } - } - - cmp_ok(mmdb->full_record_byte_size, - "==", - 6, - "full_record_byte_size is 6 - %s", - mode_desc); -} - -MMDB_entry_data_list_s * -test_languages_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *languages = entry_data_list = entry_data_list->next; - - cmp_ok(languages->entry_data.type, - "==", - MMDB_DATA_TYPE_ARRAY, - "'languages' key's value is an array"); - cmp_ok(languages->entry_data.data_size, - "==", - 2, - "'languages' key's value has 2 elements"); - - MMDB_entry_data_list_s *idx0 = entry_data_list = entry_data_list->next; - cmp_ok(idx0->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "first array entry is a UTF8_STRING"); - const char *lang0 = dup_entry_string_or_bail(idx0->entry_data); - is(lang0, "en", "first language is en"); - free((void *)lang0); - - MMDB_entry_data_list_s *idx1 = entry_data_list = entry_data_list->next; - cmp_ok(idx1->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "second array entry is a UTF8_STRING"); - const char *lang1 = dup_entry_string_or_bail(idx1->entry_data); - is(lang1, "zh", "second language is zh"); - free((void *)lang1); - - return entry_data_list; -} - -MMDB_entry_data_list_s * -test_description_value(MMDB_entry_data_list_s *entry_data_list) { - MMDB_entry_data_list_s *description = entry_data_list = - entry_data_list->next; - cmp_ok(description->entry_data.type, - "==", - MMDB_DATA_TYPE_MAP, - "'description' key's value is a map"); - cmp_ok(description->entry_data.data_size, - "==", - 2, - "'description' key's value has 2 key/value pairs"); - - for (int i = 0; i < 2; i++) { - MMDB_entry_data_list_s *key = entry_data_list = entry_data_list->next; - cmp_ok(key->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "found a map key in 'map'"); - const char *key_name = dup_entry_string_or_bail(key->entry_data); - - MMDB_entry_data_list_s *value = entry_data_list = entry_data_list->next; - cmp_ok(value->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "map value is a UTF8_STRING"); - const char *description = dup_entry_string_or_bail(value->entry_data); - - if (strcmp(key_name, "en") == 0) { - is(description, - "Test Database", - "en description == 'Test Database'"); - } else if (strcmp(key_name, "zh") == 0) { - is(description, - "Test Database Chinese", - "zh description == 'Test Database Chinese'"); - } else { - ok(0, "unknown key found in description map - %s", key_name); - } - - free((void *)key_name); - free((void *)description); - } - - return entry_data_list; -} - -void test_metadata_as_data_entry_list(MMDB_s *mmdb, const char *mode_desc) { - MMDB_entry_data_list_s *entry_data_list, *first; - int status = MMDB_get_metadata_as_entry_data_list(mmdb, &entry_data_list); - - first = entry_data_list; - - cmp_ok(status, - "==", - MMDB_SUCCESS, - "get metadata as data_entry_list - %s", - mode_desc); - - cmp_ok(first->entry_data.data_size, - "==", - 9, - "metadata map has 9 key/value pairs"); - - while (1) { - MMDB_entry_data_list_s *key = entry_data_list = entry_data_list->next; - - if (!key) { - break; - } - - cmp_ok(key->entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "found a map key"); - - const char *key_name = dup_entry_string_or_bail(key->entry_data); - if (strcmp(key_name, "node_count") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - cmp_ok(value->entry_data.uint32, "==", 37, "node_count == 37"); - } else if (strcmp(key_name, "record_size") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - cmp_ok(value->entry_data.uint16, "==", 24, "record_size == 24"); - } else if (strcmp(key_name, "ip_version") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - cmp_ok(value->entry_data.uint16, "==", 4, "ip_version == 4"); - } else if (strcmp(key_name, "binary_format_major_version") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - cmp_ok(value->entry_data.uint16, - "==", - 2, - "binary_format_major_version == 2"); - } else if (strcmp(key_name, "binary_format_minor_version") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - cmp_ok(value->entry_data.uint16, - "==", - 0, - "binary_format_minor_version == 0"); - } else if (strcmp(key_name, "build_epoch") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - ok(value->entry_data.uint64 > 1373571901, - "build_epoch > 1373571901"); - } else if (strcmp(key_name, "database_type") == 0) { - MMDB_entry_data_list_s *value = entry_data_list = - entry_data_list->next; - const char *type = dup_entry_string_or_bail(value->entry_data); - is(type, "Test", "type == Test"); - free((void *)type); - } else if (strcmp(key_name, "languages") == 0) { - entry_data_list = test_languages_value(entry_data_list); - } else if (strcmp(key_name, "description") == 0) { - entry_data_list = test_description_value(entry_data_list); - } else { - ok(0, "unknown key found in metadata map - %s", key_name); - } - - free((void *)key_name); - } - - MMDB_free_entry_data_list(first); -} - -void run_tests(int mode, const char *mode_desc) { - const char *file = "MaxMind-DB-test-ipv4-24.mmdb"; - const char *path = test_database_path(file); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - - // All of the remaining tests require an open mmdb - if (NULL == mmdb) { - diag("could not open %s - skipping remaining tests", path); - return; - } - free((void *)path); - - test_metadata(mmdb, mode_desc); - test_metadata_as_data_entry_list(mmdb, mode_desc); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/mmdblookup_t.pl b/3rd/libmaxminddb/t/mmdblookup_t.pl deleted file mode 100755 index 236360c93..000000000 --- a/3rd/libmaxminddb/t/mmdblookup_t.pl +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; - -use FindBin qw( $Bin ); - -eval <<'EOF'; -use Test::More 0.88; -use IPC::Run3 qw( run3 ); -EOF - -if ($@) { - print - "1..0 # skip all tests skipped - these tests need the Test::More 0.88, IPC::Run3 and Test::Output modules:\n"; - print "$@"; - exit 0; -} - -my $mmdblookup = "$Bin/../bin/mmdblookup"; -my $test_data_dir = "$Bin/maxmind-db/test-data"; - -{ - ok( -x $mmdblookup, 'mmdblookup script is executable' ); -} - -for my $arg (qw( -h -? --help )) { - _test_stdout( - [$arg], - qr{mmdblookup --file.+This application accepts the following options:}s, - 0, - "help output from $arg" - ); -} - -_test_both( - [], - qr{mmdblookup --file.+This application accepts the following options:}s, - qr{ERROR: You must provide a filename with --file}, - 1, - "help output with no CLI options" -); - -_test_stderr( - [qw( --file foo )], - qr{ERROR: You must provide an IP address with --ip}, - 1, - 'error when no --ip is given' -); - -_test_stdout( - [qw( --version )], - qr/mmdblookup version \d+\.\d+\.\d+/, - 0, - 'output for --version' -); - -_test_stdout( - ['--file', "$test_data_dir/GeoIP2-City-Test.mmdb", '--ip', '2.125.160.216'], - qr/"en"\s*:\s*"Boxford"/, - 0, - 'output for 2.125.160.216' -); - -_test_stdout( - ['--file', "$test_data_dir/GeoIP2-City-Test.mmdb", '--ip', '2.125.160.216', '--verbose'], - qr/Database metadata.+"en"\s*:\s*"Boxford"/s, - 0, - 'verbose output for 2.125.160.216' -); - -_test_stdout( - ['--file', "$test_data_dir/GeoIP2-City-Test.mmdb", '--ip', '2.125.160.216', qw( location latitude )], - qr/^\s*51\.750000 \s*$/s, - 0, - 'output for 2.125.160.216 with lookup path' -); - -_test_stderr( - [ qw( --file this/path/better/not/exist.mmdb --ip 1.2.3.4 ) ], - qr{Can't open this/path/better/not/exist.mmdb}s, - 2, - 'error for file that does not exist' -); - -_test_stderr( - ['--file', "$test_data_dir/GeoIP2-City-Test.mmdb", '--ip', 'not-an-ip-address' ], - qr{Error from call to getaddrinfo for not-an-ip-address}s, - 3, - 'error for bad IP address' -); - -_test_stderr( - ['--file', "$test_data_dir/GeoIP2-City-Test.mmdb", '--ip', '10.2.3.4' ], - qr{\QCould not find an entry for this IP address (10.2.3.4)}s, - 6, - 'error for bad PI address' -); - -done_testing(); - -sub _test_stdout { - my $args = shift; - my $expect_stdout = shift; - my $expect_status = shift; - my $desc = shift; - - _test_both( $args, $expect_stdout, q{}, $expect_status, $desc ); -} - -sub _test_stderr { - my $args = shift; - my $expect_stderr = shift; - my $expect_status = shift; - my $desc = shift; - - _test_both( $args, undef, $expect_stderr, $expect_status, $desc ); -} - -sub _test_both { - my $args = shift; - my $expect_stdout = shift; - my $expect_stderr = shift; - my $expect_status = shift; - my $desc = shift; - - my $stdout; - my $stderr; - run3( - [ $mmdblookup, @{$args} ], - \undef, - \$stdout, - \$stderr, - ); - - my $exit_status = $? >> 8; - - # We don't need to retest that the help output shows up for all errors - if ( defined $expect_stdout ) { - like( - $stdout, - $expect_stdout, - "stdout for mmdblookup @{$args}" - ); - } - - if ( ref $expect_stderr ) { - like( $stderr, $expect_stderr, "stderr for mmdblookup @{$args}" ); - } - else { - is( $stderr, $expect_stderr, "stderr for mmdblookup @{$args}" ); - } - - is( - $exit_status, $expect_status, - "exit status was $expect_status for mmdblookup @{$args}" - ); -} diff --git a/3rd/libmaxminddb/t/no_map_get_value_t.c b/3rd/libmaxminddb/t/no_map_get_value_t.c deleted file mode 100644 index b7f75383f..000000000 --- a/3rd/libmaxminddb/t/no_map_get_value_t.c +++ /dev/null @@ -1,34 +0,0 @@ -#include "maxminddb_test_helper.h" - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-string-value-entries.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const char *ip = "1.1.1.1"; - MMDB_lookup_result_s result = - lookup_string_ok(mmdb, ip, filename, mode_desc); - - MMDB_entry_data_s entry_data; - int status = MMDB_get_value(&result.entry, &entry_data, NULL); - - cmp_ok(status, - "==", - MMDB_SUCCESS, - "status for MMDB_get_value() is MMDB_SUCCESS"); - ok(entry_data.has_data, "found a value when varargs list is just NULL"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "returned entry type is utf8_string"); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/read_node_t.c b/3rd/libmaxminddb/t/read_node_t.c deleted file mode 100644 index 1db466b30..000000000 --- a/3rd/libmaxminddb/t/read_node_t.c +++ /dev/null @@ -1,250 +0,0 @@ -#include "maxminddb_test_helper.h" - -void test_entry_data(MMDB_s *mmdb, - MMDB_entry_s *entry, - uint32_t node_number, - char *node_record) { - MMDB_entry_data_s entry_data; - int status = MMDB_get_value(entry, &entry_data, "ip", NULL); - cmp_ok(status, "==", MMDB_SUCCESS, "successful data lookup for node"); - cmp_ok(entry_data.type, - "==", - MMDB_DATA_TYPE_UTF8_STRING, - "returned entry type is UTF8_STRING for %s record of node %i", - node_record, - node_number); -} - -void run_read_node_tests(MMDB_s *mmdb, - const uint32_t tests[][5], - int test_count, - uint8_t record_size) { - for (int i = 0; i < test_count; i++) { - uint32_t node_number = tests[i][0]; - MMDB_search_node_s node; - int status = MMDB_read_node(mmdb, node_number, &node); - if (MMDB_SUCCESS == status) { - cmp_ok(node.left_record, - "==", - tests[i][1], - "left record for node %i is %i - %i bit DB", - node_number, - tests[i][1], - record_size); - cmp_ok(node.left_record_type, - "==", - tests[i][2], - "left record type for node %i is %i", - node_number, - tests[i][2]); - if (node.left_record_type == MMDB_RECORD_TYPE_DATA) { - test_entry_data( - mmdb, &node.left_record_entry, node_number, "left"); - } - - cmp_ok(node.right_record, - "==", - tests[i][3], - "right record for node %i is %i - %i bit DB", - node_number, - tests[i][3], - record_size); - cmp_ok(node.right_record_type, - "==", - tests[i][4], - "right record type for node %i is %i", - node_number, - tests[i][4]); - - if (node.right_record_type == MMDB_RECORD_TYPE_DATA) { - test_entry_data( - mmdb, &node.right_record_entry, node_number, "right"); - } - } else { - diag("call to MMDB_read_node for node %i failed - %i bit DB", - node_number, - record_size); - } - } -} - -void run_24_bit_record_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-mixed-24.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const uint32_t tests[7][5] = { - {0, 1, MMDB_RECORD_TYPE_SEARCH_NODE, 242, MMDB_RECORD_TYPE_EMPTY}, - { - 80, - 81, - MMDB_RECORD_TYPE_SEARCH_NODE, - 197, - MMDB_RECORD_TYPE_SEARCH_NODE, - }, - { - 96, - 97, - MMDB_RECORD_TYPE_SEARCH_NODE, - 242, - MMDB_RECORD_TYPE_EMPTY, - }, - { - 103, - 242, - MMDB_RECORD_TYPE_EMPTY, - 104, - MMDB_RECORD_TYPE_SEARCH_NODE, - }, - { - 127, - 242, - MMDB_RECORD_TYPE_EMPTY, - 315, - MMDB_RECORD_TYPE_DATA, - }, - { - 132, - 329, - MMDB_RECORD_TYPE_DATA, - 242, - MMDB_RECORD_TYPE_EMPTY, - }, - { - 241, - 96, - MMDB_RECORD_TYPE_SEARCH_NODE, - 242, - MMDB_RECORD_TYPE_EMPTY, - }}; - run_read_node_tests(mmdb, tests, 7, 24); - - MMDB_close(mmdb); - free(mmdb); -} - -void run_28_bit_record_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-mixed-28.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const uint32_t tests[7][5] = { - {0, 1, MMDB_RECORD_TYPE_SEARCH_NODE, 242, MMDB_RECORD_TYPE_EMPTY}, - { - 80, - 81, - MMDB_RECORD_TYPE_SEARCH_NODE, - 197, - MMDB_RECORD_TYPE_SEARCH_NODE, - }, - { - 96, - 97, - MMDB_RECORD_TYPE_SEARCH_NODE, - 242, - MMDB_RECORD_TYPE_EMPTY, - }, - { - 103, - 242, - MMDB_RECORD_TYPE_EMPTY, - 104, - MMDB_RECORD_TYPE_SEARCH_NODE, - }, - { - 127, - 242, - MMDB_RECORD_TYPE_EMPTY, - 315, - MMDB_RECORD_TYPE_DATA, - }, - { - 132, - 329, - MMDB_RECORD_TYPE_DATA, - 242, - MMDB_RECORD_TYPE_EMPTY, - }, - { - 241, - 96, - MMDB_RECORD_TYPE_SEARCH_NODE, - 242, - MMDB_RECORD_TYPE_EMPTY, - }}; - run_read_node_tests(mmdb, tests, 7, 28); - - MMDB_close(mmdb); - free(mmdb); -} - -void run_32_bit_record_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-mixed-32.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const uint32_t tests[7][5] = { - {0, 1, MMDB_RECORD_TYPE_SEARCH_NODE, 242, MMDB_RECORD_TYPE_EMPTY}, - { - 80, - 81, - MMDB_RECORD_TYPE_SEARCH_NODE, - 197, - MMDB_RECORD_TYPE_SEARCH_NODE, - }, - { - 96, - 97, - MMDB_RECORD_TYPE_SEARCH_NODE, - 242, - MMDB_RECORD_TYPE_EMPTY, - }, - { - 103, - 242, - MMDB_RECORD_TYPE_EMPTY, - 104, - MMDB_RECORD_TYPE_SEARCH_NODE, - }, - { - 127, - 242, - MMDB_RECORD_TYPE_EMPTY, - 315, - MMDB_RECORD_TYPE_DATA, - }, - { - 132, - 329, - MMDB_RECORD_TYPE_DATA, - 242, - MMDB_RECORD_TYPE_EMPTY, - }, - { - 241, - 96, - MMDB_RECORD_TYPE_SEARCH_NODE, - 242, - MMDB_RECORD_TYPE_EMPTY, - }}; - - run_read_node_tests(mmdb, tests, 7, 32); - - MMDB_close(mmdb); - free(mmdb); -} - -void run_tests(int mode, const char *mode_desc) { - run_24_bit_record_tests(mode, mode_desc); - run_28_bit_record_tests(mode, mode_desc); - run_32_bit_record_tests(mode, mode_desc); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); -} diff --git a/3rd/libmaxminddb/t/threads_t.c b/3rd/libmaxminddb/t/threads_t.c deleted file mode 100644 index 8b9508749..000000000 --- a/3rd/libmaxminddb/t/threads_t.c +++ /dev/null @@ -1,204 +0,0 @@ -#include "maxminddb_test_helper.h" -#include - -typedef struct thread_arg { - int thread_id; - MMDB_s *mmdb; - const char *ip_to_lookup; -} thread_arg_s; - -typedef struct test_result { - const char *ip_looked_up; - int lookup_string_gai_error; - int lookup_string_mmdb_error; - int found_entry; - int get_value_status; - int data_type_ok; - char *data_value; -} test_result_s; - -void test_one_ip(MMDB_s *mmdb, const char *ip, test_result_s *test_result) { - - test_result->ip_looked_up = ip; - - int gai_error = 0; - int mmdb_error = 0; - MMDB_lookup_result_s result = - MMDB_lookup_string(mmdb, ip, &gai_error, &mmdb_error); - - test_result->lookup_string_gai_error = gai_error; - if (gai_error) { - return; - } - - test_result->lookup_string_mmdb_error = mmdb_error; - if (mmdb_error) { - return; - } - - test_result->found_entry = result.found_entry; - if (!result.found_entry) { - return; - } - - MMDB_entry_data_s data; - int status = MMDB_get_value(&result.entry, &data, "ip", NULL); - - test_result->get_value_status = status; - if (status) { - return; - } - - test_result->data_type_ok = data.type == MMDB_DATA_TYPE_UTF8_STRING; - if (!test_result->data_type_ok) { - return; - } - - test_result->data_value = mmdb_strndup(data.utf8_string, data.data_size); - - return; -} - -void *run_one_thread(void *arg) { - thread_arg_s *thread_arg = (thread_arg_s *)arg; - - MMDB_s *mmdb = thread_arg->mmdb; - const char *ip = thread_arg->ip_to_lookup; - - test_result_s *result = malloc(sizeof(test_result_s)); - if (!result) { - BAIL_OUT("could not allocate memory"); - } - test_one_ip(mmdb, ip, result); - - pthread_exit((void *)result); -} - -void process_result(test_result_s *result, - const char *expect, - const char *mode_desc) { - int is_ok; - is_ok = ok(!result->lookup_string_gai_error, - "no getaddrinfo error for %s - %s", - result->ip_looked_up, - mode_desc); - if (!is_ok) { - return; - } - - is_ok = ok(!result->lookup_string_mmdb_error, - "no mmdb error for %s - %s", - result->ip_looked_up, - mode_desc); - if (!is_ok) { - return; - } - - is_ok = ok(result->found_entry, - "got a result for %s in the database - %s", - result->ip_looked_up, - mode_desc); - if (!is_ok) { - return; - } - - is_ok = ok(!result->get_value_status, - "no error from MMDB_get_value for %s - %s", - result->ip_looked_up, - mode_desc); - if (!is_ok) { - return; - } - - is_ok = ok(result->data_type_ok, - "MMDB_get_value found a utf8_string at 'ip' key for %s - %s", - result->ip_looked_up, - mode_desc); - if (!is_ok) { - return; - } - - is(result->data_value, - expect, - "found expected result for 'ip' key for %s - %s", - result->ip_looked_up, - mode_desc); -} - -void run_ipX_tests(MMDB_s *mmdb, - const char *pairs[][2], - int pairs_rows, - int mode, - const char *mode_desc) { - pthread_t threads[pairs_rows]; - struct thread_arg thread_args[pairs_rows]; - - for (int i = 0; i < pairs_rows; i += 1) { - thread_args[i].thread_id = i; - thread_args[i].mmdb = mmdb; - thread_args[i].ip_to_lookup = pairs[i][0]; - - int error = - pthread_create(&threads[i], NULL, run_one_thread, &thread_args[i]); - if (error) { - BAIL_OUT("pthread_create failed"); - } - } - - for (int i = 0; i < pairs_rows; i += 1) { - void *thread_return; - int error = pthread_join(threads[i], &thread_return); - if (error) { - BAIL_OUT("pthread_join failed"); - } - - test_result_s *test_result = (test_result_s *)thread_return; - if (NULL != test_result) { - process_result(test_result, pairs[i][1], mode_desc); - if (test_result->data_type_ok) { - free(test_result->data_value); - } - free(test_result); - } - } -} - -void run_tests(int mode, const char *mode_desc) { - const char *filename = "MaxMind-DB-test-mixed-32.mmdb"; - const char *path = test_database_path(filename); - MMDB_s *mmdb = open_ok(path, mode, mode_desc); - free((void *)path); - - const char *pairs[18][2] = { - {"1.1.1.1", "::1.1.1.1"}, - {"1.1.1.2", "::1.1.1.2"}, - {"1.1.1.3", "::1.1.1.2"}, - {"1.1.1.7", "::1.1.1.4"}, - {"1.1.1.9", "::1.1.1.8"}, - {"1.1.1.15", "::1.1.1.8"}, - {"1.1.1.17", "::1.1.1.16"}, - {"1.1.1.31", "::1.1.1.16"}, - {"1.1.1.32", "::1.1.1.32"}, - {"::1:ffff:ffff", "::1:ffff:ffff"}, - {"::2:0:0", "::2:0:0"}, - {"::2:0:1a", "::2:0:0"}, - {"::2:0:40", "::2:0:40"}, - {"::2:0:4f", "::2:0:40"}, - {"::2:0:50", "::2:0:50"}, - {"::2:0:52", "::2:0:50"}, - {"::2:0:58", "::2:0:58"}, - {"::2:0:59", "::2:0:58"}, - }; - - run_ipX_tests(mmdb, pairs, 18, mode, mode_desc); - - MMDB_close(mmdb); - free(mmdb); -} - -int main(void) { - plan(NO_PLAN); - for_all_modes(&run_tests); - done_testing(); - pthread_exit(NULL); -} diff --git a/3rd/libmaxminddb/t/version_t.c b/3rd/libmaxminddb/t/version_t.c deleted file mode 100644 index 401d2a5e6..000000000 --- a/3rd/libmaxminddb/t/version_t.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "maxminddb_test_helper.h" - -int main(void) { - const char *version = MMDB_lib_version(); - if (ok((version != NULL), "MMDB_lib_version exists")) { - is(version, PACKAGE_VERSION, "version is " PACKAGE_VERSION); - } - done_testing(); -} From ebc61769c01da16812d89fb895a573cc11f21003 Mon Sep 17 00:00:00 2001 From: Shannon Weyrick Date: Tue, 16 Mar 2021 09:37:02 -0400 Subject: [PATCH 4/4] default CI to release build --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 03f6b294f..3d24645dd 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -13,7 +13,7 @@ on: env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) - BUILD_TYPE: RelWithDebInfo + BUILD_TYPE: Release jobs: build: