source: josm/trunk/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java

Last change on this file was 19529, checked in by stoecker, 2 months ago

Iana TLD update - and another one gone

  • Property svn:eol-style set to native
File size: 94.0 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17package org.openstreetmap.josm.data.validation.routines;
18
19import java.net.IDN;
20import java.util.Arrays;
21import java.util.Locale;
22import java.util.stream.IntStream;
23
24import org.openstreetmap.josm.tools.Logging;
25
26/**
27 * <p><b>Domain name</b> validation routines.</p>
28 *
29 * <p>
30 * This validator provides methods for validating Internet domain names
31 * and top-level domains.
32 * </p>
33 *
34 * <p>Domain names are evaluated according
35 * to the standards <a href="http://www.ietf.org/rfc/rfc1034.txt">RFC1034</a>,
36 * section 3, and <a href="http://www.ietf.org/rfc/rfc1123.txt">RFC1123</a>,
37 * section 2.1. No accommodation is provided for the specialized needs of
38 * other applications; if the domain name has been URL-encoded, for example,
39 * validation will fail even though the equivalent plaintext version of the
40 * same name would have passed.
41 * </p>
42 *
43 * <p>
44 * Validation is also provided for top-level domains (TLDs) as defined and
45 * maintained by the Internet Assigned Numbers Authority (IANA):
46 * </p>
47 *
48 * <ul>
49 * <li>{@link #isValidInfrastructureTld} - validates infrastructure TLDs
50 * (<code>.arpa</code>, etc.)</li>
51 * <li>{@link #isValidGenericTld} - validates generic TLDs
52 * (<code>.com, .org</code>, etc.)</li>
53 * <li>{@link #isValidCountryCodeTld} - validates country code TLDs
54 * (<code>.us, .uk, .cn</code>, etc.)</li>
55 * </ul>
56 *
57 * <p>
58 * (<b>NOTE</b>: This class does not provide IP address lookup for domain names or
59 * methods to ensure that a given domain name matches a specific IP; see
60 * {@link java.net.InetAddress} for that functionality.)
61 * </p>
62 *
63 * @version $Revision: 1740822 $
64 * @since Validator 1.4
65 */
66public final class DomainValidator extends AbstractValidator {
67
68 private static final int MAX_DOMAIN_LENGTH = 253;
69
70 private static final String[] EMPTY_STRING_ARRAY = new String[0];
71
72 // Regular expression strings for hostnames (derived from RFC2396 and RFC 1123)
73
74 // RFC2396: domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
75 // Max 63 characters
76 private static final String DOMAIN_LABEL_REGEX = "\\p{Alnum}(?>[\\p{Alnum}-]{0,61}\\p{Alnum})?";
77
78 // RFC2396 toplabel = alpha | alpha *( alphanum | "-" ) alphanum
79 // Max 63 characters
80 private static final String TOP_LABEL_REGEX = "\\p{Alpha}(?>[\\p{Alnum}-]{0,61}\\p{Alnum})?";
81
82 // RFC2396 hostname = *( domainlabel "." ) toplabel [ "." ]
83 // Note that the regex currently requires both a domain label and a top level label, whereas
84 // the RFC does not. This is because the regex is used to detect if a TLD is present.
85 // If the match fails, input is checked against DOMAIN_LABEL_REGEX (hostnameRegex)
86 // RFC1123 sec 2.1 allows hostnames to start with a digit
87 private static final String DOMAIN_NAME_REGEX =
88 "^(?:" + DOMAIN_LABEL_REGEX + "\\.)+" + "(" + TOP_LABEL_REGEX + ")\\.?$";
89
90 private final boolean allowLocal;
91
92 /**
93 * Singleton instance of this validator, which
94 * doesn't consider local addresses as valid.
95 */
96 private static final DomainValidator DOMAIN_VALIDATOR = new DomainValidator(false);
97
98 /**
99 * Singleton instance of this validator, which does
100 * consider local addresses valid.
101 */
102 private static final DomainValidator DOMAIN_VALIDATOR_WITH_LOCAL = new DomainValidator(true);
103
104 /**
105 * RegexValidator for matching domains.
106 */
107 private final RegexValidator domainRegex =
108 new RegexValidator(DOMAIN_NAME_REGEX);
109 /**
110 * RegexValidator for matching a local hostname
111 */
112 // RFC1123 sec 2.1 allows hostnames to start with a digit
113 private final RegexValidator hostnameRegex =
114 new RegexValidator(DOMAIN_LABEL_REGEX);
115
116 /**
117 * Returns the singleton instance of this validator. It
118 * will not consider local addresses as valid.
119 * @return the singleton instance of this validator
120 */
121 public static synchronized DomainValidator getInstance() {
122 inUse = true;
123 return DOMAIN_VALIDATOR;
124 }
125
126 /**
127 * Returns the singleton instance of this validator,
128 * with local validation as required.
129 * @param allowLocal Should local addresses be considered valid?
130 * @return the singleton instance of this validator
131 */
132 public static synchronized DomainValidator getInstance(boolean allowLocal) {
133 inUse = true;
134 if (allowLocal) {
135 return DOMAIN_VALIDATOR_WITH_LOCAL;
136 }
137 return DOMAIN_VALIDATOR;
138 }
139
140 /**
141 * Private constructor.
142 * @param allowLocal whether to allow local domains
143 */
144 private DomainValidator(boolean allowLocal) {
145 this.allowLocal = allowLocal;
146 }
147
148 /**
149 * Returns true if the specified <code>String</code> parses
150 * as a valid domain name with a recognized top-level domain.
151 * The parsing is case-insensitive.
152 * @param domain the parameter to check for domain name syntax
153 * @return true if the parameter is a valid domain name
154 */
155 @Override
156 public boolean isValid(String domain) {
157 if (domain == null) {
158 return false;
159 }
160 String asciiDomain = unicodeToASCII(domain);
161 // hosts must be equally reachable via punycode and Unicode
162 // Unicode is never shorter than punycode, so check punycode
163 // if domain did not convert, then it will be caught by ASCII
164 // checks in the regexes below
165 if (asciiDomain.length() > MAX_DOMAIN_LENGTH) {
166 return false;
167 }
168 String[] groups = domainRegex.match(asciiDomain);
169 if (groups != null && groups.length > 0) {
170 return isValidTld(groups[0]);
171 }
172 return allowLocal && hostnameRegex.isValid(asciiDomain);
173 }
174
175 @Override
176 public String getValidatorName() {
177 return null;
178 }
179
180 // package protected for unit test access
181 // must agree with isValid() above
182 boolean isValidDomainSyntax(String domain) {
183 if (domain == null) {
184 return false;
185 }
186 String asciiDomain = unicodeToASCII(domain);
187 // hosts must be equally reachable via punycode and Unicode
188 // Unicode is never shorter than punycode, so check punycode
189 // if domain did not convert, then it will be caught by ASCII
190 // checks in the regexes below
191 if (asciiDomain.length() > MAX_DOMAIN_LENGTH) {
192 return false;
193 }
194 String[] groups = domainRegex.match(asciiDomain);
195 return (groups != null && groups.length > 0)
196 || hostnameRegex.isValid(asciiDomain);
197 }
198
199 /**
200 * Returns true if the specified <code>String</code> matches any
201 * IANA-defined top-level domain. Leading dots are ignored if present.
202 * The search is case-insensitive.
203 * @param tld the parameter to check for TLD status, not null
204 * @return true if the parameter is a TLD
205 */
206 public boolean isValidTld(String tld) {
207 String asciiTld = unicodeToASCII(tld);
208 if (allowLocal && isValidLocalTld(asciiTld)) {
209 return true;
210 }
211 return isValidInfrastructureTld(asciiTld)
212 || isValidGenericTld(asciiTld)
213 || isValidCountryCodeTld(asciiTld);
214 }
215
216 /**
217 * Returns true if the specified <code>String</code> matches any
218 * IANA-defined infrastructure top-level domain. Leading dots are
219 * ignored if present. The search is case-insensitive.
220 * @param iTld the parameter to check for infrastructure TLD status, not null
221 * @return true if the parameter is an infrastructure TLD
222 */
223 public boolean isValidInfrastructureTld(String iTld) {
224 if (iTld == null) return false;
225 final String key = chompLeadingDot(unicodeToASCII(iTld).toLowerCase(Locale.ENGLISH));
226 return arrayContains(INFRASTRUCTURE_TLDS, key);
227 }
228
229 /**
230 * Returns true if the specified <code>String</code> matches any
231 * IANA-defined generic top-level domain. Leading dots are ignored
232 * if present. The search is case-insensitive.
233 * @param gTld the parameter to check for generic TLD status, not null
234 * @return true if the parameter is a generic TLD
235 */
236 public boolean isValidGenericTld(String gTld) {
237 if (gTld == null) return false;
238 final String key = chompLeadingDot(unicodeToASCII(gTld).toLowerCase(Locale.ENGLISH));
239 return (arrayContains(GENERIC_TLDS, key) || arrayContains(genericTLDsPlus, key))
240 && !arrayContains(genericTLDsMinus, key);
241 }
242
243 /**
244 * Returns true if the specified <code>String</code> matches any
245 * IANA-defined country code top-level domain. Leading dots are
246 * ignored if present. The search is case-insensitive.
247 * @param ccTld the parameter to check for country code TLD status, not null
248 * @return true if the parameter is a country code TLD
249 */
250 public boolean isValidCountryCodeTld(String ccTld) {
251 if (ccTld == null) return false;
252 final String key = chompLeadingDot(unicodeToASCII(ccTld).toLowerCase(Locale.ENGLISH));
253 return (arrayContains(COUNTRY_CODE_TLDS, key) || arrayContains(countryCodeTLDsPlus, key))
254 && !arrayContains(countryCodeTLDsMinus, key);
255 }
256
257 /**
258 * Returns true if the specified <code>String</code> matches any
259 * widely used "local" domains (localhost or localdomain). Leading dots are
260 * ignored if present. The search is case-insensitive.
261 * @param lTld the parameter to check for local TLD status, not null
262 * @return true if the parameter is an local TLD
263 */
264 public boolean isValidLocalTld(String lTld) {
265 if (lTld == null) return false;
266 final String key = chompLeadingDot(unicodeToASCII(lTld).toLowerCase(Locale.ENGLISH));
267 return arrayContains(LOCAL_TLDS, key);
268 }
269
270 private static String chompLeadingDot(String str) {
271 if (str.startsWith(".")) {
272 return str.substring(1);
273 }
274 return str;
275 }
276
277 // ---------------------------------------------
278 // ----- TLDs defined by IANA
279 // ----- Authoritative and comprehensive list at:
280 // ----- http://data.iana.org/TLD/tlds-alpha-by-domain.txt
281
282 // Note that the above list is in UPPER case.
283 // The code currently converts strings to lower case (as per the tables below)
284
285 // IANA also provide an HTML list at http://www.iana.org/domains/root/db
286 // Note that this contains several country code entries which are NOT in
287 // the text file. These all have the "Not assigned" in the "Sponsoring Organisation" column
288 // For example (as of 2015-01-02):
289 // .bl country-code Not assigned
290 // .um country-code Not assigned
291
292 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
293 private static final String[] INFRASTRUCTURE_TLDS = {
294 "arpa", // internet infrastructure
295 };
296
297 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
298 private static final String[] GENERIC_TLDS = {
299 // Taken from Version 2026021400, Last Updated Sat Feb 14 07:07:01 2026 UTC
300 "aaa", // aaa American Automobile Association, Inc.
301 "aarp", // aarp AARP
302 "abb", // abb ABB Ltd
303 "abbott", // abbott Abbott Laboratories, Inc.
304 "abbvie", // abbvie AbbVie Inc.
305 "abc", // abc Disney Enterprises, Inc.
306 "able", // able Able Inc.
307 "abogado", // abogado Registry Services, LLC
308 "abudhabi", // abudhabi Abu Dhabi Systems and Information Centre
309 "academy", // academy Binky Moon, LLC
310 "accenture", // accenture Accenture plc
311 "accountant", // accountant dot Accountant Limited
312 "accountants", // accountants Binky Moon, LLC
313 "aco", // aco ACO Severin Ahlmann GmbH & Co. KG
314 "actor", // actor Dog Beach, LLC
315 "ads", // ads Charleston Road Registry Inc.
316 "adult", // adult ICM Registry AD LLC
317 "aeg", // aeg Aktiebolaget Electrolux
318 "aero", // aero Societe Internationale de Telecommunications Aeronautique (SITA INC USA)
319 "aetna", // aetna Aetna Life Insurance Company
320 "afl", // afl Australian Football League
321 "africa", // africa ZA Central Registry NPC trading as Registry.Africa
322 "agakhan", // agakhan Fondation Aga Khan (Aga Khan Foundation)
323 "agency", // agency Binky Moon, LLC
324 "aig", // aig American International Group, Inc.
325 "airbus", // airbus Airbus S.A.S.
326 "airforce", // airforce Dog Beach, LLC
327 "airtel", // airtel Bharti Airtel Limited
328 "akdn", // akdn Fondation Aga Khan (Aga Khan Foundation)
329 "alibaba", // alibaba Alibaba Group Holding Limited
330 "alipay", // alipay Alibaba Group Holding Limited
331 "allfinanz", // allfinanz Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
332 "allstate", // allstate Allstate Fire and Casualty Insurance Company
333 "ally", // ally Ally Financial Inc.
334 "alsace", // alsace REGION GRAND EST
335 "alstom", // alstom ALSTOM
336 "amazon", // amazon Amazon Registry Services, Inc.
337 "americanexpress", // americanexpress American Express Travel Related Services Company, Inc.
338 "americanfamily", // americanfamily AmFam, Inc.
339 "amex", // amex American Express Travel Related Services Company, Inc.
340 "amfam", // amfam AmFam, Inc.
341 "amica", // amica Amica Mutual Insurance Company
342 "amsterdam", // amsterdam Gemeente Amsterdam
343 "analytics", // analytics Campus IP LLC
344 "android", // android Charleston Road Registry Inc.
345 "anquan", // anquan Beijing Qihu Keji Co., Ltd.
346 "anz", // anz Australia and New Zealand Banking Group Limited
347 "aol", // aol Yahoo Inc.
348 "apartments", // apartments Binky Moon, LLC
349 "app", // app Charleston Road Registry Inc.
350 "apple", // apple Apple Inc.
351 "aquarelle", // aquarelle Aquarelle.com
352 "arab", // arab League of Arab States
353 "aramco", // aramco Aramco Services Company
354 "archi", // archi Identity Digital Limited
355 "army", // army Dog Beach, LLC
356 "art", // art UK Creative Ideas Limited
357 "arte", // arte Association Relative à la Télévision Européenne G.E.I.E.
358 "asda", // asda Asda Stores Limited
359 "asia", // asia DotAsia Organisation Ltd.
360 "associates", // associates Binky Moon, LLC
361 "athleta", // athleta The Gap, Inc.
362 "attorney", // attorney Dog Beach, LLC
363 "auction", // auction Dog Beach, LLC
364 "audi", // audi AUDI Aktiengesellschaft
365 "audible", // audible Amazon Registry Services, Inc.
366 "audio", // audio XYZ.COM LLC
367 "auspost", // auspost Australian Postal Corporation
368 "author", // author Amazon Registry Services, Inc.
369 "auto", // auto XYZ.COM LLC
370 "autos", // autos XYZ.COM LLC
371 "aws", // aws AWS Registry LLC
372 "axa", // axa AXA Group Operations SAS
373 "azure", // azure Microsoft Corporation
374 "baby", // baby XYZ.COM LLC
375 "baidu", // baidu Baidu, Inc.
376 "banamex", // banamex Citigroup Inc.
377 "band", // band Dog Beach, LLC
378 "bank", // bank fTLD Registry Services, LLC
379 "bar", // bar Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
380 "barcelona", // barcelona Municipi de Barcelona
381 "barclaycard", // barclaycard Barclays Bank PLC
382 "barclays", // barclays Barclays Bank PLC
383 "barefoot", // barefoot Gallo Vineyards, Inc.
384 "bargains", // bargains Binky Moon, LLC
385 "baseball", // baseball MLB Advanced Media DH, LLC
386 "basketball", // basketball Fédération Internationale de Basketball (FIBA)
387 "bauhaus", // bauhaus Werkhaus GmbH
388 "bayern", // bayern Bayern Connect GmbH
389 "bbc", // bbc British Broadcasting Corporation
390 "bbt", // bbt BB&T Corporation
391 "bbva", // bbva BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
392 "bcg", // bcg The Boston Consulting Group, Inc.
393 "bcn", // bcn Municipi de Barcelona
394 "beats", // beats Beats Electronics, LLC
395 "beauty", // beauty XYZ.COM LLC
396 "beer", // beer Registry Services, LLC
397 "berlin", // berlin dotBERLIN GmbH & Co. KG
398 "best", // best BestTLD Pty Ltd
399 "bestbuy", // bestbuy BBY Solutions, Inc.
400 "bet", // bet Identity Digital Limited
401 "bharti", // bharti Bharti Enterprises (Holding) Private Limited
402 "bible", // bible American Bible Society
403 "bid", // bid dot Bid Limited
404 "bike", // bike Binky Moon, LLC
405 "bing", // bing Microsoft Corporation
406 "bingo", // bingo Binky Moon, LLC
407 "bio", // bio Identity Digital Limited
408 "biz", // biz Registry Services, LLC
409 "black", // black Identity Digital Limited
410 "blackfriday", // blackfriday Registry Services, LLC
411 "blockbuster", // blockbuster Dish DBS Corporation
412 "blog", // blog Knock Knock WHOIS There, LLC
413 "bloomberg", // bloomberg Bloomberg IP Holdings LLC
414 "blue", // blue Identity Digital Limited
415 "bms", // bms Bristol-Myers Squibb Company
416 "bmw", // bmw Bayerische Motoren Werke Aktiengesellschaft
417 "bnpparibas", // bnpparibas BNP Paribas
418 "boats", // boats XYZ.COM LLC
419 "boehringer", // boehringer Boehringer Ingelheim International GmbH
420 "bofa", // bofa Bank of America Corporation
421 "bom", // bom Núcleo de Informação e Coordenação do Ponto BR - NIC.br
422 "bond", // bond Shortdot SA
423 "boo", // boo Charleston Road Registry Inc.
424 "book", // book Amazon Registry Services, Inc.
425 "booking", // booking Booking.com B.V.
426 "bosch", // bosch Robert Bosch GMBH
427 "bostik", // bostik Bostik SA
428 "boston", // boston Registry Services, LLC
429 "bot", // bot Amazon Registry Services, Inc.
430 "boutique", // boutique Binky Moon, LLC
431 "box", // box Intercap Registry Inc.
432 "bradesco", // bradesco Banco Bradesco S.A.
433 "bridgestone", // bridgestone Bridgestone Corporation
434 "broadway", // broadway Celebrate Broadway, Inc.
435 "broker", // broker Dog Beach, LLC
436 "brother", // brother Brother Industries, Ltd.
437 "brussels", // brussels DNS.be vzw
438 "build", // build Plan Bee LLC
439 "builders", // builders Binky Moon, LLC
440 "business", // business Binky Moon, LLC
441 "buy", // buy Amazon Registry Services, INC
442 "buzz", // buzz DOTSTRATEGY CO.
443 "bzh", // bzh Association www.bzh
444 "cab", // cab Binky Moon, LLC
445 "cafe", // cafe Binky Moon, LLC
446 "cal", // cal Charleston Road Registry Inc.
447 "call", // call Amazon Registry Services, Inc.
448 "calvinklein", // calvinklein PVH gTLD Holdings LLC
449 "cam", // cam CAM Connecting SarL
450 "camera", // camera Binky Moon, LLC
451 "camp", // camp Binky Moon, LLC
452 "canon", // canon Canon Inc.
453 "capetown", // capetown ZA Central Registry NPC trading as ZA Central Registry
454 "capital", // capital Binky Moon, LLC
455 "capitalone", // capitalone Capital One Financial Corporation
456 "car", // car XYZ.COM LLC
457 "caravan", // caravan Caravan International, Inc.
458 "cards", // cards Binky Moon, LLC
459 "care", // care Binky Moon, LLC
460 "career", // career dotCareer LLC
461 "careers", // careers Binky Moon, LLC
462 "cars", // cars XYZ.COM LLC
463 "casa", // casa Registry Services, LLC
464 "case", // case Digity, LLC
465 "cash", // cash Binky Moon, LLC
466 "casino", // casino Binky Moon, LLC
467 "cat", // cat Fundacio puntCAT
468 "catering", // catering Binky Moon, LLC
469 "catholic", // catholic Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
470 "cba", // cba COMMONWEALTH BANK OF AUSTRALIA
471 "cbn", // cbn The Christian Broadcasting Network, Inc.
472 "cbre", // cbre CBRE, Inc.
473 "center", // center Binky Moon, LLC
474 "ceo", // ceo XYZ.COM LLC
475 "cern", // cern European Organization for Nuclear Research ("CERN")
476 "cfa", // cfa CFA Institute
477 "cfd", // cfd Shortdot SA
478 "chanel", // chanel Chanel International B.V.
479 "channel", // channel Charleston Road Registry Inc.
480 "charity", // charity Public Interest Registry (PIR)
481 "chase", // chase JPMorgan Chase Bank, National Association
482 "chat", // chat Binky Moon, LLC
483 "cheap", // cheap Binky Moon, LLC
484 "chintai", // chintai CHINTAI Corporation
485 "christmas", // christmas XYZ.COM LLC
486 "chrome", // chrome Charleston Road Registry Inc.
487 "church", // church Binky Moon, LLC
488 "cipriani", // cipriani Hotel Cipriani Srl
489 "circle", // circle Amazon Registry Services, Inc.
490 "cisco", // cisco Cisco Technology, Inc.
491 "citadel", // citadel Citadel Domain LLC
492 "citi", // citi Citigroup Inc.
493 "citic", // citic CITIC Group Corporation
494 "city", // city Binky Moon, LLC
495 "claims", // claims Binky Moon, LLC
496 "cleaning", // cleaning Binky Moon, LLC
497 "click", // click Internet Naming Co.
498 "clinic", // clinic Binky Moon, LLC
499 "clinique", // clinique The Estée Lauder Companies Inc.
500 "clothing", // clothing Binky Moon, LLC
501 "cloud", // cloud ARUBA PEC S.p.A.
502 "club", // club Registry Services, LLC
503 "clubmed", // clubmed Club Méditerranée S.A.
504 "coach", // coach Binky Moon, LLC
505 "codes", // codes Binky Moon, LLC
506 "coffee", // coffee Binky Moon, LLC
507 "college", // college XYZ.COM LLC
508 "cologne", // cologne dotKoeln GmbH
509 "com", // com VeriSign Global Registry Services
510 "commbank", // commbank COMMONWEALTH BANK OF AUSTRALIA
511 "community", // community Binky Moon, LLC
512 "company", // company Binky Moon, LLC
513 "compare", // compare Registry Services, LLC
514 "computer", // computer Binky Moon, LLC
515 "comsec", // comsec VeriSign, Inc.
516 "condos", // condos Binky Moon, LLC
517 "construction", // construction Binky Moon, LLC
518 "consulting", // consulting Dog Beach, LLC
519 "contact", // contact Dog Beach, LLC
520 "contractors", // contractors Binky Moon, LLC
521 "cooking", // cooking Registry Services, LLC
522 "cool", // cool Binky Moon, LLC
523 "coop", // coop DotCooperation LLC
524 "corsica", // corsica Collectivité de Corse
525 "country", // country Internet Naming Co.
526 "coupon", // coupon Amazon Registry Services, Inc.
527 "coupons", // coupons Binky Moon, LLC
528 "courses", // courses Registry Services, LLC
529 "cpa", // cpa American Institute of Certified Public Accountants
530 "credit", // credit Binky Moon, LLC
531 "creditcard", // creditcard Binky Moon, LLC
532 "creditunion", // creditunion DotCooperation, LLC
533 "cricket", // cricket dot Cricket Limited
534 "crown", // crown Crown Equipment Corporation
535 "crs", // crs Federated Co-operatives Limited
536 "cruise", // cruise Viking River Cruises (Bermuda) Ltd.
537 "cruises", // cruises Binky Moon, LLC
538 "cuisinella", // cuisinella SCHMIDT GROUPE S.A.S.
539 "cymru", // cymru Nominet UK
540 "cyou", // cyou Shortdot SA
541 "dad", // dad Charleston Road Registry Inc.
542 "dance", // dance Dog Beach, LLC
543 "data", // data Dish DBS Corporation
544 "date", // date dot Date Limited
545 "dating", // dating Binky Moon, LLC
546 "datsun", // datsun NISSAN MOTOR CO., LTD.
547 "day", // day Charleston Road Registry Inc.
548 "dclk", // dclk Charleston Road Registry Inc.
549 "dds", // dds Registry Services, LLC
550 "deal", // deal Amazon Registry Services, Inc.
551 "dealer", // dealer Intercap Registry Inc.
552 "deals", // deals Binky Moon, LLC
553 "degree", // degree Dog Beach, LLC
554 "delivery", // delivery Binky Moon, LLC
555 "dell", // dell Dell Inc.
556 "deloitte", // deloitte Deloitte Touche Tohmatsu
557 "delta", // delta Delta Air Lines, Inc.
558 "democrat", // democrat Dog Beach, LLC
559 "dental", // dental Binky Moon, LLC
560 "dentist", // dentist Dog Beach, LLC
561 "desi", // desi Emergency Back-End Registry Operator Program - ICANN
562 "design", // design Registry Services, LLC
563 "dev", // dev Charleston Road Registry Inc.
564 "dhl", // dhl Deutsche Post AG
565 "diamonds", // diamonds Binky Moon, LLC
566 "diet", // diet XYZ.COM LLC
567 "digital", // digital Binky Moon, LLC
568 "direct", // direct Binky Moon, LLC
569 "directory", // directory Binky Moon, LLC
570 "discount", // discount Binky Moon, LLC
571 "discover", // discover Discover Financial Services
572 "dish", // dish Dish DBS Corporation
573 "diy", // diy Internet Naming Co.
574 "dnp", // dnp Dai Nippon Printing Co., Ltd.
575 "docs", // docs Charleston Road Registry Inc.
576 "doctor", // doctor Binky Moon, LLC
577 "dog", // dog Binky Moon, LLC
578 "domains", // domains Binky Moon, LLC
579 "dot", // dot Dish DBS Corporation
580 "download", // download dot Support Limited
581 "drive", // drive Charleston Road Registry Inc.
582 "dtv", // dtv Dish DBS Corporation
583 "dubai", // dubai Dubai Smart Government Department
584 "dupont", // dupont DuPont Specialty Products USA, LLC
585 "durban", // durban ZA Central Registry NPC trading as ZA Central Registry
586 "dvag", // dvag Deutsche Vermögensberatung Aktiengesellschaft DVAG
587 "dvr", // dvr DISH Technologies L.L.C.
588 "earth", // earth Interlink Systems Innovation Institute K.K.
589 "eat", // eat Charleston Road Registry Inc.
590 "eco", // eco Big Room Inc.
591 "edeka", // edeka EDEKA Verband kaufmännischer Genossenschaften e.V.
592 "edu", // edu EDUCAUSE
593 "education", // education Binky Moon, LLC
594 "email", // email Binky Moon, LLC
595 "emerck", // emerck Merck KGaA
596 "energy", // energy Binky Moon, LLC
597 "engineer", // engineer Dog Beach, LLC
598 "engineering", // engineering Binky Moon, LLC
599 "enterprises", // enterprises Binky Moon, LLC
600 "epson", // epson Seiko Epson Corporation
601 "equipment", // equipment Binky Moon, LLC
602 "ericsson", // ericsson Telefonaktiebolaget L M Ericsson
603 "erni", // erni ERNI Group Holding AG
604 "esq", // esq Charleston Road Registry Inc.
605 "estate", // estate Binky Moon, LLC
606 "eurovision", // eurovision European Broadcasting Union (EBU)
607 "eus", // eus Puntueus Fundazioa
608 "events", // events Binky Moon, LLC
609 "exchange", // exchange Binky Moon, LLC
610 "expert", // expert Binky Moon, LLC
611 "exposed", // exposed Binky Moon, LLC
612 "express", // express Binky Moon, LLC
613 "extraspace", // extraspace Extra Space Storage LLC
614 "fage", // fage Fage International S.A.
615 "fail", // fail Binky Moon, LLC
616 "fairwinds", // fairwinds FairWinds Partners, LLC
617 "faith", // faith dot Faith Limited
618 "family", // family Dog Beach, LLC
619 "fan", // fan Dog Beach, LLC
620 "fans", // fans ZDNS International Limited
621 "farm", // farm Binky Moon, LLC
622 "farmers", // farmers Farmers Insurance Exchange
623 "fashion", // fashion Registry Services, LLC
624 "fast", // fast Amazon Registry Services, Inc.
625 "fedex", // fedex Federal Express Corporation
626 "feedback", // feedback Top Level Spectrum, Inc.
627 "ferrari", // ferrari Fiat Chrysler Automobiles N.V.
628 "ferrero", // ferrero Ferrero Trading Lux S.A.
629 "fidelity", // fidelity Fidelity Brokerage Services LLC
630 "fido", // fido Rogers Communications Canada Inc.
631 "film", // film Motion Picture Domain Registry Pty Ltd
632 "final", // final Núcleo de Informação e Coordenação do Ponto BR - NIC.br
633 "finance", // finance Binky Moon, LLC
634 "financial", // financial Binky Moon, LLC
635 "fire", // fire Amazon Registry Services, Inc.
636 "firestone", // firestone Bridgestone Licensing Services, Inc.
637 "firmdale", // firmdale Firmdale Holdings Limited
638 "fish", // fish Binky Moon, LLC
639 "fishing", // fishing Registry Services, LLC
640 "fit", // fit Registry Services, LLC
641 "fitness", // fitness Binky Moon, LLC
642 "flickr", // flickr Flickr, Inc.
643 "flights", // flights Binky Moon, LLC
644 "flir", // flir FLIR Systems, Inc.
645 "florist", // florist Binky Moon, LLC
646 "flowers", // flowers XYZ.COM LLC
647 "fly", // fly Charleston Road Registry Inc.
648 "foo", // foo Charleston Road Registry Inc.
649 "food", // food Internet Naming Co.
650 "football", // football Binky Moon, LLC
651 "ford", // ford Ford Motor Company
652 "forex", // forex Dog Beach, LLC
653 "forsale", // forsale Dog Beach, LLC
654 "forum", // forum Fegistry, LLC
655 "foundation", // foundation Public Interest Registry (PIR)
656 "fox", // fox FOX Registry, LLC
657 "free", // free Amazon Registry Services, Inc.
658 "fresenius", // fresenius Fresenius Immobilien-Verwaltungs-GmbH
659 "frl", // frl FRLregistry B.V.
660 "frogans", // frogans OP3FT
661 "frontier", // frontier Frontier Communications Corporation
662 "ftr", // ftr Frontier Communications Corporation
663 "fujitsu", // fujitsu Fujitsu Limited
664 "fun", // fun Radix Technologies Inc.
665 "fund", // fund Binky Moon, LLC
666 "furniture", // furniture Binky Moon, LLC
667 "futbol", // futbol Dog Beach, LLC
668 "fyi", // fyi Binky Moon, LLC
669 "gal", // gal Asociación puntoGAL
670 "gallery", // gallery Binky Moon, LLC
671 "gallo", // gallo Gallo Vineyards, Inc.
672 "gallup", // gallup Gallup, Inc.
673 "game", // game XYZ.COM LLC
674 "games", // games Dog Beach, LLC
675 "gap", // gap The Gap, Inc.
676 "garden", // garden Registry Services, LLC
677 "gay", // gay Registry Services, LLC
678 "gbiz", // gbiz Charleston Road Registry Inc.
679 "gdn", // gdn Joint Stock Company "Navigation-information systems"
680 "gea", // gea GEA Group Aktiengesellschaft
681 "gent", // gent Combell nv
682 "genting", // genting Resorts World Inc. Pte. Ltd.
683 "george", // george Wal-Mart Stores, Inc.
684 "ggee", // ggee GMO Internet, Inc.
685 "gift", // gift Uniregistry, Corp.
686 "gifts", // gifts Binky Moon, LLC
687 "gives", // gives Public Interest Registry (PIR)
688 "giving", // giving Public Interest Registry (PIR)
689 "glass", // glass Binky Moon, LLC
690 "gle", // gle Charleston Road Registry Inc.
691 "global", // global Identity Digital Limited
692 "globo", // globo Globo Comunicação e Participações S.A
693 "gmail", // gmail Charleston Road Registry Inc.
694 "gmbh", // gmbh Binky Moon, LLC
695 "gmo", // gmo GMO Internet, Inc.
696 "gmx", // gmx 1&1 Mail & Media GmbH
697 "godaddy", // godaddy Go Daddy East, LLC
698 "gold", // gold Binky Moon, LLC
699 "goldpoint", // goldpoint YODOBASHI CAMERA CO.,LTD.
700 "golf", // golf Binky Moon, LLC
701 "goodyear", // goodyear The Goodyear Tire & Rubber Company
702 "goog", // goog Charleston Road Registry Inc.
703 "google", // google Charleston Road Registry Inc.
704 "gop", // gop Republican State Leadership Committee, Inc.
705 "got", // got Amazon Registry Services, Inc.
706 "gov", // gov Cybersecurity and Infrastructure Security Agency
707 "grainger", // grainger Grainger Registry Services, LLC
708 "graphics", // graphics Binky Moon, LLC
709 "gratis", // gratis Binky Moon, LLC
710 "green", // green Identity Digital Limited
711 "gripe", // gripe Binky Moon, LLC
712 "grocery", // grocery Wal-Mart Stores, Inc.
713 "group", // group Binky Moon, LLC
714 "gucci", // gucci Guccio Gucci S.p.a.
715 "guge", // guge Charleston Road Registry Inc.
716 "guide", // guide Binky Moon, LLC
717 "guitars", // guitars XYZ.COM LLC
718 "guru", // guru Binky Moon, LLC
719 "hair", // hair XYZ.COM LLC
720 "hamburg", // hamburg Hamburg Top-Level-Domain GmbH
721 "hangout", // hangout Charleston Road Registry Inc.
722 "haus", // haus Dog Beach, LLC
723 "hbo", // hbo HBO Registry Services, Inc.
724 "hdfc", // hdfc HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED
725 "hdfcbank", // hdfcbank HDFC Bank Limited
726 "health", // health Registry Services, LLC
727 "healthcare", // healthcare Binky Moon, LLC
728 "help", // help Innovation Service Ltd
729 "helsinki", // helsinki City of Helsinki
730 "here", // here Charleston Road Registry Inc.
731 "hermes", // hermes Hermes International
732 "hiphop", // hiphop Dot Hip Hop, LLC
733 "hisamitsu", // hisamitsu Hisamitsu Pharmaceutical Co.,Inc.
734 "hitachi", // hitachi Hitachi, Ltd.
735 "hiv", // hiv Internet Naming Co.
736 "hkt", // hkt PCCW-HKT DataCom Services Limited
737 "hockey", // hockey Binky Moon, LLC
738 "holdings", // holdings Binky Moon, LLC
739 "holiday", // holiday Binky Moon, LLC
740 "homedepot", // homedepot Home Depot Product Authority, LLC
741 "homegoods", // homegoods The TJX Companies, Inc.
742 "homes", // homes XYZ.COM LLC
743 "homesense", // homesense The TJX Companies, Inc.
744 "honda", // honda Honda Motor Co., Ltd.
745 "horse", // horse Registry Services, LLC
746 "hospital", // hospital Binky Moon, LLC
747 "host", // host Radix Technologies Inc.
748 "hosting", // hosting XYZ.COM LLC
749 "hot", // hot Amazon Registry Services, Inc.
750 "hotels", // hotels Booking.com B.V.
751 "hotmail", // hotmail Microsoft Corporation
752 "house", // house Binky Moon, LLC
753 "how", // how Charleston Road Registry Inc.
754 "hsbc", // hsbc HSBC Global Services (UK) Limited
755 "hughes", // hughes Hughes Satellite Systems Corporation
756 "hyatt", // hyatt Hyatt GTLD, L.L.C.
757 "hyundai", // hyundai Hyundai Motor Company
758 "ibm", // ibm International Business Machines Corporation
759 "icbc", // icbc Industrial and Commercial Bank of China Limited
760 "ice", // ice IntercontinentalExchange, Inc.
761 "icu", // icu Shortdot SA
762 "ieee", // ieee IEEE Global LLC
763 "ifm", // ifm ifm electronic gmbh
764 "ikano", // ikano Ikano S.A.
765 "imamat", // imamat Fondation Aga Khan (Aga Khan Foundation)
766 "imdb", // imdb Amazon Registry Services, Inc.
767 "immo", // immo Binky Moon, LLC
768 "immobilien", // immobilien Dog Beach, LLC
769 "inc", // inc Intercap Registry Inc.
770 "industries", // industries Binky Moon, LLC
771 "infiniti", // infiniti NISSAN MOTOR CO., LTD.
772 "info", // info Identity Digital Limited
773 "ing", // ing Charleston Road Registry Inc.
774 "ink", // ink Registry Services, LLC
775 "institute", // institute Binky Moon, LLC
776 "insurance", // insurance fTLD Registry Services LLC
777 "insure", // insure Binky Moon, LLC
778 "int", // int Internet Assigned Numbers Authority
779 "international", // international Binky Moon, LLC
780 "intuit", // intuit Intuit Administrative Services, Inc.
781 "investments", // investments Binky Moon, LLC
782 "ipiranga", // ipiranga Ipiranga Produtos de Petroleo S.A.
783 "irish", // irish Binky Moon, LLC
784 "ismaili", // ismaili Fondation Aga Khan (Aga Khan Foundation)
785 "ist", // ist Istanbul Metropolitan Municipality
786 "istanbul", // istanbul Istanbul Metropolitan Municipality
787 "itau", // itau Itau Unibanco Holding S.A.
788 "itv", // itv ITV Services Limited
789 "jaguar", // jaguar Jaguar Land Rover Ltd
790 "java", // java Oracle Corporation
791 "jcb", // jcb JCB Co., Ltd.
792 "jeep", // jeep FCA US LLC.
793 "jetzt", // jetzt Binky Moon, LLC
794 "jewelry", // jewelry Binky Moon, LLC
795 "jio", // jio Reliance Industries Limited
796 "jll", // jll Jones Lang LaSalle Incorporated
797 "jmp", // jmp Matrix IP LLC
798 "jnj", // jnj Johnson & Johnson Services, Inc.
799 "jobs", // jobs Employ Media LLC
800 "joburg", // joburg ZA Central Registry NPC trading as ZA Central Registry
801 "jot", // jot Amazon Registry Services, Inc.
802 "joy", // joy Amazon Registry Services, Inc.
803 "jpmorgan", // jpmorgan JPMorgan Chase Bank, National Association
804 "jprs", // jprs Japan Registry Services Co., Ltd.
805 "juegos", // juegos Dog Beach, LLC
806 "juniper", // juniper JUNIPER NETWORKS, INC.
807 "kaufen", // kaufen Dog Beach, LLC
808 "kddi", // kddi KDDI CORPORATION
809 "kerryhotels", // kerryhotels Kerry Trading Co. Limited
810 "kerryproperties", // kerryproperties Kerry Trading Co. Limited
811 "kfh", // kfh Kuwait Finance House
812 "kia", // kia KIA MOTORS CORPORATION
813 "kids", // kids DotKids Foundation Limited
814 "kim", // kim Identity Digital Limited
815 "kindle", // kindle Amazon Registry Services, Inc.
816 "kitchen", // kitchen Binky Moon, LLC
817 "kiwi", // kiwi DOT KIWI LIMITED
818 "koeln", // koeln dotKoeln GmbH
819 "komatsu", // komatsu Komatsu Ltd.
820 "kosher", // kosher Kosher Marketing Assets LLC
821 "kpmg", // kpmg KPMG International Cooperative (KPMG International Genossenschaft)
822 "kpn", // kpn Koninklijke KPN N.V.
823 "krd", // krd KRG Department of Information Technology
824 "kred", // kred KredTLD Pty Ltd
825 "kuokgroup", // kuokgroup Kerry Trading Co. Limited
826 "kyoto", // kyoto Academic Institution: Kyoto Jyoho Gakuen
827 "lacaixa", // lacaixa Fundación Bancaria Caixa d'Estalvis i Pensions de Barcelona, "la Caixa"
828 "lamborghini", // lamborghini Automobili Lamborghini S.p.A.
829 "lamer", // lamer The Estée Lauder Companies Inc.
830 "land", // land Binky Moon, LLC
831 "landrover", // landrover Jaguar Land Rover Ltd
832 "lanxess", // lanxess LANXESS Corporation
833 "lasalle", // lasalle Jones Lang LaSalle Incorporated
834 "lat", // lat XYZ.COM LLC
835 "latino", // latino Dish DBS Corporation
836 "latrobe", // latrobe La Trobe University
837 "law", // law Registry Services, LLC
838 "lawyer", // lawyer Dog Beach, LLC
839 "lds", // lds IRI Domain Management, LLC
840 "lease", // lease Binky Moon, LLC
841 "leclerc", // leclerc A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
842 "lefrak", // lefrak LeFrak Organization, Inc.
843 "legal", // legal Binky Moon, LLC
844 "lego", // lego LEGO Juris A/S
845 "lexus", // lexus TOYOTA MOTOR CORPORATION
846 "lgbt", // lgbt Identity Digital Limited
847 "lidl", // lidl Schwarz Domains und Services GmbH & Co. KG
848 "life", // life Binky Moon, LLC
849 "lifeinsurance", // lifeinsurance American Council of Life Insurers
850 "lifestyle", // lifestyle Internet Naming Co.
851 "lighting", // lighting Binky Moon, LLC
852 "like", // like Amazon Registry Services, Inc.
853 "lilly", // lilly Eli Lilly and Company
854 "limited", // limited Binky Moon, LLC
855 "limo", // limo Binky Moon, LLC
856 "lincoln", // lincoln Ford Motor Company
857 "link", // link Nova Registry Ltd.
858 "live", // live Dog Beach, LLC
859 "living", // living Internet Naming Co.
860 "llc", // llc Identity Digital Limited
861 "llp", // llp Intercap Registry Inc.
862 "loan", // loan dot Loan Limited
863 "loans", // loans Binky Moon, LLC
864 "locker", // locker Orange Domains LLC
865 "locus", // locus Locus Analytics LLC
866 "lol", // lol XYZ.COM LLC
867 "london", // london Dot London Domains Limited
868 "lotte", // lotte Lotte Holdings Co., Ltd.
869 "lotto", // lotto Identity Digital Limited
870 "love", // love Waterford Limited
871 "lpl", // lpl LPL Holdings, Inc.
872 "lplfinancial", // lplfinancial LPL Holdings, Inc.
873 "ltd", // ltd Binky Moon, LLC
874 "ltda", // ltda InterNetX Corp.
875 "lundbeck", // lundbeck H. Lundbeck A/S
876 "luxe", // luxe Registry Services, LLC
877 "luxury", // luxury Luxury Partners LLC
878 "madrid", // madrid Comunidad de Madrid
879 "maif", // maif Mutuelle Assurance Instituteur France (MAIF)
880 "maison", // maison Binky Moon, LLC
881 "makeup", // makeup XYZ.COM LLC
882 "man", // man MAN Truck & Bus SE
883 "management", // management Binky Moon, LLC
884 "mango", // mango PUNTO FA S.L.
885 "map", // map Charleston Road Registry Inc.
886 "market", // market Dog Beach, LLC
887 "marketing", // marketing Binky Moon, LLC
888 "markets", // markets Dog Beach, LLC
889 "marriott", // marriott Marriott Worldwide Corporation
890 "marshalls", // marshalls The TJX Companies, Inc.
891 "mattel", // mattel Mattel IT Services, Inc.
892 "mba", // mba Binky Moon, LLC
893 "mckinsey", // mckinsey McKinsey Holdings, Inc.
894 "med", // med Medistry LLC
895 "media", // media Binky Moon, LLC
896 "meet", // meet Charleston Road Registry Inc.
897 "melbourne", // melbourne The Crown in right of the State of Victoria, Department of State Development, Business and Innovation
898 "meme", // meme Charleston Road Registry Inc.
899 "memorial", // memorial Dog Beach, LLC
900 "men", // men Exclusive Registry Limited
901 "menu", // menu Dot Menu Registry LLC
902 "merckmsd", // merckmsd MSD Registry Holdings, Inc.
903 "miami", // miami Registry Services, LLC
904 "microsoft", // microsoft Microsoft Corporation
905 "mil", // mil DoD Network Information Center
906 "mini", // mini Bayerische Motoren Werke Aktiengesellschaft
907 "mint", // mint Intuit Administrative Services, Inc.
908 "mit", // mit Massachusetts Institute of Technology
909 "mitsubishi", // mitsubishi Mitsubishi Corporation
910 "mlb", // mlb MLB Advanced Media DH, LLC
911 "mls", // mls The Canadian Real Estate Association
912 "mma", // mma MMA IARD
913 "mobi", // mobi Identity Digital Limited
914 "mobile", // mobile Dish DBS Corporation
915 "moda", // moda Dog Beach, LLC
916 "moe", // moe Interlink Systems Innovation Institute K.K.
917 "moi", // moi Amazon Registry Services, Inc.
918 "mom", // mom XYZ.COM LLC
919 "monash", // monash Monash University
920 "money", // money Binky Moon, LLC
921 "monster", // monster XYZ.COM LLC
922 "mormon", // mormon IRI Domain Management, LLC ("Applicant")
923 "mortgage", // mortgage Dog Beach, LLC
924 "moscow", // moscow Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
925 "moto", // moto Motorola Trademark Holdings, LLC
926 "motorcycles", // motorcycles XYZ.COM LLC
927 "mov", // mov Charleston Road Registry Inc.
928 "movie", // movie Binky Moon, LLC
929 "msd", // msd MSD Registry Holdings, Inc.
930 "mtn", // mtn MTN Dubai Limited
931 "mtr", // mtr MTR Corporation Limited
932 "museum", // museum Museum Domain Management Association
933 "music", // music DotMusic Limited
934 "nab", // nab National Australia Bank Limited
935 "nagoya", // nagoya GMO Registry, Inc.
936 "name", // name VeriSign Information Services, Inc.
937 "navy", // navy Dog Beach, LLC
938 "nba", // nba NBA REGISTRY, LLC
939 "nec", // nec NEC Corporation
940 "net", // net VeriSign Global Registry Services
941 "netbank", // netbank COMMONWEALTH BANK OF AUSTRALIA
942 "netflix", // netflix Netflix, Inc.
943 "network", // network Binky Moon, LLC
944 "neustar", // neustar NeuStar, Inc.
945 "new", // new Charleston Road Registry Inc.
946 "news", // news Dog Beach, LLC
947 "next", // next Next plc
948 "nextdirect", // nextdirect Next plc
949 "nexus", // nexus Charleston Road Registry Inc.
950 "nfl", // nfl NFL Reg Ops LLC
951 "ngo", // ngo Public Interest Registry
952 "nhk", // nhk Japan Broadcasting Corporation (NHK)
953 "nico", // nico DWANGO Co., Ltd.
954 "nike", // nike NIKE, Inc.
955 "nikon", // nikon NIKON CORPORATION
956 "ninja", // ninja Dog Beach, LLC
957 "nissan", // nissan NISSAN MOTOR CO., LTD.
958 "nissay", // nissay Nippon Life Insurance Company
959 "nokia", // nokia Nokia Corporation
960 "norton", // norton Gen Digital Inc.
961 "now", // now Amazon Registry Services, Inc.
962 "nowruz", // nowruz Emergency Back-End Registry Operator Program - ICANN
963 "nowtv", // nowtv Starbucks (HK) Limited
964 "nra", // nra National Rifle Association of America
965 "nrw", // nrw Minds + Machines GmbH
966 "ntt", // ntt NIPPON TELEGRAPH AND TELEPHONE CORPORATION
967 "nyc", // nyc The City of New York by and through the New York City Department of Information Technology & Telecommunications
968 "obi", // obi OBI Group Holding SE & Co. KGaA
969 "observer", // observer Fegistry, LLC
970 "office", // office Microsoft Corporation
971 "okinawa", // okinawa BRregistry, Inc.
972 "olayan", // olayan Competrol (Luxembourg) Sarl
973 "olayangroup", // olayangroup Competrol (Luxembourg) Sarl
974 "ollo", // ollo Dish DBS Corporation
975 "omega", // omega The Swatch Group Ltd
976 "one", // one One.com A/S
977 "ong", // ong Public Interest Registry
978 "onl", // onl iRegistry GmbH
979 "online", // online Radix Technologies Inc. SEZC
980 "ooo", // ooo INFIBEAM AVENUES LIMITED
981 "open", // open American Express Travel Related Services Company, Inc.
982 "oracle", // oracle Oracle Corporation
983 "orange", // orange Orange Brand Services Limited
984 "org", // org Public Interest Registry (PIR)
985 "organic", // organic Identity Digital Limited
986 "origins", // origins The Estée Lauder Companies Inc.
987 "osaka", // osaka Osaka Registry Co., Ltd.
988 "otsuka", // otsuka Otsuka Holdings Co., Ltd.
989 "ott", // ott Dish DBS Corporation
990 "ovh", // ovh OVH SAS
991 "page", // page Charleston Road Registry Inc.
992 "panasonic", // panasonic Panasonic Corporation
993 "paris", // paris City of Paris
994 "pars", // pars Emergency Back-End Registry Operator Program - ICANN
995 "partners", // partners Binky Moon, LLC
996 "parts", // parts Binky Moon, LLC
997 "party", // party Blue Sky Registry Limited
998 "pay", // pay Amazon Registry Services, Inc.
999 "pccw", // pccw PCCW Enterprises Limited
1000 "pet", // pet Identity Digital Limited
1001 "pfizer", // pfizer Pfizer Inc.
1002 "pharmacy", // pharmacy National Association of Boards of Pharmacy
1003 "phd", // phd Charleston Road Registry Inc.
1004 "philips", // philips Koninklijke Philips N.V.
1005 "phone", // phone Dish DBS Corporation
1006 "photo", // photo Registry Services, LLC
1007 "photography", // photography Binky Moon, LLC
1008 "photos", // photos Binky Moon, LLC
1009 "physio", // physio PhysBiz Pty Ltd
1010 "pics", // pics XYZ.COM LLC
1011 "pictet", // pictet Banque Pictet & Cie SA
1012 "pictures", // pictures Binky Moon, LLC
1013 "pid", // pid Top Level Spectrum, Inc.
1014 "pin", // pin Amazon Registry Services, Inc.
1015 "ping", // ping Ping Registry Provider, Inc.
1016 "pink", // pink Identity Digital Limited
1017 "pioneer", // pioneer Pioneer Corporation
1018 "pizza", // pizza Binky Moon, LLC
1019 "place", // place Binky Moon, LLC
1020 "play", // play Charleston Road Registry Inc.
1021 "playstation", // playstation Sony Computer Entertainment Inc.
1022 "plumbing", // plumbing Binky Moon, LLC
1023 "plus", // plus Binky Moon, LLC
1024 "pnc", // pnc PNC Domain Co., LLC
1025 "pohl", // pohl Deutsche Vermögensberatung Aktiengesellschaft DVAG
1026 "poker", // poker Identity Digital Limited
1027 "politie", // politie Politie Nederland
1028 "porn", // porn ICM Registry PN LLC
1029 "post", // post Universal Postal Union
1030 "praxi", // praxi Praxi S.p.A.
1031 "press", // press Radix Technologies Inc.
1032 "prime", // prime Amazon Registry Services, Inc.
1033 "pro", // pro Identity Digital Limited
1034 "prod", // prod Charleston Road Registry Inc.
1035 "productions", // productions Binky Moon, LLC
1036 "prof", // prof Charleston Road Registry Inc.
1037 "progressive", // progressive Progressive Casualty Insurance Company
1038 "promo", // promo Identity Digital Limited
1039 "properties", // properties Binky Moon, LLC
1040 "property", // property Digital Property Infrastructure Limited
1041 "protection", // protection XYZ.COM LLC
1042 "pru", // pru Prudential Financial, Inc.
1043 "prudential", // prudential Prudential Financial, Inc.
1044 "pub", // pub Dog Beach, LLC
1045 "pwc", // pwc PricewaterhouseCoopers LLP
1046 "qpon", // qpon DOTQPON LLC.
1047 "quebec", // quebec PointQuébec Inc
1048 "quest", // quest XYZ.COM LLC
1049 "racing", // racing Premier Registry Limited
1050 "radio", // radio European Broadcasting Union (EBU)
1051 "read", // read Amazon Registry Services, Inc.
1052 "realestate", // realestate dotRealEstate LLC
1053 "realtor", // realtor Real Estate Domains LLC
1054 "realty", // realty Internet Naming Co.
1055 "recipes", // recipes Binky Moon, LLC
1056 "red", // red Identity Digital Limited
1057 "redumbrella", // redumbrella Travelers TLD, LLC
1058 "rehab", // rehab Dog Beach, LLC
1059 "reise", // reise Binky Moon, LLC
1060 "reisen", // reisen Binky Moon, LLC
1061 "reit", // reit National Association of Real Estate Investment Trusts, Inc.
1062 "reliance", // reliance Reliance Industries Limited
1063 "ren", // ren ZDNS International Limited
1064 "rent", // rent XYZ.COM LLC
1065 "rentals", // rentals Binky Moon, LLC
1066 "repair", // repair Binky Moon, LLC
1067 "report", // report Binky Moon, LLC
1068 "republican", // republican Dog Beach, LLC
1069 "rest", // rest Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
1070 "restaurant", // restaurant Binky Moon, LLC
1071 "review", // review dot Review Limited
1072 "reviews", // reviews Dog Beach, LLC
1073 "rexroth", // rexroth Robert Bosch GMBH
1074 "rich", // rich iRegistry GmbH
1075 "richardli", // richardli Pacific Century Asset Management (HK) Limited
1076 "ricoh", // ricoh Ricoh Company, Ltd.
1077 "ril", // ril Reliance Industries Limited
1078 "rio", // rio Empresa Municipal de Informática SA - IPLANRIO
1079 "rip", // rip Dog Beach, LLC
1080 "rocks", // rocks Dog Beach, LLC
1081 "rodeo", // rodeo Registry Services, LLC
1082 "rogers", // rogers Rogers Communications Canada Inc.
1083 "room", // room Amazon Registry Services, Inc.
1084 "rsvp", // rsvp Charleston Road Registry Inc.
1085 "rugby", // rugby World Rugby Strategic Developments Limited
1086 "ruhr", // ruhr dotSaarland GmbH
1087 "run", // run Binky Moon, LLC
1088 "rwe", // rwe RWE AG
1089 "ryukyu", // ryukyu BRregistry, Inc.
1090 "saarland", // saarland dotSaarland GmbH
1091 "safe", // safe Amazon Registry Services, Inc.
1092 "safety", // safety Safety Registry Services, LLC.
1093 "sakura", // sakura SAKURA internet Inc.
1094 "sale", // sale Dog Beach, LLC
1095 "salon", // salon Binky Moon, LLC
1096 "samsclub", // samsclub Wal-Mart Stores, Inc.
1097 "samsung", // samsung SAMSUNG SDS CO., LTD
1098 "sandvik", // sandvik Sandvik AB
1099 "sandvikcoromant", // sandvikcoromant Sandvik AB
1100 "sanofi", // sanofi Sanofi
1101 "sap", // sap SAP AG
1102 "sarl", // sarl Binky Moon, LLC
1103 "sas", // sas Research IP LLC
1104 "save", // save Amazon Registry Services, Inc.
1105 "saxo", // saxo Saxo Bank A/S
1106 "sbi", // sbi STATE BANK OF INDIA
1107 "sbs", // sbs Shortdot SA
1108 "scb", // scb The Siam Commercial Bank Public Company Limited ("SCB")
1109 "schaeffler", // schaeffler Schaeffler Technologies AG & Co. KG
1110 "schmidt", // schmidt SCHMIDT GROUPE S.A.S.
1111 "scholarships", // scholarships Scholarships.com, LLC
1112 "school", // school Binky Moon, LLC
1113 "schule", // schule Binky Moon, LLC
1114 "schwarz", // schwarz Schwarz Domains und Services GmbH & Co. KG
1115 "science", // science dot Science Limited
1116 "scot", // scot Dot Scot Registry Limited
1117 "search", // search Charleston Road Registry Inc.
1118 "seat", // seat SEAT, S.A. (Sociedad Unipersonal)
1119 "secure", // secure Amazon Registry Services, Inc.
1120 "security", // security XYZ.COM LLC
1121 "seek", // seek Seek Limited
1122 "select", // select Registry Services, LLC
1123 "sener", // sener Sener Ingeniería y Sistemas, S.A.
1124 "services", // services Binky Moon, LLC
1125 "seven", // seven Seven West Media Ltd
1126 "sew", // sew SEW-EURODRIVE GmbH & Co KG
1127 "sex", // sex ICM Registry SX LLC
1128 "sexy", // sexy Internet Naming Co.
1129 "sfr", // sfr Societe Francaise du Radiotelephone - SFR
1130 "shangrila", // shangrila Shangri-La International Hotel Management Limited
1131 "sharp", // sharp Sharp Corporation
1132 "shell", // shell Shell Information Technology International Inc
1133 "shia", // shia Emergency Back-End Registry Operator Program - ICANN
1134 "shiksha", // shiksha Identity Digital Limited
1135 "shoes", // shoes Binky Moon, LLC
1136 "shop", // shop GMO Registry, Inc.
1137 "shopping", // shopping Binky Moon, LLC
1138 "shouji", // shouji Beijing Qihu Keji Co., Ltd.
1139 "show", // show Binky Moon, LLC
1140 "silk", // silk Amazon Registry Services, Inc.
1141 "sina", // sina Sina Corporation
1142 "singles", // singles Binky Moon, LLC
1143 "site", // site Radix Technologies Inc. SEZC
1144 "ski", // ski Identity Digital Limited
1145 "skin", // skin XYZ.COM LLC
1146 "sky", // sky Sky UK Limited
1147 "skype", // skype Microsoft Corporation
1148 "sling", // sling DISH Technologies L.L.C.
1149 "smart", // smart Smart Communications, Inc. (SMART)
1150 "smile", // smile Amazon Registry Services, Inc.
1151 "sncf", // sncf Société Nationale SNCF
1152 "soccer", // soccer Binky Moon, LLC
1153 "social", // social Dog Beach, LLC
1154 "softbank", // softbank SoftBank Group Corp.
1155 "software", // software Dog Beach, LLC
1156 "sohu", // sohu Sohu.com Limited
1157 "solar", // solar Binky Moon, LLC
1158 "solutions", // solutions Binky Moon, LLC
1159 "song", // song Amazon Registry Services, Inc.
1160 "sony", // sony Sony Corporation
1161 "soy", // soy Charleston Road Registry Inc.
1162 "spa", // spa Asia Spa and Wellness Promotion Council Limited
1163 "space", // space Radix Technologies Inc.
1164 "sport", // sport SportAccord
1165 "spot", // spot Amazon Registry Services, Inc.
1166 "srl", // srl InterNetX Corp.
1167 "stada", // stada STADA Arzneimittel AG
1168 "staples", // staples Staples, Inc.
1169 "star", // star Star India Private Limited
1170 "statebank", // statebank STATE BANK OF INDIA
1171 "statefarm", // statefarm State Farm Mutual Automobile Insurance Company
1172 "stc", // stc Saudi Telecom Company
1173 "stcgroup", // stcgroup Saudi Telecom Company
1174 "stockholm", // stockholm Stockholms kommun
1175 "storage", // storage XYZ.COM LLC
1176 "store", // store Radix Technologies Inc.
1177 "stream", // stream dot Stream Limited
1178 "studio", // studio Dog Beach, LLC
1179 "study", // study Registry Services, LLC
1180 "style", // style Binky Moon, LLC
1181 "sucks", // sucks Vox Populi Registry Ltd.
1182 "supplies", // supplies Binky Moon, LLC
1183 "supply", // supply Binky Moon, LLC
1184 "support", // support Binky Moon, LLC
1185 "surf", // surf Registry Services, LLC
1186 "surgery", // surgery Binky Moon, LLC
1187 "suzuki", // suzuki SUZUKI MOTOR CORPORATION
1188 "swatch", // swatch The Swatch Group Ltd
1189 "swiss", // swiss Swiss Confederation
1190 "sydney", // sydney State of New South Wales, Department of Premier and Cabinet
1191 "systems", // systems Binky Moon, LLC
1192 "tab", // tab Tabcorp Holdings Limited
1193 "taipei", // taipei Taipei City Government
1194 "talk", // talk Amazon Registry Services, Inc.
1195 "taobao", // taobao Alibaba Group Holding Limited
1196 "target", // target Target Domain Holdings, LLC
1197 "tatamotors", // tatamotors Tata Motors Ltd
1198 "tatar", // tatar Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
1199 "tattoo", // tattoo Registry Services, LLC
1200 "tax", // tax Binky Moon, LLC
1201 "taxi", // taxi Binky Moon, LLC
1202 "tci", // tci Emergency Back-End Registry Operator Program - ICANN
1203 "tdk", // tdk TDK Corporation
1204 "team", // team Binky Moon, LLC
1205 "tech", // tech Radix Technologies Inc.
1206 "technology", // technology Binky Moon, LLC
1207 "tel", // tel Telnames Ltd.
1208 "temasek", // temasek Temasek Holdings (Private) Limited
1209 "tennis", // tennis Binky Moon, LLC
1210 "teva", // teva Teva Pharmaceutical Industries Limited
1211 "thd", // thd Home Depot Product Authority, LLC
1212 "theater", // theater Binky Moon, LLC
1213 "theatre", // theatre XYZ.COM LLC
1214 "tiaa", // tiaa Teachers Insurance and Annuity Association of America
1215 "tickets", // tickets XYZ.COM LLC
1216 "tienda", // tienda Binky Moon, LLC
1217 "tips", // tips Binky Moon, LLC
1218 "tires", // tires Binky Moon, LLC
1219 "tirol", // tirol punkt Tirol GmbH
1220 "tjmaxx", // tjmaxx The TJX Companies, Inc.
1221 "tjx", // tjx The TJX Companies, Inc.
1222 "tkmaxx", // tkmaxx The TJX Companies, Inc.
1223 "tmall", // tmall Alibaba Group Holding Limited
1224 "today", // today Binky Moon, LLC
1225 "tokyo", // tokyo GMO Registry, Inc.
1226 "tools", // tools Binky Moon, LLC
1227 "top", // top Hong Kong Zhongze International Limited
1228 "toray", // toray Toray Industries, Inc.
1229 "toshiba", // toshiba TOSHIBA Corporation
1230 "total", // total TotalEnergies SE
1231 "tours", // tours Binky Moon, LLC
1232 "town", // town Binky Moon, LLC
1233 "toyota", // toyota TOYOTA MOTOR CORPORATION
1234 "toys", // toys Binky Moon, LLC
1235 "trade", // trade Elite Registry Limited
1236 "trading", // trading Dog Beach, LLC
1237 "training", // training Binky Moon, LLC
1238 "travel", // travel Dog Beach, LLC
1239 "travelers", // travelers Travelers TLD, LLC
1240 "travelersinsurance", // travelersinsurance Travelers TLD, LLC
1241 "trust", // trust Internet Naming Co.
1242 "trv", // trv Travelers TLD, LLC
1243 "tube", // tube Latin American Telecom LLC
1244 "tui", // tui TUI AG
1245 "tunes", // tunes Amazon Registry Services, Inc.
1246 "tushu", // tushu Amazon Registry Services, Inc.
1247 "tvs", // tvs T V SUNDRAM IYENGAR & SONS PRIVATE LIMITED
1248 "ubank", // ubank National Australia Bank Limited
1249 "ubs", // ubs UBS AG
1250 "unicom", // unicom China United Network Communications Corporation Limited
1251 "university", // university Binky Moon, LLC
1252 "uno", // uno Radix Technologies Inc.
1253 "uol", // uol UBN INTERNET LTDA.
1254 "ups", // ups UPS Market Driver, Inc.
1255 "vacations", // vacations Binky Moon, LLC
1256 "vana", // vana D3 Registry LLC
1257 "vanguard", // vanguard The Vanguard Group, Inc.
1258 "vegas", // vegas Dot Vegas, Inc.
1259 "ventures", // ventures Binky Moon, LLC
1260 "verisign", // verisign VeriSign, Inc.
1261 "versicherung", // versicherung tldbox GmbH
1262 "vet", // vet Dog Beach, LLC
1263 "viajes", // viajes Binky Moon, LLC
1264 "video", // video Dog Beach, LLC
1265 "vig", // vig VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe
1266 "viking", // viking Viking River Cruises (Bermuda) Ltd.
1267 "villas", // villas Binky Moon, LLC
1268 "vin", // vin Binky Moon, LLC
1269 "vip", // vip Registry Services, LLC
1270 "virgin", // virgin Virgin Enterprises Limited
1271 "visa", // visa Visa Worldwide Pte. Limited
1272 "vision", // vision Binky Moon, LLC
1273 "viva", // viva Saudi Telecom Company
1274 "vivo", // vivo Telefonica Brasil S.A.
1275 "vlaanderen", // vlaanderen DNS.be vzw
1276 "vodka", // vodka Registry Services, LLC
1277 "volvo", // volvo Volvo Holding Sverige Aktiebolag
1278 "vote", // vote Monolith Registry LLC
1279 "voting", // voting Valuetainment Corp.
1280 "voto", // voto Monolith Registry LLC
1281 "voyage", // voyage Binky Moon, LLC
1282 "wales", // wales Nominet UK
1283 "walmart", // walmart Wal-Mart Stores, Inc.
1284 "walter", // walter Sandvik AB
1285 "wang", // wang Zodiac Wang Limited
1286 "wanggou", // wanggou Amazon Registry Services, Inc.
1287 "watch", // watch Binky Moon, LLC
1288 "watches", // watches Identity Digital Limited
1289 "weather", // weather International Business Machines Corporation
1290 "weatherchannel", // weatherchannel International Business Machines Corporation
1291 "webcam", // webcam dot Webcam Limited
1292 "weber", // weber Saint-Gobain Weber SA
1293 "website", // website Radix Technologies Inc.
1294 "wed", // wed Emergency Back-End Registry Operator Program - ICANN
1295 "wedding", // wedding Registry Services, LLC
1296 "weibo", // weibo Sina Corporation
1297 "weir", // weir Weir Group IP Limited
1298 "whoswho", // whoswho Who's Who Registry
1299 "wien", // wien punkt.wien GmbH
1300 "wiki", // wiki Registry Services, LLC
1301 "williamhill", // williamhill William Hill Organization Limited
1302 "win", // win First Registry Limited
1303 "windows", // windows Microsoft Corporation
1304 "wine", // wine Binky Moon, LLC
1305 "winners", // winners The TJX Companies, Inc.
1306 "wme", // wme William Morris Endeavor Entertainment, LLC
1307 "woodside", // woodside Woodside Petroleum Limited
1308 "work", // work Registry Services, LLC
1309 "works", // works Binky Moon, LLC
1310 "world", // world Binky Moon, LLC
1311 "wow", // wow Amazon Registry Services, Inc.
1312 "wtc", // wtc World Trade Centers Association, Inc.
1313 "wtf", // wtf Binky Moon, LLC
1314 "xbox", // xbox Microsoft Corporation
1315 "xerox", // xerox Xerox DNHC LLC
1316 "xihuan", // xihuan Beijing Qihu Keji Co., Ltd.
1317 "xin", // xin Elegant Leader Limited
1318 "xn--11b4c3d", // कॉम VeriSign Sarl
1319 "xn--1ck2e1b", // セール Amazon Registry Services, Inc.
1320 "xn--1qqw23a", // 佛山 Guangzhou YU Wei Information Technology Co., Ltd.
1321 "xn--30rr7y", // 慈善 Excellent First Limited
1322 "xn--3bst00m", // 集团 Eagle Horizon Limited
1323 "xn--3ds443g", // 在线 Beijing TLD Registry Technology Limited
1324 "xn--3pxu8k", // 点看 VeriSign Sarl
1325 "xn--42c2d9a", // คอม VeriSign Sarl
1326 "xn--45q11c", // 八卦 Zodiac Gemini Ltd
1327 "xn--4gbrim", // موقع Helium TLDs Ltd
1328 "xn--55qw42g", // 公益 China Organizational Name Administration Center
1329 "xn--55qx5d", // 公司 China Internet Network Information Center (CNNIC)
1330 "xn--5su34j936bgsg", // 香格里拉 Shangri-La International Hotel Management Limited
1331 "xn--5tzm5g", // 网站 Global Website TLD Asia Limited
1332 "xn--6frz82g", // 移动 Identity Digital Limited
1333 "xn--6qq986b3xl", // 我爱你 Tycoon Treasure Limited
1334 "xn--80adxhks", // москва Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
1335 "xn--80aqecdr1a", // католик Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
1336 "xn--80asehdb", // онлайн CORE Association
1337 "xn--80aswg", // сайт CORE Association
1338 "xn--8y0a063a", // 联通 China United Network Communications Corporation Limited
1339 "xn--9dbq2a", // קום VeriSign Sarl
1340 "xn--9et52u", // 时尚 RISE VICTORY LIMITED
1341 "xn--9krt00a", // 微博 Sina Corporation
1342 "xn--b4w605ferd", // 淡马锡 Temasek Holdings (Private) Limited
1343 "xn--bck1b9a5dre4c", // ファッション Amazon Registry Services, Inc.
1344 "xn--c1avg", // орг Public Interest Registry
1345 "xn--c2br7g", // नेट VeriSign Sarl
1346 "xn--cck2b3b", // ストア Amazon Registry Services, Inc.
1347 "xn--cckwcxetd", // アマゾン Amazon Registry Services, Inc.
1348 "xn--cg4bki", // 삼성 SAMSUNG SDS CO., LTD
1349 "xn--czr694b", // 商标 Internet DotTrademark Organisation Limited
1350 "xn--czrs0t", // 商店 Binky Moon, LLC
1351 "xn--czru2d", // 商城 Zodiac Aquarius Limited
1352 "xn--d1acj3b", // дети The Foundation for Network Initiatives “The Smart Internet”
1353 "xn--eckvdtc9d", // ポイント Amazon Registry Services, Inc.
1354 "xn--efvy88h", // 新闻 Guangzhou YU Wei Information and Technology Co.,Ltd
1355 "xn--fct429k", // 家電 Amazon Registry Services, Inc.
1356 "xn--fhbei", // كوم VeriSign Sarl
1357 "xn--fiq228c5hs", // 中文网 Beijing TLD Registry Technology Limited
1358 "xn--fiq64b", // 中信 CITIC Group Corporation
1359 "xn--fjq720a", // 娱乐 Binky Moon, LLC
1360 "xn--flw351e", // 谷歌 Charleston Road Registry Inc.
1361 "xn--fzys8d69uvgm", // 電訊盈科 PCCW Enterprises Limited
1362 "xn--g2xx48c", // 购物 Nawang Heli(Xiamen) Network Service Co., LTD.
1363 "xn--gckr3f0f", // クラウド Amazon Registry Services, Inc.
1364 "xn--gk3at1e", // 通販 Amazon Registry Services, Inc.
1365 "xn--hxt814e", // 网店 Zodiac Taurus Ltd.
1366 "xn--i1b6b1a6a2e", // संगठन Public Interest Registry
1367 "xn--imr513n", // 餐厅 Internet DotTrademark Organisation Limited
1368 "xn--io0a7i", // 网络 China Internet Network Information Center (CNNIC)
1369 "xn--j1aef", // ком VeriSign Sarl
1370 "xn--jlq480n2rg", // 亚马逊 Amazon Registry Services, Inc.
1371 "xn--jvr189m", // 食品 Amazon Registry Services, Inc.
1372 "xn--kcrx77d1x4a", // 飞利浦 Koninklijke Philips N.V.
1373 "xn--kput3i", // 手机 Beijing RITT-Net Technology Development Co., Ltd
1374 "xn--mgba3a3ejt", // ارامكو Aramco Services Company
1375 "xn--mgba7c0bbn0a", // العليان Competrol (Luxembourg) Sarl
1376 "xn--mgbab2bd", // بازار CORE Association
1377 "xn--mgbca7dzdo", // ابوظبي Abu Dhabi Systems and Information Centre
1378 "xn--mgbi4ecexp", // كاثوليك Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
1379 "xn--mgbt3dhd", // همراه Emergency Back-End Registry Operator Program - ICANN
1380 "xn--mk1bu44c", // 닷컴 VeriSign Sarl
1381 "xn--mxtq1m", // 政府 Net-Chinese Co., Ltd.
1382 "xn--ngbc5azd", // شبكة International Domain Registry Pty. Ltd.
1383 "xn--ngbe9e0a", // بيتك Kuwait Finance House
1384 "xn--ngbrx", // عرب League of Arab States
1385 "xn--nqv7f", // 机构 Public Interest Registry
1386 "xn--nqv7fs00ema", // 组织机构 Public Interest Registry
1387 "xn--nyqy26a", // 健康 Stable Tone Limited
1388 "xn--otu796d", // 招聘 Jiang Yu Liang Cai Technology Company Limited
1389 "xn--p1acf", // рус Rusnames Limited
1390 "xn--pssy2u", // 大拿 VeriSign Sarl
1391 "xn--q9jyb4c", // みんな Charleston Road Registry Inc.
1392 "xn--qcka1pmc", // グーグル Charleston Road Registry Inc.
1393 "xn--rhqv96g", // 世界 Stable Tone Limited
1394 "xn--rovu88b", // 書籍 Amazon Registry Services, Inc.
1395 "xn--ses554g", // 网址 KNET Co., Ltd
1396 "xn--t60b56a", // 닷넷 VeriSign Sarl
1397 "xn--tckwe", // コム VeriSign Sarl
1398 "xn--tiq49xqyj", // 天主教 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
1399 "xn--unup4y", // 游戏 Binky Moon, LLC
1400 "xn--vermgensberater-ctb", // VERMöGENSBERATER Deutsche Vermögensberatung Aktiengesellschaft DVAG
1401 "xn--vermgensberatung-pwb", // VERMöGENSBERATUNG Deutsche Vermögensberatung Aktiengesellschaft DVAG
1402 "xn--vhquv", // 企业 Binky Moon, LLC
1403 "xn--vuq861b", // 信息 Beijing Tele-info Technology Co., Ltd.
1404 "xn--w4r85el8fhu5dnra", // 嘉里大酒店 Kerry Trading Co. Limited
1405 "xn--w4rs40l", // 嘉里 Kerry Trading Co. Limited
1406 "xn--xhq521b", // 广东 Guangzhou YU Wei Information Technology Co., Ltd.
1407 "xn--zfr164b", // 政务 China Organizational Name Administration Center
1408 "xxx", // xxx ICM Registry LLC
1409 "xyz", // xyz XYZ.COM LLC
1410 "yachts", // yachts XYZ.COM LLC
1411 "yahoo", // yahoo Yahoo Inc.
1412 "yamaxun", // yamaxun Amazon Registry Services, Inc.
1413 "yandex", // yandex YANDEX LLC
1414 "yodobashi", // yodobashi YODOBASHI CAMERA CO.,LTD.
1415 "yoga", // yoga Registry Services, LLC
1416 "yokohama", // yokohama GMO Registry, Inc.
1417 "you", // you Amazon Registry Services, Inc.
1418 "youtube", // youtube Charleston Road Registry Inc.
1419 "yun", // yun Beijing Qihu Keji Co., Ltd.
1420 "zappos", // zappos Amazon Registry Services, Inc.
1421 "zara", // zara Industria de Diseño Textil, S.A. (INDITEX, S.A.)
1422 "zero", // zero Amazon Registry Services, Inc.
1423 "zip", // zip Charleston Road Registry Inc.
1424 "zone", // zone Binky Moon, LLC
1425 "zuerich", // zuerich Kanton Zürich (Canton of Zurich)
1426 };
1427
1428 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
1429 private static final String[] COUNTRY_CODE_TLDS = {
1430 "ac", // Ascension Island
1431 "ad", // Andorra
1432 "ae", // United Arab Emirates
1433 "af", // Afghanistan
1434 "ag", // Antigua and Barbuda
1435 "ai", // Anguilla
1436 "al", // Albania
1437 "am", // Armenia
1438 //"an", // Netherlands Antilles (retired)
1439 "ao", // Angola
1440 "aq", // Antarctica
1441 "ar", // Argentina
1442 "as", // American Samoa
1443 "at", // Austria
1444 "au", // Australia (includes Ashmore and Cartier Islands and Coral Sea Islands)
1445 "aw", // Aruba
1446 "ax", // Åland
1447 "az", // Azerbaijan
1448 "ba", // Bosnia and Herzegovina
1449 "bb", // Barbados
1450 "bd", // Bangladesh
1451 "be", // Belgium
1452 "bf", // Burkina Faso
1453 "bg", // Bulgaria
1454 "bh", // Bahrain
1455 "bi", // Burundi
1456 "bj", // Benin
1457 "bm", // Bermuda
1458 "bn", // Brunei Darussalam
1459 "bo", // Bolivia
1460 "br", // Brazil
1461 "bs", // Bahamas
1462 "bt", // Bhutan
1463 "bv", // Bouvet Island
1464 "bw", // Botswana
1465 "by", // Belarus
1466 "bz", // Belize
1467 "ca", // Canada
1468 "cc", // Cocos (Keeling) Islands
1469 "cd", // Democratic Republic of the Congo (formerly Zaire)
1470 "cf", // Central African Republic
1471 "cg", // Republic of the Congo
1472 "ch", // Switzerland
1473 "ci", // Côte d'Ivoire
1474 "ck", // Cook Islands
1475 "cl", // Chile
1476 "cm", // Cameroon
1477 "cn", // China, mainland
1478 "co", // Colombia
1479 "cr", // Costa Rica
1480 "cu", // Cuba
1481 "cv", // Cape Verde
1482 "cw", // Curaçao
1483 "cx", // Christmas Island
1484 "cy", // Cyprus
1485 "cz", // Czech Republic
1486 "de", // Germany
1487 "dj", // Djibouti
1488 "dk", // Denmark
1489 "dm", // Dominica
1490 "do", // Dominican Republic
1491 "dz", // Algeria
1492 "ec", // Ecuador
1493 "ee", // Estonia
1494 "eg", // Egypt
1495 "er", // Eritrea
1496 "es", // Spain
1497 "et", // Ethiopia
1498 "eu", // European Union
1499 "fi", // Finland
1500 "fj", // Fiji
1501 "fk", // Falkland Islands
1502 "fm", // Federated States of Micronesia
1503 "fo", // Faroe Islands
1504 "fr", // France
1505 "ga", // Gabon
1506 "gb", // Great Britain (United Kingdom)
1507 "gd", // Grenada
1508 "ge", // Georgia
1509 "gf", // French Guiana
1510 "gg", // Guernsey
1511 "gh", // Ghana
1512 "gi", // Gibraltar
1513 "gl", // Greenland
1514 "gm", // The Gambia
1515 "gn", // Guinea
1516 "gp", // Guadeloupe
1517 "gq", // Equatorial Guinea
1518 "gr", // Greece
1519 "gs", // South Georgia and the South Sandwich Islands
1520 "gt", // Guatemala
1521 "gu", // Guam
1522 "gw", // Guinea-Bissau
1523 "gy", // Guyana
1524 "hk", // Hong Kong
1525 "hm", // Heard Island and McDonald Islands
1526 "hn", // Honduras
1527 "hr", // Croatia (Hrvatska)
1528 "ht", // Haiti
1529 "hu", // Hungary
1530 "id", // Indonesia
1531 "ie", // Ireland (Éire)
1532 "il", // Israel
1533 "im", // Isle of Man
1534 "in", // India
1535 "io", // British Indian Ocean Territory
1536 "iq", // Iraq
1537 "ir", // Iran
1538 "is", // Iceland
1539 "it", // Italy
1540 "je", // Jersey
1541 "jm", // Jamaica
1542 "jo", // Jordan
1543 "jp", // Japan
1544 "ke", // Kenya
1545 "kg", // Kyrgyzstan
1546 "kh", // Cambodia (Khmer)
1547 "ki", // Kiribati
1548 "km", // Comoros
1549 "kn", // Saint Kitts and Nevis
1550 "kp", // North Korea
1551 "kr", // South Korea
1552 "kw", // Kuwait
1553 "ky", // Cayman Islands
1554 "kz", // Kazakhstan
1555 "la", // Laos (currently being marketed as the official domain for Los Angeles)
1556 "lb", // Lebanon
1557 "lc", // Saint Lucia
1558 "li", // Liechtenstein
1559 "lk", // Sri Lanka
1560 "lr", // Liberia
1561 "ls", // Lesotho
1562 "lt", // Lithuania
1563 "lu", // Luxembourg
1564 "lv", // Latvia
1565 "ly", // Libya
1566 "ma", // Morocco
1567 "mc", // Monaco
1568 "md", // Moldova
1569 "me", // Montenegro
1570 "mg", // Madagascar
1571 "mh", // Marshall Islands
1572 "mk", // Republic of Macedonia
1573 "ml", // Mali
1574 "mm", // Myanmar
1575 "mn", // Mongolia
1576 "mo", // Macau
1577 "mp", // Northern Mariana Islands
1578 "mq", // Martinique
1579 "mr", // Mauritania
1580 "ms", // Montserrat
1581 "mt", // Malta
1582 "mu", // Mauritius
1583 "mv", // Maldives
1584 "mw", // Malawi
1585 "mx", // Mexico
1586 "my", // Malaysia
1587 "mz", // Mozambique
1588 "na", // Namibia
1589 "nc", // New Caledonia
1590 "ne", // Niger
1591 "nf", // Norfolk Island
1592 "ng", // Nigeria
1593 "ni", // Nicaragua
1594 "nl", // Netherlands
1595 "no", // Norway
1596 "np", // Nepal
1597 "nr", // Nauru
1598 "nu", // Niue
1599 "nz", // New Zealand
1600 "om", // Oman
1601 "pa", // Panama
1602 "pe", // Peru
1603 "pf", // French Polynesia With Clipperton Island
1604 "pg", // Papua New Guinea
1605 "ph", // Philippines
1606 "pk", // Pakistan
1607 "pl", // Poland
1608 "pm", // Saint-Pierre and Miquelon
1609 "pn", // Pitcairn Islands
1610 "pr", // Puerto Rico
1611 "ps", // Palestinian territories (PA-controlled West Bank and Gaza Strip)
1612 "pt", // Portugal
1613 "pw", // Palau
1614 "py", // Paraguay
1615 "qa", // Qatar
1616 "re", // Réunion
1617 "ro", // Romania
1618 "rs", // Serbia
1619 "ru", // Russia
1620 "rw", // Rwanda
1621 "sa", // Saudi Arabia
1622 "sb", // Solomon Islands
1623 "sc", // Seychelles
1624 "sd", // Sudan
1625 "se", // Sweden
1626 "sg", // Singapore
1627 "sh", // Saint Helena
1628 "si", // Slovenia
1629 "sj", // Svalbard and Jan Mayen Islands Not in use (Norwegian dependencies; see .no)
1630 "sk", // Slovakia
1631 "sl", // Sierra Leone
1632 "sm", // San Marino
1633 "sn", // Senegal
1634 "so", // Somalia
1635 "sr", // Suriname
1636 "ss", // South Sudan
1637 "st", // São Tomé and Príncipe
1638 "su", // Soviet Union (deprecated)
1639 "sv", // El Salvador
1640 "sx", // Sint Maarten
1641 "sy", // Syria
1642 "sz", // Swaziland
1643 "tc", // Turks and Caicos Islands
1644 "td", // Chad
1645 "tf", // French Southern and Antarctic Lands
1646 "tg", // Togo
1647 "th", // Thailand
1648 "tj", // Tajikistan
1649 "tk", // Tokelau
1650 "tl", // East Timor (deprecated old code)
1651 "tm", // Turkmenistan
1652 "tn", // Tunisia
1653 "to", // Tonga
1654 //"tp", // East Timor (Retired)
1655 "tr", // Turkey
1656 "tt", // Trinidad and Tobago
1657 "tv", // Tuvalu
1658 "tw", // Taiwan, Republic of China
1659 "tz", // Tanzania
1660 "ua", // Ukraine
1661 "ug", // Uganda
1662 "uk", // United Kingdom
1663 "us", // United States of America
1664 "uy", // Uruguay
1665 "uz", // Uzbekistan
1666 "va", // Vatican City State
1667 "vc", // Saint Vincent and the Grenadines
1668 "ve", // Venezuela
1669 "vg", // British Virgin Islands
1670 "vi", // U.S. Virgin Islands
1671 "vn", // Vietnam
1672 "vu", // Vanuatu
1673 "wf", // Wallis and Futuna
1674 "ws", // Samoa (formerly Western Samoa)
1675 "xn--2scrj9c", // ಭಾರತ National Internet eXchange of India
1676 "xn--3e0b707e", // 한국 KISA (Korea Internet & Security Agency)
1677 "xn--3hcrj9c", // ଭାରତ National Internet eXchange of India
1678 "xn--45br5cyl", // ভাৰত National Internet eXchange of India
1679 "xn--45brj9c", // ভারত National Internet Exchange of India
1680 "xn--4dbrk0ce", // ישראל The Israel Internet Association (RA)
1681 "xn--54b7fta0cc", // বাংলা Posts and Telecommunications Division
1682 "xn--80ao21a", // қаз Association of IT Companies of Kazakhstan
1683 "xn--90a3ac", // срб Serbian National Internet Domain Registry (RNIDS)
1684 "xn--90ae", // бг Imena.BG AD
1685 "xn--90ais", // бел Belarusian Cloud Technologies LLC
1686 "xn--clchc0ea0b2g2a9gcd", // சிங்கப்பூர் Singapore Network Information Centre (SGNIC) Pte Ltd
1687 "xn--d1alf", // мкд Macedonian Academic Research Network Skopje
1688 "xn--e1a4c", // ею EURid vzw
1689 "xn--fiqs8s", // 中国 China Internet Network Information Center (CNNIC)
1690 "xn--fiqz9s", // 中國 China Internet Network Information Center (CNNIC)
1691 "xn--fpcrj9c3d", // భారత్ National Internet Exchange of India
1692 "xn--fzc2c9e2c", // ලංකා LK Domain Registry
1693 "xn--gecrj9c", // ભારત National Internet Exchange of India
1694 "xn--h2breg3eve", // भारतम् National Internet eXchange of India
1695 "xn--h2brj9c", // भारत National Internet Exchange of India
1696 "xn--h2brj9c8c", // भारोत National Internet eXchange of India
1697 "xn--j1amh", // укр Ukrainian Network Information Centre (UANIC), Inc.
1698 "xn--j6w193g", // 香港 Hong Kong Internet Registration Corporation Ltd.
1699 "xn--kprw13d", // 台湾 Taiwan Network Information Center (TWNIC)
1700 "xn--kpry57d", // 台灣 Taiwan Network Information Center (TWNIC)
1701 "xn--l1acc", // мон Datacom Co.,Ltd
1702 "xn--lgbbat1ad8j", // الجزائر CERIST
1703 "xn--mgb9awbf", // عمان Telecommunications Regulatory Authority (TRA)
1704 "xn--mgba3a4f16a", // ایران Institute for Research in Fundamental Sciences (IPM)
1705 "xn--mgbaam7a8h", // امارات Telecommunications and Digital Government Regulatory Authority (TDRA)
1706 "xn--mgbah1a3hjkrd", // موريتانيا Université de Nouakchott Al Aasriya
1707 "xn--mgbai9azgqp6j", // پاکستان National Telecommunication Corporation
1708 "xn--mgbayh7gpa", // الاردن Ministry of Digital Economy and Entrepreneurship (MoDEE)
1709 "xn--mgbbh1a", // بارت National Internet eXchange of India
1710 "xn--mgbbh1a71e", // بھارت National Internet Exchange of India
1711 "xn--mgbc0a9azcg", // المغرب Agence Nationale de Réglementation des Télécommunications (ANRT)
1712 "xn--mgbcpq6gpa1a", // البحرين Telecommunications Regulatory Authority (TRA)
1713 "xn--mgberp4a5d4ar", // السعودية Communications, Space and Technology Commission
1714 "xn--mgbgu82a", // ڀارت National Internet eXchange of India
1715 "xn--mgbpl2fh", // سودان Sudan Internet Society
1716 "xn--mgbtx2b", // عراق Communications and Media Commission (CMC)
1717 "xn--mgbx4cd0ab", // مليسيا MYNIC Berhad
1718 "xn--mix891f", // 澳門 Macao Post and Telecommunications Bureau (CTT)
1719 "xn--node", // გე Information Technologies Development Center (ITDC)
1720 "xn--o3cw4h", // ไทย Thai Network Information Center Foundation
1721 "xn--ogbpf8fl", // سورية National Authority for Information Technology Services (NAITS)
1722 "xn--p1ai", // рф Coordination Center for TLD RU
1723 "xn--pgbs0dh", // تونس Agence Tunisienne d'Internet
1724 "xn--q7ce6a", // ລາວ Lao National Internet Center (LANIC), Ministry of Technology and Communications
1725 "xn--qxa6a", // ευ EURid vzw
1726 "xn--qxam", // ελ ICS-FORTH GR
1727 "xn--rvc1e0am3e", // ഭാരതം National Internet eXchange of India
1728 "xn--s9brj9c", // ਭਾਰਤ National Internet Exchange of India
1729 "xn--wgbh1c", // مصر National Telecommunication Regulatory Authority - NTRA
1730 "xn--wgbl6a", // قطر Communications Regulatory Authority
1731 "xn--xkc2al3hye2a", // இலங்கை LK Domain Registry
1732 "xn--xkc2dl3a5ee0h", // இந்தியா National Internet Exchange of India
1733 "xn--y9a3aq", // հայ "Internet Society" Non-governmental Organization
1734 "xn--yfro4i67o", // 新加坡 Singapore Network Information Centre (SGNIC) Pte Ltd
1735 "xn--ygbi2ammx", // فلسطين Ministry of Telecom & Information Technology (MTIT)
1736 "ye", // Yemen
1737 "yt", // Mayotte
1738 "za", // South Africa
1739 "zm", // Zambia
1740 "zw", // Zimbabwe
1741 };
1742
1743 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
1744 private static final String[] LOCAL_TLDS = {
1745 "localdomain", // Also widely used as localhost.localdomain
1746 "localhost", // RFC2606 defined
1747 };
1748
1749 // Additional arrays to supplement or override the built in ones.
1750 // The PLUS arrays are valid keys, the MINUS arrays are invalid keys
1751
1752 /*
1753 * This field is used to detect whether the getInstance has been called.
1754 * After this, the method updateTLDOverride is not allowed to be called.
1755 * This field does not need to be volatile since it is only accessed from
1756 * synchronized methods.
1757 */
1758 private static boolean inUse;
1759
1760 /*
1761 * These arrays are mutable, but they don't need to be volatile.
1762 * They can only be updated by the updateTLDOverride method, and any readers must get an instance
1763 * using the getInstance methods which are all (now) synchronised.
1764 */
1765 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
1766 private static volatile String[] countryCodeTLDsPlus = EMPTY_STRING_ARRAY;
1767
1768 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
1769 private static volatile String[] genericTLDsPlus = EMPTY_STRING_ARRAY;
1770
1771 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
1772 private static volatile String[] countryCodeTLDsMinus = EMPTY_STRING_ARRAY;
1773
1774 // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
1775 private static volatile String[] genericTLDsMinus = EMPTY_STRING_ARRAY;
1776
1777 /**
1778 * enum used by {@link DomainValidator#updateTLDOverride(ArrayType, String[])}
1779 * to determine which override array to update / fetch
1780 * @since 1.5.0
1781 * @since 1.5.1 made public and added read-only array references
1782 */
1783 public enum ArrayType {
1784 /** Update (or get a copy of) the GENERIC_TLDS_PLUS table containing additional generic TLDs */
1785 GENERIC_PLUS,
1786 /** Update (or get a copy of) the GENERIC_TLDS_MINUS table containing deleted generic TLDs */
1787 GENERIC_MINUS,
1788 /** Update (or get a copy of) the COUNTRY_CODE_TLDS_PLUS table containing additional country code TLDs */
1789 COUNTRY_CODE_PLUS,
1790 /** Update (or get a copy of) the COUNTRY_CODE_TLDS_MINUS table containing deleted country code TLDs */
1791 COUNTRY_CODE_MINUS,
1792 /** Get a copy of the generic TLDS table */
1793 GENERIC_RO,
1794 /** Get a copy of the country code table */
1795 COUNTRY_CODE_RO,
1796 /** Get a copy of the infrastructure table */
1797 INFRASTRUCTURE_RO,
1798 /** Get a copy of the local table */
1799 LOCAL_RO
1800 }
1801
1802 // For use by unit test code only
1803 static synchronized void clearTLDOverrides() {
1804 inUse = false;
1805 countryCodeTLDsPlus = EMPTY_STRING_ARRAY;
1806 countryCodeTLDsMinus = EMPTY_STRING_ARRAY;
1807 genericTLDsPlus = EMPTY_STRING_ARRAY;
1808 genericTLDsMinus = EMPTY_STRING_ARRAY;
1809 }
1810
1811 /**
1812 * Update one of the TLD override arrays.
1813 * This must only be done at program startup, before any instances are accessed using getInstance.
1814 * <p>
1815 * For example:
1816 * <p>
1817 * <code>DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"apache"})}</code>
1818 * <p>
1819 * To clear an override array, provide an empty array.
1820 *
1821 * @param table the table to update, see {@link DomainValidator.ArrayType}
1822 * Must be one of the following
1823 * <ul>
1824 * <li>COUNTRY_CODE_MINUS</li>
1825 * <li>COUNTRY_CODE_PLUS</li>
1826 * <li>GENERIC_MINUS</li>
1827 * <li>GENERIC_PLUS</li>
1828 * </ul>
1829 * @param tlds the array of TLDs, must not be null
1830 * @throws IllegalStateException if the method is called after getInstance
1831 * @throws IllegalArgumentException if one of the read-only tables is requested
1832 * @since 1.5.0
1833 */
1834 public static synchronized void updateTLDOverride(ArrayType table, String... tlds) {
1835 if (inUse) {
1836 throw new IllegalStateException("Can only invoke this method before calling getInstance");
1837 }
1838 // Comparisons are always done with lower-case entries
1839 String[] copy = Arrays.stream(tlds)
1840 .map(tld -> tld.toLowerCase(Locale.ENGLISH))
1841 .toArray(String[]::new);
1842 Arrays.sort(copy);
1843 switch (table) {
1844 case COUNTRY_CODE_MINUS:
1845 countryCodeTLDsMinus = copy;
1846 break;
1847 case COUNTRY_CODE_PLUS:
1848 countryCodeTLDsPlus = copy;
1849 break;
1850 case GENERIC_MINUS:
1851 genericTLDsMinus = copy;
1852 break;
1853 case GENERIC_PLUS:
1854 genericTLDsPlus = copy;
1855 break;
1856 case COUNTRY_CODE_RO:
1857 case GENERIC_RO:
1858 case INFRASTRUCTURE_RO:
1859 case LOCAL_RO:
1860 throw new IllegalArgumentException("Cannot update the table: " + table);
1861 }
1862 }
1863
1864 /**
1865 * Get a copy of the internal array.
1866 * @param table the array type (any of the enum values)
1867 * @return a copy of the array
1868 * @throws IllegalArgumentException if the table type is unexpected (should not happen)
1869 * @since 1.5.1
1870 */
1871 public static String[] getTLDEntries(ArrayType table) {
1872 String[] array = null;
1873 switch (table) {
1874 case COUNTRY_CODE_MINUS:
1875 array = countryCodeTLDsMinus;
1876 break;
1877 case COUNTRY_CODE_PLUS:
1878 array = countryCodeTLDsPlus;
1879 break;
1880 case GENERIC_MINUS:
1881 array = genericTLDsMinus;
1882 break;
1883 case GENERIC_PLUS:
1884 array = genericTLDsPlus;
1885 break;
1886 case GENERIC_RO:
1887 array = GENERIC_TLDS;
1888 break;
1889 case COUNTRY_CODE_RO:
1890 array = COUNTRY_CODE_TLDS;
1891 break;
1892 case INFRASTRUCTURE_RO:
1893 array = INFRASTRUCTURE_TLDS;
1894 break;
1895 case LOCAL_RO:
1896 array = LOCAL_TLDS;
1897 break;
1898 }
1899 if (array == null) {
1900 throw new IllegalArgumentException("Unexpected enum value: " + table);
1901 }
1902 return Arrays.copyOf(array, array.length); // clone the array
1903 }
1904
1905 /**
1906 * Converts potentially Unicode input to punycode.
1907 * If conversion fails, returns the original input.
1908 *
1909 * @param input the string to convert, not null
1910 * @return converted input, or original input if conversion fails
1911 */
1912 // Needed by UrlValidator
1913 public static String unicodeToASCII(String input) {
1914 if (isOnlyASCII(input)) { // skip possibly expensive processing
1915 return input;
1916 }
1917 try {
1918 final String ascii = IDN.toASCII(input);
1919 if (IdnBugHolder.IDN_TOASCII_PRESERVES_TRAILING_DOTS) {
1920 return ascii;
1921 }
1922 final int length = input.length();
1923 if (length == 0) { // check there is a last character
1924 return input;
1925 }
1926 // RFC3490 3.1. 1)
1927 // Whenever dots are used as label separators, the following
1928 // characters MUST be recognized as dots: U+002E (full stop), U+3002
1929 // (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61
1930 // (halfwidth ideographic full stop).
1931 char lastChar = input.charAt(length-1); // fetch original last char
1932 switch (lastChar) {
1933 case '.': // "." full stop, AKA U+002E
1934 case '\u3002': // ideographic full stop
1935 case '\uFF0E': // fullwidth full stop
1936 case '\uFF61': // halfwidth ideographic full stop
1937 return ascii + '.'; // restore the missing stop
1938 default:
1939 return ascii;
1940 }
1941 } catch (IllegalArgumentException e) { // input is not valid
1942 Logging.trace(e);
1943 return input;
1944 }
1945 }
1946
1947 private static final class IdnBugHolder {
1948 private static boolean keepsTrailingDot() {
1949 final String input = "a."; // must be a valid name
1950 return input.equals(IDN.toASCII(input));
1951 }
1952
1953 private static final boolean IDN_TOASCII_PRESERVES_TRAILING_DOTS = keepsTrailingDot();
1954 }
1955
1956 /*
1957 * Check if input contains only ASCII
1958 * Treats null as all ASCII
1959 */
1960 private static boolean isOnlyASCII(String input) {
1961 if (input == null) {
1962 return true;
1963 }
1964 return IntStream.range(0, input.length()).noneMatch(i -> input.charAt(i) > 0x7F); // CHECKSTYLE IGNORE MagicNumber
1965 }
1966
1967 /**
1968 * Check if a sorted array contains the specified key
1969 *
1970 * @param sortedArray the array to search
1971 * @param key the key to find
1972 * @return {@code true} if the array contains the key
1973 */
1974 private static boolean arrayContains(String[] sortedArray, String key) {
1975 return Arrays.binarySearch(sortedArray, key) >= 0;
1976 }
1977}
Note: See TracBrowser for help on using the repository browser.