summaryrefslogtreecommitdiff
path: root/java/src/com
diff options
context:
space:
mode:
authorShaopeng Jia <shaopengjia@google.com>2012-07-13 13:46:11 +0200
committerShaopeng Jia <shaopengjia@google.com>2012-07-13 13:46:11 +0200
commitbf5d9756fe9b13f5b2e0696c62949cea77396687 (patch)
tree51daac195bcb29aed09b3316d76e38fdea7fb4c6 /java/src/com
parent32cbb58e961e6576fd8bf52b75b04a1027a22648 (diff)
downloadlibphonenumber-bf5d9756fe9b13f5b2e0696c62949cea77396687.tar.gz
Change-Id: I0c4b01931dc7d97b0e1c2ea432199db0ed5a67ab
Diffstat (limited to 'java/src/com')
-rw-r--r--java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java20
-rw-r--r--java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java87
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870bin0 -> 310 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878bin0 -> 316 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881bin0 -> 297 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882bin0 -> 764 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ACbin256 -> 255 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AEbin609 -> 611 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ANbin293 -> 297 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BFbin429 -> 436 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BHbin526 -> 532 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CAbin726 -> 736 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CIbin436 -> 438 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CRbin612 -> 627 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZbin536 -> 744 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DEbin1923 -> 1928 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DKbin394 -> 396 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EEbin845 -> 953 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EGbin763 -> 746 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ESbin542 -> 708 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ETbin985 -> 998 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HKbin540 -> 649 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ILbin988 -> 989 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_INbin4035 -> 4020 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IRbin1122 -> 1123 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ISbin766 -> 755 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JObin1025 -> 1022 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KHbin616 -> 618 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KWbin613 -> 517 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LAbin453 -> 454 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LBbin546 -> 564 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LIbin804 -> 952 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LRbin593 -> 595 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MAbin775 -> 778 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MDbin660 -> 685 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MEbin695 -> 692 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MKbin635 -> 644 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MMbin696 -> 788 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MNbin733 -> 727 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PAbin875 -> 882 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QAbin405 -> 408 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RObin508 -> 647 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SAbin659 -> 644 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SGbin600 -> 600 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SIbin698 -> 698 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SSbin376 -> 311 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SXbin451 -> 459 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TCbin506 -> 507 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_THbin638 -> 586 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TLbin366 -> 367 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/1431_enbin0 -> 33 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/1669_enbin0 -> 35 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/1873_enbin0 -> 31 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/221_enbin49 -> 49 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/224_enbin303 -> 303 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/226_enbin280 -> 471 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/242_enbin140 -> 140 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/244_enbin488 -> 537 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/244_ptbin95 -> 238 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/245_enbin325 -> 280 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/245_ptbin325 -> 67 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/886_enbin241 -> 235 bytes
-rw-r--r--java/src/com/android/i18n/phonenumbers/geocoding/data/configbin4907 -> 4943 bytes
63 files changed, 77 insertions, 30 deletions
diff --git a/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java b/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
index 69bb3519..7e885bf6 100644
--- a/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
+++ b/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
@@ -31,10 +31,10 @@ public class CountryCodeToRegionCodeMap {
// countries sharing a calling code, such as the NANPA countries, the one
// indicated with "isMainCountryForCode" in the metadata should be first.
static Map<Integer, List<String>> getCountryCodeToRegionCodeMap() {
- // The capacity is set to 281 as there are 211 different country codes,
+ // The capacity is set to 286 as there are 215 different country codes,
// and this offers a load factor of roughly 0.75.
Map<Integer, List<String>> countryCodeToRegionCodeMap =
- new HashMap<Integer, List<String>>(281);
+ new HashMap<Integer, List<String>>(286);
ArrayList<String> listWithRegionCode;
@@ -808,11 +808,27 @@ public class CountryCodeToRegionCodeMap {
countryCodeToRegionCodeMap.put(856, listWithRegionCode);
listWithRegionCode = new ArrayList<String>(1);
+ listWithRegionCode.add("001");
+ countryCodeToRegionCodeMap.put(870, listWithRegionCode);
+
+ listWithRegionCode = new ArrayList<String>(1);
+ listWithRegionCode.add("001");
+ countryCodeToRegionCodeMap.put(878, listWithRegionCode);
+
+ listWithRegionCode = new ArrayList<String>(1);
listWithRegionCode.add("BD");
countryCodeToRegionCodeMap.put(880, listWithRegionCode);
listWithRegionCode = new ArrayList<String>(1);
listWithRegionCode.add("001");
+ countryCodeToRegionCodeMap.put(881, listWithRegionCode);
+
+ listWithRegionCode = new ArrayList<String>(1);
+ listWithRegionCode.add("001");
+ countryCodeToRegionCodeMap.put(882, listWithRegionCode);
+
+ listWithRegionCode = new ArrayList<String>(1);
+ listWithRegionCode.add("001");
countryCodeToRegionCodeMap.put(883, listWithRegionCode);
listWithRegionCode = new ArrayList<String>(1);
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
index a05c8326..581dee37 100644
--- a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
+++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
@@ -49,7 +49,8 @@ import java.util.regex.Pattern;
*
* NOTE: A lot of methods in this class require Region Code strings. These must be provided using
* ISO 3166-1 two-letter country-code format. These should be in upper-case. The list of the codes
- * can be found here: http://www.iso.org/iso/english_country_names_and_code_elements
+ * can be found here:
+ * http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm
*
* @author Shaopeng Jia
* @author Lara Rennie
@@ -58,7 +59,7 @@ public class PhoneNumberUtil {
/** Flags to use when compiling regular expressions for phone numbers. */
static final int REGEX_FLAGS = Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE;
// The minimum and maximum length of the national significant number.
- private static final int MIN_LENGTH_FOR_NSN = 3;
+ private static final int MIN_LENGTH_FOR_NSN = 2;
// The ITU says the maximum length should be 15, but we have found longer numbers in Germany.
static final int MAX_LENGTH_FOR_NSN = 16;
// The maximum length of the country calling code.
@@ -102,9 +103,8 @@ public class PhoneNumberUtil {
private static final String RFC3966_EXTN_PREFIX = ";ext=";
private static final String RFC3966_PREFIX = "tel:";
- // We include the "+" here since RFC3966 format specifies that the context must be specified in
- // international format.
- private static final String RFC3966_PHONE_CONTEXT = ";phone-context=+";
+ private static final String RFC3966_PHONE_CONTEXT = ";phone-context=";
+ private static final String RFC3966_ISDN_SUBADDRESS = ";isub=";
// A map that contains characters that are essential when dialling. That means any of the
// characters in this map must not be removed from a number when dialing, otherwise the call will
@@ -172,7 +172,7 @@ public class PhoneNumberUtil {
HashMap<Character, Character> diallableCharMap = new HashMap<Character, Character>();
diallableCharMap.putAll(asciiDigitMappings);
- diallableCharMap.put('+', '+');
+ diallableCharMap.put(PLUS_SIGN, PLUS_SIGN);
diallableCharMap.put('*', '*');
DIALLABLE_CHAR_MAPPINGS = Collections.unmodifiableMap(diallableCharMap);
@@ -219,7 +219,7 @@ public class PhoneNumberUtil {
// placeholder for carrier information in some phone numbers. Full-width variants are also
// present.
static final String VALID_PUNCTUATION = "-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F " +
- "\u00A0\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E";
+ "\u00A0\u00AD\u200B\u2060\u3000()\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E";
private static final String DIGITS = "\\p{Nd}";
// We accept alpha characters in phone numbers, ASCII only, upper and lower case.
@@ -617,7 +617,7 @@ public class PhoneNumberUtil {
/**
* Checks to see if the string of characters could possibly be a phone number at all. At the
- * moment, checks to see that the string begins with at least 3 digits, ignoring any punctuation
+ * moment, checks to see that the string begins with at least 2 digits, ignoring any punctuation
* commonly found in phone numbers.
* This method does not require the number to be normalized in advance - but does assume that
* leading non-number symbols have been removed, such as by the method extractPossibleNumber.
@@ -1341,7 +1341,9 @@ public class PhoneNumberUtil {
// If no digit is inserted/removed/modified as a result of our formatting, we return the
// formatted phone number; otherwise we return the raw input the user entered.
return (formattedNumber != null &&
- normalizeDigitsOnly(formattedNumber).equals(normalizeDigitsOnly(rawInput)))
+ normalizeHelper(formattedNumber, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */)
+ .equals(normalizeHelper(
+ rawInput, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */)))
? formattedNumber
: rawInput;
}
@@ -2272,7 +2274,7 @@ public class PhoneNumberUtil {
phoneNumber.setCountryCodeSource(countryCodeSource);
}
if (countryCodeSource != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
- if (fullNumber.length() < MIN_LENGTH_FOR_NSN) {
+ if (fullNumber.length() <= MIN_LENGTH_FOR_NSN) {
throw new NumberParseException(NumberParseException.ErrorType.TOO_SHORT_AFTER_IDD,
"Phone number had an IDD, but after this was not "
+ "long enough to be a viable phone number.");
@@ -2494,7 +2496,8 @@ public class PhoneNumberUtil {
* particular region is not performed. This can be done separately with {@link #isValidNumber}.
*
* @param numberToParse number that we are attempting to parse. This can contain formatting
- * such as +, ( and -, as well as a phone number extension.
+ * such as +, ( and -, as well as a phone number extension. It can also
+ * be provided in RFC3966 format.
* @param defaultRegion region that we are expecting the number to be from. This is only used
* if the number being parsed is not written in international format.
* The country_code for the number in this case would be stored as that
@@ -2613,24 +2616,8 @@ public class PhoneNumberUtil {
"The string supplied was too long to parse.");
}
- int indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT);
StringBuilder nationalNumber = new StringBuilder();
- if (indexOfPhoneContext > 0) {
- // Prefix the number with the phone context. The offset here is because the context we are
- // expecting to match should start with a "+" sign, and we want to include this at the start
- // of the number.
- nationalNumber.append(numberToParse.substring(indexOfPhoneContext +
- RFC3966_PHONE_CONTEXT.length() - 1));
- // Now append everything between the "tel:" prefix and the phone-context.
- nationalNumber.append(numberToParse.substring(
- numberToParse.indexOf(RFC3966_PREFIX) + RFC3966_PREFIX.length(), indexOfPhoneContext));
- // Note that phone-contexts that are URLs will not be parsed - isViablePhoneNumber will throw
- // an exception below.
- } else {
- // Extract a possible number from the string passed in (this strips leading characters that
- // could not be the start of a phone number.)
- nationalNumber.append(extractPossibleNumber(numberToParse));
- }
+ buildNationalNumberForParsing(numberToParse, nationalNumber);
if (!isViablePhoneNumber(nationalNumber.toString())) {
throw new NumberParseException(NumberParseException.ErrorType.NOT_A_NUMBER,
@@ -2725,6 +2712,50 @@ public class PhoneNumberUtil {
}
/**
+ * Converts numberToParse to a form that we can parse and write it to nationalNumber if it is
+ * written in RFC3966; otherwise extract a possible number out of it and write to nationalNumber.
+ */
+ private void buildNationalNumberForParsing(String numberToParse, StringBuilder nationalNumber) {
+ int indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT);
+ if (indexOfPhoneContext > 0) {
+ int phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT.length();
+ // If the phone context contains a phone number prefix, we need to capture it, whereas domains
+ // will be ignored.
+ if (numberToParse.charAt(phoneContextStart) == PLUS_SIGN) {
+ // Additional parameters might follow the phone context. If so, we will remove them here
+ // because the parameters after phone context are not important for parsing the
+ // phone number.
+ int phoneContextEnd = numberToParse.indexOf(';', phoneContextStart);
+ if (phoneContextEnd > 0) {
+ nationalNumber.append(numberToParse.substring(phoneContextStart, phoneContextEnd));
+ } else {
+ nationalNumber.append(numberToParse.substring(phoneContextStart));
+ }
+ }
+
+ // Now append everything between the "tel:" prefix and the phone-context. This should include
+ // the national number, an optional extension or isdn-subaddress component.
+ nationalNumber.append(numberToParse.substring(
+ numberToParse.indexOf(RFC3966_PREFIX) + RFC3966_PREFIX.length(), indexOfPhoneContext));
+ } else {
+ // Extract a possible number from the string passed in (this strips leading characters that
+ // could not be the start of a phone number.)
+ nationalNumber.append(extractPossibleNumber(numberToParse));
+ }
+
+ // Delete the isdn-subaddress and everything after it if it is present. Note extension won't
+ // appear at the same time with isdn-subaddress according to paragraph 5.3 of the RFC3966 spec,
+ int indexOfIsdn = nationalNumber.indexOf(RFC3966_ISDN_SUBADDRESS);
+ if (indexOfIsdn > 0) {
+ nationalNumber.delete(indexOfIsdn, nationalNumber.length());
+ }
+ // If both phone context and isdn-subaddress are absent but other parameters are present, the
+ // parameters are left in nationalNumber. This is because we are concerned about deleting
+ // content from a potential number string when there is no strong evidence that the number is
+ // actually written in RFC3966.
+ }
+
+ /**
* Takes two phone numbers and compares them for equality.
*
* <p>Returns EXACT_MATCH if the country_code, NSN, presence of a leading zero for Italian numbers
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870
new file mode 100644
index 00000000..2e8834e3
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878
new file mode 100644
index 00000000..205a5795
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881
new file mode 100644
index 00000000..3bda4511
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882
new file mode 100644
index 00000000..9befe415
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
index 52de7be7..ae456ab8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
index 4fde50dd..b75959f6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
index 10f648f3..ba0f3984 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
index c1ad0237..479d8fc3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
index 9cc62646..ebf37a24 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
index ca99fc0b..19604989 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
index 5598d7fb..857e66b3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
index de374d10..3803a1aa 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
index 484f15d3..84ac0f54 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
index 9163e1b0..b35d44f0 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
index fe2db61d..739f03b3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
index 5b832761..192c1751 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
index 16582aa0..89b83ded 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
index fbc99608..d4bc38d9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
index 15e0c7d7..fe51d429 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
index 0b3561a8..cab9953f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
index 5faf3433..9419291f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
index 15576b09..1ec08ab2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
index 5383277b..5af5d869 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
index d9fc3f99..97006bee 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
index b6a16d97..de03296d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
index 9e97693e..e5792b0f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
index cf386eea..27a156e5 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
index bb616c29..5ee5bdc9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
index 6b2dba9c..e8b1b4be 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
index 7819739c..76ad0671 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
index c0e47ee0..0f2380c1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
index bf444b7f..909ac3c1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
index a1f84c75..270b2cf7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
index 14dbe77f..949f4500 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
index 5dcd3849..c84ddd77 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
index 6074b5af..e0eb9f87 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
index e4acf01c..14bc955b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
index 61fb88ad..a725f8c3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
index 5648f1c5..4c54b7a6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
index e3924d3f..3e8489d1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
index fd3ed6b4..deafc553 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
index 8cf8e837..713a01a9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
index 6b254965..fd2af8a3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS
index a8293fd4..8ba01081 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
index a15f1183..6d336acd 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
index 08144198..ecdaced3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
index 545ddc01..881a9a5e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
index 9a11d90d..f6ced143 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1431_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1431_en
new file mode 100644
index 00000000..412c0099
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1431_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1669_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1669_en
new file mode 100644
index 00000000..b3bf8a03
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1669_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/1873_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/1873_en
new file mode 100644
index 00000000..78e7da11
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/1873_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en
index b876d301..87a8cc14 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en
index e63507da..1a9cae3c 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en
index ed31886e..41298f15 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en
index 86c316fa..2ad2a1a1 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en
index 59c00b9d..7234500a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
index 34cf12b9..0395f3ec 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en
index 2738fe8b..377f1634 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
index 2738fe8b..40171fab 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/886_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/886_en
index 497c293d..7bed31bb 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/886_en
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/886_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/config b/java/src/com/android/i18n/phonenumbers/geocoding/data/config
index 1f71c413..181a1e21 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/config
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/config
Binary files differ