diff options
author | yehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664> | 2017-10-15 06:46:12 +0000 |
---|---|---|
committer | yehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664> | 2017-10-15 06:46:12 +0000 |
commit | ca6c8f41c1a2b9a4b5acae91419a6a114e1c77c6 (patch) | |
tree | 40ff112761d82af1d8c1c89d30ede8206502e17b /Postman/Postman-Connectivity-Test | |
parent | 8812fbf61bde539d1599e239044595ccb8a2c3a5 (diff) | |
download | Post-SMTP-ca6c8f41c1a2b9a4b5acae91419a6a114e1c77c6.zip |
release
Diffstat (limited to 'Postman/Postman-Connectivity-Test')
10 files changed, 7915 insertions, 0 deletions
diff --git a/Postman/Postman-Connectivity-Test/Postman-PortTest.php b/Postman/Postman-Connectivity-Test/Postman-PortTest.php new file mode 100644 index 0000000..6591db0 --- /dev/null +++ b/Postman/Postman-Connectivity-Test/Postman-PortTest.php @@ -0,0 +1,282 @@ +<?php +require_once ("registered-domain-libs-master/PHP/effectiveTLDs.inc.php"); +require_once ("registered-domain-libs-master/PHP/regDomain.inc.php"); + +/** + * + * @author jasonhendriks + * + */ +class PostmanPortTest { + private $errstr; + private $logger; + private $hostname; + public $hostnameDomainOnly; + private $port; + private $connectionTimeout; + private $readTimeout; + public $reportedHostname; + public $reportedHostnameDomainOnly; + public $protocol; + public $secure; + public $mitm; + public $http; + public $https; + public $smtp; + public $smtps; + public $startTls; + public $checkStartTls; + public $authLogin; + public $authPlain; + public $authCrammd5; + public $authXoauth; + public $authNone; + public $trySmtps; + + // + const SMTPS_PROTOCOL = 'SMTPS'; + + /** + */ + public function __construct($hostname, $port) { + $this->logger = new PostmanLogger ( get_class ( $this ) ); + $this->hostname = $hostname; + $this->hostnameDomainOnly = $this->getRegisteredDomain ( $hostname ); + $this->port = $port; + $this->connectionTimeout = 10; + $this->readTimeout = 10; + } + + /** + * Wrap the regDomain/getRegisteredDomain function + * + * @param unknown $domain + * @return unknown|Ambigous <NULL, string, unknown, mixed> + */ + private function getRegisteredDomain($hostname) { + $registeredDomain = getRegisteredDomain ( $hostname ); + if ($registeredDomain === NULL) { + return $hostname; + } + return $registeredDomain; + } + public function setConnectionTimeout($timeout) { + $this->connectionTimeout = $timeout; + $this->logger->trace ( $this->connectionTimeout ); + } + public function setReadTimeout($timeout) { + $this->readTimeout = $timeout; + $this->logger->trace ( $this->readTimeout ); + } + private function createStream($connectionString) { + $stream = @stream_socket_client ( $connectionString, $errno, $errstr, $this->connectionTimeout ); + if ($stream) { + $this->trace ( sprintf ( 'connected to %s', $connectionString ) ); + } else { + $this->trace ( sprintf ( 'Could not connect to %s because %s [%s]', $connectionString, $errstr, $errno ) ); + } + return $stream; + } + + /** + * + * @param number $timeout + * @return boolean + */ + public function genericConnectionTest() { + $this->logger->trace ( 'testCustomConnection()' ); + // test if the port is open + $connectionString = sprintf ( '%s:%s', $this->hostname, $this->port ); + $stream = $this->createStream ( $connectionString, $this->connectionTimeout ); + return null != $stream; + } + + /** + * Given a hostname, test if it has open ports + * + * @param string $hostname + */ + public function testHttpPorts() { + $this->trace ( 'testHttpPorts()' ); + $connectionString = sprintf ( "https://%s:%s", $this->hostname, $this->port ); + try { + $response = PostmanUtils::remotePost ( $connectionString ); + $this->trace ( 'wp_remote_retrieve_headers:' ); + $this->logger->trace ( wp_remote_retrieve_headers ( $response ) ); + $this->trace ( wp_remote_retrieve_response_code ( $response ) ); + $this->protocol = 'HTTPS'; + $this->http = true; + $this->https = true; + $this->secure = true; + $this->reportedHostname = $this->hostname; + $this->reportedHostnameDomainOnly = $this->getRegisteredDomain ( $this->hostname ); + return true; + } catch ( Exception $e ) { + $this->debug ( 'return false' ); + } + } + + /** + * Given a hostname, test if it has open ports + * + * @param string $hostname + */ + public function testSmtpPorts() { + $this->logger->trace ( 'testSmtpPorts()' ); + if ($this->port == 8025) { + $this->debug ( 'Executing test code for port 8025' ); + $this->protocol = 'SMTP'; + $this->smtp = true; + $this->authNone = 'true'; + return true; + } + $connectionString = sprintf ( "%s:%s", $this->hostname, $this->port ); + $success = $this->talkToMailServer ( $connectionString, $this->connectionTimeout, $this->readTimeout ); + if ($success) { + $this->protocol = 'SMTP'; + if (! ($this->authCrammd5 || $this->authLogin || $this->authPlain || $this->authXoauth)) { + $this->authNone = true; + } + } else { + $this->trySmtps = true; + } + return $success; + } + + /** + * Given a hostname, test if it has open ports + * + * @param string $hostname + */ + public function testSmtpsPorts() { + $this->logger->trace ( 'testSmtpsPorts()' ); + $connectionString = sprintf ( "ssl://%s:%s", $this->hostname, $this->port ); + $success = $this->talkToMailServer ( $connectionString, $this->connectionTimeout, $this->readTimeout ); + if ($success) { + if (! ($this->authCrammd5 || $this->authLogin || $this->authPlain || $this->authXoauth)) { + $this->authNone = true; + } + $this->protocol = self::SMTPS_PROTOCOL; + $this->smtps = true; + $this->secure = true; + } + return $success; + } + + /** + * Given a hostname, test if it has open ports + * + * @param string $hostname + */ + private function talkToMailServer($connectionString) { + $this->logger->trace ( 'talkToMailServer()' ); + $stream = $this->createStream ( $connectionString, $this->connectionTimeout ); + if ($stream) { + $serverName = PostmanUtils::postmanGetServerName (); + @stream_set_timeout ( $stream, $this->readTimeout ); + // see http://php.net/manual/en/transports.inet.php#113244 + // see http://php.net/stream_socket_enable_crypto + $result = $this->readSmtpResponse ( $stream ); + if ($result) { + $this->reportedHostname = $result; + $this->reportedHostnameDomainOnly = $this->getRegisteredDomain ( $this->reportedHostname ); + $this->logger->trace ( sprintf ( 'comparing %s with %s', $this->reportedHostnameDomainOnly, $this->hostnameDomainOnly ) ); + $this->mitm = true; + // MITM exceptions + if ($this->reportedHostnameDomainOnly == 'google.com' && $this->hostnameDomainOnly == 'gmail.com') { + $this->mitm = false; + } elseif ($this->reportedHostnameDomainOnly == 'hotmail.com' && $this->hostnameDomainOnly == 'live.com') { + $this->mitm = false; + } elseif ($this->reportedHostnameDomainOnly == $this->hostnameDomainOnly) { + $this->mitm = false; + } + $this->debug ( sprintf ( 'domain name: %s (%s)', $this->reportedHostname, $this->reportedHostnameDomainOnly ) ); + $this->sendSmtpCommand ( $stream, sprintf ( 'EHLO %s', $serverName ) ); + $this->readSmtpResponse ( $stream ); + if ($this->checkStartTls) { + $this->sendSmtpCommand ( $stream, 'STARTTLS' ); + $this->readSmtpResponse ( $stream ); + $starttlsSuccess = @stream_socket_enable_crypto ( $stream, true, STREAM_CRYPTO_METHOD_TLS_CLIENT ); + if ($starttlsSuccess) { + $this->startTls = true; + $this->secure = true; + $this->sendSmtpCommand ( $stream, sprintf ( 'EHLO %s', $serverName ) ); + $this->readSmtpResponse ( $stream ); + } else { + $this->error ( 'starttls failed' ); + } + } + fclose ( $stream ); + $this->debug ( 'return true' ); + return true; + } else { + fclose ( $stream ); + $this->debug ( 'return false' ); + return false; + } + } else { + return false; + } + } + private function sendSmtpCommand($stream, $message) { + $this->trace ( 'tx: ' . $message ); + fputs ( $stream, $message . "\r\n" ); + } + private function readSmtpResponse($stream) { + $result = ''; + while ( ($line = fgets ( $stream )) !== false ) { + $this->trace ( 'rx: ' . $line ); + if (preg_match ( '/^250.AUTH/', $line )) { + // $this->debug ( '250-AUTH' ); + if (preg_match ( '/\\sLOGIN\\s/', $line )) { + $this->authLogin = true; + $this->debug ( 'authLogin' ); + } + if (preg_match ( '/\\sPLAIN\\s/', $line )) { + $this->authPlain = true; + $this->debug ( 'authPlain' ); + } + if (preg_match ( '/\\sCRAM-MD5\\s/', $line )) { + $this->authCrammd5 = true; + $this->debug ( 'authCrammd5' ); + } + if (preg_match ( '/\\sXOAUTH.\\s/', $line )) { + $this->authXoauth = true; + $this->debug ( 'authXoauth' ); + } + if (preg_match ( '/\\sANONYMOUS\\s/', $line )) { + // Postman treats ANONYMOUS login as no authentication. + $this->authNone = true; + $this->debug ( 'authAnonymous => authNone' ); + } + // done + $result = 'auth'; + } elseif (preg_match ( '/STARTTLS/', $line )) { + $result = 'starttls'; + $this->checkStartTls = true; + $this->debug ( 'starttls' ); + } elseif (preg_match ( '/^220.(.*?)\\s/', $line, $matches )) { + if (empty ( $result )) + $result = $matches [1]; + } + if (preg_match ( '/^\d\d\d\\s/', $line )) { + // always exist on last server response line + // $this->debug ( 'exit' ); + return $result; + } + } + return false; + } + public function getErrorMessage() { + return $this->errstr; + } + private function trace($message) { + $this->logger->trace ( sprintf ( '%s:%s => %s', $this->hostname, $this->port, $message ) ); + } + private function debug($message) { + $this->logger->debug ( sprintf ( '%s:%s => %s', $this->hostname, $this->port, $message ) ); + } + private function error($message) { + $this->logger->error ( sprintf ( '%s:%s => %s', $this->hostname, $this->port, $message ) ); + } +} diff --git a/Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php b/Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php new file mode 100644 index 0000000..3c1a23f --- /dev/null +++ b/Postman/Postman-Connectivity-Test/PostmanConnectivityTestController.php @@ -0,0 +1,312 @@ +<?php + +// +class PostmanConnectivityTestController { + + // + const PORT_TEST_SLUG = 'postman/port_test'; + + // logging + private $logger; + + // Holds the values to be used in the fields callbacks + private $rootPluginFilenameAndPath; + + /** + * Constructor + * + * @param unknown $rootPluginFilenameAndPath + */ + public function __construct($rootPluginFilenameAndPath) { + assert ( ! empty ( $rootPluginFilenameAndPath ) ); + assert ( PostmanUtils::isAdmin () ); + assert ( is_admin () ); + + $this->logger = new PostmanLogger ( get_class ( $this ) ); + $this->rootPluginFilenameAndPath = $rootPluginFilenameAndPath; + + PostmanUtils::registerAdminMenu ( $this, 'addPortTestSubmenu' ); + + // hook on the init event + add_action ( 'init', array ( + $this, + 'on_init' + ) ); + + // initialize the scripts, stylesheets and form fields + add_action ( 'admin_init', array ( + $this, + 'on_admin_init' + ) ); + } + + /** + * Functions to execute on the init event + * + * "Typically used by plugins to initialize. The current user is already authenticated by this time." + * ref: http://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_a_Typical_Request + */ + public function on_init() { + // register Ajax handlers + new PostmanPortTestAjaxController (); + } + + /** + * Fires on the admin_init method + */ + public function on_admin_init() { + // + $this->registerStylesAndScripts (); + } + + /** + * Register and add settings + */ + private function registerStylesAndScripts() { + if ($this->logger->isTrace ()) { + $this->logger->trace ( 'registerStylesAndScripts()' ); + } + // register the stylesheet and javascript external resources + $pluginData = apply_filters ( 'postman_get_plugin_metadata', null ); + wp_register_script ( 'postman_port_test_script', plugins_url ( 'Postman/Postman-Connectivity-Test/postman_port_test.js', $this->rootPluginFilenameAndPath ), array ( + PostmanViewController::JQUERY_SCRIPT, + 'jquery_validation', + PostmanViewController::POSTMAN_SCRIPT, + 'sprintf' + ), $pluginData ['version'] ); + } + + /** + * Register the Email Test screen + */ + public function addPortTestSubmenu() { + $page = add_submenu_page ( null, sprintf ( __ ( '%s Setup', Postman::TEXT_DOMAIN ), __ ( 'Postman SMTP', Postman::TEXT_DOMAIN ) ), __ ( 'Postman SMTP', Postman::TEXT_DOMAIN ), Postman::MANAGE_POSTMAN_CAPABILITY_NAME, PostmanConnectivityTestController::PORT_TEST_SLUG, array ( + $this, + 'outputPortTestContent' + ) ); + // When the plugin options page is loaded, also load the stylesheet + add_action ( 'admin_print_styles-' . $page, array ( + $this, + 'enqueuePortTestResources' + ) ); + } + + /** + */ + function enqueuePortTestResources() { + wp_enqueue_style ( PostmanViewController::POSTMAN_STYLE ); + wp_enqueue_script ( 'postman_port_test_script' ); + $warning = __ ( 'Warning', Postman::TEXT_DOMAIN ); + wp_localize_script ( PostmanViewController::POSTMAN_SCRIPT, 'postman_hostname_element_name', '#input_' . PostmanOptions::HOSTNAME ); + PostmanConnectivityTestController::addLocalizeScriptForPortTest (); + } + static function addLocalizeScriptForPortTest() { + wp_localize_script ( PostmanViewController::POSTMAN_SCRIPT, 'postman_port_test', array ( + 'in_progress' => _x ( 'Checking..', 'The "please wait" message', Postman::TEXT_DOMAIN ), + 'open' => _x ( 'Open', 'The port is open', Postman::TEXT_DOMAIN ), + 'closed' => _x ( 'Closed', 'The port is closed', Postman::TEXT_DOMAIN ), + 'yes' => __ ( 'Yes', Postman::TEXT_DOMAIN ), + 'no' => __ ( 'No', Postman::TEXT_DOMAIN ), + /* translators: where %d is a port number */ + 'blocked' => __ ( 'No outbound route between this site and the Internet on Port %d.', Postman::TEXT_DOMAIN ), + /* translators: where %d is a port number and %s is a hostname */ + 'try_dif_smtp' => __ ( 'Port %d is open, but not to %s.', Postman::TEXT_DOMAIN ), + /* translators: where %d is the port number and %s is the hostname */ + 'success' => __ ( 'Port %d can be used for SMTP to %s.', Postman::TEXT_DOMAIN ), + 'mitm' => sprintf ( '%s: %s', __ ( 'Warning', Postman::TEXT_DOMAIN ), __ ( 'connected to %1$s instead of %2$s.', Postman::TEXT_DOMAIN ) ), + /* translators: where %d is a port number and %s is the URL for the Postman Gmail Extension */ + 'https_success' => __ ( 'Port %d can be used with the %s.', Postman::TEXT_DOMAIN ) + ) ); + } + + /** + * Get the settings option array and print one of its values + */ + public function port_test_hostname_callback() { + $hostname = PostmanTransportRegistry::getInstance ()->getSelectedTransport ()->getHostname (); + if (empty ( $hostname )) { + $hostname = PostmanTransportRegistry::getInstance ()->getActiveTransport ()->getHostname (); + } + printf ( '<input type="text" id="input_hostname" name="postman_options[hostname]" value="%s" size="40" class="required"/>', $hostname ); + } + + /** + */ + public function outputPortTestContent() { + print '<div class="wrap">'; + + PostmanViewController::outputChildPageHeader ( __ ( 'Connectivity Test', Postman::TEXT_DOMAIN ) ); + + print '<p>'; + print __ ( 'This test determines which well-known ports are available for Postman to use.', Postman::TEXT_DOMAIN ); + print '<form id="port_test_form_id" method="post">'; + printf ( '<label for="hostname">%s</label>', __ ( 'Outgoing Mail Server Hostname', Postman::TEXT_DOMAIN ) ); + $this->port_test_hostname_callback (); + submit_button ( _x ( 'Begin Test', 'Button Label', Postman::TEXT_DOMAIN ), 'primary', 'begin-port-test', true ); + print '</form>'; + print '<table id="connectivity_test_table">'; + print sprintf ( '<tr><th rowspan="2">%s</th><th rowspan="2">%s</th><th rowspan="2">%s</th><th rowspan="2">%s</th><th rowspan="2">%s</th><th colspan="5">%s</th></tr>', __ ( 'Transport', Postman::TEXT_DOMAIN ), _x ( 'Socket', 'A socket is the network term for host and port together', Postman::TEXT_DOMAIN ), __ ( 'Status', Postman::TEXT_DOMAIN ) . '<sup>*</sup>', __ ( 'Service Available', Postman::TEXT_DOMAIN ), __ ( 'Server ID', Postman::TEXT_DOMAIN ), __ ( 'Authentication', Postman::TEXT_DOMAIN ) ); + print sprintf ( '<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>', 'None', 'Login', 'Plain', 'CRAM-MD5', 'OAuth 2.0' ); + $sockets = PostmanTransportRegistry::getInstance ()->getSocketsForSetupWizardToProbe (); + foreach ( $sockets as $socket ) { + if ($socket ['smtp']) { + print sprintf ( '<tr id="%s"><th class="name">%s</th><td class="socket">%s:%s</td><td class="firewall resettable">-</td><td class="service resettable">-</td><td class="reported_id resettable">-</td><td class="auth_none resettable">-</td><td class="auth_login resettable">-</td><td class="auth_plain resettable">-</td><td class="auth_crammd5 resettable">-</td><td class="auth_xoauth2 resettable">-</td></tr>', $socket ['id'], $socket ['transport_name'], $socket ['host'], $socket ['port'] ); + } else { + print sprintf ( '<tr id="%s"><th class="name">%s</th><td class="socket">%s:%s</td><td class="firewall resettable">-</td><td class="service resettable">-</td><td class="reported_id resettable">-</td><td colspan="5">%s</td></tr>', $socket ['id'], $socket ['transport_name'], $socket ['host'], $socket ['port'], __ ( 'n/a', Postman::TEXT_DOMAIN ) ); + } + } + print '</table>'; + /* Translators: Where %s is the name of the service providing Internet connectivity test */ + printf ( '<p class="portquiz" style="display:none; font-size:0.8em">* %s</p>', sprintf ( __ ( 'According to %s', Postman::TEXT_DOMAIN ), '<a target="_new" href="http://ww.downor.me/portquiz.net">portquiz.net</a>' ) ); + printf ( '<p class="ajax-loader" style="display:none"><img src="%s"/></p>', plugins_url ( 'postman-smtp/style/ajax-loader.gif' ) ); + print '<section id="conclusion" style="display:none">'; + print sprintf ( '<h3>%s:</h3>', __ ( 'Summary', Postman::TEXT_DOMAIN ) ); + print '<ol class="conclusion">'; + print '</ol>'; + print '</section>'; + print '<section id="blocked-port-help" style="display:none">'; + print sprintf ( '<p><b>%s</b></p>', __ ( 'A test with <span style="color:red">"No"</span> Service Available indicates one or more of these issues:', Postman::TEXT_DOMAIN ) ); + print '<ol>'; + printf ( '<li>%s</li>', __ ( 'Your web host has placed a firewall between this site and the Internet', Postman::TEXT_DOMAIN ) ); + printf ( '<li>%s</li>', __ ( 'The SMTP hostname is wrong or the mail server does not provide service on this port', Postman::TEXT_DOMAIN ) ); + /* translators: where (1) is the URL and (2) is the system */ + $systemBlockMessage = __ ( 'Your <a href="%1$s">%2$s configuration</a> is preventing outbound connections', Postman::TEXT_DOMAIN ); + printf ( '<li>%s</li>', sprintf ( $systemBlockMessage, 'http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen', 'PHP' ) ); + printf ( '<li>%s</li>', sprintf ( $systemBlockMessage, 'http://wp-mix.com/disable-external-url-requests/', 'WordPress' ) ); + print '</ol></p>'; + print sprintf ( '<p><b>%s</b></p>', __ ( 'If the issues above can not be resolved, your last option is to configure Postman to use an email account managed by your web host with an SMTP server managed by your web host.', Postman::TEXT_DOMAIN ) ); + print '</section>'; + print '</div>'; + } +} + +/** + * + * @author jasonhendriks + * + */ +class PostmanPortTestAjaxController { + private $logger; + /** + * Constructor + * + * @param PostmanOptions $options + */ + function __construct() { + $this->logger = new PostmanLogger ( get_class ( $this ) ); + PostmanUtils::registerAjaxHandler ( 'postman_get_hosts_to_test', $this, 'getPortsToTestViaAjax' ); + PostmanUtils::registerAjaxHandler ( 'postman_wizard_port_test', $this, 'runSmtpTest' ); + PostmanUtils::registerAjaxHandler ( 'postman_wizard_port_test_smtps', $this, 'runSmtpsTest' ); + PostmanUtils::registerAjaxHandler ( 'postman_port_quiz_test', $this, 'runPortQuizTest' ); + PostmanUtils::registerAjaxHandler ( 'postman_test_port', $this, 'runSmtpTest' ); + PostmanUtils::registerAjaxHandler ( 'postman_test_smtps', $this, 'runSmtpsTest' ); + } + + /** + * This Ajax function determines which hosts/ports to test in both the Wizard Connectivity Test and direct Connectivity Test + * + * Given a single outgoing smtp server hostname, return an array of host/port + * combinations to run the connectivity test on + */ + function getPortsToTestViaAjax() { + $queryHostname = PostmanUtils::getRequestParameter ( 'hostname' ); + // originalSmtpServer is what SmtpDiscovery thinks the SMTP server should be, given an email address + $originalSmtpServer = PostmanUtils::getRequestParameter ( 'original_smtp_server' ); + if ($this->logger->isDebug ()) { + $this->logger->debug ( 'Probing available transports for sockets against hostname ' . $queryHostname ); + } + $sockets = PostmanTransportRegistry::getInstance ()->getSocketsForSetupWizardToProbe ( $queryHostname, $originalSmtpServer ); + $response = array ( + 'hosts' => $sockets + ); + wp_send_json_success ( $response ); + } + + /** + * This Ajax function retrieves whether a TCP port is open or not + */ + function runPortQuizTest() { + $hostname = 'portquiz.net'; + $port = intval ( PostmanUtils::getRequestParameter ( 'port' ) ); + $this->logger->debug ( 'testing TCP port: hostname ' . $hostname . ' port ' . $port ); + $portTest = new PostmanPortTest ( $hostname, $port ); + $success = $portTest->genericConnectionTest (); + $this->buildResponse ( $hostname, $port, $portTest, $success ); + } + + /** + * This Ajax function retrieves whether a TCP port is open or not. + * This is called by both the Wizard and Port Test + */ + function runSmtpTest() { + $hostname = trim ( PostmanUtils::getRequestParameter ( 'hostname' ) ); + $port = intval ( PostmanUtils::getRequestParameter ( 'port' ) ); + $transport = trim ( PostmanUtils::getRequestParameter ( 'transport' ) ); + $timeout = PostmanUtils::getRequestParameter ( 'timeout' ); + $this->logger->trace ( $timeout ); + $portTest = new PostmanPortTest ( $hostname, $port ); + if (isset ( $timeout )) { + $portTest->setConnectionTimeout ( intval ( $timeout ) ); + $portTest->setReadTimeout ( intval ( $timeout ) ); + } + if ($port != 443) { + $this->logger->debug ( sprintf ( 'testing SMTP socket %s:%s (%s)', $hostname, $port, $transport ) ); + $success = $portTest->testSmtpPorts (); + } else { + $this->logger->debug ( sprintf ( 'testing HTTPS socket %s:%s (%s)', $hostname, $port, $transport ) ); + $success = $portTest->testHttpPorts (); + } + $this->buildResponse ( $hostname, $port, $portTest, $success, $transport ); + } + /** + * This Ajax function retrieves whether a TCP port is open or not + */ + function runSmtpsTest() { + $hostname = trim ( PostmanUtils::getRequestParameter ( 'hostname' ) ); + $port = intval ( PostmanUtils::getRequestParameter ( 'port' ) ); + $transport = trim ( PostmanUtils::getRequestParameter ( 'transport' ) ); + $transportName = trim ( PostmanUtils::getRequestParameter ( 'transport_name' ) ); + $this->logger->debug ( sprintf ( 'testing SMTPS socket %s:%s (%s)', $hostname, $port, $transport ) ); + $portTest = new PostmanPortTest ( $hostname, $port ); + $portTest->transportName = $transportName; + $success = $portTest->testSmtpsPorts (); + $this->buildResponse ( $hostname, $port, $portTest, $success, $transport ); + } + + /** + * + * @param unknown $hostname + * @param unknown $port + * @param unknown $success + */ + private function buildResponse($hostname, $port, PostmanPortTest $portTest, $success, $transport = '') { + $this->logger->debug ( sprintf ( 'testing port result for %s:%s success=%s', $hostname, $port, $success ) ); + $response = array ( + 'hostname' => $hostname, + 'hostname_domain_only' => $portTest->hostnameDomainOnly, + 'port' => $port, + 'protocol' => $portTest->protocol, + 'secure' => ($portTest->secure), + 'mitm' => ($portTest->mitm), + 'reported_hostname' => $portTest->reportedHostname, + 'reported_hostname_domain_only' => $portTest->reportedHostnameDomainOnly, + 'message' => $portTest->getErrorMessage (), + 'start_tls' => $portTest->startTls, + 'auth_plain' => $portTest->authPlain, + 'auth_login' => $portTest->authLogin, + 'auth_crammd5' => $portTest->authCrammd5, + 'auth_xoauth' => $portTest->authXoauth, + 'auth_none' => $portTest->authNone, + 'try_smtps' => $portTest->trySmtps, + 'success' => $success, + 'transport' => $transport + ); + $this->logger->trace ( 'Ajax response:' ); + $this->logger->trace ( $response ); + if ($success) { + wp_send_json_success ( $response ); + } else { + wp_send_json_error ( $response ); + } + } +} diff --git a/Postman/Postman-Connectivity-Test/postman_port_test.js b/Postman/Postman-Connectivity-Test/postman_port_test.js new file mode 100644 index 0000000..138b4ef --- /dev/null +++ b/Postman/Postman-Connectivity-Test/postman_port_test.js @@ -0,0 +1,332 @@ +postman_begin_test_button_id = 'input#begin-port-test'; + +jQuery(document).ready(function() { + var elHostname = jQuery(postman_begin_test_button_id); + jQuery(postman_hostname_element_name).focus(); + elHostname.click(function() { + valid = jQuery('#port_test_form_id').valid(); + if (!valid) { + return false; + } + + // initialize the view for a new test + elHostname.attr('disabled', 'disabled'); + hide('#conclusion'); + hide('#blocked-port-help'); + jQuery('ol.conclusion').html(''); + showLoaderIcon(); + + var $elTestingTable = jQuery('#connectivity_test_table'); + $elTestingTable.show(); + show('.portquiz'); + + var hostname = jQuery(postman_hostname_element_name).val(); + var data = { + 'action' : 'postman_get_hosts_to_test', + 'hostname' : hostname + }; + + totalPortsTested = 0; + portsToBeTested = 0; + + jQuery.post(ajaxurl, data, function(response) { + if (postmanValidateAjaxResponseWithPopup(response)) { + handleHostsToCheckResponse(response.data); + } + }).fail(function(response) { + ajaxFailed(response); + }); + + // + return false; + }); +}); + +/** + * Handles the response from the server of the list of sockets to check. + * + * @param hostname + * @param response + */ +function handleHostsToCheckResponse(response) { + for ( var x in response.hosts) { + var id = response.hosts[x].id; + var transportSlug = response.hosts[x].transport_id; + var hostname = response.hosts[x].host; + var port = response.hosts[x].port + var cell = 'tr#' + id + " td.socket"; + var testEl = jQuery(cell); + testEl.html('<span>' + hostname + ':' + port + '</span>'); + portQuizTest(response.hosts[x], hostname, port); + } +} + +function portQuizTest(socket, hostname, port) { + resetView(socket.id); + portsToBeTested += 1; + var cell = 'tr#' + socket.id + " td.firewall"; + var testEl = jQuery(cell); + testEl.html('<span style="color:blue">' + postman_port_test.in_progress + + '</span>'); + var data = { + 'action' : 'postman_port_quiz_test', + 'hostname' : hostname, + 'port' : port + }; + jQuery.post( + ajaxurl, + data, + function(response) { + if (postmanValidateAjaxResponseWithPopup(response)) { + if (response.success) { + testEl.html('<span style="color:green">' + + postman_port_test.open + '</span>'); + // start the next test + } else { + testEl.html('<span style="color:red">' + + postman_port_test.closed + '</span>'); + } + firstServiceTest(socket, hostname, port, response.success); + } + }).fail( + function(response) { + totalPortsTested += 1; + testEl.html('<span style="color:red">' + + postman_email_test.ajax_error + "</span>"); + enableButtonCheck(); + }); +} +function firstServiceTest(socket, hostname, port, open) { + var cell = 'tr#' + socket.id + " td.service"; + var testEl = jQuery(cell); + testEl.html('<span style="color:blue">' + postman_port_test.in_progress + + '</span>'); + var data = { + 'action' : 'postman_test_port', + 'hostname' : hostname, + 'port' : port + }; + jQuery + .post( + ajaxurl, + data, + function(response) { + if (postmanValidateAjaxResponseWithPopup(response)) { + if (response.success) { + totalPortsTested += 1; + if (port == 443) { + // API test + testEl + .html('<span style="color:green">🔒 ' + + response.data.protocol + + '</span>'); + var cell = 'tr#' + socket.id + + " td.reported_id"; + var p443El = jQuery(cell); + if (response.data.reported_hostname_domain_only) { + p443El + .html('<span>' + + response.data.reported_hostname_domain_only + + '</span>'); + } + addConclusion(sprintf( + postman_port_test.https_success, + response.data.port, + socket.transport_name), true, + response.data.secure); + } else { + // SMTP test + testEl.html('<span style="color:green">' + + response.data.protocol + + '</span>'); + inspectResponse(socket.id, response.data, + port); + var message = sprintf(postman_port_test.success, + port, hostname); + if (response.data.mitm) { + message += ' <span style="background-color:yellow">' + + sprintf( + postman_port_test.mitm, + response.data.reported_hostname_domain_only, + response.data.hostname_domain_only) + + '</span>'; + } + addConclusion(message, true, + response.data.secure); + } + } else { + if (port == 443) { + // API test + testEl.html('<span style="color:red">' + + postman_port_test.no + '</span>'); + totalPortsTested += 1; + var p443El = jQuery(cell); + addConclusion(sprintf(postman_port_test.try_dif_smtp, + port, hostname), false, + response.data.secure); + } else { + if (response.data.try_smtps) { + // start the SMTPS test + portTest3(socket, hostname, port, open); + } else { + testEl.html('<span style="color:red">' + + postman_port_test.no + '</span>'); + totalPortsTested += 1; + addConclusion(sprintf( + postman_port_test.blocked, port), + false, response.data.secure); + show('#blocked-port-help'); + } + } + } + enableButtonCheck(); + } + }).fail( + function(response) { + totalPortsTested += 1; + testEl.html('<span style="color:red">' + + postman_email_test.ajax_error + "</span>"); + enableButtonCheck(); + }); +} +function portTest3(socket, hostname, port, open) { + var cell = 'tr#' + socket.id + " td.service"; + var testEl = jQuery(cell); + testEl.html('<span style="color:blue">' + postman_port_test.in_progress + + '</span>'); + var data = { + 'action' : 'postman_test_smtps', + 'hostname' : hostname, + 'port' : port + }; + jQuery + .post( + ajaxurl, + data, + function(response) { + if (postmanValidateAjaxResponseWithPopup(response)) { + if (response.success) { + if (response.data.protocol == 'SMTPS') { + testEl + .html('<span style="color:green">🔒 ' + + response.data.protocol + + '</span>'); + } else { + + testEl.html('<span style="color:green">' + + response.data.protocol + + '</span>'); + } + inspectResponse(socket.id, response.data, port); + var message = sprintf(postman_port_test.success, + port, hostname); + if (response.data.mitm) { + message += ' <span style="background-color:yellow">' + + sprintf( + postman_port_test.mitm, + response.data.reported_hostname_domain_only, + response.data.hostname_domain_only + + '</span>'); + } + addConclusion(message, true, + response.data.secure); + } else { + testEl.html('<span style="color:red">' + + postman_port_test.no + '</span>'); + show('#blocked-port-help'); + if (open) { + addConclusion(sprintf(postman_port_test.try_dif_smtp, + port, hostname), false, + response.data.secure); + } else { + addConclusion(sprintf(postman_port_test.blocked, + port), false, response.data.secure); + } + } + totalPortsTested += 1; + enableButtonCheck(); + } + }).fail( + function(response) { + totalPortsTested += 1; + testEl.html('<span style="color:red">' + + postman_email_test.ajax_error + "</span>"); + enableButtonCheck(); + }); +} +function enableButtonCheck() { + if (totalPortsTested >= portsToBeTested) { + enable(postman_begin_test_button_id); + hideLoaderIcon(); + jQuery(postman_hostname_element_name).focus(); + } +} +function inspectResponse(id, response, port) { + var cell = 'tr#' + id + " td.reported_id"; + var testEl = jQuery(cell); + if (response.reported_hostname_domain_only) { + testEl.html('<span>' + response.reported_hostname_domain_only + + '</span>'); + } + var cell = 'tr#' + id + " td.service"; + var testEl = jQuery(cell); + if (response.protocol == 'SMTPS') { + testEl.html('<span style="color:green">🔒 SMTPS</span>'); + } else if (response.start_tls) { + testEl.html('<span style="color:green">🔒 SMTP-STARTTLS</span>'); + } else { + testEl.html('<span style="color:green">SMTP</span>'); + } + var cell = 'tr#' + id + " td.auth_none"; + var testEl = jQuery(cell); + if (response.auth_none) { + testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>'); + } else { + testEl.html('<span>' + postman_port_test.no + '</span>'); + } + var cell = 'tr#' + id + " td.auth_plain"; + var testEl = jQuery(cell); + if (response.auth_plain) { + testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>'); + } else { + testEl.html('<span>' + postman_port_test.no + '</span>'); + } + var cell = 'tr#' + id + " td.auth_login"; + var testEl = jQuery(cell); + if (response.auth_login) { + testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>'); + } else { + testEl.html('<span>' + postman_port_test.no + '</span>'); + } + var cell = 'tr#' + id + " td.auth_crammd5"; + var testEl = jQuery(cell); + if (response.auth_crammd5) { + testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>'); + } else { + testEl.html('<span>' + postman_port_test.no + '</span>'); + } + var cell = 'tr#' + id + " td.auth_xoauth2"; + var testEl = jQuery(cell); + if (response.auth_xoauth) { + testEl.html('<span style="color:green">' + postman_port_test.yes + '</span>'); + } else { + testEl.html('<span>' + postman_port_test.no + '</span>'); + } +} +function resetView(id) { + var testEl = jQuery('tr#' + id + ' td.resettable'); + testEl.html('-'); +} +function addConclusion(message, success, isSecure) { + show('#conclusion'); + var secureIcon = ''; + if (isSecure) { + secureIcon = '🔒 '; + } + if (success) { + message = '✅ ' + secureIcon + message; + } else { + message = '❌ ' + secureIcon + message; + } + jQuery('ol.conclusion').append('<li>' + message + '</li>'); +}
\ No newline at end of file diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/.gitignore b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/.gitignore new file mode 100644 index 0000000..7886a27 --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/.gitignore @@ -0,0 +1,3 @@ +C/*.o +C/libregdom.so.1 +C/test-regdom diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php new file mode 100644 index 0000000..8f353c8 --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/effectiveTLDs.inc.php @@ -0,0 +1,6484 @@ +<?php +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +$tldTree = array('ac' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'mil' => array(), +'org' => array()), +'ad' => array('nom' => array()), +'ae' => array('co' => array(), +'net' => array(), +'org' => array(), +'sch' => array(), +'ac' => array(), +'gov' => array(), +'mil' => array()), +'aero' => array('accident-investigation' => array(), +'accident-prevention' => array(), +'aerobatic' => array(), +'aeroclub' => array(), +'aerodrome' => array(), +'agents' => array(), +'aircraft' => array(), +'airline' => array(), +'airport' => array(), +'air-surveillance' => array(), +'airtraffic' => array(), +'air-traffic-control' => array(), +'ambulance' => array(), +'amusement' => array(), +'association' => array(), +'author' => array(), +'ballooning' => array(), +'broker' => array(), +'caa' => array(), +'cargo' => array(), +'catering' => array(), +'certification' => array(), +'championship' => array(), +'charter' => array(), +'civilaviation' => array(), +'club' => array(), +'conference' => array(), +'consultant' => array(), +'consulting' => array(), +'control' => array(), +'council' => array(), +'crew' => array(), +'design' => array(), +'dgca' => array(), +'educator' => array(), +'emergency' => array(), +'engine' => array(), +'engineer' => array(), +'entertainment' => array(), +'equipment' => array(), +'exchange' => array(), +'express' => array(), +'federation' => array(), +'flight' => array(), +'freight' => array(), +'fuel' => array(), +'gliding' => array(), +'government' => array(), +'groundhandling' => array(), +'group' => array(), +'hanggliding' => array(), +'homebuilt' => array(), +'insurance' => array(), +'journal' => array(), +'journalist' => array(), +'leasing' => array(), +'logistics' => array(), +'magazine' => array(), +'maintenance' => array(), +'marketplace' => array(), +'media' => array(), +'microlight' => array(), +'modelling' => array(), +'navigation' => array(), +'parachuting' => array(), +'paragliding' => array(), +'passenger-association' => array(), +'pilot' => array(), +'press' => array(), +'production' => array(), +'recreation' => array(), +'repbody' => array(), +'res' => array(), +'research' => array(), +'rotorcraft' => array(), +'safety' => array(), +'scientist' => array(), +'services' => array(), +'show' => array(), +'skydiving' => array(), +'software' => array(), +'student' => array(), +'taxi' => array(), +'trader' => array(), +'trading' => array(), +'trainer' => array(), +'union' => array(), +'workinggroup' => array(), +'works' => array()), +'af' => array('gov' => array(), +'com' => array(), +'org' => array(), +'net' => array(), +'edu' => array()), +'ag' => array('com' => array(), +'org' => array(), +'net' => array(), +'co' => array(), +'nom' => array()), +'ai' => array('off' => array(), +'com' => array(), +'net' => array(), +'org' => array()), +'al' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'mil' => array(), +'net' => array(), +'org' => array()), +'am' => array(), +'an' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array()), +'ao' => array('ed' => array(), +'gv' => array(), +'og' => array(), +'co' => array(), +'pb' => array(), +'it' => array()), +'aq' => array(), +'ar' => array('com' => array('blogspot' => array()), +'edu' => array(), +'gob' => array(), +'gov' => array(), +'int' => array(), +'mil' => array(), +'net' => array(), +'org' => array(), +'tur' => array()), +'arpa' => array('e164' => array(), +'in-addr' => array(), +'ip6' => array(), +'iris' => array(), +'uri' => array(), +'urn' => array()), +'as' => array('gov' => array()), +'asia' => array(), +'at' => array('ac' => array(), +'co' => array('blogspot' => array()), +'gv' => array(), +'or' => array(), +'biz' => array(), +'info' => array(), +'priv' => array()), +'au' => array('com' => array('blogspot' => array()), +'net' => array(), +'org' => array(), +'edu' => array('act' => array(), +'nsw' => array(), +'nt' => array(), +'qld' => array(), +'sa' => array(), +'tas' => array(), +'vic' => array(), +'wa' => array()), +'gov' => array('qld' => array(), +'sa' => array(), +'tas' => array(), +'vic' => array(), +'wa' => array()), +'asn' => array(), +'id' => array(), +'info' => array(), +'conf' => array(), +'oz' => array(), +'act' => array(), +'nsw' => array(), +'nt' => array(), +'qld' => array(), +'sa' => array(), +'tas' => array(), +'vic' => array(), +'wa' => array()), +'aw' => array('com' => array()), +'ax' => array(), +'az' => array('com' => array(), +'net' => array(), +'int' => array(), +'gov' => array(), +'org' => array(), +'edu' => array(), +'info' => array(), +'pp' => array(), +'mil' => array(), +'name' => array(), +'pro' => array(), +'biz' => array()), +'ba' => array('org' => array(), +'net' => array(), +'edu' => array(), +'gov' => array(), +'mil' => array(), +'unsa' => array(), +'unbi' => array(), +'co' => array(), +'com' => array(), +'rs' => array()), +'bb' => array('biz' => array(), +'co' => array(), +'com' => array(), +'edu' => array(), +'gov' => array(), +'info' => array(), +'net' => array(), +'org' => array(), +'store' => array(), +'tv' => array()), +'bd' => array('*' => array()), +'be' => array('ac' => array(), +'blogspot' => array()), +'bf' => array('gov' => array()), +'bg' => array('a' => array(), +'b' => array(), +'c' => array(), +'d' => array(), +'e' => array(), +'f' => array(), +'g' => array(), +'h' => array(), +'i' => array(), +'j' => array(), +'k' => array(), +'l' => array(), +'m' => array(), +'n' => array(), +'o' => array(), +'p' => array(), +'q' => array(), +'r' => array(), +'s' => array(), +'t' => array(), +'u' => array(), +'v' => array(), +'w' => array(), +'x' => array(), +'y' => array(), +'z' => array(), +'0' => array(), +'1' => array(), +'2' => array(), +'3' => array(), +'4' => array(), +'5' => array(), +'6' => array(), +'7' => array(), +'8' => array(), +'9' => array()), +'bh' => array('com' => array(), +'edu' => array(), +'net' => array(), +'org' => array(), +'gov' => array()), +'bi' => array('co' => array(), +'com' => array(), +'edu' => array(), +'or' => array(), +'org' => array()), +'biz' => array('dyndns' => array(), +'for-better' => array(), +'for-more' => array(), +'for-some' => array(), +'for-the' => array(), +'selfip' => array(), +'webhop' => array()), +'bj' => array('asso' => array(), +'barreau' => array(), +'gouv' => array(), +'blogspot' => array()), +'bm' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'org' => array()), +'bn' => array('*' => array()), +'bo' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'gob' => array(), +'int' => array(), +'org' => array(), +'net' => array(), +'mil' => array(), +'tv' => array()), +'br' => array('adm' => array(), +'adv' => array(), +'agr' => array(), +'am' => array(), +'arq' => array(), +'art' => array(), +'ato' => array(), +'b' => array(), +'bio' => array(), +'blog' => array(), +'bmd' => array(), +'cim' => array(), +'cng' => array(), +'cnt' => array(), +'com' => array('blogspot' => array()), +'coop' => array(), +'ecn' => array(), +'eco' => array(), +'edu' => array(), +'emp' => array(), +'eng' => array(), +'esp' => array(), +'etc' => array(), +'eti' => array(), +'far' => array(), +'flog' => array(), +'fm' => array(), +'fnd' => array(), +'fot' => array(), +'fst' => array(), +'g12' => array(), +'ggf' => array(), +'gov' => array(), +'imb' => array(), +'ind' => array(), +'inf' => array(), +'jor' => array(), +'jus' => array(), +'leg' => array(), +'lel' => array(), +'mat' => array(), +'med' => array(), +'mil' => array(), +'mp' => array(), +'mus' => array(), +'net' => array(), +'nom' => array('*' => array()), +'not' => array(), +'ntr' => array(), +'odo' => array(), +'org' => array(), +'ppg' => array(), +'pro' => array(), +'psc' => array(), +'psi' => array(), +'qsl' => array(), +'radio' => array(), +'rec' => array(), +'slg' => array(), +'srv' => array(), +'taxi' => array(), +'teo' => array(), +'tmp' => array(), +'trd' => array(), +'tur' => array(), +'tv' => array(), +'vet' => array(), +'vlog' => array(), +'wiki' => array(), +'zlg' => array()), +'bs' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'gov' => array()), +'bt' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'org' => array()), +'bv' => array(), +'bw' => array('co' => array(), +'org' => array()), +'by' => array('gov' => array(), +'mil' => array(), +'com' => array(), +'of' => array()), +'bz' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'gov' => array(), +'za' => array()), +'ca' => array('ab' => array(), +'bc' => array(), +'mb' => array(), +'nb' => array(), +'nf' => array(), +'nl' => array(), +'ns' => array(), +'nt' => array(), +'nu' => array(), +'on' => array(), +'pe' => array(), +'qc' => array(), +'sk' => array(), +'yk' => array(), +'gc' => array(), +'co' => array(), +'blogspot' => array()), +'cat' => array(), +'cc' => array('ftpaccess' => array(), +'game-server' => array(), +'myphotos' => array(), +'scrapping' => array()), +'cd' => array('gov' => array()), +'cf' => array('blogspot' => array()), +'cg' => array(), +'ch' => array('blogspot' => array()), +'ci' => array('org' => array(), +'or' => array(), +'com' => array(), +'co' => array(), +'edu' => array(), +'ed' => array(), +'ac' => array(), +'net' => array(), +'go' => array(), +'asso' => array(), +'aéroport' => array(), +'int' => array(), +'presse' => array(), +'md' => array(), +'gouv' => array()), +'ck' => array('*' => array(), +'www' => array('!' => '')), +'cl' => array('gov' => array(), +'gob' => array(), +'co' => array(), +'mil' => array()), +'cm' => array('co' => array(), +'com' => array(), +'gov' => array(), +'net' => array()), +'cn' => array('ac' => array(), +'com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'org' => array(), +'mil' => array(), +'公司' => array(), +'网络' => array(), +'網絡' => array(), +'ah' => array(), +'bj' => array(), +'cq' => array(), +'fj' => array(), +'gd' => array(), +'gs' => array(), +'gz' => array(), +'gx' => array(), +'ha' => array(), +'hb' => array(), +'he' => array(), +'hi' => array(), +'hl' => array(), +'hn' => array(), +'jl' => array(), +'js' => array(), +'jx' => array(), +'ln' => array(), +'nm' => array(), +'nx' => array(), +'qh' => array(), +'sc' => array(), +'sd' => array(), +'sh' => array(), +'sn' => array(), +'sx' => array(), +'tj' => array(), +'xj' => array(), +'xz' => array(), +'yn' => array(), +'zj' => array(), +'hk' => array(), +'mo' => array(), +'tw' => array(), +'amazonaws' => array('compute' => array('cn-north-1' => array()))), +'co' => array('arts' => array(), +'com' => array(), +'edu' => array(), +'firm' => array(), +'gov' => array(), +'info' => array(), +'int' => array(), +'mil' => array(), +'net' => array(), +'nom' => array(), +'org' => array(), +'rec' => array(), +'web' => array()), +'com' => array('amazonaws' => array('compute' => array('ap-northeast-1' => array(), +'ap-southeast-1' => array(), +'ap-southeast-2' => array(), +'eu-west-1' => array(), +'sa-east-1' => array(), +'us-gov-west-1' => array(), +'us-west-1' => array(), +'us-west-2' => array()), +'compute-1' => array('z-1' => array(), +'z-2' => array()), +'us-east-1' => array(), +'elb' => array(), +'s3' => array(), +'s3-us-west-2' => array(), +'s3-us-west-1' => array(), +'s3-eu-west-1' => array(), +'s3-ap-southeast-1' => array(), +'s3-ap-southeast-2' => array(), +'s3-ap-northeast-1' => array(), +'s3-sa-east-1' => array(), +'s3-us-gov-west-1' => array(), +'s3-fips-us-gov-west-1' => array(), +'s3-website-us-east-1' => array(), +'s3-website-us-west-2' => array(), +'s3-website-us-west-1' => array(), +'s3-website-eu-west-1' => array(), +'s3-website-ap-southeast-1' => array(), +'s3-website-ap-southeast-2' => array(), +'s3-website-ap-northeast-1' => array(), +'s3-website-sa-east-1' => array(), +'s3-website-us-gov-west-1' => array()), +'elasticbeanstalk' => array(), +'betainabox' => array(), +'ar' => array(), +'br' => array(), +'cn' => array(), +'de' => array(), +'eu' => array(), +'gb' => array(), +'hu' => array(), +'jpn' => array(), +'kr' => array(), +'mex' => array(), +'no' => array(), +'qc' => array(), +'ru' => array(), +'sa' => array(), +'se' => array(), +'uk' => array(), +'us' => array(), +'uy' => array(), +'za' => array(), +'africa' => array(), +'gr' => array(), +'co' => array(), +'cloudcontrolled' => array(), +'cloudcontrolapp' => array(), +'dreamhosters' => array(), +'dyndns-at-home' => array(), +'dyndns-at-work' => array(), +'dyndns-blog' => array(), +'dyndns-free' => array(), +'dyndns-home' => array(), +'dyndns-ip' => array(), +'dyndns-mail' => array(), +'dyndns-office' => array(), +'dyndns-pics' => array(), +'dyndns-remote' => array(), +'dyndns-server' => array(), +'dyndns-web' => array(), +'dyndns-wiki' => array(), +'dyndns-work' => array(), +'blogdns' => array(), +'cechire' => array(), +'dnsalias' => array(), +'dnsdojo' => array(), +'doesntexist' => array(), +'dontexist' => array(), +'doomdns' => array(), +'dyn-o-saur' => array(), +'dynalias' => array(), +'est-a-la-maison' => array(), +'est-a-la-masion' => array(), +'est-le-patron' => array(), +'est-mon-blogueur' => array(), +'from-ak' => array(), +'from-al' => array(), +'from-ar' => array(), +'from-ca' => array(), +'from-ct' => array(), +'from-dc' => array(), +'from-de' => array(), +'from-fl' => array(), +'from-ga' => array(), +'from-hi' => array(), +'from-ia' => array(), +'from-id' => array(), +'from-il' => array(), +'from-in' => array(), +'from-ks' => array(), +'from-ky' => array(), +'from-ma' => array(), +'from-md' => array(), +'from-mi' => array(), +'from-mn' => array(), +'from-mo' => array(), +'from-ms' => array(), +'from-mt' => array(), +'from-nc' => array(), +'from-nd' => array(), +'from-ne' => array(), +'from-nh' => array(), +'from-nj' => array(), +'from-nm' => array(), +'from-nv' => array(), +'from-oh' => array(), +'from-ok' => array(), +'from-or' => array(), +'from-pa' => array(), +'from-pr' => array(), +'from-ri' => array(), +'from-sc' => array(), +'from-sd' => array(), +'from-tn' => array(), +'from-tx' => array(), +'from-ut' => array(), +'from-va' => array(), +'from-vt' => array(), +'from-wa' => array(), +'from-wi' => array(), +'from-wv' => array(), +'from-wy' => array(), +'getmyip' => array(), +'gotdns' => array(), +'hobby-site' => array(), +'homelinux' => array(), +'homeunix' => array(), +'iamallama' => array(), +'is-a-anarchist' => array(), +'is-a-blogger' => array(), +'is-a-bookkeeper' => array(), +'is-a-bulls-fan' => array(), +'is-a-caterer' => array(), +'is-a-chef' => array(), +'is-a-conservative' => array(), +'is-a-cpa' => array(), +'is-a-cubicle-slave' => array(), +'is-a-democrat' => array(), +'is-a-designer' => array(), +'is-a-doctor' => array(), +'is-a-financialadvisor' => array(), +'is-a-geek' => array(), +'is-a-green' => array(), +'is-a-guru' => array(), +'is-a-hard-worker' => array(), +'is-a-hunter' => array(), +'is-a-landscaper' => array(), +'is-a-lawyer' => array(), +'is-a-liberal' => array(), +'is-a-libertarian' => array(), +'is-a-llama' => array(), +'is-a-musician' => array(), +'is-a-nascarfan' => array(), +'is-a-nurse' => array(), +'is-a-painter' => array(), +'is-a-personaltrainer' => array(), +'is-a-photographer' => array(), +'is-a-player' => array(), +'is-a-republican' => array(), +'is-a-rockstar' => array(), +'is-a-socialist' => array(), +'is-a-student' => array(), +'is-a-teacher' => array(), +'is-a-techie' => array(), +'is-a-therapist' => array(), +'is-an-accountant' => array(), +'is-an-actor' => array(), +'is-an-actress' => array(), +'is-an-anarchist' => array(), +'is-an-artist' => array(), +'is-an-engineer' => array(), +'is-an-entertainer' => array(), +'is-certified' => array(), +'is-gone' => array(), +'is-into-anime' => array(), +'is-into-cars' => array(), +'is-into-cartoons' => array(), +'is-into-games' => array(), +'is-leet' => array(), +'is-not-certified' => array(), +'is-slick' => array(), +'is-uberleet' => array(), +'is-with-theband' => array(), +'isa-geek' => array(), +'isa-hockeynut' => array(), +'issmarterthanyou' => array(), +'likes-pie' => array(), +'likescandy' => array(), +'neat-url' => array(), +'saves-the-whales' => array(), +'selfip' => array(), +'sells-for-less' => array(), +'sells-for-u' => array(), +'servebbs' => array(), +'simple-url' => array(), +'space-to-rent' => array(), +'teaches-yoga' => array(), +'writesthisblog' => array(), +'firebaseapp' => array(), +'flynnhub' => array(), +'githubusercontent' => array(), +'ro' => array(), +'appspot' => array(), +'blogspot' => array(), +'codespot' => array(), +'googleapis' => array(), +'googlecode' => array(), +'withgoogle' => array(), +'herokuapp' => array(), +'herokussl' => array(), +'nfshost' => array(), +'operaunite' => array(), +'outsystemscloud' => array(), +'rhcloud' => array(), +'yolasite' => array()), +'coop' => array(), +'cr' => array('ac' => array(), +'co' => array(), +'ed' => array(), +'fi' => array(), +'go' => array(), +'or' => array(), +'sa' => array()), +'cu' => array('com' => array(), +'edu' => array(), +'org' => array(), +'net' => array(), +'gov' => array(), +'inf' => array()), +'cv' => array('blogspot' => array()), +'cw' => array('com' => array(), +'edu' => array(), +'net' => array(), +'org' => array()), +'cx' => array('gov' => array(), +'ath' => array()), +'cy' => array('*' => array()), +'cz' => array('blogspot' => array()), +'de' => array('com' => array(), +'fuettertdasnetz' => array(), +'isteingeek' => array(), +'istmein' => array(), +'lebtimnetz' => array(), +'leitungsen' => array(), +'traeumtgerade' => array(), +'blogspot' => array()), +'dj' => array(), +'dk' => array('blogspot' => array()), +'dm' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'gov' => array()), +'do' => array('art' => array(), +'com' => array(), +'edu' => array(), +'gob' => array(), +'gov' => array(), +'mil' => array(), +'net' => array(), +'org' => array(), +'sld' => array(), +'web' => array()), +'dz' => array('com' => array(), +'org' => array(), +'net' => array(), +'gov' => array(), +'edu' => array(), +'asso' => array(), +'pol' => array(), +'art' => array()), +'ec' => array('com' => array(), +'info' => array(), +'net' => array(), +'fin' => array(), +'k12' => array(), +'med' => array(), +'pro' => array(), +'org' => array(), +'edu' => array(), +'gov' => array(), +'gob' => array(), +'mil' => array()), +'edu' => array(), +'ee' => array('edu' => array(), +'gov' => array(), +'riik' => array(), +'lib' => array(), +'med' => array(), +'com' => array(), +'pri' => array(), +'aip' => array(), +'org' => array(), +'fie' => array()), +'eg' => array('com' => array(), +'edu' => array(), +'eun' => array(), +'gov' => array(), +'mil' => array(), +'name' => array(), +'net' => array(), +'org' => array(), +'sci' => array()), +'er' => array('*' => array()), +'es' => array('com' => array('blogspot' => array()), +'nom' => array(), +'org' => array(), +'gob' => array(), +'edu' => array()), +'et' => array('com' => array(), +'gov' => array(), +'org' => array(), +'edu' => array(), +'biz' => array(), +'name' => array(), +'info' => array()), +'eu' => array(), +'fi' => array('aland' => array(), +'blogspot' => array(), +'iki' => array()), +'fj' => array('*' => array()), +'fk' => array('*' => array()), +'fm' => array(), +'fo' => array(), +'fr' => array('com' => array(), +'asso' => array(), +'nom' => array(), +'prd' => array(), +'presse' => array(), +'tm' => array(), +'aeroport' => array(), +'assedic' => array(), +'avocat' => array(), +'avoues' => array(), +'cci' => array(), +'chambagri' => array(), +'chirurgiens-dentistes' => array(), +'experts-comptables' => array(), +'geometre-expert' => array(), +'gouv' => array(), +'greta' => array(), +'huissier-justice' => array(), +'medecin' => array(), +'notaires' => array(), +'pharmacien' => array(), +'port' => array(), +'veterinaire' => array(), +'blogspot' => array()), +'ga' => array(), +'gb' => array(), +'gd' => array(), +'ge' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'mil' => array(), +'net' => array(), +'pvt' => array()), +'gf' => array(), +'gg' => array('co' => array(), +'net' => array(), +'org' => array()), +'gh' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'mil' => array()), +'gi' => array('com' => array(), +'ltd' => array(), +'gov' => array(), +'mod' => array(), +'edu' => array(), +'org' => array()), +'gl' => array(), +'gm' => array(), +'gn' => array('ac' => array(), +'com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'net' => array()), +'gov' => array(), +'gp' => array('com' => array(), +'net' => array(), +'mobi' => array(), +'edu' => array(), +'org' => array(), +'asso' => array()), +'gq' => array(), +'gr' => array('com' => array(), +'edu' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'blogspot' => array()), +'gs' => array(), +'gt' => array('com' => array(), +'edu' => array(), +'gob' => array(), +'ind' => array(), +'mil' => array(), +'net' => array(), +'org' => array()), +'gu' => array('*' => array()), +'gw' => array(), +'gy' => array('co' => array(), +'com' => array(), +'net' => array()), +'hk' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'idv' => array(), +'net' => array(), +'org' => array(), +'公司' => array(), +'教育' => array(), +'敎育' => array(), +'政府' => array(), +'個人' => array(), +'个人' => array(), +'箇人' => array(), +'網络' => array(), +'网络' => array(), +'组織' => array(), +'網絡' => array(), +'网絡' => array(), +'组织' => array(), +'組織' => array(), +'組织' => array(), +'blogspot' => array()), +'hm' => array(), +'hn' => array('com' => array(), +'edu' => array(), +'org' => array(), +'net' => array(), +'mil' => array(), +'gob' => array()), +'hr' => array('iz' => array(), +'from' => array(), +'name' => array(), +'com' => array()), +'ht' => array('com' => array(), +'shop' => array(), +'firm' => array(), +'info' => array(), +'adult' => array(), +'net' => array(), +'pro' => array(), +'org' => array(), +'med' => array(), +'art' => array(), +'coop' => array(), +'pol' => array(), +'asso' => array(), +'edu' => array(), +'rel' => array(), +'gouv' => array(), +'perso' => array()), +'hu' => array('co' => array(), +'info' => array(), +'org' => array(), +'priv' => array(), +'sport' => array(), +'tm' => array(), +'2000' => array(), +'agrar' => array(), +'bolt' => array(), +'casino' => array(), +'city' => array(), +'erotica' => array(), +'erotika' => array(), +'film' => array(), +'forum' => array(), +'games' => array(), +'hotel' => array(), +'ingatlan' => array(), +'jogasz' => array(), +'konyvelo' => array(), +'lakas' => array(), +'media' => array(), +'news' => array(), +'reklam' => array(), +'sex' => array(), +'shop' => array(), +'suli' => array(), +'szex' => array(), +'tozsde' => array(), +'utazas' => array(), +'video' => array(), +'blogspot' => array()), +'id' => array('ac' => array(), +'biz' => array(), +'co' => array(), +'desa' => array(), +'go' => array(), +'mil' => array(), +'my' => array(), +'net' => array(), +'or' => array(), +'sch' => array(), +'web' => array()), +'ie' => array('gov' => array(), +'blogspot' => array()), +'il' => array('*' => array(), +'co' => array('blogspot' => array())), +'im' => array('ac' => array(), +'co' => array('ltd' => array(), +'plc' => array()), +'com' => array(), +'net' => array(), +'org' => array(), +'tt' => array(), +'tv' => array()), +'in' => array('co' => array(), +'firm' => array(), +'net' => array(), +'org' => array(), +'gen' => array(), +'ind' => array(), +'nic' => array(), +'ac' => array(), +'edu' => array(), +'res' => array(), +'gov' => array(), +'mil' => array(), +'blogspot' => array()), +'info' => array('dyndns' => array(), +'barrel-of-knowledge' => array(), +'barrell-of-knowledge' => array(), +'for-our' => array(), +'groks-the' => array(), +'groks-this' => array(), +'here-for-more' => array(), +'knowsitall' => array(), +'selfip' => array(), +'webhop' => array()), +'int' => array('eu' => array()), +'io' => array('com' => array(), +'github' => array(), +'nid' => array()), +'iq' => array('gov' => array(), +'edu' => array(), +'mil' => array(), +'com' => array(), +'org' => array(), +'net' => array()), +'ir' => array('ac' => array(), +'co' => array(), +'gov' => array(), +'id' => array(), +'net' => array(), +'org' => array(), +'sch' => array(), +'ایران' => array(), +'ايران' => array()), +'is' => array('net' => array(), +'com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'int' => array(), +'cupcake' => array()), +'it' => array('gov' => array(), +'edu' => array(), +'abr' => array(), +'abruzzo' => array(), +'aosta-valley' => array(), +'aostavalley' => array(), +'bas' => array(), +'basilicata' => array(), +'cal' => array(), +'calabria' => array(), +'cam' => array(), +'campania' => array(), +'emilia-romagna' => array(), +'emiliaromagna' => array(), +'emr' => array(), +'friuli-v-giulia' => array(), +'friuli-ve-giulia' => array(), +'friuli-vegiulia' => array(), +'friuli-venezia-giulia' => array(), +'friuli-veneziagiulia' => array(), +'friuli-vgiulia' => array(), +'friuliv-giulia' => array(), +'friulive-giulia' => array(), +'friulivegiulia' => array(), +'friulivenezia-giulia' => array(), +'friuliveneziagiulia' => array(), +'friulivgiulia' => array(), +'fvg' => array(), +'laz' => array(), +'lazio' => array(), +'lig' => array(), +'liguria' => array(), +'lom' => array(), +'lombardia' => array(), +'lombardy' => array(), +'lucania' => array(), +'mar' => array(), +'marche' => array(), +'mol' => array(), +'molise' => array(), +'piedmont' => array(), +'piemonte' => array(), +'pmn' => array(), +'pug' => array(), +'puglia' => array(), +'sar' => array(), +'sardegna' => array(), +'sardinia' => array(), +'sic' => array(), +'sicilia' => array(), +'sicily' => array(), +'taa' => array(), +'tos' => array(), +'toscana' => array(), +'trentino-a-adige' => array(), +'trentino-aadige' => array(), +'trentino-alto-adige' => array(), +'trentino-altoadige' => array(), +'trentino-s-tirol' => array(), +'trentino-stirol' => array(), +'trentino-sud-tirol' => array(), +'trentino-sudtirol' => array(), +'trentino-sued-tirol' => array(), +'trentino-suedtirol' => array(), +'trentinoa-adige' => array(), +'trentinoaadige' => array(), +'trentinoalto-adige' => array(), +'trentinoaltoadige' => array(), +'trentinos-tirol' => array(), +'trentinostirol' => array(), +'trentinosud-tirol' => array(), +'trentinosudtirol' => array(), +'trentinosued-tirol' => array(), +'trentinosuedtirol' => array(), +'tuscany' => array(), +'umb' => array(), +'umbria' => array(), +'val-d-aosta' => array(), +'val-daosta' => array(), +'vald-aosta' => array(), +'valdaosta' => array(), +'valle-aosta' => array(), +'valle-d-aosta' => array(), +'valle-daosta' => array(), +'valleaosta' => array(), +'valled-aosta' => array(), +'valledaosta' => array(), +'vallee-aoste' => array(), +'valleeaoste' => array(), +'vao' => array(), +'vda' => array(), +'ven' => array(), +'veneto' => array(), +'ag' => array(), +'agrigento' => array(), +'al' => array(), +'alessandria' => array(), +'alto-adige' => array(), +'altoadige' => array(), +'an' => array(), +'ancona' => array(), +'andria-barletta-trani' => array(), +'andria-trani-barletta' => array(), +'andriabarlettatrani' => array(), +'andriatranibarletta' => array(), +'ao' => array(), +'aosta' => array(), +'aoste' => array(), +'ap' => array(), +'aq' => array(), +'aquila' => array(), +'ar' => array(), +'arezzo' => array(), +'ascoli-piceno' => array(), +'ascolipiceno' => array(), +'asti' => array(), +'at' => array(), +'av' => array(), +'avellino' => array(), +'ba' => array(), +'balsan' => array(), +'bari' => array(), +'barletta-trani-andria' => array(), +'barlettatraniandria' => array(), +'belluno' => array(), +'benevento' => array(), +'bergamo' => array(), +'bg' => array(), +'bi' => array(), +'biella' => array(), +'bl' => array(), +'bn' => array(), +'bo' => array(), +'bologna' => array(), +'bolzano' => array(), +'bozen' => array(), +'br' => array(), +'brescia' => array(), +'brindisi' => array(), +'bs' => array(), +'bt' => array(), +'bz' => array(), +'ca' => array(), +'cagliari' => array(), +'caltanissetta' => array(), +'campidano-medio' => array(), +'campidanomedio' => array(), +'campobasso' => array(), +'carbonia-iglesias' => array(), +'carboniaiglesias' => array(), +'carrara-massa' => array(), +'carraramassa' => array(), +'caserta' => array(), +'catania' => array(), +'catanzaro' => array(), +'cb' => array(), +'ce' => array(), +'cesena-forli' => array(), +'cesenaforli' => array(), +'ch' => array(), +'chieti' => array(), +'ci' => array(), +'cl' => array(), +'cn' => array(), +'co' => array(), +'como' => array(), +'cosenza' => array(), +'cr' => array(), +'cremona' => array(), +'crotone' => array(), +'cs' => array(), +'ct' => array(), +'cuneo' => array(), +'cz' => array(), +'dell-ogliastra' => array(), +'dellogliastra' => array(), +'en' => array(), +'enna' => array(), +'fc' => array(), +'fe' => array(), +'fermo' => array(), +'ferrara' => array(), +'fg' => array(), +'fi' => array(), +'firenze' => array(), +'florence' => array(), +'fm' => array(), +'foggia' => array(), +'forli-cesena' => array(), +'forlicesena' => array(), +'fr' => array(), +'frosinone' => array(), +'ge' => array(), +'genoa' => array(), +'genova' => array(), +'go' => array(), +'gorizia' => array(), +'gr' => array(), +'grosseto' => array(), +'iglesias-carbonia' => array(), +'iglesiascarbonia' => array(), +'im' => array(), +'imperia' => array(), +'is' => array(), +'isernia' => array(), +'kr' => array(), +'la-spezia' => array(), +'laquila' => array(), +'laspezia' => array(), +'latina' => array(), +'lc' => array(), +'le' => array(), +'lecce' => array(), +'lecco' => array(), +'li' => array(), +'livorno' => array(), +'lo' => array(), +'lodi' => array(), +'lt' => array(), +'lu' => array(), +'lucca' => array(), +'macerata' => array(), +'mantova' => array(), +'massa-carrara' => array(), +'massacarrara' => array(), +'matera' => array(), +'mb' => array(), +'mc' => array(), +'me' => array(), +'medio-campidano' => array(), +'mediocampidano' => array(), +'messina' => array(), +'mi' => array(), +'milan' => array(), +'milano' => array(), +'mn' => array(), +'mo' => array(), +'modena' => array(), +'monza-brianza' => array(), +'monza-e-della-brianza' => array(), +'monza' => array(), +'monzabrianza' => array(), +'monzaebrianza' => array(), +'monzaedellabrianza' => array(), +'ms' => array(), +'mt' => array(), +'na' => array(), +'naples' => array(), +'napoli' => array(), +'no' => array(), +'novara' => array(), +'nu' => array(), +'nuoro' => array(), +'og' => array(), +'ogliastra' => array(), +'olbia-tempio' => array(), +'olbiatempio' => array(), +'or' => array(), +'oristano' => array(), +'ot' => array(), +'pa' => array(), +'padova' => array(), +'padua' => array(), +'palermo' => array(), +'parma' => array(), +'pavia' => array(), +'pc' => array(), +'pd' => array(), +'pe' => array(), +'perugia' => array(), +'pesaro-urbino' => array(), +'pesarourbino' => array(), +'pescara' => array(), +'pg' => array(), +'pi' => array(), +'piacenza' => array(), +'pisa' => array(), +'pistoia' => array(), +'pn' => array(), +'po' => array(), +'pordenone' => array(), +'potenza' => array(), +'pr' => array(), +'prato' => array(), +'pt' => array(), +'pu' => array(), +'pv' => array(), +'pz' => array(), +'ra' => array(), +'ragusa' => array(), +'ravenna' => array(), +'rc' => array(), +'re' => array(), +'reggio-calabria' => array(), +'reggio-emilia' => array(), +'reggiocalabria' => array(), +'reggioemilia' => array(), +'rg' => array(), +'ri' => array(), +'rieti' => array(), +'rimini' => array(), +'rm' => array(), +'rn' => array(), +'ro' => array(), +'roma' => array(), +'rome' => array(), +'rovigo' => array(), +'sa' => array(), +'salerno' => array(), +'sassari' => array(), +'savona' => array(), +'si' => array(), +'siena' => array(), +'siracusa' => array(), +'so' => array(), +'sondrio' => array(), +'sp' => array(), +'sr' => array(), +'ss' => array(), +'suedtirol' => array(), +'sv' => array(), +'ta' => array(), +'taranto' => array(), +'te' => array(), +'tempio-olbia' => array(), +'tempioolbia' => array(), +'teramo' => array(), +'terni' => array(), +'tn' => array(), +'to' => array(), +'torino' => array(), +'tp' => array(), +'tr' => array(), +'trani-andria-barletta' => array(), +'trani-barletta-andria' => array(), +'traniandriabarletta' => array(), +'tranibarlettaandria' => array(), +'trapani' => array(), +'trentino' => array(), +'trento' => array(), +'treviso' => array(), +'trieste' => array(), +'ts' => array(), +'turin' => array(), +'tv' => array(), +'ud' => array(), +'udine' => array(), +'urbino-pesaro' => array(), +'urbinopesaro' => array(), +'va' => array(), +'varese' => array(), +'vb' => array(), +'vc' => array(), +'ve' => array(), +'venezia' => array(), +'venice' => array(), +'verbania' => array(), +'vercelli' => array(), +'verona' => array(), +'vi' => array(), +'vibo-valentia' => array(), +'vibovalentia' => array(), +'vicenza' => array(), +'viterbo' => array(), +'vr' => array(), +'vs' => array(), +'vt' => array(), +'vv' => array(), +'blogspot' => array()), +'je' => array('co' => array(), +'net' => array(), +'org' => array()), +'jm' => array('*' => array()), +'jo' => array('com' => array(), +'org' => array(), +'net' => array(), +'edu' => array(), +'sch' => array(), +'gov' => array(), +'mil' => array(), +'name' => array()), +'jobs' => array(), +'jp' => array('ac' => array(), +'ad' => array(), +'co' => array(), +'ed' => array(), +'go' => array(), +'gr' => array(), +'lg' => array(), +'ne' => array(), +'or' => array(), +'aichi' => array('aisai' => array(), +'ama' => array(), +'anjo' => array(), +'asuke' => array(), +'chiryu' => array(), +'chita' => array(), +'fuso' => array(), +'gamagori' => array(), +'handa' => array(), +'hazu' => array(), +'hekinan' => array(), +'higashiura' => array(), +'ichinomiya' => array(), +'inazawa' => array(), +'inuyama' => array(), +'isshiki' => array(), +'iwakura' => array(), +'kanie' => array(), +'kariya' => array(), +'kasugai' => array(), +'kira' => array(), +'kiyosu' => array(), +'komaki' => array(), +'konan' => array(), +'kota' => array(), +'mihama' => array(), +'miyoshi' => array(), +'nishio' => array(), +'nisshin' => array(), +'obu' => array(), +'oguchi' => array(), +'oharu' => array(), +'okazaki' => array(), +'owariasahi' => array(), +'seto' => array(), +'shikatsu' => array(), +'shinshiro' => array(), +'shitara' => array(), +'tahara' => array(), +'takahama' => array(), +'tobishima' => array(), +'toei' => array(), +'togo' => array(), +'tokai' => array(), +'tokoname' => array(), +'toyoake' => array(), +'toyohashi' => array(), +'toyokawa' => array(), +'toyone' => array(), +'toyota' => array(), +'tsushima' => array(), +'yatomi' => array()), +'akita' => array('akita' => array(), +'daisen' => array(), +'fujisato' => array(), +'gojome' => array(), +'hachirogata' => array(), +'happou' => array(), +'higashinaruse' => array(), +'honjo' => array(), +'honjyo' => array(), +'ikawa' => array(), +'kamikoani' => array(), +'kamioka' => array(), +'katagami' => array(), +'kazuno' => array(), +'kitaakita' => array(), +'kosaka' => array(), +'kyowa' => array(), +'misato' => array(), +'mitane' => array(), +'moriyoshi' => array(), +'nikaho' => array(), +'noshiro' => array(), +'odate' => array(), +'oga' => array(), +'ogata' => array(), +'semboku' => array(), +'yokote' => array(), +'yurihonjo' => array()), +'aomori' => array('aomori' => array(), +'gonohe' => array(), +'hachinohe' => array(), +'hashikami' => array(), +'hiranai' => array(), +'hirosaki' => array(), +'itayanagi' => array(), +'kuroishi' => array(), +'misawa' => array(), +'mutsu' => array(), +'nakadomari' => array(), +'noheji' => array(), +'oirase' => array(), +'owani' => array(), +'rokunohe' => array(), +'sannohe' => array(), +'shichinohe' => array(), +'shingo' => array(), +'takko' => array(), +'towada' => array(), +'tsugaru' => array(), +'tsuruta' => array()), +'chiba' => array('abiko' => array(), +'asahi' => array(), +'chonan' => array(), +'chosei' => array(), +'choshi' => array(), +'chuo' => array(), +'funabashi' => array(), +'futtsu' => array(), +'hanamigawa' => array(), +'ichihara' => array(), +'ichikawa' => array(), +'ichinomiya' => array(), +'inzai' => array(), +'isumi' => array(), +'kamagaya' => array(), +'kamogawa' => array(), +'kashiwa' => array(), +'katori' => array(), +'katsuura' => array(), +'kimitsu' => array(), +'kisarazu' => array(), +'kozaki' => array(), +'kujukuri' => array(), +'kyonan' => array(), +'matsudo' => array(), +'midori' => array(), +'mihama' => array(), +'minamiboso' => array(), +'mobara' => array(), +'mutsuzawa' => array(), +'nagara' => array(), +'nagareyama' => array(), +'narashino' => array(), +'narita' => array(), +'noda' => array(), +'oamishirasato' => array(), +'omigawa' => array(), +'onjuku' => array(), +'otaki' => array(), +'sakae' => array(), +'sakura' => array(), +'shimofusa' => array(), +'shirako' => array(), +'shiroi' => array(), +'shisui' => array(), +'sodegaura' => array(), +'sosa' => array(), +'tako' => array(), +'tateyama' => array(), +'togane' => array(), +'tohnosho' => array(), +'tomisato' => array(), +'urayasu' => array(), +'yachimata' => array(), +'yachiyo' => array(), +'yokaichiba' => array(), +'yokoshibahikari' => array(), +'yotsukaido' => array()), +'ehime' => array('ainan' => array(), +'honai' => array(), +'ikata' => array(), +'imabari' => array(), +'iyo' => array(), +'kamijima' => array(), +'kihoku' => array(), +'kumakogen' => array(), +'masaki' => array(), +'matsuno' => array(), +'matsuyama' => array(), +'namikata' => array(), +'niihama' => array(), +'ozu' => array(), +'saijo' => array(), +'seiyo' => array(), +'shikokuchuo' => array(), +'tobe' => array(), +'toon' => array(), +'uchiko' => array(), +'uwajima' => array(), +'yawatahama' => array()), +'fukui' => array('echizen' => array(), +'eiheiji' => array(), +'fukui' => array(), +'ikeda' => array(), +'katsuyama' => array(), +'mihama' => array(), +'minamiechizen' => array(), +'obama' => array(), +'ohi' => array(), +'ono' => array(), +'sabae' => array(), +'sakai' => array(), +'takahama' => array(), +'tsuruga' => array(), +'wakasa' => array()), +'fukuoka' => array('ashiya' => array(), +'buzen' => array(), +'chikugo' => array(), +'chikuho' => array(), +'chikujo' => array(), +'chikushino' => array(), +'chikuzen' => array(), +'chuo' => array(), +'dazaifu' => array(), +'fukuchi' => array(), +'hakata' => array(), +'higashi' => array(), +'hirokawa' => array(), +'hisayama' => array(), +'iizuka' => array(), +'inatsuki' => array(), +'kaho' => array(), +'kasuga' => array(), +'kasuya' => array(), +'kawara' => array(), +'keisen' => array(), +'koga' => array(), +'kurate' => array(), +'kurogi' => array(), +'kurume' => array(), +'minami' => array(), +'miyako' => array(), +'miyama' => array(), +'miyawaka' => array(), +'mizumaki' => array(), +'munakata' => array(), +'nakagawa' => array(), +'nakama' => array(), +'nishi' => array(), +'nogata' => array(), +'ogori' => array(), +'okagaki' => array(), +'okawa' => array(), +'oki' => array(), +'omuta' => array(), +'onga' => array(), +'onojo' => array(), +'oto' => array(), +'saigawa' => array(), +'sasaguri' => array(), +'shingu' => array(), +'shinyoshitomi' => array(), +'shonai' => array(), +'soeda' => array(), +'sue' => array(), +'tachiarai' => array(), +'tagawa' => array(), +'takata' => array(), +'toho' => array(), +'toyotsu' => array(), +'tsuiki' => array(), +'ukiha' => array(), +'umi' => array(), +'usui' => array(), +'yamada' => array(), +'yame' => array(), +'yanagawa' => array(), +'yukuhashi' => array()), +'fukushima' => array('aizubange' => array(), +'aizumisato' => array(), +'aizuwakamatsu' => array(), +'asakawa' => array(), +'bandai' => array(), +'date' => array(), +'fukushima' => array(), +'furudono' => array(), +'futaba' => array(), +'hanawa' => array(), +'higashi' => array(), +'hirata' => array(), +'hirono' => array(), +'iitate' => array(), +'inawashiro' => array(), +'ishikawa' => array(), +'iwaki' => array(), +'izumizaki' => array(), +'kagamiishi' => array(), +'kaneyama' => array(), +'kawamata' => array(), +'kitakata' => array(), +'kitashiobara' => array(), +'koori' => array(), +'koriyama' => array(), +'kunimi' => array(), +'miharu' => array(), +'mishima' => array(), +'namie' => array(), +'nango' => array(), +'nishiaizu' => array(), +'nishigo' => array(), +'okuma' => array(), +'omotego' => array(), +'ono' => array(), +'otama' => array(), +'samegawa' => array(), +'shimogo' => array(), +'shirakawa' => array(), +'showa' => array(), +'soma' => array(), +'sukagawa' => array(), +'taishin' => array(), +'tamakawa' => array(), +'tanagura' => array(), +'tenei' => array(), +'yabuki' => array(), +'yamato' => array(), +'yamatsuri' => array(), +'yanaizu' => array(), +'yugawa' => array()), +'gifu' => array('anpachi' => array(), +'ena' => array(), +'gifu' => array(), +'ginan' => array(), +'godo' => array(), +'gujo' => array(), +'hashima' => array(), +'hichiso' => array(), +'hida' => array(), +'higashishirakawa' => array(), +'ibigawa' => array(), +'ikeda' => array(), +'kakamigahara' => array(), +'kani' => array(), +'kasahara' => array(), +'kasamatsu' => array(), +'kawaue' => array(), +'kitagata' => array(), +'mino' => array(), +'minokamo' => array(), +'mitake' => array(), +'mizunami' => array(), +'motosu' => array(), +'nakatsugawa' => array(), +'ogaki' => array(), +'sakahogi' => array(), +'seki' => array(), +'sekigahara' => array(), +'shirakawa' => array(), +'tajimi' => array(), +'takayama' => array(), +'tarui' => array(), +'toki' => array(), +'tomika' => array(), +'wanouchi' => array(), +'yamagata' => array(), +'yaotsu' => array(), +'yoro' => array()), +'gunma' => array('annaka' => array(), +'chiyoda' => array(), +'fujioka' => array(), +'higashiagatsuma' => array(), +'isesaki' => array(), +'itakura' => array(), +'kanna' => array(), +'kanra' => array(), +'katashina' => array(), +'kawaba' => array(), +'kiryu' => array(), +'kusatsu' => array(), +'maebashi' => array(), +'meiwa' => array(), +'midori' => array(), +'minakami' => array(), +'naganohara' => array(), +'nakanojo' => array(), +'nanmoku' => array(), +'numata' => array(), +'oizumi' => array(), +'ora' => array(), +'ota' => array(), +'shibukawa' => array(), +'shimonita' => array(), +'shinto' => array(), +'showa' => array(), +'takasaki' => array(), +'takayama' => array(), +'tamamura' => array(), +'tatebayashi' => array(), +'tomioka' => array(), +'tsukiyono' => array(), +'tsumagoi' => array(), +'ueno' => array(), +'yoshioka' => array()), +'hiroshima' => array('asaminami' => array(), +'daiwa' => array(), +'etajima' => array(), +'fuchu' => array(), +'fukuyama' => array(), +'hatsukaichi' => array(), +'higashihiroshima' => array(), +'hongo' => array(), +'jinsekikogen' => array(), +'kaita' => array(), +'kui' => array(), +'kumano' => array(), +'kure' => array(), +'mihara' => array(), +'miyoshi' => array(), +'naka' => array(), +'onomichi' => array(), +'osakikamijima' => array(), +'otake' => array(), +'saka' => array(), +'sera' => array(), +'seranishi' => array(), +'shinichi' => array(), +'shobara' => array(), +'takehara' => array()), +'hokkaido' => array('abashiri' => array(), +'abira' => array(), +'aibetsu' => array(), +'akabira' => array(), +'akkeshi' => array(), +'asahikawa' => array(), +'ashibetsu' => array(), +'ashoro' => array(), +'assabu' => array(), +'atsuma' => array(), +'bibai' => array(), +'biei' => array(), +'bifuka' => array(), +'bihoro' => array(), +'biratori' => array(), +'chippubetsu' => array(), +'chitose' => array(), +'date' => array(), +'ebetsu' => array(), +'embetsu' => array(), +'eniwa' => array(), +'erimo' => array(), +'esan' => array(), +'esashi' => array(), +'fukagawa' => array(), +'fukushima' => array(), +'furano' => array(), +'furubira' => array(), +'haboro' => array(), +'hakodate' => array(), +'hamatonbetsu' => array(), +'hidaka' => array(), +'higashikagura' => array(), +'higashikawa' => array(), +'hiroo' => array(), +'hokuryu' => array(), +'hokuto' => array(), +'honbetsu' => array(), +'horokanai' => array(), +'horonobe' => array(), +'ikeda' => array(), +'imakane' => array(), +'ishikari' => array(), +'iwamizawa' => array(), +'iwanai' => array(), +'kamifurano' => array(), +'kamikawa' => array(), +'kamishihoro' => array(), +'kamisunagawa' => array(), +'kamoenai' => array(), +'kayabe' => array(), +'kembuchi' => array(), +'kikonai' => array(), +'kimobetsu' => array(), +'kitahiroshima' => array(), +'kitami' => array(), +'kiyosato' => array(), +'koshimizu' => array(), +'kunneppu' => array(), +'kuriyama' => array(), +'kuromatsunai' => array(), +'kushiro' => array(), +'kutchan' => array(), +'kyowa' => array(), +'mashike' => array(), +'matsumae' => array(), +'mikasa' => array(), +'minamifurano' => array(), +'mombetsu' => array(), +'moseushi' => array(), +'mukawa' => array(), +'muroran' => array(), +'naie' => array(), +'nakagawa' => array(), +'nakasatsunai' => array(), +'nakatombetsu' => array(), +'nanae' => array(), +'nanporo' => array(), +'nayoro' => array(), +'nemuro' => array(), +'niikappu' => array(), +'niki' => array(), +'nishiokoppe' => array(), +'noboribetsu' => array(), +'numata' => array(), +'obihiro' => array(), +'obira' => array(), +'oketo' => array(), +'okoppe' => array(), +'otaru' => array(), +'otobe' => array(), +'otofuke' => array(), +'otoineppu' => array(), +'oumu' => array(), +'ozora' => array(), +'pippu' => array(), +'rankoshi' => array(), +'rebun' => array(), +'rikubetsu' => array(), +'rishiri' => array(), +'rishirifuji' => array(), +'saroma' => array(), +'sarufutsu' => array(), +'shakotan' => array(), +'shari' => array(), +'shibecha' => array(), +'shibetsu' => array(), +'shikabe' => array(), +'shikaoi' => array(), +'shimamaki' => array(), +'shimizu' => array(), +'shimokawa' => array(), +'shinshinotsu' => array(), +'shintoku' => array(), +'shiranuka' => array(), +'shiraoi' => array(), +'shiriuchi' => array(), +'sobetsu' => array(), +'sunagawa' => array(), +'taiki' => array(), +'takasu' => array(), +'takikawa' => array(), +'takinoue' => array(), +'teshikaga' => array(), +'tobetsu' => array(), +'tohma' => array(), +'tomakomai' => array(), +'tomari' => array(), +'toya' => array(), +'toyako' => array(), +'toyotomi' => array(), +'toyoura' => array(), +'tsubetsu' => array(), +'tsukigata' => array(), +'urakawa' => array(), +'urausu' => array(), +'uryu' => array(), +'utashinai' => array(), +'wakkanai' => array(), +'wassamu' => array(), +'yakumo' => array(), +'yoichi' => array()), +'hyogo' => array('aioi' => array(), +'akashi' => array(), +'ako' => array(), +'amagasaki' => array(), +'aogaki' => array(), +'asago' => array(), +'ashiya' => array(), +'awaji' => array(), +'fukusaki' => array(), +'goshiki' => array(), +'harima' => array(), +'himeji' => array(), +'ichikawa' => array(), +'inagawa' => array(), +'itami' => array(), +'kakogawa' => array(), +'kamigori' => array(), +'kamikawa' => array(), +'kasai' => array(), +'kasuga' => array(), +'kawanishi' => array(), +'miki' => array(), +'minamiawaji' => array(), +'nishinomiya' => array(), +'nishiwaki' => array(), +'ono' => array(), +'sanda' => array(), +'sannan' => array(), +'sasayama' => array(), +'sayo' => array(), +'shingu' => array(), +'shinonsen' => array(), +'shiso' => array(), +'sumoto' => array(), +'taishi' => array(), +'taka' => array(), +'takarazuka' => array(), +'takasago' => array(), +'takino' => array(), +'tamba' => array(), +'tatsuno' => array(), +'toyooka' => array(), +'yabu' => array(), +'yashiro' => array(), +'yoka' => array(), +'yokawa' => array()), +'ibaraki' => array('ami' => array(), +'asahi' => array(), +'bando' => array(), +'chikusei' => array(), +'daigo' => array(), +'fujishiro' => array(), +'hitachi' => array(), +'hitachinaka' => array(), +'hitachiomiya' => array(), +'hitachiota' => array(), +'ibaraki' => array(), +'ina' => array(), +'inashiki' => array(), +'itako' => array(), +'iwama' => array(), +'joso' => array(), +'kamisu' => array(), +'kasama' => array(), +'kashima' => array(), +'kasumigaura' => array(), +'koga' => array(), +'miho' => array(), +'mito' => array(), +'moriya' => array(), +'naka' => array(), +'namegata' => array(), +'oarai' => array(), +'ogawa' => array(), +'omitama' => array(), +'ryugasaki' => array(), +'sakai' => array(), +'sakuragawa' => array(), +'shimodate' => array(), +'shimotsuma' => array(), +'shirosato' => array(), +'sowa' => array(), +'suifu' => array(), +'takahagi' => array(), +'tamatsukuri' => array(), +'tokai' => array(), +'tomobe' => array(), +'tone' => array(), +'toride' => array(), +'tsuchiura' => array(), +'tsukuba' => array(), +'uchihara' => array(), +'ushiku' => array(), +'yachiyo' => array(), +'yamagata' => array(), +'yawara' => array(), +'yuki' => array()), +'ishikawa' => array('anamizu' => array(), +'hakui' => array(), +'hakusan' => array(), +'kaga' => array(), +'kahoku' => array(), +'kanazawa' => array(), +'kawakita' => array(), +'komatsu' => array(), +'nakanoto' => array(), +'nanao' => array(), +'nomi' => array(), +'nonoichi' => array(), +'noto' => array(), +'shika' => array(), +'suzu' => array(), +'tsubata' => array(), +'tsurugi' => array(), +'uchinada' => array(), +'wajima' => array()), +'iwate' => array('fudai' => array(), +'fujisawa' => array(), +'hanamaki' => array(), +'hiraizumi' => array(), +'hirono' => array(), +'ichinohe' => array(), +'ichinoseki' => array(), +'iwaizumi' => array(), +'iwate' => array(), +'joboji' => array(), +'kamaishi' => array(), +'kanegasaki' => array(), +'karumai' => array(), +'kawai' => array(), +'kitakami' => array(), +'kuji' => array(), +'kunohe' => array(), +'kuzumaki' => array(), +'miyako' => array(), +'mizusawa' => array(), +'morioka' => array(), +'ninohe' => array(), +'noda' => array(), +'ofunato' => array(), +'oshu' => array(), +'otsuchi' => array(), +'rikuzentakata' => array(), +'shiwa' => array(), +'shizukuishi' => array(), +'sumita' => array(), +'tanohata' => array(), +'tono' => array(), +'yahaba' => array(), +'yamada' => array()), +'kagawa' => array('ayagawa' => array(), +'higashikagawa' => array(), +'kanonji' => array(), +'kotohira' => array(), +'manno' => array(), +'marugame' => array(), +'mitoyo' => array(), +'naoshima' => array(), +'sanuki' => array(), +'tadotsu' => array(), +'takamatsu' => array(), +'tonosho' => array(), +'uchinomi' => array(), +'utazu' => array(), +'zentsuji' => array()), +'kagoshima' => array('akune' => array(), +'amami' => array(), +'hioki' => array(), +'isa' => array(), +'isen' => array(), +'izumi' => array(), +'kagoshima' => array(), +'kanoya' => array(), +'kawanabe' => array(), +'kinko' => array(), +'kouyama' => array(), +'makurazaki' => array(), +'matsumoto' => array(), +'minamitane' => array(), +'nakatane' => array(), +'nishinoomote' => array(), +'satsumasendai' => array(), +'soo' => array(), +'tarumizu' => array(), +'yusui' => array()), +'kanagawa' => array('aikawa' => array(), +'atsugi' => array(), +'ayase' => array(), +'chigasaki' => array(), +'ebina' => array(), +'fujisawa' => array(), +'hadano' => array(), +'hakone' => array(), +'hiratsuka' => array(), +'isehara' => array(), +'kaisei' => array(), +'kamakura' => array(), +'kiyokawa' => array(), +'matsuda' => array(), +'minamiashigara' => array(), +'miura' => array(), +'nakai' => array(), +'ninomiya' => array(), +'odawara' => array(), +'oi' => array(), +'oiso' => array(), +'sagamihara' => array(), +'samukawa' => array(), +'tsukui' => array(), +'yamakita' => array(), +'yamato' => array(), +'yokosuka' => array(), +'yugawara' => array(), +'zama' => array(), +'zushi' => array()), +'kochi' => array('aki' => array(), +'geisei' => array(), +'hidaka' => array(), +'higashitsuno' => array(), +'ino' => array(), +'kagami' => array(), +'kami' => array(), +'kitagawa' => array(), +'kochi' => array(), +'mihara' => array(), +'motoyama' => array(), +'muroto' => array(), +'nahari' => array(), +'nakamura' => array(), +'nankoku' => array(), +'nishitosa' => array(), +'niyodogawa' => array(), +'ochi' => array(), +'okawa' => array(), +'otoyo' => array(), +'otsuki' => array(), +'sakawa' => array(), +'sukumo' => array(), +'susaki' => array(), +'tosa' => array(), +'tosashimizu' => array(), +'toyo' => array(), +'tsuno' => array(), +'umaji' => array(), +'yasuda' => array(), +'yusuhara' => array()), +'kumamoto' => array('amakusa' => array(), +'arao' => array(), +'aso' => array(), +'choyo' => array(), +'gyokuto' => array(), +'hitoyoshi' => array(), +'kamiamakusa' => array(), +'kashima' => array(), +'kikuchi' => array(), +'kosa' => array(), +'kumamoto' => array(), +'mashiki' => array(), +'mifune' => array(), +'minamata' => array(), +'minamioguni' => array(), +'nagasu' => array(), +'nishihara' => array(), +'oguni' => array(), +'ozu' => array(), +'sumoto' => array(), +'takamori' => array(), +'uki' => array(), +'uto' => array(), +'yamaga' => array(), +'yamato' => array(), +'yatsushiro' => array()), +'kyoto' => array('ayabe' => array(), +'fukuchiyama' => array(), +'higashiyama' => array(), +'ide' => array(), +'ine' => array(), +'joyo' => array(), +'kameoka' => array(), +'kamo' => array(), +'kita' => array(), +'kizu' => array(), +'kumiyama' => array(), +'kyotamba' => array(), +'kyotanabe' => array(), +'kyotango' => array(), +'maizuru' => array(), +'minami' => array(), +'minamiyamashiro' => array(), +'miyazu' => array(), +'muko' => array(), +'nagaokakyo' => array(), +'nakagyo' => array(), +'nantan' => array(), +'oyamazaki' => array(), +'sakyo' => array(), +'seika' => array(), +'tanabe' => array(), +'uji' => array(), +'ujitawara' => array(), +'wazuka' => array(), +'yamashina' => array(), +'yawata' => array()), +'mie' => array('asahi' => array(), +'inabe' => array(), +'ise' => array(), +'kameyama' => array(), +'kawagoe' => array(), +'kiho' => array(), +'kisosaki' => array(), +'kiwa' => array(), +'komono' => array(), +'kumano' => array(), +'kuwana' => array(), +'matsusaka' => array(), +'meiwa' => array(), +'mihama' => array(), +'minamiise' => array(), +'misugi' => array(), +'miyama' => array(), +'nabari' => array(), +'shima' => array(), +'suzuka' => array(), +'tado' => array(), +'taiki' => array(), +'taki' => array(), +'tamaki' => array(), +'toba' => array(), +'tsu' => array(), +'udono' => array(), +'ureshino' => array(), +'watarai' => array(), +'yokkaichi' => array()), +'miyagi' => array('furukawa' => array(), +'higashimatsushima' => array(), +'ishinomaki' => array(), +'iwanuma' => array(), +'kakuda' => array(), +'kami' => array(), +'kawasaki' => array(), +'kesennuma' => array(), +'marumori' => array(), +'matsushima' => array(), +'minamisanriku' => array(), +'misato' => array(), +'murata' => array(), +'natori' => array(), +'ogawara' => array(), +'ohira' => array(), +'onagawa' => array(), +'osaki' => array(), +'rifu' => array(), +'semine' => array(), +'shibata' => array(), +'shichikashuku' => array(), +'shikama' => array(), +'shiogama' => array(), +'shiroishi' => array(), +'tagajo' => array(), +'taiwa' => array(), +'tome' => array(), +'tomiya' => array(), +'wakuya' => array(), +'watari' => array(), +'yamamoto' => array(), +'zao' => array()), +'miyazaki' => array('aya' => array(), +'ebino' => array(), +'gokase' => array(), +'hyuga' => array(), +'kadogawa' => array(), +'kawaminami' => array(), +'kijo' => array(), +'kitagawa' => array(), +'kitakata' => array(), +'kitaura' => array(), +'kobayashi' => array(), +'kunitomi' => array(), +'kushima' => array(), +'mimata' => array(), +'miyakonojo' => array(), +'miyazaki' => array(), +'morotsuka' => array(), +'nichinan' => array(), +'nishimera' => array(), +'nobeoka' => array(), +'saito' => array(), +'shiiba' => array(), +'shintomi' => array(), +'takaharu' => array(), +'takanabe' => array(), +'takazaki' => array(), +'tsuno' => array()), +'nagano' => array('achi' => array(), +'agematsu' => array(), +'anan' => array(), +'aoki' => array(), +'asahi' => array(), +'azumino' => array(), +'chikuhoku' => array(), +'chikuma' => array(), +'chino' => array(), +'fujimi' => array(), +'hakuba' => array(), +'hara' => array(), +'hiraya' => array(), +'iida' => array(), +'iijima' => array(), +'iiyama' => array(), +'iizuna' => array(), +'ikeda' => array(), +'ikusaka' => array(), +'ina' => array(), +'karuizawa' => array(), +'kawakami' => array(), +'kiso' => array(), +'kisofukushima' => array(), +'kitaaiki' => array(), +'komagane' => array(), +'komoro' => array(), +'matsukawa' => array(), +'matsumoto' => array(), +'miasa' => array(), +'minamiaiki' => array(), +'minamimaki' => array(), +'minamiminowa' => array(), +'minowa' => array(), +'miyada' => array(), +'miyota' => array(), +'mochizuki' => array(), +'nagano' => array(), +'nagawa' => array(), +'nagiso' => array(), +'nakagawa' => array(), +'nakano' => array(), +'nozawaonsen' => array(), +'obuse' => array(), +'ogawa' => array(), +'okaya' => array(), +'omachi' => array(), +'omi' => array(), +'ookuwa' => array(), +'ooshika' => array(), +'otaki' => array(), +'otari' => array(), +'sakae' => array(), +'sakaki' => array(), +'saku' => array(), +'sakuho' => array(), +'shimosuwa' => array(), +'shinanomachi' => array(), +'shiojiri' => array(), +'suwa' => array(), +'suzaka' => array(), +'takagi' => array(), +'takamori' => array(), +'takayama' => array(), +'tateshina' => array(), +'tatsuno' => array(), +'togakushi' => array(), +'togura' => array(), +'tomi' => array(), +'ueda' => array(), +'wada' => array(), +'yamagata' => array(), +'yamanouchi' => array(), +'yasaka' => array(), +'yasuoka' => array()), +'nagasaki' => array('chijiwa' => array(), +'futsu' => array(), +'goto' => array(), +'hasami' => array(), +'hirado' => array(), +'iki' => array(), +'isahaya' => array(), +'kawatana' => array(), +'kuchinotsu' => array(), +'matsuura' => array(), +'nagasaki' => array(), +'obama' => array(), +'omura' => array(), +'oseto' => array(), +'saikai' => array(), +'sasebo' => array(), +'seihi' => array(), +'shimabara' => array(), +'shinkamigoto' => array(), +'togitsu' => array(), +'tsushima' => array(), +'unzen' => array()), +'nara' => array('ando' => array(), +'gose' => array(), +'heguri' => array(), +'higashiyoshino' => array(), +'ikaruga' => array(), +'ikoma' => array(), +'kamikitayama' => array(), +'kanmaki' => array(), +'kashiba' => array(), +'kashihara' => array(), +'katsuragi' => array(), +'kawai' => array(), +'kawakami' => array(), +'kawanishi' => array(), +'koryo' => array(), +'kurotaki' => array(), +'mitsue' => array(), +'miyake' => array(), +'nara' => array(), +'nosegawa' => array(), +'oji' => array(), +'ouda' => array(), +'oyodo' => array(), +'sakurai' => array(), +'sango' => array(), +'shimoichi' => array(), +'shimokitayama' => array(), +'shinjo' => array(), +'soni' => array(), +'takatori' => array(), +'tawaramoto' => array(), +'tenkawa' => array(), +'tenri' => array(), +'uda' => array(), +'yamatokoriyama' => array(), +'yamatotakada' => array(), +'yamazoe' => array(), +'yoshino' => array()), +'niigata' => array('aga' => array(), +'agano' => array(), +'gosen' => array(), +'itoigawa' => array(), +'izumozaki' => array(), +'joetsu' => array(), +'kamo' => array(), +'kariwa' => array(), +'kashiwazaki' => array(), +'minamiuonuma' => array(), +'mitsuke' => array(), +'muika' => array(), +'murakami' => array(), +'myoko' => array(), +'nagaoka' => array(), +'niigata' => array(), +'ojiya' => array(), +'omi' => array(), +'sado' => array(), +'sanjo' => array(), +'seiro' => array(), +'seirou' => array(), +'sekikawa' => array(), +'shibata' => array(), +'tagami' => array(), +'tainai' => array(), +'tochio' => array(), +'tokamachi' => array(), +'tsubame' => array(), +'tsunan' => array(), +'uonuma' => array(), +'yahiko' => array(), +'yoita' => array(), +'yuzawa' => array()), +'oita' => array('beppu' => array(), +'bungoono' => array(), +'bungotakada' => array(), +'hasama' => array(), +'hiji' => array(), +'himeshima' => array(), +'hita' => array(), +'kamitsue' => array(), +'kokonoe' => array(), +'kuju' => array(), +'kunisaki' => array(), +'kusu' => array(), +'oita' => array(), +'saiki' => array(), +'taketa' => array(), +'tsukumi' => array(), +'usa' => array(), +'usuki' => array(), +'yufu' => array()), +'okayama' => array('akaiwa' => array(), +'asakuchi' => array(), +'bizen' => array(), +'hayashima' => array(), +'ibara' => array(), +'kagamino' => array(), +'kasaoka' => array(), +'kibichuo' => array(), +'kumenan' => array(), +'kurashiki' => array(), +'maniwa' => array(), +'misaki' => array(), +'nagi' => array(), +'niimi' => array(), +'nishiawakura' => array(), +'okayama' => array(), +'satosho' => array(), +'setouchi' => array(), +'shinjo' => array(), +'shoo' => array(), +'soja' => array(), +'takahashi' => array(), +'tamano' => array(), +'tsuyama' => array(), +'wake' => array(), +'yakage' => array()), +'okinawa' => array('aguni' => array(), +'ginowan' => array(), +'ginoza' => array(), +'gushikami' => array(), +'haebaru' => array(), +'higashi' => array(), +'hirara' => array(), +'iheya' => array(), +'ishigaki' => array(), +'ishikawa' => array(), +'itoman' => array(), +'izena' => array(), +'kadena' => array(), +'kin' => array(), +'kitadaito' => array(), +'kitanakagusuku' => array(), +'kumejima' => array(), +'kunigami' => array(), +'minamidaito' => array(), +'motobu' => array(), +'nago' => array(), +'naha' => array(), +'nakagusuku' => array(), +'nakijin' => array(), +'nanjo' => array(), +'nishihara' => array(), +'ogimi' => array(), +'okinawa' => array(), +'onna' => array(), +'shimoji' => array(), +'taketomi' => array(), +'tarama' => array(), +'tokashiki' => array(), +'tomigusuku' => array(), +'tonaki' => array(), +'urasoe' => array(), +'uruma' => array(), +'yaese' => array(), +'yomitan' => array(), +'yonabaru' => array(), +'yonaguni' => array(), +'zamami' => array()), +'osaka' => array('abeno' => array(), +'chihayaakasaka' => array(), +'chuo' => array(), +'daito' => array(), +'fujiidera' => array(), +'habikino' => array(), +'hannan' => array(), +'higashiosaka' => array(), +'higashisumiyoshi' => array(), +'higashiyodogawa' => array(), +'hirakata' => array(), +'ibaraki' => array(), +'ikeda' => array(), +'izumi' => array(), +'izumiotsu' => array(), +'izumisano' => array(), +'kadoma' => array(), +'kaizuka' => array(), +'kanan' => array(), +'kashiwara' => array(), +'katano' => array(), +'kawachinagano' => array(), +'kishiwada' => array(), +'kita' => array(), +'kumatori' => array(), +'matsubara' => array(), +'minato' => array(), +'minoh' => array(), +'misaki' => array(), +'moriguchi' => array(), +'neyagawa' => array(), +'nishi' => array(), +'nose' => array(), +'osakasayama' => array(), +'sakai' => array(), +'sayama' => array(), +'sennan' => array(), +'settsu' => array(), +'shijonawate' => array(), +'shimamoto' => array(), +'suita' => array(), +'tadaoka' => array(), +'taishi' => array(), +'tajiri' => array(), +'takaishi' => array(), +'takatsuki' => array(), +'tondabayashi' => array(), +'toyonaka' => array(), +'toyono' => array(), +'yao' => array()), +'saga' => array('ariake' => array(), +'arita' => array(), +'fukudomi' => array(), +'genkai' => array(), +'hamatama' => array(), +'hizen' => array(), +'imari' => array(), +'kamimine' => array(), +'kanzaki' => array(), +'karatsu' => array(), +'kashima' => array(), +'kitagata' => array(), +'kitahata' => array(), +'kiyama' => array(), +'kouhoku' => array(), +'kyuragi' => array(), +'nishiarita' => array(), +'ogi' => array(), +'omachi' => array(), +'ouchi' => array(), +'saga' => array(), +'shiroishi' => array(), +'taku' => array(), +'tara' => array(), +'tosu' => array(), +'yoshinogari' => array()), +'saitama' => array('arakawa' => array(), +'asaka' => array(), +'chichibu' => array(), +'fujimi' => array(), +'fujimino' => array(), +'fukaya' => array(), +'hanno' => array(), +'hanyu' => array(), +'hasuda' => array(), +'hatogaya' => array(), +'hatoyama' => array(), +'hidaka' => array(), +'higashichichibu' => array(), +'higashimatsuyama' => array(), +'honjo' => array(), +'ina' => array(), +'iruma' => array(), +'iwatsuki' => array(), +'kamiizumi' => array(), +'kamikawa' => array(), +'kamisato' => array(), +'kasukabe' => array(), +'kawagoe' => array(), +'kawaguchi' => array(), +'kawajima' => array(), +'kazo' => array(), +'kitamoto' => array(), +'koshigaya' => array(), +'kounosu' => array(), +'kuki' => array(), +'kumagaya' => array(), +'matsubushi' => array(), +'minano' => array(), +'misato' => array(), +'miyashiro' => array(), +'miyoshi' => array(), +'moroyama' => array(), +'nagatoro' => array(), +'namegawa' => array(), +'niiza' => array(), +'ogano' => array(), +'ogawa' => array(), +'ogose' => array(), +'okegawa' => array(), +'omiya' => array(), +'otaki' => array(), +'ranzan' => array(), +'ryokami' => array(), +'saitama' => array(), +'sakado' => array(), +'satte' => array(), +'sayama' => array(), +'shiki' => array(), +'shiraoka' => array(), +'soka' => array(), +'sugito' => array(), +'toda' => array(), +'tokigawa' => array(), +'tokorozawa' => array(), +'tsurugashima' => array(), +'urawa' => array(), +'warabi' => array(), +'yashio' => array(), +'yokoze' => array(), +'yono' => array(), +'yorii' => array(), +'yoshida' => array(), +'yoshikawa' => array(), +'yoshimi' => array()), +'shiga' => array('aisho' => array(), +'gamo' => array(), +'higashiomi' => array(), +'hikone' => array(), +'koka' => array(), +'konan' => array(), +'kosei' => array(), +'koto' => array(), +'kusatsu' => array(), +'maibara' => array(), +'moriyama' => array(), +'nagahama' => array(), +'nishiazai' => array(), +'notogawa' => array(), +'omihachiman' => array(), +'otsu' => array(), +'ritto' => array(), +'ryuoh' => array(), +'takashima' => array(), +'takatsuki' => array(), +'torahime' => array(), +'toyosato' => array(), +'yasu' => array()), +'shimane' => array('akagi' => array(), +'ama' => array(), +'gotsu' => array(), +'hamada' => array(), +'higashiizumo' => array(), +'hikawa' => array(), +'hikimi' => array(), +'izumo' => array(), +'kakinoki' => array(), +'masuda' => array(), +'matsue' => array(), +'misato' => array(), +'nishinoshima' => array(), +'ohda' => array(), +'okinoshima' => array(), +'okuizumo' => array(), +'shimane' => array(), +'tamayu' => array(), +'tsuwano' => array(), +'unnan' => array(), +'yakumo' => array(), +'yasugi' => array(), +'yatsuka' => array()), +'shizuoka' => array('arai' => array(), +'atami' => array(), +'fuji' => array(), +'fujieda' => array(), +'fujikawa' => array(), +'fujinomiya' => array(), +'fukuroi' => array(), +'gotemba' => array(), +'haibara' => array(), +'hamamatsu' => array(), +'higashiizu' => array(), +'ito' => array(), +'iwata' => array(), +'izu' => array(), +'izunokuni' => array(), +'kakegawa' => array(), +'kannami' => array(), +'kawanehon' => array(), +'kawazu' => array(), +'kikugawa' => array(), +'kosai' => array(), +'makinohara' => array(), +'matsuzaki' => array(), +'minamiizu' => array(), +'mishima' => array(), +'morimachi' => array(), +'nishiizu' => array(), +'numazu' => array(), +'omaezaki' => array(), +'shimada' => array(), +'shimizu' => array(), +'shimoda' => array(), +'shizuoka' => array(), +'susono' => array(), +'yaizu' => array(), +'yoshida' => array()), +'tochigi' => array('ashikaga' => array(), +'bato' => array(), +'haga' => array(), +'ichikai' => array(), +'iwafune' => array(), +'kaminokawa' => array(), +'kanuma' => array(), +'karasuyama' => array(), +'kuroiso' => array(), +'mashiko' => array(), +'mibu' => array(), +'moka' => array(), +'motegi' => array(), +'nasu' => array(), +'nasushiobara' => array(), +'nikko' => array(), +'nishikata' => array(), +'nogi' => array(), +'ohira' => array(), +'ohtawara' => array(), +'oyama' => array(), +'sakura' => array(), +'sano' => array(), +'shimotsuke' => array(), +'shioya' => array(), +'takanezawa' => array(), +'tochigi' => array(), +'tsuga' => array(), +'ujiie' => array(), +'utsunomiya' => array(), +'yaita' => array()), +'tokushima' => array('aizumi' => array(), +'anan' => array(), +'ichiba' => array(), +'itano' => array(), +'kainan' => array(), +'komatsushima' => array(), +'matsushige' => array(), +'mima' => array(), +'minami' => array(), +'miyoshi' => array(), +'mugi' => array(), +'nakagawa' => array(), +'naruto' => array(), +'sanagochi' => array(), +'shishikui' => array(), +'tokushima' => array(), +'wajiki' => array()), +'tokyo' => array('adachi' => array(), +'akiruno' => array(), +'akishima' => array(), +'aogashima' => array(), +'arakawa' => array(), +'bunkyo' => array(), +'chiyoda' => array(), +'chofu' => array(), +'chuo' => array(), +'edogawa' => array(), +'fuchu' => array(), +'fussa' => array(), +'hachijo' => array(), +'hachioji' => array(), +'hamura' => array(), +'higashikurume' => array(), +'higashimurayama' => array(), +'higashiyamato' => array(), +'hino' => array(), +'hinode' => array(), +'hinohara' => array(), +'inagi' => array(), +'itabashi' => array(), +'katsushika' => array(), +'kita' => array(), +'kiyose' => array(), +'kodaira' => array(), +'koganei' => array(), +'kokubunji' => array(), +'komae' => array(), +'koto' => array(), +'kouzushima' => array(), +'kunitachi' => array(), +'machida' => array(), +'meguro' => array(), +'minato' => array(), +'mitaka' => array(), +'mizuho' => array(), +'musashimurayama' => array(), +'musashino' => array(), +'nakano' => array(), +'nerima' => array(), +'ogasawara' => array(), +'okutama' => array(), +'ome' => array(), +'oshima' => array(), +'ota' => array(), +'setagaya' => array(), +'shibuya' => array(), +'shinagawa' => array(), +'shinjuku' => array(), +'suginami' => array(), +'sumida' => array(), +'tachikawa' => array(), +'taito' => array(), +'tama' => array(), +'toshima' => array()), +'tottori' => array('chizu' => array(), +'hino' => array(), +'kawahara' => array(), +'koge' => array(), +'kotoura' => array(), +'misasa' => array(), +'nanbu' => array(), +'nichinan' => array(), +'sakaiminato' => array(), +'tottori' => array(), +'wakasa' => array(), +'yazu' => array(), +'yonago' => array()), +'toyama' => array('asahi' => array(), +'fuchu' => array(), +'fukumitsu' => array(), +'funahashi' => array(), +'himi' => array(), +'imizu' => array(), +'inami' => array(), +'johana' => array(), +'kamiichi' => array(), +'kurobe' => array(), +'nakaniikawa' => array(), +'namerikawa' => array(), +'nanto' => array(), +'nyuzen' => array(), +'oyabe' => array(), +'taira' => array(), +'takaoka' => array(), +'tateyama' => array(), +'toga' => array(), +'tonami' => array(), +'toyama' => array(), +'unazuki' => array(), +'uozu' => array(), +'yamada' => array()), +'wakayama' => array('arida' => array(), +'aridagawa' => array(), +'gobo' => array(), +'hashimoto' => array(), +'hidaka' => array(), +'hirogawa' => array(), +'inami' => array(), +'iwade' => array(), +'kainan' => array(), +'kamitonda' => array(), +'katsuragi' => array(), +'kimino' => array(), +'kinokawa' => array(), +'kitayama' => array(), +'koya' => array(), +'koza' => array(), +'kozagawa' => array(), +'kudoyama' => array(), +'kushimoto' => array(), +'mihama' => array(), +'misato' => array(), +'nachikatsuura' => array(), +'shingu' => array(), +'shirahama' => array(), +'taiji' => array(), +'tanabe' => array(), +'wakayama' => array(), +'yuasa' => array(), +'yura' => array()), +'yamagata' => array('asahi' => array(), +'funagata' => array(), +'higashine' => array(), +'iide' => array(), +'kahoku' => array(), +'kaminoyama' => array(), +'kaneyama' => array(), +'kawanishi' => array(), +'mamurogawa' => array(), +'mikawa' => array(), +'murayama' => array(), +'nagai' => array(), +'nakayama' => array(), +'nanyo' => array(), +'nishikawa' => array(), +'obanazawa' => array(), +'oe' => array(), +'oguni' => array(), +'ohkura' => array(), +'oishida' => array(), +'sagae' => array(), +'sakata' => array(), +'sakegawa' => array(), +'shinjo' => array(), +'shirataka' => array(), +'shonai' => array(), +'takahata' => array(), +'tendo' => array(), +'tozawa' => array(), +'tsuruoka' => array(), +'yamagata' => array(), +'yamanobe' => array(), +'yonezawa' => array(), +'yuza' => array()), +'yamaguchi' => array('abu' => array(), +'hagi' => array(), +'hikari' => array(), +'hofu' => array(), +'iwakuni' => array(), +'kudamatsu' => array(), +'mitou' => array(), +'nagato' => array(), +'oshima' => array(), +'shimonoseki' => array(), +'shunan' => array(), +'tabuse' => array(), +'tokuyama' => array(), +'toyota' => array(), +'ube' => array(), +'yuu' => array()), +'yamanashi' => array('chuo' => array(), +'doshi' => array(), +'fuefuki' => array(), +'fujikawa' => array(), +'fujikawaguchiko' => array(), +'fujiyoshida' => array(), +'hayakawa' => array(), +'hokuto' => array(), +'ichikawamisato' => array(), +'kai' => array(), +'kofu' => array(), +'koshu' => array(), +'kosuge' => array(), +'minami-alps' => array(), +'minobu' => array(), +'nakamichi' => array(), +'nanbu' => array(), +'narusawa' => array(), +'nirasaki' => array(), +'nishikatsura' => array(), +'oshino' => array(), +'otsuki' => array(), +'showa' => array(), +'tabayama' => array(), +'tsuru' => array(), +'uenohara' => array(), +'yamanakako' => array(), +'yamanashi' => array()), +'kawasaki' => array('*' => array(), +'city' => array('!' => '')), +'kitakyushu' => array('*' => array(), +'city' => array('!' => '')), +'kobe' => array('*' => array(), +'city' => array('!' => '')), +'nagoya' => array('*' => array(), +'city' => array('!' => '')), +'sapporo' => array('*' => array(), +'city' => array('!' => '')), +'sendai' => array('*' => array(), +'city' => array('!' => '')), +'yokohama' => array('*' => array(), +'city' => array('!' => '')), +'blogspot' => array()), +'ke' => array('*' => array()), +'kg' => array('org' => array(), +'net' => array(), +'com' => array(), +'edu' => array(), +'gov' => array(), +'mil' => array()), +'kh' => array('*' => array()), +'ki' => array('edu' => array(), +'biz' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'info' => array(), +'com' => array()), +'km' => array('org' => array(), +'nom' => array(), +'gov' => array(), +'prd' => array(), +'tm' => array(), +'edu' => array(), +'mil' => array(), +'ass' => array(), +'com' => array(), +'coop' => array(), +'asso' => array(), +'presse' => array(), +'medecin' => array(), +'notaires' => array(), +'pharmaciens' => array(), +'veterinaire' => array(), +'gouv' => array()), +'kn' => array('net' => array(), +'org' => array(), +'edu' => array(), +'gov' => array()), +'kp' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'rep' => array(), +'tra' => array()), +'kr' => array('ac' => array(), +'co' => array(), +'es' => array(), +'go' => array(), +'hs' => array(), +'kg' => array(), +'mil' => array(), +'ms' => array(), +'ne' => array(), +'or' => array(), +'pe' => array(), +'re' => array(), +'sc' => array(), +'busan' => array(), +'chungbuk' => array(), +'chungnam' => array(), +'daegu' => array(), +'daejeon' => array(), +'gangwon' => array(), +'gwangju' => array(), +'gyeongbuk' => array(), +'gyeonggi' => array(), +'gyeongnam' => array(), +'incheon' => array(), +'jeju' => array(), +'jeonbuk' => array(), +'jeonnam' => array(), +'seoul' => array(), +'ulsan' => array(), +'blogspot' => array()), +'kw' => array('*' => array()), +'ky' => array('edu' => array(), +'gov' => array(), +'com' => array(), +'org' => array(), +'net' => array()), +'kz' => array('org' => array(), +'edu' => array(), +'net' => array(), +'gov' => array(), +'mil' => array(), +'com' => array()), +'la' => array('int' => array(), +'net' => array(), +'info' => array(), +'edu' => array(), +'gov' => array(), +'per' => array(), +'com' => array(), +'org' => array(), +'c' => array()), +'lb' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'org' => array()), +'lc' => array('com' => array(), +'net' => array(), +'co' => array(), +'org' => array(), +'edu' => array(), +'gov' => array()), +'li' => array(), +'lk' => array('gov' => array(), +'sch' => array(), +'net' => array(), +'int' => array(), +'com' => array(), +'org' => array(), +'edu' => array(), +'ngo' => array(), +'soc' => array(), +'web' => array(), +'ltd' => array(), +'assn' => array(), +'grp' => array(), +'hotel' => array()), +'lr' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'net' => array()), +'ls' => array('co' => array(), +'org' => array()), +'lt' => array('gov' => array()), +'lu' => array(), +'lv' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'org' => array(), +'mil' => array(), +'id' => array(), +'net' => array(), +'asn' => array(), +'conf' => array()), +'ly' => array('com' => array(), +'net' => array(), +'gov' => array(), +'plc' => array(), +'edu' => array(), +'sch' => array(), +'med' => array(), +'org' => array(), +'id' => array()), +'ma' => array('co' => array(), +'net' => array(), +'gov' => array(), +'org' => array(), +'ac' => array(), +'press' => array()), +'mc' => array('tm' => array(), +'asso' => array()), +'md' => array(), +'me' => array('co' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'ac' => array(), +'gov' => array(), +'its' => array(), +'priv' => array()), +'mg' => array('org' => array(), +'nom' => array(), +'gov' => array(), +'prd' => array(), +'tm' => array(), +'edu' => array(), +'mil' => array(), +'com' => array()), +'mh' => array(), +'mil' => array(), +'mk' => array('com' => array(), +'org' => array(), +'net' => array(), +'edu' => array(), +'gov' => array(), +'inf' => array(), +'name' => array()), +'ml' => array('com' => array(), +'edu' => array(), +'gouv' => array(), +'gov' => array(), +'net' => array(), +'org' => array(), +'presse' => array()), +'mm' => array('*' => array()), +'mn' => array('gov' => array(), +'edu' => array(), +'org' => array(), +'nyc' => array()), +'mo' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'gov' => array()), +'mobi' => array(), +'mp' => array(), +'mq' => array(), +'mr' => array('gov' => array(), +'blogspot' => array()), +'ms' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'org' => array()), +'mt' => array('com' => array(), +'edu' => array(), +'net' => array(), +'org' => array()), +'mu' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'ac' => array(), +'co' => array(), +'or' => array()), +'museum' => array('academy' => array(), +'agriculture' => array(), +'air' => array(), +'airguard' => array(), +'alabama' => array(), +'alaska' => array(), +'amber' => array(), +'ambulance' => array(), +'american' => array(), +'americana' => array(), +'americanantiques' => array(), +'americanart' => array(), +'amsterdam' => array(), +'and' => array(), +'annefrank' => array(), +'anthro' => array(), +'anthropology' => array(), +'antiques' => array(), +'aquarium' => array(), +'arboretum' => array(), +'archaeological' => array(), +'archaeology' => array(), +'architecture' => array(), +'art' => array(), +'artanddesign' => array(), +'artcenter' => array(), +'artdeco' => array(), +'arteducation' => array(), +'artgallery' => array(), +'arts' => array(), +'artsandcrafts' => array(), +'asmatart' => array(), +'assassination' => array(), +'assisi' => array(), +'association' => array(), +'astronomy' => array(), +'atlanta' => array(), +'austin' => array(), +'australia' => array(), +'automotive' => array(), +'aviation' => array(), +'axis' => array(), +'badajoz' => array(), +'baghdad' => array(), +'bahn' => array(), +'bale' => array(), +'baltimore' => array(), +'barcelona' => array(), +'baseball' => array(), +'basel' => array(), +'baths' => array(), +'bauern' => array(), +'beauxarts' => array(), +'beeldengeluid' => array(), +'bellevue' => array(), +'bergbau' => array(), +'berkeley' => array(), +'berlin' => array(), +'bern' => array(), +'bible' => array(), +'bilbao' => array(), +'bill' => array(), +'birdart' => array(), +'birthplace' => array(), +'bonn' => array(), +'boston' => array(), +'botanical' => array(), +'botanicalgarden' => array(), +'botanicgarden' => array(), +'botany' => array(), +'brandywinevalley' => array(), +'brasil' => array(), +'bristol' => array(), +'british' => array(), +'britishcolumbia' => array(), +'broadcast' => array(), +'brunel' => array(), +'brussel' => array(), +'brussels' => array(), +'bruxelles' => array(), +'building' => array(), +'burghof' => array(), +'bus' => array(), +'bushey' => array(), +'cadaques' => array(), +'california' => array(), +'cambridge' => array(), +'can' => array(), +'canada' => array(), +'capebreton' => array(), +'carrier' => array(), +'cartoonart' => array(), +'casadelamoneda' => array(), +'castle' => array(), +'castres' => array(), +'celtic' => array(), +'center' => array(), +'chattanooga' => array(), +'cheltenham' => array(), +'chesapeakebay' => array(), +'chicago' => array(), +'children' => array(), +'childrens' => array(), +'childrensgarden' => array(), +'chiropractic' => array(), +'chocolate' => array(), +'christiansburg' => array(), +'cincinnati' => array(), +'cinema' => array(), +'circus' => array(), +'civilisation' => array(), +'civilization' => array(), +'civilwar' => array(), +'clinton' => array(), +'clock' => array(), +'coal' => array(), +'coastaldefence' => array(), +'cody' => array(), +'coldwar' => array(), +'collection' => array(), +'colonialwilliamsburg' => array(), +'coloradoplateau' => array(), +'columbia' => array(), +'columbus' => array(), +'communication' => array(), +'communications' => array(), +'community' => array(), +'computer' => array(), +'computerhistory' => array(), +'comunicações' => array(), +'contemporary' => array(), +'contemporaryart' => array(), +'convent' => array(), +'copenhagen' => array(), +'corporation' => array(), +'correios-e-telecomunicações' => array(), +'corvette' => array(), +'costume' => array(), +'countryestate' => array(), +'county' => array(), +'crafts' => array(), +'cranbrook' => array(), +'creation' => array(), +'cultural' => array(), +'culturalcenter' => array(), +'culture' => array(), +'cyber' => array(), +'cymru' => array(), +'dali' => array(), +'dallas' => array(), +'database' => array(), +'ddr' => array(), +'decorativearts' => array(), +'delaware' => array(), +'delmenhorst' => array(), +'denmark' => array(), +'depot' => array(), +'design' => array(), +'detroit' => array(), +'dinosaur' => array(), +'discovery' => array(), +'dolls' => array(), +'donostia' => array(), +'durham' => array(), +'eastafrica' => array(), +'eastcoast' => array(), +'education' => array(), +'educational' => array(), +'egyptian' => array(), +'eisenbahn' => array(), +'elburg' => array(), +'elvendrell' => array(), +'embroidery' => array(), +'encyclopedic' => array(), +'england' => array(), +'entomology' => array(), +'environment' => array(), +'environmentalconservation' => array(), +'epilepsy' => array(), +'essex' => array(), +'estate' => array(), +'ethnology' => array(), +'exeter' => array(), +'exhibition' => array(), +'family' => array(), +'farm' => array(), +'farmequipment' => array(), +'farmers' => array(), +'farmstead' => array(), +'field' => array(), +'figueres' => array(), +'filatelia' => array(), +'film' => array(), +'fineart' => array(), +'finearts' => array(), +'finland' => array(), +'flanders' => array(), +'florida' => array(), +'force' => array(), +'fortmissoula' => array(), +'fortworth' => array(), +'foundation' => array(), +'francaise' => array(), +'frankfurt' => array(), +'franziskaner' => array(), +'freemasonry' => array(), +'freiburg' => array(), +'fribourg' => array(), +'frog' => array(), +'fundacio' => array(), +'furniture' => array(), +'gallery' => array(), +'garden' => array(), +'gateway' => array(), +'geelvinck' => array(), +'gemological' => array(), +'geology' => array(), +'georgia' => array(), +'giessen' => array(), +'glas' => array(), +'glass' => array(), +'gorge' => array(), +'grandrapids' => array(), +'graz' => array(), +'guernsey' => array(), +'halloffame' => array(), +'hamburg' => array(), +'handson' => array(), +'harvestcelebration' => array(), +'hawaii' => array(), +'health' => array(), +'heimatunduhren' => array(), +'hellas' => array(), +'helsinki' => array(), +'hembygdsforbund' => array(), +'heritage' => array(), +'histoire' => array(), +'historical' => array(), +'historicalsociety' => array(), +'historichouses' => array(), +'historisch' => array(), +'historisches' => array(), +'history' => array(), +'historyofscience' => array(), +'horology' => array(), +'house' => array(), +'humanities' => array(), +'illustration' => array(), +'imageandsound' => array(), +'indian' => array(), +'indiana' => array(), +'indianapolis' => array(), +'indianmarket' => array(), +'intelligence' => array(), +'interactive' => array(), +'iraq' => array(), +'iron' => array(), +'isleofman' => array(), +'jamison' => array(), +'jefferson' => array(), +'jerusalem' => array(), +'jewelry' => array(), +'jewish' => array(), +'jewishart' => array(), +'jfk' => array(), +'journalism' => array(), +'judaica' => array(), +'judygarland' => array(), +'juedisches' => array(), +'juif' => array(), +'karate' => array(), +'karikatur' => array(), +'kids' => array(), +'koebenhavn' => array(), +'koeln' => array(), +'kunst' => array(), +'kunstsammlung' => array(), +'kunstunddesign' => array(), +'labor' => array(), +'labour' => array(), +'lajolla' => array(), +'lancashire' => array(), +'landes' => array(), +'lans' => array(), +'läns' => array(), +'larsson' => array(), +'lewismiller' => array(), +'lincoln' => array(), +'linz' => array(), +'living' => array(), +'livinghistory' => array(), +'localhistory' => array(), +'london' => array(), +'losangeles' => array(), +'louvre' => array(), +'loyalist' => array(), +'lucerne' => array(), +'luxembourg' => array(), +'luzern' => array(), +'mad' => array(), +'madrid' => array(), +'mallorca' => array(), +'manchester' => array(), +'mansion' => array(), +'mansions' => array(), +'manx' => array(), +'marburg' => array(), +'maritime' => array(), +'maritimo' => array(), +'maryland' => array(), +'marylhurst' => array(), +'media' => array(), +'medical' => array(), +'medizinhistorisches' => array(), +'meeres' => array(), +'memorial' => array(), +'mesaverde' => array(), +'michigan' => array(), +'midatlantic' => array(), +'military' => array(), +'mill' => array(), +'miners' => array(), +'mining' => array(), +'minnesota' => array(), +'missile' => array(), +'missoula' => array(), +'modern' => array(), +'moma' => array(), +'money' => array(), +'monmouth' => array(), +'monticello' => array(), +'montreal' => array(), +'moscow' => array(), +'motorcycle' => array(), +'muenchen' => array(), +'muenster' => array(), +'mulhouse' => array(), +'muncie' => array(), +'museet' => array(), +'museumcenter' => array(), +'museumvereniging' => array(), +'music' => array(), +'national' => array(), +'nationalfirearms' => array(), +'nationalheritage' => array(), +'nativeamerican' => array(), +'naturalhistory' => array(), +'naturalhistorymuseum' => array(), +'naturalsciences' => array(), +'nature' => array(), +'naturhistorisches' => array(), +'natuurwetenschappen' => array(), +'naumburg' => array(), +'naval' => array(), +'nebraska' => array(), +'neues' => array(), +'newhampshire' => array(), +'newjersey' => array(), +'newmexico' => array(), +'newport' => array(), +'newspaper' => array(), +'newyork' => array(), +'niepce' => array(), +'norfolk' => array(), +'north' => array(), +'nrw' => array(), +'nuernberg' => array(), +'nuremberg' => array(), +'nyc' => array(), +'nyny' => array(), +'oceanographic' => array(), +'oceanographique' => array(), +'omaha' => array(), +'online' => array(), +'ontario' => array(), +'openair' => array(), +'oregon' => array(), +'oregontrail' => array(), +'otago' => array(), +'oxford' => array(), +'pacific' => array(), +'paderborn' => array(), +'palace' => array(), +'paleo' => array(), +'palmsprings' => array(), +'panama' => array(), +'paris' => array(), +'pasadena' => array(), +'pharmacy' => array(), +'philadelphia' => array(), +'philadelphiaarea' => array(), +'philately' => array(), +'phoenix' => array(), +'photography' => array(), +'pilots' => array(), +'pittsburgh' => array(), +'planetarium' => array(), +'plantation' => array(), +'plants' => array(), +'plaza' => array(), +'portal' => array(), +'portland' => array(), +'portlligat' => array(), +'posts-and-telecommunications' => array(), +'preservation' => array(), +'presidio' => array(), +'press' => array(), +'project' => array(), +'public' => array(), +'pubol' => array(), +'quebec' => array(), +'railroad' => array(), +'railway' => array(), +'research' => array(), +'resistance' => array(), +'riodejaneiro' => array(), +'rochester' => array(), +'rockart' => array(), +'roma' => array(), +'russia' => array(), +'saintlouis' => array(), +'salem' => array(), +'salvadordali' => array(), +'salzburg' => array(), +'sandiego' => array(), +'sanfrancisco' => array(), +'santabarbara' => array(), +'santacruz' => array(), +'santafe' => array(), +'saskatchewan' => array(), +'satx' => array(), +'savannahga' => array(), +'schlesisches' => array(), +'schoenbrunn' => array(), +'schokoladen' => array(), +'school' => array(), +'schweiz' => array(), +'science' => array(), +'scienceandhistory' => array(), +'scienceandindustry' => array(), +'sciencecenter' => array(), +'sciencecenters' => array(), +'science-fiction' => array(), +'sciencehistory' => array(), +'sciences' => array(), +'sciencesnaturelles' => array(), +'scotland' => array(), +'seaport' => array(), +'settlement' => array(), +'settlers' => array(), +'shell' => array(), +'sherbrooke' => array(), +'sibenik' => array(), +'silk' => array(), +'ski' => array(), +'skole' => array(), +'society' => array(), +'sologne' => array(), +'soundandvision' => array(), +'southcarolina' => array(), +'southwest' => array(), +'space' => array(), +'spy' => array(), +'square' => array(), +'stadt' => array(), +'stalbans' => array(), +'starnberg' => array(), +'state' => array(), +'stateofdelaware' => array(), +'station' => array(), +'steam' => array(), +'steiermark' => array(), +'stjohn' => array(), +'stockholm' => array(), +'stpetersburg' => array(), +'stuttgart' => array(), +'suisse' => array(), +'surgeonshall' => array(), +'surrey' => array(), +'svizzera' => array(), +'sweden' => array(), +'sydney' => array(), +'tank' => array(), +'tcm' => array(), +'technology' => array(), +'telekommunikation' => array(), +'television' => array(), +'texas' => array(), +'textile' => array(), +'theater' => array(), +'time' => array(), +'timekeeping' => array(), +'topology' => array(), +'torino' => array(), +'touch' => array(), +'town' => array(), +'transport' => array(), +'tree' => array(), +'trolley' => array(), +'trust' => array(), +'trustee' => array(), +'uhren' => array(), +'ulm' => array(), +'undersea' => array(), +'university' => array(), +'usa' => array(), +'usantiques' => array(), +'usarts' => array(), +'uscountryestate' => array(), +'usculture' => array(), +'usdecorativearts' => array(), +'usgarden' => array(), +'ushistory' => array(), +'ushuaia' => array(), +'uslivinghistory' => array(), +'utah' => array(), +'uvic' => array(), +'valley' => array(), +'vantaa' => array(), +'versailles' => array(), +'viking' => array(), +'village' => array(), +'virginia' => array(), +'virtual' => array(), +'virtuel' => array(), +'vlaanderen' => array(), +'volkenkunde' => array(), +'wales' => array(), +'wallonie' => array(), +'war' => array(), +'washingtondc' => array(), +'watchandclock' => array(), +'watch-and-clock' => array(), +'western' => array(), +'westfalen' => array(), +'whaling' => array(), +'wildlife' => array(), +'williamsburg' => array(), +'windmill' => array(), +'workshop' => array(), +'york' => array(), +'yorkshire' => array(), +'yosemite' => array(), +'youth' => array(), +'zoological' => array(), +'zoology' => array(), +'ירושלים' => array(), +'иком' => array()), +'mv' => array('aero' => array(), +'biz' => array(), +'com' => array(), +'coop' => array(), +'edu' => array(), +'gov' => array(), +'info' => array(), +'int' => array(), +'mil' => array(), +'museum' => array(), +'name' => array(), +'net' => array(), +'org' => array(), +'pro' => array()), +'mw' => array('ac' => array(), +'biz' => array(), +'co' => array(), +'com' => array(), +'coop' => array(), +'edu' => array(), +'gov' => array(), +'int' => array(), +'museum' => array(), +'net' => array(), +'org' => array()), +'mx' => array('com' => array(), +'org' => array(), +'gob' => array(), +'edu' => array(), +'net' => array(), +'blogspot' => array()), +'my' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'edu' => array(), +'mil' => array(), +'name' => array()), +'mz' => array('*' => array(), +'teledata' => array('!' => '')), +'na' => array('info' => array(), +'pro' => array(), +'name' => array(), +'school' => array(), +'or' => array(), +'dr' => array(), +'us' => array(), +'mx' => array(), +'ca' => array(), +'in' => array(), +'cc' => array(), +'tv' => array(), +'ws' => array(), +'mobi' => array(), +'co' => array(), +'com' => array(), +'org' => array()), +'name' => array('her' => array('forgot' => array()), +'his' => array('forgot' => array())), +'nc' => array('asso' => array()), +'ne' => array(), +'net' => array('cloudfront' => array(), +'gb' => array(), +'hu' => array(), +'jp' => array(), +'se' => array(), +'uk' => array(), +'in' => array(), +'at-band-camp' => array(), +'blogdns' => array(), +'broke-it' => array(), +'buyshouses' => array(), +'dnsalias' => array(), +'dnsdojo' => array(), +'does-it' => array(), +'dontexist' => array(), +'dynalias' => array(), +'dynathome' => array(), +'endofinternet' => array(), +'from-az' => array(), +'from-co' => array(), +'from-la' => array(), +'from-ny' => array(), +'gets-it' => array(), +'ham-radio-op' => array(), +'homeftp' => array(), +'homeip' => array(), +'homelinux' => array(), +'homeunix' => array(), +'in-the-band' => array(), +'is-a-chef' => array(), +'is-a-geek' => array(), +'isa-geek' => array(), +'kicks-ass' => array(), +'office-on-the' => array(), +'podzone' => array(), +'scrapper-site' => array(), +'selfip' => array(), +'sells-it' => array(), +'servebbs' => array(), +'serveftp' => array(), +'thruhere' => array(), +'webhop' => array(), +'fastly' => array('ssl' => array('a' => array(), +'b' => array(), +'global' => array()), +'prod' => array('a' => array(), +'global' => array())), +'azurewebsites' => array(), +'azure-mobile' => array(), +'cloudapp' => array(), +'za' => array()), +'nf' => array('com' => array(), +'net' => array(), +'per' => array(), +'rec' => array(), +'web' => array(), +'arts' => array(), +'firm' => array(), +'info' => array(), +'other' => array(), +'store' => array()), +'ng' => array('com' => array(), +'edu' => array(), +'name' => array(), +'net' => array(), +'org' => array(), +'sch' => array(), +'gov' => array(), +'mil' => array(), +'mobi' => array()), +'ni' => array('*' => array()), +'nl' => array('bv' => array(), +'co' => array(), +'blogspot' => array()), +'no' => array('fhs' => array(), +'vgs' => array(), +'fylkesbibl' => array(), +'folkebibl' => array(), +'museum' => array(), +'idrett' => array(), +'priv' => array(), +'mil' => array(), +'stat' => array(), +'dep' => array(), +'kommune' => array(), +'herad' => array(), +'aa' => array('gs' => array()), +'ah' => array('gs' => array()), +'bu' => array('gs' => array()), +'fm' => array('gs' => array()), +'hl' => array('gs' => array()), +'hm' => array('gs' => array()), +'jan-mayen' => array('gs' => array()), +'mr' => array('gs' => array()), +'nl' => array('gs' => array()), +'nt' => array('gs' => array()), +'of' => array('gs' => array()), +'ol' => array('gs' => array()), +'oslo' => array('gs' => array()), +'rl' => array('gs' => array()), +'sf' => array('gs' => array()), +'st' => array('gs' => array()), +'svalbard' => array('gs' => array()), +'tm' => array('gs' => array()), +'tr' => array('gs' => array()), +'va' => array('gs' => array()), +'vf' => array('gs' => array()), +'akrehamn' => array(), +'åkrehamn' => array(), +'algard' => array(), +'ålgård' => array(), +'arna' => array(), +'brumunddal' => array(), +'bryne' => array(), +'bronnoysund' => array(), +'brønnøysund' => array(), +'drobak' => array(), +'drøbak' => array(), +'egersund' => array(), +'fetsund' => array(), +'floro' => array(), +'florø' => array(), +'fredrikstad' => array(), +'hokksund' => array(), +'honefoss' => array(), +'hønefoss' => array(), +'jessheim' => array(), +'jorpeland' => array(), +'jørpeland' => array(), +'kirkenes' => array(), +'kopervik' => array(), +'krokstadelva' => array(), +'langevag' => array(), +'langevåg' => array(), +'leirvik' => array(), +'mjondalen' => array(), +'mjøndalen' => array(), +'mo-i-rana' => array(), +'mosjoen' => array(), +'mosjøen' => array(), +'nesoddtangen' => array(), +'orkanger' => array(), +'osoyro' => array(), +'osøyro' => array(), +'raholt' => array(), +'råholt' => array(), +'sandnessjoen' => array(), +'sandnessjøen' => array(), +'skedsmokorset' => array(), +'slattum' => array(), +'spjelkavik' => array(), +'stathelle' => array(), +'stavern' => array(), +'stjordalshalsen' => array(), +'stjørdalshalsen' => array(), +'tananger' => array(), +'tranby' => array(), +'vossevangen' => array(), +'afjord' => array(), +'åfjord' => array(), +'agdenes' => array(), +'al' => array(), +'ål' => array(), +'alesund' => array(), +'ålesund' => array(), +'alstahaug' => array(), +'alta' => array(), +'áltá' => array(), +'alaheadju' => array(), +'álaheadju' => array(), +'alvdal' => array(), +'amli' => array(), +'åmli' => array(), +'amot' => array(), +'åmot' => array(), +'andebu' => array(), +'andoy' => array(), +'andøy' => array(), +'andasuolo' => array(), +'ardal' => array(), +'årdal' => array(), +'aremark' => array(), +'arendal' => array(), +'ås' => array(), +'aseral' => array(), +'åseral' => array(), +'asker' => array(), +'askim' => array(), +'askvoll' => array(), +'askoy' => array(), +'askøy' => array(), +'asnes' => array(), +'åsnes' => array(), +'audnedaln' => array(), +'aukra' => array(), +'aure' => array(), +'aurland' => array(), +'aurskog-holand' => array(), +'aurskog-høland' => array(), +'austevoll' => array(), +'austrheim' => array(), +'averoy' => array(), +'averøy' => array(), +'balestrand' => array(), +'ballangen' => array(), +'balat' => array(), +'bálát' => array(), +'balsfjord' => array(), +'bahccavuotna' => array(), +'báhccavuotna' => array(), +'bamble' => array(), +'bardu' => array(), +'beardu' => array(), +'beiarn' => array(), +'bajddar' => array(), +'bájddar' => array(), +'baidar' => array(), +'báidár' => array(), +'berg' => array(), +'bergen' => array(), +'berlevag' => array(), +'berlevåg' => array(), +'bearalvahki' => array(), +'bearalváhki' => array(), +'bindal' => array(), +'birkenes' => array(), +'bjarkoy' => array(), +'bjarkøy' => array(), +'bjerkreim' => array(), +'bjugn' => array(), +'bodo' => array(), +'bodø' => array(), +'badaddja' => array(), +'bådåddjå' => array(), +'budejju' => array(), +'bokn' => array(), +'bremanger' => array(), +'bronnoy' => array(), +'brønnøy' => array(), +'bygland' => array(), +'bykle' => array(), +'barum' => array(), +'bærum' => array(), +'telemark' => array('bo' => array(), +'bø' => array()), +'nordland' => array('bo' => array(), +'bø' => array(), +'heroy' => array(), +'herøy' => array()), +'bievat' => array(), +'bievát' => array(), +'bomlo' => array(), +'bømlo' => array(), +'batsfjord' => array(), +'båtsfjord' => array(), +'bahcavuotna' => array(), +'báhcavuotna' => array(), +'dovre' => array(), +'drammen' => array(), +'drangedal' => array(), +'dyroy' => array(), +'dyrøy' => array(), +'donna' => array(), +'dønna' => array(), +'eid' => array(), +'eidfjord' => array(), +'eidsberg' => array(), +'eidskog' => array(), +'eidsvoll' => array(), +'eigersund' => array(), +'elverum' => array(), +'enebakk' => array(), +'engerdal' => array(), +'etne' => array(), +'etnedal' => array(), +'evenes' => array(), +'evenassi' => array(), +'evenášši' => array(), +'evje-og-hornnes' => array(), +'farsund' => array(), +'fauske' => array(), +'fuossko' => array(), +'fuoisku' => array(), +'fedje' => array(), +'fet' => array(), +'finnoy' => array(), +'finnøy' => array(), +'fitjar' => array(), +'fjaler' => array(), +'fjell' => array(), +'flakstad' => array(), +'flatanger' => array(), +'flekkefjord' => array(), +'flesberg' => array(), +'flora' => array(), +'fla' => array(), +'flå' => array(), +'folldal' => array(), +'forsand' => array(), +'fosnes' => array(), +'frei' => array(), +'frogn' => array(), +'froland' => array(), +'frosta' => array(), +'frana' => array(), +'fræna' => array(), +'froya' => array(), +'frøya' => array(), +'fusa' => array(), +'fyresdal' => array(), +'forde' => array(), +'førde' => array(), +'gamvik' => array(), +'gangaviika' => array(), +'gáŋgaviika' => array(), +'gaular' => array(), +'gausdal' => array(), +'gildeskal' => array(), +'gildeskål' => array(), +'giske' => array(), +'gjemnes' => array(), +'gjerdrum' => array(), +'gjerstad' => array(), +'gjesdal' => array(), +'gjovik' => array(), +'gjøvik' => array(), +'gloppen' => array(), +'gol' => array(), +'gran' => array(), +'grane' => array(), +'granvin' => array(), +'gratangen' => array(), +'grimstad' => array(), +'grong' => array(), +'kraanghke' => array(), +'kråanghke' => array(), +'grue' => array(), +'gulen' => array(), +'hadsel' => array(), +'halden' => array(), +'halsa' => array(), +'hamar' => array(), +'hamaroy' => array(), +'habmer' => array(), +'hábmer' => array(), +'hapmir' => array(), +'hápmir' => array(), +'hammerfest' => array(), +'hammarfeasta' => array(), +'hámmárfeasta' => array(), +'haram' => array(), +'hareid' => array(), +'harstad' => array(), +'hasvik' => array(), +'aknoluokta' => array(), +'ákŋoluokta' => array(), +'hattfjelldal' => array(), +'aarborte' => array(), +'haugesund' => array(), +'hemne' => array(), +'hemnes' => array(), +'hemsedal' => array(), +'more-og-romsdal' => array('heroy' => array(), +'sande' => array()), +'møre-og-romsdal' => array('herøy' => array(), +'sande' => array()), +'hitra' => array(), +'hjartdal' => array(), +'hjelmeland' => array(), +'hobol' => array(), +'hobøl' => array(), +'hof' => array(), +'hol' => array(), +'hole' => array(), +'holmestrand' => array(), +'holtalen' => array(), +'holtålen' => array(), +'hornindal' => array(), +'horten' => array(), +'hurdal' => array(), +'hurum' => array(), +'hvaler' => array(), +'hyllestad' => array(), +'hagebostad' => array(), +'hægebostad' => array(), +'hoyanger' => array(), +'høyanger' => array(), +'hoylandet' => array(), +'høylandet' => array(), +'ha' => array(), +'hå' => array(), +'ibestad' => array(), +'inderoy' => array(), +'inderøy' => array(), +'iveland' => array(), +'jevnaker' => array(), +'jondal' => array(), +'jolster' => array(), +'jølster' => array(), +'karasjok' => array(), +'karasjohka' => array(), +'kárášjohka' => array(), +'karlsoy' => array(), +'galsa' => array(), +'gálsá' => array(), +'karmoy' => array(), +'karmøy' => array(), +'kautokeino' => array(), +'guovdageaidnu' => array(), +'klepp' => array(), +'klabu' => array(), +'klæbu' => array(), +'kongsberg' => array(), +'kongsvinger' => array(), +'kragero' => array(), +'kragerø' => array(), +'kristiansand' => array(), +'kristiansund' => array(), +'krodsherad' => array(), +'krødsherad' => array(), +'kvalsund' => array(), +'rahkkeravju' => array(), +'ráhkkerávju' => array(), +'kvam' => array(), +'kvinesdal' => array(), +'kvinnherad' => array(), +'kviteseid' => array(), +'kvitsoy' => array(), +'kvitsøy' => array(), +'kvafjord' => array(), +'kvæfjord' => array(), +'giehtavuoatna' => array(), +'kvanangen' => array(), +'kvænangen' => array(), +'navuotna' => array(), +'návuotna' => array(), +'kafjord' => array(), +'kåfjord' => array(), +'gaivuotna' => array(), +'gáivuotna' => array(), +'larvik' => array(), +'lavangen' => array(), +'lavagis' => array(), +'loabat' => array(), +'loabát' => array(), +'lebesby' => array(), +'davvesiida' => array(), +'leikanger' => array(), +'leirfjord' => array(), +'leka' => array(), +'leksvik' => array(), +'lenvik' => array(), +'leangaviika' => array(), +'leaŋgaviika' => array(), +'lesja' => array(), +'levanger' => array(), +'lier' => array(), +'lierne' => array(), +'lillehammer' => array(), +'lillesand' => array(), +'lindesnes' => array(), +'lindas' => array(), +'lindås' => array(), +'lom' => array(), +'loppa' => array(), +'lahppi' => array(), +'láhppi' => array(), +'lund' => array(), +'lunner' => array(), +'luroy' => array(), +'lurøy' => array(), +'luster' => array(), +'lyngdal' => array(), +'lyngen' => array(), +'ivgu' => array(), +'lardal' => array(), +'lerdal' => array(), +'lærdal' => array(), +'lodingen' => array(), +'lødingen' => array(), +'lorenskog' => array(), +'lørenskog' => array(), +'loten' => array(), +'løten' => array(), +'malvik' => array(), +'masoy' => array(), +'måsøy' => array(), +'muosat' => array(), +'muosát' => array(), +'mandal' => array(), +'marker' => array(), +'marnardal' => array(), +'masfjorden' => array(), +'meland' => array(), +'meldal' => array(), +'melhus' => array(), +'meloy' => array(), +'meløy' => array(), +'meraker' => array(), +'meråker' => array(), +'moareke' => array(), +'moåreke' => array(), +'midsund' => array(), +'midtre-gauldal' => array(), +'modalen' => array(), +'modum' => array(), +'molde' => array(), +'moskenes' => array(), +'moss' => array(), +'mosvik' => array(), +'malselv' => array(), +'målselv' => array(), +'malatvuopmi' => array(), +'málatvuopmi' => array(), +'namdalseid' => array(), +'aejrie' => array(), +'namsos' => array(), +'namsskogan' => array(), +'naamesjevuemie' => array(), +'nååmesjevuemie' => array(), +'laakesvuemie' => array(), +'nannestad' => array(), +'narvik' => array(), +'narviika' => array(), +'naustdal' => array(), +'nedre-eiker' => array(), +'akershus' => array('nes' => array()), +'buskerud' => array('nes' => array()), +'nesna' => array(), +'nesodden' => array(), +'nesseby' => array(), +'unjarga' => array(), +'unjárga' => array(), +'nesset' => array(), +'nissedal' => array(), +'nittedal' => array(), +'nord-aurdal' => array(), +'nord-fron' => array(), +'nord-odal' => array(), +'norddal' => array(), +'nordkapp' => array(), +'davvenjarga' => array(), +'davvenjárga' => array(), +'nordre-land' => array(), +'nordreisa' => array(), +'raisa' => array(), +'ráisa' => array(), +'nore-og-uvdal' => array(), +'notodden' => array(), +'naroy' => array(), +'nærøy' => array(), +'notteroy' => array(), +'nøtterøy' => array(), +'odda' => array(), +'oksnes' => array(), +'øksnes' => array(), +'oppdal' => array(), +'oppegard' => array(), +'oppegård' => array(), +'orkdal' => array(), +'orland' => array(), +'ørland' => array(), +'orskog' => array(), +'ørskog' => array(), +'orsta' => array(), +'ørsta' => array(), +'hedmark' => array('os' => array(), +'valer' => array(), +'våler' => array()), +'hordaland' => array('os' => array()), +'osen' => array(), +'osteroy' => array(), +'osterøy' => array(), +'ostre-toten' => array(), +'østre-toten' => array(), +'overhalla' => array(), +'ovre-eiker' => array(), +'øvre-eiker' => array(), +'oyer' => array(), +'øyer' => array(), +'oygarden' => array(), +'øygarden' => array(), +'oystre-slidre' => array(), +'øystre-slidre' => array(), +'porsanger' => array(), +'porsangu' => array(), +'porsáŋgu' => array(), +'porsgrunn' => array(), +'radoy' => array(), +'radøy' => array(), +'rakkestad' => array(), +'rana' => array(), +'ruovat' => array(), +'randaberg' => array(), +'rauma' => array(), +'rendalen' => array(), +'rennebu' => array(), +'rennesoy' => array(), +'rennesøy' => array(), +'rindal' => array(), +'ringebu' => array(), +'ringerike' => array(), +'ringsaker' => array(), +'rissa' => array(), +'risor' => array(), +'risør' => array(), +'roan' => array(), +'rollag' => array(), +'rygge' => array(), +'ralingen' => array(), +'rælingen' => array(), +'rodoy' => array(), +'rødøy' => array(), +'romskog' => array(), +'rømskog' => array(), +'roros' => array(), +'røros' => array(), +'rost' => array(), +'røst' => array(), +'royken' => array(), +'røyken' => array(), +'royrvik' => array(), +'røyrvik' => array(), +'rade' => array(), +'råde' => array(), +'salangen' => array(), +'siellak' => array(), +'saltdal' => array(), +'salat' => array(), +'sálát' => array(), +'sálat' => array(), +'samnanger' => array(), +'vestfold' => array('sande' => array()), +'sandefjord' => array(), +'sandnes' => array(), +'sandoy' => array(), +'sandøy' => array(), +'sarpsborg' => array(), +'sauda' => array(), +'sauherad' => array(), +'sel' => array(), +'selbu' => array(), +'selje' => array(), +'seljord' => array(), +'sigdal' => array(), +'siljan' => array(), +'sirdal' => array(), +'skaun' => array(), +'skedsmo' => array(), +'ski' => array(), +'skien' => array(), +'skiptvet' => array(), +'skjervoy' => array(), +'skjervøy' => array(), +'skierva' => array(), +'skiervá' => array(), +'skjak' => array(), +'skjåk' => array(), +'skodje' => array(), +'skanland' => array(), +'skånland' => array(), +'skanit' => array(), +'skánit' => array(), +'smola' => array(), +'smøla' => array(), +'snillfjord' => array(), +'snasa' => array(), +'snåsa' => array(), +'snoasa' => array(), +'snaase' => array(), +'snåase' => array(), +'sogndal' => array(), +'sokndal' => array(), +'sola' => array(), +'solund' => array(), +'songdalen' => array(), +'sortland' => array(), +'spydeberg' => array(), +'stange' => array(), +'stavanger' => array(), +'steigen' => array(), +'steinkjer' => array(), +'stjordal' => array(), +'stjørdal' => array(), +'stokke' => array(), +'stor-elvdal' => array(), +'stord' => array(), +'stordal' => array(), +'storfjord' => array(), +'omasvuotna' => array(), +'strand' => array(), +'stranda' => array(), +'stryn' => array(), +'sula' => array(), +'suldal' => array(), +'sund' => array(), +'sunndal' => array(), +'surnadal' => array(), +'sveio' => array(), +'svelvik' => array(), +'sykkylven' => array(), +'sogne' => array(), +'søgne' => array(), +'somna' => array(), +'sømna' => array(), +'sondre-land' => array(), +'søndre-land' => array(), +'sor-aurdal' => array(), +'sør-aurdal' => array(), +'sor-fron' => array(), +'sør-fron' => array(), +'sor-odal' => array(), +'sør-odal' => array(), +'sor-varanger' => array(), +'sør-varanger' => array(), +'matta-varjjat' => array(), +'mátta-várjjat' => array(), +'sorfold' => array(), +'sørfold' => array(), +'sorreisa' => array(), +'sørreisa' => array(), +'sorum' => array(), +'sørum' => array(), +'tana' => array(), +'deatnu' => array(), +'time' => array(), +'tingvoll' => array(), +'tinn' => array(), +'tjeldsund' => array(), +'dielddanuorri' => array(), +'tjome' => array(), +'tjøme' => array(), +'tokke' => array(), +'tolga' => array(), +'torsken' => array(), +'tranoy' => array(), +'tranøy' => array(), +'tromso' => array(), +'tromsø' => array(), +'tromsa' => array(), +'romsa' => array(), +'trondheim' => array(), +'troandin' => array(), +'trysil' => array(), +'trana' => array(), +'træna' => array(), +'trogstad' => array(), +'trøgstad' => array(), +'tvedestrand' => array(), +'tydal' => array(), +'tynset' => array(), +'tysfjord' => array(), +'divtasvuodna' => array(), +'divttasvuotna' => array(), +'tysnes' => array(), +'tysvar' => array(), +'tysvær' => array(), +'tonsberg' => array(), +'tønsberg' => array(), +'ullensaker' => array(), +'ullensvang' => array(), +'ulvik' => array(), +'utsira' => array(), +'vadso' => array(), +'vadsø' => array(), +'cahcesuolo' => array(), +'čáhcesuolo' => array(), +'vaksdal' => array(), +'valle' => array(), +'vang' => array(), +'vanylven' => array(), +'vardo' => array(), +'vardø' => array(), +'varggat' => array(), +'várggát' => array(), +'vefsn' => array(), +'vaapste' => array(), +'vega' => array(), +'vegarshei' => array(), +'vegårshei' => array(), +'vennesla' => array(), +'verdal' => array(), +'verran' => array(), +'vestby' => array(), +'vestnes' => array(), +'vestre-slidre' => array(), +'vestre-toten' => array(), +'vestvagoy' => array(), +'vestvågøy' => array(), +'vevelstad' => array(), +'vik' => array(), +'vikna' => array(), +'vindafjord' => array(), +'volda' => array(), +'voss' => array(), +'varoy' => array(), +'værøy' => array(), +'vagan' => array(), +'vågan' => array(), +'voagat' => array(), +'vagsoy' => array(), +'vågsøy' => array(), +'vaga' => array(), +'vågå' => array(), +'ostfold' => array('valer' => array()), +'østfold' => array('våler' => array()), +'co' => array(), +'blogspot' => array()), +'np' => array('*' => array()), +'nr' => array('biz' => array(), +'info' => array(), +'gov' => array(), +'edu' => array(), +'org' => array(), +'net' => array(), +'com' => array()), +'nu' => array('merseine' => array(), +'mine' => array(), +'shacknet' => array()), +'nz' => array('ac' => array(), +'co' => array('blogspot' => array()), +'cri' => array(), +'geek' => array(), +'gen' => array(), +'govt' => array(), +'health' => array(), +'iwi' => array(), +'kiwi' => array(), +'maori' => array(), +'mil' => array(), +'māori' => array(), +'net' => array(), +'org' => array(), +'parliament' => array(), +'school' => array()), +'om' => array('co' => array(), +'com' => array(), +'edu' => array(), +'gov' => array(), +'med' => array(), +'museum' => array(), +'net' => array(), +'org' => array(), +'pro' => array()), +'org' => array('ae' => array(), +'us' => array(), +'dyndns' => array('go' => array(), +'home' => array()), +'blogdns' => array(), +'blogsite' => array(), +'boldlygoingnowhere' => array(), +'dnsalias' => array(), +'dnsdojo' => array(), +'doesntexist' => array(), +'dontexist' => array(), +'doomdns' => array(), +'dvrdns' => array(), +'dynalias' => array(), +'endofinternet' => array(), +'endoftheinternet' => array(), +'from-me' => array(), +'game-host' => array(), +'gotdns' => array(), +'hobby-site' => array(), +'homedns' => array(), +'homeftp' => array(), +'homelinux' => array(), +'homeunix' => array(), +'is-a-bruinsfan' => array(), +'is-a-candidate' => array(), +'is-a-celticsfan' => array(), +'is-a-chef' => array(), +'is-a-geek' => array(), +'is-a-knight' => array(), +'is-a-linux-user' => array(), +'is-a-patsfan' => array(), +'is-a-soxfan' => array(), +'is-found' => array(), +'is-lost' => array(), +'is-saved' => array(), +'is-very-bad' => array(), +'is-very-evil' => array(), +'is-very-good' => array(), +'is-very-nice' => array(), +'is-very-sweet' => array(), +'isa-geek' => array(), +'kicks-ass' => array(), +'misconfused' => array(), +'podzone' => array(), +'readmyblog' => array(), +'selfip' => array(), +'sellsyourhome' => array(), +'servebbs' => array(), +'serveftp' => array(), +'servegame' => array(), +'stuff-4-sale' => array(), +'webhop' => array(), +'za' => array()), +'pa' => array('ac' => array(), +'gob' => array(), +'com' => array(), +'org' => array(), +'sld' => array(), +'edu' => array(), +'net' => array(), +'ing' => array(), +'abo' => array(), +'med' => array(), +'nom' => array()), +'pe' => array('edu' => array(), +'gob' => array(), +'nom' => array(), +'mil' => array(), +'org' => array(), +'com' => array(), +'net' => array()), +'pf' => array('com' => array(), +'org' => array(), +'edu' => array()), +'pg' => array('*' => array()), +'ph' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'edu' => array(), +'ngo' => array(), +'mil' => array(), +'i' => array()), +'pk' => array('com' => array(), +'net' => array(), +'edu' => array(), +'org' => array(), +'fam' => array(), +'biz' => array(), +'web' => array(), +'gov' => array(), +'gob' => array(), +'gok' => array(), +'gon' => array(), +'gop' => array(), +'gos' => array(), +'info' => array()), +'pl' => array('aid' => array(), +'agro' => array(), +'atm' => array(), +'auto' => array(), +'biz' => array(), +'com' => array(), +'edu' => array(), +'gmina' => array(), +'gsm' => array(), +'info' => array(), +'mail' => array(), +'miasta' => array(), +'media' => array(), +'mil' => array(), +'net' => array(), +'nieruchomosci' => array(), +'nom' => array(), +'org' => array(), +'pc' => array(), +'powiat' => array(), +'priv' => array(), +'realestate' => array(), +'rel' => array(), +'sex' => array(), +'shop' => array(), +'sklep' => array(), +'sos' => array(), +'szkola' => array(), +'targi' => array(), +'tm' => array(), +'tourism' => array(), +'travel' => array(), +'turystyka' => array(), +'6bone' => array(), +'art' => array(), +'mbone' => array(), +'gov' => array('uw' => array(), +'um' => array(), +'ug' => array(), +'upow' => array(), +'starostwo' => array(), +'so' => array(), +'sr' => array(), +'po' => array(), +'pa' => array()), +'ngo' => array(), +'irc' => array(), +'usenet' => array(), +'augustow' => array(), +'babia-gora' => array(), +'bedzin' => array(), +'beskidy' => array(), +'bialowieza' => array(), +'bialystok' => array(), +'bielawa' => array(), +'bieszczady' => array(), +'boleslawiec' => array(), +'bydgoszcz' => array(), +'bytom' => array(), +'cieszyn' => array(), +'czeladz' => array(), +'czest' => array(), +'dlugoleka' => array(), +'elblag' => array(), +'elk' => array(), +'glogow' => array(), +'gniezno' => array(), +'gorlice' => array(), +'grajewo' => array(), +'ilawa' => array(), +'jaworzno' => array(), +'jelenia-gora' => array(), +'jgora' => array(), +'kalisz' => array(), +'kazimierz-dolny' => array(), +'karpacz' => array(), +'kartuzy' => array(), +'kaszuby' => array(), +'katowice' => array(), +'kepno' => array(), +'ketrzyn' => array(), +'klodzko' => array(), +'kobierzyce' => array(), +'kolobrzeg' => array(), +'konin' => array(), +'konskowola' => array(), +'kutno' => array(), +'lapy' => array(), +'lebork' => array(), +'legnica' => array(), +'lezajsk' => array(), +'limanowa' => array(), +'lomza' => array(), +'lowicz' => array(), +'lubin' => array(), +'lukow' => array(), +'malbork' => array(), +'malopolska' => array(), +'mazowsze' => array(), +'mazury' => array(), +'mielec' => array(), +'mielno' => array(), +'mragowo' => array(), +'naklo' => array(), +'nowaruda' => array(), +'nysa' => array(), +'olawa' => array(), +'olecko' => array(), +'olkusz' => array(), +'olsztyn' => array(), +'opoczno' => array(), +'opole' => array(), +'ostroda' => array(), +'ostroleka' => array(), +'ostrowiec' => array(), +'ostrowwlkp' => array(), +'pila' => array(), +'pisz' => array(), +'podhale' => array(), +'podlasie' => array(), +'polkowice' => array(), +'pomorze' => array(), +'pomorskie' => array(), +'prochowice' => array(), +'pruszkow' => array(), +'przeworsk' => array(), +'pulawy' => array(), +'radom' => array(), +'rawa-maz' => array(), +'rybnik' => array(), +'rzeszow' => array(), +'sanok' => array(), +'sejny' => array(), +'siedlce' => array(), +'slask' => array(), +'slupsk' => array(), +'sosnowiec' => array(), +'stalowa-wola' => array(), +'skoczow' => array(), +'starachowice' => array(), +'stargard' => array(), +'suwalki' => array(), +'swidnica' => array(), +'swiebodzin' => array(), +'swinoujscie' => array(), +'szczecin' => array(), +'szczytno' => array(), +'tarnobrzeg' => array(), +'tgory' => array(), +'turek' => array(), +'tychy' => array(), +'ustka' => array(), +'walbrzych' => array(), +'warmia' => array(), +'warszawa' => array(), +'waw' => array(), +'wegrow' => array(), +'wielun' => array(), +'wlocl' => array(), +'wloclawek' => array(), +'wodzislaw' => array(), +'wolomin' => array(), +'wroclaw' => array(), +'zachpomor' => array(), +'zagan' => array(), +'zarow' => array(), +'zgora' => array(), +'zgorzelec' => array(), +'gda' => array(), +'gdansk' => array(), +'gdynia' => array(), +'med' => array(), +'sopot' => array(), +'gliwice' => array(), +'krakow' => array(), +'poznan' => array(), +'wroc' => array(), +'zakopane' => array(), +'co' => array()), +'pm' => array(), +'pn' => array('gov' => array(), +'co' => array(), +'org' => array(), +'edu' => array(), +'net' => array()), +'post' => array(), +'pr' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'edu' => array(), +'isla' => array(), +'pro' => array(), +'biz' => array(), +'info' => array(), +'name' => array(), +'est' => array(), +'prof' => array(), +'ac' => array()), +'pro' => array('aca' => array(), +'bar' => array(), +'cpa' => array(), +'jur' => array(), +'law' => array(), +'med' => array(), +'eng' => array()), +'ps' => array('edu' => array(), +'gov' => array(), +'sec' => array(), +'plo' => array(), +'com' => array(), +'org' => array(), +'net' => array()), +'pt' => array('net' => array(), +'gov' => array(), +'org' => array(), +'edu' => array(), +'int' => array(), +'publ' => array(), +'com' => array(), +'nome' => array(), +'blogspot' => array()), +'pw' => array('co' => array(), +'ne' => array(), +'or' => array(), +'ed' => array(), +'go' => array(), +'belau' => array()), +'py' => array('com' => array(), +'coop' => array(), +'edu' => array(), +'gov' => array(), +'mil' => array(), +'net' => array(), +'org' => array()), +'qa' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'mil' => array(), +'name' => array(), +'net' => array(), +'org' => array(), +'sch' => array()), +'re' => array('com' => array(), +'asso' => array(), +'nom' => array(), +'blogspot' => array()), +'ro' => array('com' => array(), +'org' => array(), +'tm' => array(), +'nt' => array(), +'nom' => array(), +'info' => array(), +'rec' => array(), +'arts' => array(), +'firm' => array(), +'store' => array(), +'www' => array(), +'blogspot' => array()), +'rs' => array('co' => array(), +'org' => array(), +'edu' => array(), +'ac' => array(), +'gov' => array(), +'in' => array()), +'ru' => array('ac' => array(), +'com' => array(), +'edu' => array(), +'int' => array(), +'net' => array(), +'org' => array(), +'pp' => array(), +'adygeya' => array(), +'altai' => array(), +'amur' => array(), +'arkhangelsk' => array(), +'astrakhan' => array(), +'bashkiria' => array(), +'belgorod' => array(), +'bir' => array(), +'bryansk' => array(), +'buryatia' => array(), +'cbg' => array(), +'chel' => array(), +'chelyabinsk' => array(), +'chita' => array(), +'chukotka' => array(), +'chuvashia' => array(), +'dagestan' => array(), +'dudinka' => array(), +'e-burg' => array(), +'grozny' => array(), +'irkutsk' => array(), +'ivanovo' => array(), +'izhevsk' => array(), +'jar' => array(), +'joshkar-ola' => array(), +'kalmykia' => array(), +'kaluga' => array(), +'kamchatka' => array(), +'karelia' => array(), +'kazan' => array(), +'kchr' => array(), +'kemerovo' => array(), +'khabarovsk' => array(), +'khakassia' => array(), +'khv' => array(), +'kirov' => array(), +'koenig' => array(), +'komi' => array(), +'kostroma' => array(), +'krasnoyarsk' => array(), +'kuban' => array(), +'kurgan' => array(), +'kursk' => array(), +'lipetsk' => array(), +'magadan' => array(), +'mari' => array(), +'mari-el' => array(), +'marine' => array(), +'mordovia' => array(), +'mosreg' => array(), +'msk' => array(), +'murmansk' => array(), +'nalchik' => array(), +'nnov' => array(), +'nov' => array(), +'novosibirsk' => array(), +'nsk' => array(), +'omsk' => array(), +'orenburg' => array(), +'oryol' => array(), +'palana' => array(), +'penza' => array(), +'perm' => array(), +'ptz' => array(), +'rnd' => array(), +'ryazan' => array(), +'sakhalin' => array(), +'samara' => array(), +'saratov' => array(), +'simbirsk' => array(), +'smolensk' => array(), +'spb' => array(), +'stavropol' => array(), +'stv' => array(), +'surgut' => array(), +'tambov' => array(), +'tatarstan' => array(), +'tom' => array(), +'tomsk' => array(), +'tsaritsyn' => array(), +'tsk' => array(), +'tula' => array(), +'tuva' => array(), +'tver' => array(), +'tyumen' => array(), +'udm' => array(), +'udmurtia' => array(), +'ulan-ude' => array(), +'vladikavkaz' => array(), +'vladimir' => array(), +'vladivostok' => array(), +'volgograd' => array(), +'vologda' => array(), +'voronezh' => array(), +'vrn' => array(), +'vyatka' => array(), +'yakutia' => array(), +'yamal' => array(), +'yaroslavl' => array(), +'yekaterinburg' => array(), +'yuzhno-sakhalinsk' => array(), +'amursk' => array(), +'baikal' => array(), +'cmw' => array(), +'fareast' => array(), +'jamal' => array(), +'kms' => array(), +'k-uralsk' => array(), +'kustanai' => array(), +'kuzbass' => array(), +'magnitka' => array(), +'mytis' => array(), +'nakhodka' => array(), +'nkz' => array(), +'norilsk' => array(), +'oskol' => array(), +'pyatigorsk' => array(), +'rubtsovsk' => array(), +'snz' => array(), +'syzran' => array(), +'vdonsk' => array(), +'zgrad' => array(), +'gov' => array(), +'mil' => array(), +'test' => array()), +'rw' => array('gov' => array(), +'net' => array(), +'edu' => array(), +'ac' => array(), +'com' => array(), +'co' => array(), +'int' => array(), +'mil' => array(), +'gouv' => array()), +'sa' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'med' => array(), +'pub' => array(), +'edu' => array(), +'sch' => array()), +'sb' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'net' => array(), +'org' => array()), +'sc' => array('com' => array(), +'gov' => array(), +'net' => array(), +'org' => array(), +'edu' => array()), +'sd' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'med' => array(), +'tv' => array(), +'gov' => array(), +'info' => array()), +'se' => array('a' => array(), +'ac' => array(), +'b' => array(), +'bd' => array(), +'brand' => array(), +'c' => array(), +'d' => array(), +'e' => array(), +'f' => array(), +'fh' => array(), +'fhsk' => array(), +'fhv' => array(), +'g' => array(), +'h' => array(), +'i' => array(), +'k' => array(), +'komforb' => array(), +'kommunalforbund' => array(), +'komvux' => array(), +'l' => array(), +'lanbib' => array(), +'m' => array(), +'n' => array(), +'naturbruksgymn' => array(), +'o' => array(), +'org' => array(), +'p' => array(), +'parti' => array(), +'pp' => array(), +'press' => array(), +'r' => array(), +'s' => array(), +'t' => array(), +'tm' => array(), +'u' => array(), +'w' => array(), +'x' => array(), +'y' => array(), +'z' => array(), +'com' => array(), +'blogspot' => array()), +'sg' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'edu' => array(), +'per' => array(), +'blogspot' => array()), +'sh' => array('com' => array(), +'net' => array(), +'gov' => array(), +'org' => array(), +'mil' => array()), +'si' => array(), +'sj' => array(), +'sk' => array('blogspot' => array()), +'sl' => array('com' => array(), +'net' => array(), +'edu' => array(), +'gov' => array(), +'org' => array()), +'sm' => array(), +'sn' => array('art' => array(), +'com' => array(), +'edu' => array(), +'gouv' => array(), +'org' => array(), +'perso' => array(), +'univ' => array()), +'so' => array('com' => array(), +'net' => array(), +'org' => array()), +'sr' => array(), +'st' => array('co' => array(), +'com' => array(), +'consulado' => array(), +'edu' => array(), +'embaixada' => array(), +'gov' => array(), +'mil' => array(), +'net' => array(), +'org' => array(), +'principe' => array(), +'saotome' => array(), +'store' => array()), +'su' => array(), +'sv' => array('com' => array(), +'edu' => array(), +'gob' => array(), +'org' => array(), +'red' => array()), +'sx' => array('gov' => array()), +'sy' => array('edu' => array(), +'gov' => array(), +'net' => array(), +'mil' => array(), +'com' => array(), +'org' => array()), +'sz' => array('co' => array(), +'ac' => array(), +'org' => array()), +'tc' => array(), +'td' => array('blogspot' => array()), +'tel' => array(), +'tf' => array(), +'tg' => array(), +'th' => array('ac' => array(), +'co' => array(), +'go' => array(), +'in' => array(), +'mi' => array(), +'net' => array(), +'or' => array()), +'tj' => array('ac' => array(), +'biz' => array(), +'co' => array(), +'com' => array(), +'edu' => array(), +'go' => array(), +'gov' => array(), +'int' => array(), +'mil' => array(), +'name' => array(), +'net' => array(), +'nic' => array(), +'org' => array(), +'test' => array(), +'web' => array()), +'tk' => array(), +'tl' => array('gov' => array()), +'tm' => array('com' => array(), +'co' => array(), +'org' => array(), +'net' => array(), +'nom' => array(), +'gov' => array(), +'mil' => array(), +'edu' => array()), +'tn' => array('com' => array(), +'ens' => array(), +'fin' => array(), +'gov' => array(), +'ind' => array(), +'intl' => array(), +'nat' => array(), +'net' => array(), +'org' => array(), +'info' => array(), +'perso' => array(), +'tourism' => array(), +'edunet' => array(), +'rnrt' => array(), +'rns' => array(), +'rnu' => array(), +'mincom' => array(), +'agrinet' => array(), +'defense' => array(), +'turen' => array()), +'to' => array('com' => array(), +'gov' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'mil' => array()), +'tp' => array(), +'tr' => array('com' => array(), +'info' => array(), +'biz' => array(), +'net' => array(), +'org' => array(), +'web' => array(), +'gen' => array(), +'tv' => array(), +'av' => array(), +'dr' => array(), +'bbs' => array(), +'name' => array(), +'tel' => array(), +'gov' => array(), +'bel' => array(), +'pol' => array(), +'mil' => array(), +'k12' => array(), +'edu' => array(), +'kep' => array(), +'nc' => array('gov' => array())), +'travel' => array(), +'tt' => array('co' => array(), +'com' => array(), +'org' => array(), +'net' => array(), +'biz' => array(), +'info' => array(), +'pro' => array(), +'int' => array(), +'coop' => array(), +'jobs' => array(), +'mobi' => array(), +'travel' => array(), +'museum' => array(), +'aero' => array(), +'name' => array(), +'gov' => array(), +'edu' => array()), +'tv' => array('dyndns' => array(), +'better-than' => array(), +'on-the-web' => array(), +'worse-than' => array()), +'tw' => array('edu' => array(), +'gov' => array(), +'mil' => array(), +'com' => array(), +'net' => array(), +'org' => array(), +'idv' => array(), +'game' => array(), +'ebiz' => array(), +'club' => array(), +'網路' => array(), +'組織' => array(), +'商業' => array(), +'blogspot' => array()), +'tz' => array('ac' => array(), +'co' => array(), +'go' => array(), +'hotel' => array(), +'info' => array(), +'me' => array(), +'mil' => array(), +'mobi' => array(), +'ne' => array(), +'or' => array(), +'sc' => array(), +'tv' => array()), +'ua' => array('com' => array(), +'edu' => array(), +'gov' => array(), +'in' => array(), +'net' => array(), +'org' => array(), +'cherkassy' => array(), +'cherkasy' => array(), +'chernigov' => array(), +'chernihiv' => array(), +'chernivtsi' => array(), +'chernovtsy' => array(), +'ck' => array(), +'cn' => array(), +'cr' => array(), +'crimea' => array(), +'cv' => array(), +'dn' => array(), +'dnepropetrovsk' => array(), +'dnipropetrovsk' => array(), +'dominic' => array(), +'donetsk' => array(), +'dp' => array(), +'if' => array(), +'ivano-frankivsk' => array(), +'kh' => array(), +'kharkiv' => array(), +'kharkov' => array(), +'kherson' => array(), +'khmelnitskiy' => array(), +'khmelnytskyi' => array(), +'kiev' => array(), +'kirovograd' => array(), +'km' => array(), +'kr' => array(), +'krym' => array(), +'ks' => array(), +'kv' => array(), +'kyiv' => array(), +'lg' => array(), +'lt' => array(), +'lugansk' => array(), +'lutsk' => array(), +'lv' => array(), +'lviv' => array(), +'mk' => array(), +'mykolaiv' => array(), +'nikolaev' => array(), +'od' => array(), +'odesa' => array(), +'odessa' => array(), +'pl' => array(), +'poltava' => array(), +'rivne' => array(), +'rovno' => array(), +'rv' => array(), +'sb' => array(), +'sebastopol' => array(), +'sevastopol' => array(), +'sm' => array(), +'sumy' => array(), +'te' => array(), +'ternopil' => array(), +'uz' => array(), +'uzhgorod' => array(), +'vinnica' => array(), +'vinnytsia' => array(), +'vn' => array(), +'volyn' => array(), +'yalta' => array(), +'zaporizhzhe' => array(), +'zaporizhzhia' => array(), +'zhitomir' => array(), +'zhytomyr' => array(), +'zp' => array(), +'zt' => array(), +'co' => array(), +'pp' => array()), +'ug' => array('co' => array(), +'or' => array(), +'ac' => array(), +'sc' => array(), +'go' => array(), +'ne' => array(), +'com' => array(), +'org' => array()), +'uk' => array('ac' => array(), +'co' => array('blogspot' => array()), +'gov' => array('service' => array()), +'ltd' => array(), +'me' => array(), +'net' => array(), +'nhs' => array(), +'org' => array(), +'plc' => array(), +'police' => array(), +'sch' => array('*' => array())), +'us' => array('dni' => array(), +'fed' => array(), +'isa' => array(), +'kids' => array(), +'nsn' => array(), +'ak' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'al' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ar' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'as' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'az' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ca' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'co' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ct' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'dc' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'de' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'fl' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ga' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'gu' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'hi' => array('cc' => array(), +'lib' => array()), +'ia' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'id' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'il' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'in' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ks' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ky' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'la' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ma' => array('k12' => array('pvt' => array(), +'chtr' => array(), +'paroch' => array()), +'cc' => array(), +'lib' => array()), +'md' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'me' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'mi' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'mn' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'mo' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ms' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'mt' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'nc' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'nd' => array('cc' => array(), +'lib' => array()), +'ne' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'nh' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'nj' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'nm' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'nv' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ny' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'oh' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ok' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'or' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'pa' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'pr' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ri' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'sc' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'sd' => array('cc' => array(), +'lib' => array()), +'tn' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'tx' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'ut' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'vi' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'vt' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'va' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'wa' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'wi' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'wv' => array('cc' => array()), +'wy' => array('k12' => array(), +'cc' => array(), +'lib' => array()), +'is-by' => array(), +'land-4-sale' => array(), +'stuff-4-sale' => array()), +'uy' => array('com' => array(), +'edu' => array(), +'gub' => array(), +'mil' => array(), +'net' => array(), +'org' => array()), +'uz' => array('co' => array(), +'com' => array(), +'net' => array(), +'org' => array()), +'va' => array(), +'vc' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'mil' => array(), +'edu' => array()), +'ve' => array('arts' => array(), +'co' => array(), +'com' => array(), +'e12' => array(), +'edu' => array(), +'firm' => array(), +'gob' => array(), +'gov' => array(), +'info' => array(), +'int' => array(), +'mil' => array(), +'net' => array(), +'org' => array(), +'rec' => array(), +'store' => array(), +'tec' => array(), +'web' => array()), +'vg' => array(), +'vi' => array('co' => array(), +'com' => array(), +'k12' => array(), +'net' => array(), +'org' => array()), +'vn' => array('com' => array(), +'net' => array(), +'org' => array(), +'edu' => array(), +'gov' => array(), +'int' => array(), +'ac' => array(), +'biz' => array(), +'info' => array(), +'name' => array(), +'pro' => array(), +'health' => array()), +'vu' => array('com' => array(), +'edu' => array(), +'net' => array(), +'org' => array()), +'wf' => array(), +'ws' => array('com' => array(), +'net' => array(), +'org' => array(), +'gov' => array(), +'edu' => array(), +'dyndns' => array(), +'mypets' => array()), +'yt' => array(), +'امارات' => array(), +'বাংলা' => array(), +'中国' => array(), +'中國' => array(), +'الجزائر' => array(), +'مصر' => array(), +'გე' => array(), +'香港' => array(), +'भारत' => array(), +'بھارت' => array(), +'భారత్' => array(), +'ભારત' => array(), +'ਭਾਰਤ' => array(), +'ভারত' => array(), +'இந்தியா' => array(), +'ایران' => array(), +'ايران' => array(), +'الاردن' => array(), +'한국' => array(), +'қаз' => array(), +'ලංකා' => array(), +'இலங்கை' => array(), +'المغرب' => array(), +'мон' => array(), +'مليسيا' => array(), +'عمان' => array(), +'فلسطين' => array(), +'срб' => array('пр' => array(), +'орг' => array(), +'обр' => array(), +'од' => array(), +'упр' => array(), +'ак' => array()), +'рф' => array(), +'قطر' => array(), +'السعودية' => array(), +'السعودیة' => array(), +'السعودیۃ' => array(), +'السعوديه' => array(), +'سورية' => array(), +'سوريا' => array(), +'新加坡' => array(), +'சிங்கப்பூர்' => array(), +'ไทย' => array(), +'تونس' => array(), +'台灣' => array(), +'台湾' => array(), +'臺灣' => array(), +'укр' => array(), +'اليمن' => array(), +'xxx' => array(), +'ye' => array('*' => array()), +'za' => array('*' => array()), +'zm' => array('*' => array()), +'zw' => array('*' => array()), +'abbott' => array(), +'abogado' => array(), +'academy' => array(), +'accenture' => array(), +'accountants' => array(), +'active' => array(), +'actor' => array(), +'africa' => array(), +'agency' => array(), +'airforce' => array(), +'allfinanz' => array(), +'alsace' => array(), +'amsterdam' => array(), +'android' => array(), +'aquarelle' => array(), +'archi' => array(), +'army' => array(), +'associates' => array(), +'attorney' => array(), +'auction' => array(), +'audio' => array(), +'autos' => array(), +'axa' => array(), +'band' => array(), +'bar' => array(), +'barcelona' => array(), +'bargains' => array(), +'bauhaus' => array(), +'bayern' => array(), +'bcn' => array(), +'beer' => array(), +'berlin' => array(), +'best' => array(), +'bharti' => array(), +'bible' => array(), +'bid' => array(), +'bike' => array(), +'bio' => array(), +'black' => array(), +'blackfriday' => array(), +'bloomberg' => array(), +'blue' => array(), +'bmw' => array(), +'bnl' => array(), +'bnpparibas' => array(), +'bond' => array(), +'boo' => array(), +'boutique' => array(), +'brussels' => array(), +'budapest' => array(), +'build' => array(), +'builders' => array(), +'business' => array(), +'buzz' => array(), +'bzh' => array(), +'cab' => array(), +'cal' => array(), +'camera' => array(), +'camp' => array(), +'cancerresearch' => array(), +'capetown' => array(), +'capital' => array(), +'caravan' => array(), +'cards' => array(), +'care' => array(), +'career' => array(), +'careers' => array(), +'cartier' => array(), +'casa' => array(), +'cash' => array(), +'catering' => array(), +'cba' => array(), +'cbn' => array(), +'center' => array(), +'ceo' => array(), +'cern' => array(), +'cfa' => array(), +'channel' => array(), +'cheap' => array(), +'christmas' => array(), +'chrome' => array(), +'church' => array(), +'citic' => array(), +'city' => array(), +'claims' => array(), +'cleaning' => array(), +'click' => array(), +'clinic' => array(), +'clothing' => array(), +'club' => array(), +'codes' => array(), +'coffee' => array(), +'college' => array(), +'cologne' => array(), +'commbank' => array(), +'community' => array(), +'company' => array(), +'computer' => array(), +'condos' => array(), +'construction' => array(), +'consulting' => array(), +'contractors' => array(), +'cooking' => array(), +'cool' => array(), +'country' => array(), +'credit' => array(), +'creditcard' => array(), +'crs' => array(), +'cruises' => array(), +'cuisinella' => array(), +'cymru' => array(), +'dabur' => array(), +'dad' => array(), +'dance' => array(), +'dating' => array(), +'datsun' => array(), +'day' => array(), +'deals' => array(), +'degree' => array(), +'democrat' => array(), +'dental' => array(), +'dentist' => array(), +'desi' => array(), +'diamonds' => array(), +'diet' => array(), +'digital' => array(), +'direct' => array(), +'directory' => array(), +'discount' => array(), +'dnp' => array(), +'domains' => array(), +'doosan' => array(), +'durban' => array(), +'dvag' => array(), +'eat' => array(), +'education' => array(), +'email' => array(), +'emerck' => array(), +'engineer' => array(), +'engineering' => array(), +'enterprises' => array(), +'equipment' => array(), +'erni' => array(), +'esq' => array(), +'estate' => array(), +'eurovision' => array(), +'eus' => array(), +'events' => array(), +'everbank' => array(), +'exchange' => array(), +'expert' => array(), +'exposed' => array(), +'fail' => array(), +'fan' => array(), +'farm' => array(), +'fashion' => array(), +'feedback' => array(), +'finance' => array(), +'financial' => array(), +'firmdale' => array(), +'fish' => array(), +'fishing' => array(), +'fitness' => array(), +'flights' => array(), +'florist' => array(), +'flsmidth' => array(), +'fly' => array(), +'foo' => array(), +'forsale' => array(), +'foundation' => array(), +'frl' => array(), +'frogans' => array(), +'fund' => array(), +'furniture' => array(), +'futbol' => array(), +'gal' => array(), +'gallery' => array(), +'garden' => array(), +'gbiz' => array(), +'gdn' => array(), +'gent' => array(), +'ggee' => array(), +'gift' => array(), +'gifts' => array(), +'gives' => array(), +'glass' => array(), +'gle' => array(), +'global' => array(), +'globo' => array(), +'gmail' => array(), +'gmo' => array(), +'gmx' => array(), +'google' => array(), +'gop' => array(), +'graphics' => array(), +'gratis' => array(), +'green' => array(), +'gripe' => array(), +'group' => array(), +'guge' => array(), +'guide' => array(), +'guitars' => array(), +'guru' => array(), +'hamburg' => array(), +'haus' => array(), +'healthcare' => array(), +'help' => array(), +'here' => array(), +'hermes' => array(), +'hiphop' => array(), +'hiv' => array(), +'holdings' => array(), +'holiday' => array(), +'homes' => array(), +'horse' => array(), +'host' => array(), +'hosting' => array(), +'house' => array(), +'how' => array(), +'ibm' => array(), +'ifm' => array(), +'iinet' => array(), +'immo' => array(), +'immobilien' => array(), +'industries' => array(), +'infiniti' => array(), +'ing' => array(), +'ink' => array(), +'institute' => array(), +'insure' => array(), +'international' => array(), +'investments' => array(), +'ipiranga' => array(), +'irish' => array(), +'ist' => array(), +'istanbul' => array(), +'iwc' => array(), +'java' => array(), +'jetzt' => array(), +'joburg' => array(), +'juegos' => array(), +'kaufen' => array(), +'kim' => array(), +'kitchen' => array(), +'kiwi' => array(), +'koeln' => array(), +'krd' => array(), +'kred' => array(), +'lacaixa' => array(), +'land' => array(), +'latrobe' => array(), +'lawyer' => array(), +'lds' => array(), +'lease' => array(), +'leclerc' => array(), +'lgbt' => array(), +'life' => array(), +'lighting' => array(), +'limited' => array(), +'limo' => array(), +'link' => array(), +'loans' => array(), +'london' => array(), +'lotto' => array(), +'ltda' => array(), +'luxe' => array(), +'luxury' => array(), +'madrid' => array(), +'maison' => array(), +'management' => array(), +'mango' => array(), +'market' => array(), +'marketing' => array(), +'media' => array(), +'meet' => array(), +'melbourne' => array(), +'meme' => array(), +'menu' => array(), +'miami' => array(), +'mini' => array(), +'moda' => array(), +'moe' => array(), +'monash' => array(), +'montblanc' => array(), +'mormon' => array(), +'mortgage' => array(), +'moscow' => array(), +'motorcycles' => array(), +'mov' => array(), +'nagoya' => array(), +'navy' => array(), +'netbank' => array(), +'network' => array(), +'neustar' => array(), +'new' => array(), +'nexus' => array(), +'ngo' => array(), +'nhk' => array(), +'ninja' => array(), +'nissan' => array(), +'nra' => array(), +'nrw' => array(), +'nyc' => array(), +'okinawa' => array(), +'ong' => array(), +'onl' => array(), +'ooo' => array(), +'oracle' => array(), +'organic' => array(), +'otsuka' => array(), +'ovh' => array(), +'paris' => array(), +'partners' => array(), +'parts' => array(), +'pharmacy' => array(), +'photo' => array(), +'photography' => array(), +'photos' => array(), +'physio' => array(), +'pics' => array(), +'pictet' => array(), +'pictures' => array(), +'pink' => array(), +'pizza' => array(), +'place' => array(), +'plumbing' => array(), +'pohl' => array(), +'poker' => array(), +'praxi' => array(), +'press' => array(), +'prod' => array(), +'productions' => array(), +'prof' => array(), +'properties' => array(), +'property' => array(), +'pub' => array(), +'qpon' => array(), +'quebec' => array(), +'realtor' => array(), +'recipes' => array(), +'red' => array(), +'rehab' => array(), +'reise' => array(), +'reisen' => array(), +'ren' => array(), +'rentals' => array(), +'repair' => array(), +'report' => array(), +'republican' => array(), +'rest' => array(), +'restaurant' => array(), +'reviews' => array(), +'rich' => array(), +'rio' => array(), +'rip' => array(), +'rocks' => array(), +'rodeo' => array(), +'rsvp' => array(), +'ruhr' => array(), +'ryukyu' => array(), +'saarland' => array(), +'samsung' => array(), +'sap' => array(), +'sarl' => array(), +'sca' => array(), +'scb' => array(), +'schmidt' => array(), +'scholarships' => array(), +'schule' => array(), +'scot' => array(), +'seat' => array(), +'services' => array(), +'sew' => array(), +'sexy' => array(), +'sharp' => array(), +'shiksha' => array(), +'shoes' => array(), +'shriram' => array(), +'singles' => array(), +'sky' => array(), +'social' => array(), +'software' => array(), +'sohu' => array(), +'solar' => array(), +'solutions' => array(), +'soy' => array(), +'space' => array(), +'spiegel' => array(), +'supplies' => array(), +'supply' => array(), +'support' => array(), +'surf' => array(), +'surgery' => array(), +'suzuki' => array(), +'systems' => array(), +'taipei' => array(), +'tatar' => array(), +'tattoo' => array(), +'tax' => array(), +'technology' => array(), +'temasek' => array(), +'tienda' => array(), +'tips' => array(), +'tirol' => array(), +'today' => array(), +'tokyo' => array(), +'tools' => array(), +'top' => array(), +'toshiba' => array(), +'town' => array(), +'toys' => array(), +'trade' => array(), +'training' => array(), +'tui' => array(), +'university' => array(), +'uno' => array(), +'uol' => array(), +'vacations' => array(), +'vegas' => array(), +'ventures' => array(), +'versicherung' => array(), +'vet' => array(), +'viajes' => array(), +'villas' => array(), +'vision' => array(), +'vlaanderen' => array(), +'vodka' => array(), +'vote' => array(), +'voting' => array(), +'voto' => array(), +'voyage' => array(), +'wales' => array(), +'wang' => array(), +'watch' => array(), +'webcam' => array(), +'website' => array(), +'wed' => array(), +'wedding' => array(), +'whoswho' => array(), +'wien' => array(), +'wiki' => array(), +'williamhill' => array(), +'wme' => array(), +'work' => array(), +'works' => array(), +'world' => array(), +'wtc' => array(), +'wtf' => array(), +'佛山' => array(), +'慈善' => array(), +'集团' => array(), +'在线' => array(), +'八卦' => array(), +'موقع' => array(), +'公益' => array(), +'公司' => array(), +'移动' => array(), +'我爱你' => array(), +'москва' => array(), +'онлайн' => array(), +'сайт' => array(), +'时尚' => array(), +'淡马锡' => array(), +'орг' => array(), +'삼성' => array(), +'商标' => array(), +'商店' => array(), +'商城' => array(), +'дети' => array(), +'新闻' => array(), +'中文网' => array(), +'中信' => array(), +'娱乐' => array(), +'谷歌' => array(), +'网店' => array(), +'संगठन' => array(), +'网络' => array(), +'手机' => array(), +'بازار' => array(), +'政府' => array(), +'شبكة' => array(), +'机构' => array(), +'组织机构' => array(), +'рус' => array(), +'みんな' => array(), +'グーグル' => array(), +'世界' => array(), +'网址' => array(), +'游戏' => array(), +'vermögensberater' => array(), +'vermögensberatung' => array(), +'企业' => array(), +'广东' => array(), +'政务' => array(), +'xyz' => array(), +'yachts' => array(), +'yandex' => array(), +'yoga' => array(), +'yokohama' => array(), +'youtube' => array(), +'zip' => array(), +'zone' => array()); diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php new file mode 100644 index 0000000..ffe492e --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.class.php @@ -0,0 +1,120 @@ +<?php + +/* + * Calculate the effective registered domain of a fully qualified domain name. + * + * <@LICENSE> + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * </@LICENSE> + * + * Florian Sager, 25.07.2008, sager@agitos.de, http://www.agitos.de + */ + +/* + * Remove subdomains from a signing domain to get the registered domain. + * + * dkim-reputation.org blocks signing domains on the level of registered domains + * to rate senders who use e.g. a.spamdomain.tld, b.spamdomain.tld, ... under + * the most common identifier - the registered domain - finally. + * + * This function returns NULL if $signingDomain is TLD itself + * + * $signingDomain has to be provided lowercase (!) + */ + +class regDomain { + /* tld tree */ + protected $tldTree = array(); + + /* main function */ + public function getRegisteredDomain($signingDomain, $fallback = TRUE) { + $signingDomainParts = explode('.', $signingDomain); + + $result = $this->findRegisteredDomain($signingDomainParts, $this->tldTree); + + if ($result===NULL || $result=="") { + // this is an invalid domain name + return NULL; + } + + // assure there is at least 1 TLD in the stripped signing domain + if (!strpos($result, '.')) { + if ($fallback===FALSE) { + return NULL; + } + $cnt = count($signingDomainParts); + if ($cnt==1 || $signingDomainParts[$cnt-2]=="") return NULL; + if (!$this->validDomainPart($signingDomainParts[$cnt-2]) || !$this->validDomainPart($signingDomainParts[$cnt-1])) return NULL; + return $signingDomainParts[$cnt-2].'.'.$signingDomainParts[$cnt-1]; + } + return $result; + } + + /* validate parts */ + public function validDomainPart($domPart) { + // see http://www.register.com/domain-extension-rules.rcmx + $len = strlen($domPart); + + // not more than 63 characters + if ($len>63) return FALSE; + + // not less than 1 characters --> there are TLD-specific rules that could be considered additionally + if ($len<1) return FALSE; + + // Use only letters, numbers, or hyphen ("-") + // not beginning or ending with a hypen (this is TLD specific, be aware!) + if (!preg_match("/^([a-z0-9])(([a-z0-9-])*([a-z0-9]))*$/", $domPart)) return FALSE; + + return TRUE; + } + + /* recursive helper method */ + public function findRegisteredDomain($remainingSigningDomainParts, &$treeNode) { + $sub = array_pop($remainingSigningDomainParts); + + $result = NULL; + if (isset($treeNode['!'])) { + return '#'; + } + + if (!$this->validDomainPart($sub)) { + return NULL; + } + + if (is_array($treeNode) && array_key_exists($sub, $treeNode)) { + $result = $this->findRegisteredDomain($remainingSigningDomainParts, $treeNode[$sub]); + } else if (is_array($treeNode) && array_key_exists('*', $treeNode)) { + $result = $this->findRegisteredDomain($remainingSigningDomainParts, $treeNode['*']); + } else { + return $sub; + } + + // this is a hack 'cause PHP interpretes '' as NULL + if ($result == '#') { + return $sub; + } else if (strlen($result)>0) { + return $result.'.'.$sub; + } + return NULL; + } + + /* load tld tree into object */ + function __construct() { + /* include tld tree data */ + include(dirname(__FILE__) . '/effectiveTLDs.inc.php'); + } + +} diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php new file mode 100644 index 0000000..e6b7a2a --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/regDomain.inc.php @@ -0,0 +1,62 @@ +<?php + +/* + * Calculate the effective registered domain of a fully qualified domain name. + * + * <@LICENSE> + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * </@LICENSE> + * + * Florian Sager, 25.07.2008, sager@agitos.de, http://www.agitos.de + */ + +/* + * Remove subdomains from a signing domain to get the registered domain. + * + * dkim-reputation.org blocks signing domains on the level of registered domains + * to rate senders who use e.g. a.spamdomain.tld, b.spamdomain.tld, ... under + * the most common identifier - the registered domain - finally. + * + * This function returns NULL if $signingDomain is TLD itself + * + * $signingDomain has to be provided lowercase (!) + */ + +/* pull in class */ +require_once (dirname ( __FILE__ ) . '/regDomain.class.php'); + +/* create global object */ +; +function getRegisteredDomain($signingDomain, $fallback = TRUE) { + /* pull in object */ + $regDomainObj = new regDomain (); + /* return object method */ + return $regDomainObj->getRegisteredDomain ( $signingDomain, $fallback ); +} +function validDomainPart($domPart) { + /* pull in object */ + $regDomainObj = new regDomain (); + /* return object method */ + return $regDomainObj->validDomainPart ( $domPart ); +} + +// recursive helper method +function findRegisteredDomain($remainingSigningDomainParts, &$treeNode) { + /* pull in object */ + $regDomainObj = new regDomain (); + /* return object method */ + return $regDomainObj->findRegisteredDomain ( $remainingSigningDomainParts, $treeNode ); +} diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php new file mode 100644 index 0000000..d1cc47c --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/PHP/test-regDomain.php @@ -0,0 +1,51 @@ +<?php + +/* + * Calculate the effective registered domain of a fully qualified domain name. + * + * <@LICENSE> + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * </@LICENSE> + * + * Florian Sager, 25.07.2008, sager@agitos.de, http://www.agitos.de + */ + +require_once("effectiveTLDs.inc.php"); +require_once("regDomain.inc.php"); + +if ($_SERVER["argc"]<2) { + print("test-regDomain.php <(fully-qualified-domain-name )+>\n"); + exit; +} + +// strip subdomains from every signing domain +// char dom[] = "sub2.sub.registered.nom.ad"; + +$argc = $_SERVER["argc"]; +$argv = $_SERVER["argv"]; + +for ($i=1; $i<$argc; $i++) { + + $registeredDomain = getRegisteredDomain($argv[$i], $tldTree); + + if ( $registeredDomain === NULL ) { + printf("error: %s\n", $argv[$i]); + } else { + printf("%s\n", $registeredDomain); + } +} + +?> diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt new file mode 100644 index 0000000..9199c9f --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/README.txt @@ -0,0 +1,56 @@ +=============================================== +Detection of registered domains by reg-dom libs +=============================================== + +The reg-dom libs are available in C, Perl and PHP so far. + +They include recent representations of the effective TLD list available at +http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1 +and help to convert an arbitrary domain name to the registered domain name. + +Sample use: +dkim-reputation.org blocks signing domains on the level of registered domains +to rate senders who use e.g. a.spamdomain.tld, b.spamdomain.tld, ... under +the most common identifier - the registered domain - finally. +Project page: http://www.dkim-reputation.org/regdom-libs/ + +Pseudo code: +registeredDomain = getRegisteredDomain(ingoingDomain); + +Return values: +1) NULL if ingoingDomain is a TLD +2) the registered domain name if TLD is known +3) just <domain>.<tld> if <tld> is unknown + This case was added to support new TLDs in outdated reg-dom libs + by a certain likelihood. This fallback method is implemented in the + last conversion step and can be simply commented out. + +--- + +If you like to regenerate the effective TLD tree structure by yourself +you can use the script generateEffectiveTLDs.php with the following parameters: + +php generateEffectiveTLDs.php php > PHP/effectiveTLDs.inc.php +php generateEffectiveTLDs.php perl > Perl/effectiveTLDs.pm +php generateEffectiveTLDs.php c > C/tld-canon.h + + + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# </@LICENSE> + + +Florian Sager, 2009-02-05, sager@agitos.de, http://www.agitos.de diff --git a/Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php new file mode 100644 index 0000000..f8c18a4 --- /dev/null +++ b/Postman/Postman-Connectivity-Test/registered-domain-libs-master/generateEffectiveTLDs.php @@ -0,0 +1,213 @@ +<?php + +/* + * Florian Sager, 06.08.2008, sager@agitos.de, http://www.agitos.de + * + * Auto-Generate PHP array tree that contains all TLDs from the URL (see below); + * The output has to be copied to reputation-libs/effectiveTLDs.inc.php + * + * + */ + +header('Content-Type: text/html; charset=utf-8'); + +DEFINE('URL', 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1'); + +$format = "php"; +if ($_SERVER['argc']>1) { + if ($_SERVER['argv'][1] == "perl") { + $format = "perl"; + } else if ($_SERVER['argv'][1] == "c") { + $format = "c"; + } +} + +/* + * Does $search start with $startstring? + */ +function startsWith($search, $startstring) { + return (substr($search, 0, strlen($startstring))==$startstring); +} + +/* + * Does $search end with $endstring? + */ +function endsWith($search, $endstring) { + return (substr($search, -strlen($endstring))==$endstring); +} + + +function buildSubdomain(&$node, $tldParts) { + + $dom = trim(array_pop($tldParts)); + + $isNotDomain = FALSE; + if (startsWith($dom, "!")) { + $dom = substr($dom, 1); + $isNotDomain = TRUE; + } + + if (!array_key_exists($dom, $node)) { + if ($isNotDomain) { + $node[$dom] = array("!" => ""); + } else { + $node[$dom] = array(); + } + } + + if (!$isNotDomain && count($tldParts)>0) { + buildSubdomain($node[$dom], $tldParts); + } +} + +function printNode($key, $valueTree, $isAssignment = false) { + + global $format; + + if ($isAssignment) { + if ($format == "perl") { + echo "$key = {"; + } else { + echo "$key = array("; + } + } else { + if (strcmp($key, "!")==0) { + if ($format == "perl") { + echo "'!' => {}"; + } else { + echo "'!' => ''"; + } + return; + } else { + if ($format == "perl") { + echo "'$key' => {"; + } else { + echo "'$key' => array("; + } + } + } + + $keys = array_keys($valueTree); + + for ($i=0; $i<count($keys); $i++) { + + $key = $keys[$i]; + + printNode($key, $valueTree[$key]); + + if ($i+1 != count($valueTree)) { + echo ",\n"; + } else { + "\n"; + } + } + + if ($format == "perl") { + echo '}'; + } else { + echo ')'; + } +} + +// sample: root(3:ac(5:com,edu,gov,net,ad(3:nom,co!,*)),de,com) + +function printNode_C($key, $valueTree) { + + echo "$key"; + + $keys = array_keys($valueTree); + + if (count($keys)>0) { + + if (strcmp($keys['!'], "!")==0) { + echo "!"; + } else { + + echo "(".count($keys).":"; + + for ($i=0; $i<count($keys); $i++) { + + $key = $keys[$i]; + + // if (count($valueTree[$key])>0) { + printNode_C($key, $valueTree[$key]); + // } + + if ($i+1 != count($valueTree)) { + echo ","; + } + } + + echo ')'; + } + } +} + +// --- main --- + +error_reporting(E_ERROR); + +$tldTree = array(); +$list = file_get_contents(URL); +// $list = "bg\na.bg\n0.bg\n!c.bg\n"; +$lines = split("\n", $list); +$licence = TRUE; + +if ($format == "php") echo "<?php\n"; + +foreach ($lines as $line) { + $line = trim($line); + if ($line == "") { + if ($licence) { + $licence = FALSE; + echo "\n"; + } + continue; + } + if (startsWith($line, "//")) { + if ($licence) { + if ($format == "perl") { + echo "# ".substr($line, 2)."\n"; + } else { + echo $line."\n"; + } + } + continue; + } + + // this must be a TLD + $tldParts = split('\.', $line); + buildSubdomain($tldTree, $tldParts); +} + +// print_r($tldTree); + +/* +$tldTree = array( + 'de' => array(), // test.agitos.de --> agitos.de + 'uk' => array( + 'co' => array(), // test.agitos.co.uk --> agitos.co.uk + 'xy' => array('!'), // test.agitos.xy.uk --> xy.uk + '*' => array() // test.agitos.ab.uk --> agitos.ab.uk + ) +); +*/ + +if ($format == "c") { + + echo "static const char tldString[] = \""; + printNode_C("root", $tldTree); + echo "\";\n\n"; + +} else { + + if ($format == "perl") { + print "package effectiveTLDs;\n\n"; + } + printNode("\$tldTree", $tldTree, TRUE); + echo ";\n"; + if ($format == "php") echo '?>' . "\n"; + +} + +?> |