Use generated source not jarjar

This is in preparation to adding UnsupportedAppUsage annotations to the
source.

Note: Although the classes in the android/ directory are in the correct
package and so do not need to be moved to a different package they do
reference classes that are in the wrong package and so they need
those references transformed.

Tested using:
  m -j32 droid
  adb reboot bootloader
  fastboot flashall -w
  m -j32 cts
  cts-tradefed run cts -m CtsTelephonyTestCases -t android.telephony.cts.PhoneNumberUtilsTest

Bug: 117818301
Test: see above
Change-Id: I523e98eabc7eddff593afeddd399c11061664a59
diff --git a/Android.bp b/Android.bp
index 500ea48..51f3ee5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -21,17 +21,16 @@
     // For the platform, compile everything except the carrier to phone number
     // which isn't used.
     java_resource_dirs: [
-        "libphonenumber/src",
-        "geocoder/src",
-        "internal/prefixmapper/src",
+        "repackaged/libphonenumber/src",
+        "repackaged/geocoder/src",
+        "repackaged/internal/prefixmapper/src",
     ],
 
     srcs: [
-        "libphonenumber/src/**/*.java",
-        "geocoder/src/**/*.java",
-        "internal/prefixmapper/src/**/*.java",
+        "repackaged/libphonenumber/src/**/*.java",
+        "repackaged/geocoder/src/**/*.java",
+        "repackaged/internal/prefixmapper/src/**/*.java",
     ],
-    jarjar_rules: "jarjar-rules.txt",
 
     sdk_version: "core_current",
     java_version: "1.7",
@@ -73,4 +72,3 @@
     sdk_version: "9",
     java_version: "1.7",
 }
-
diff --git a/jarjar-rules.txt b/jarjar-rules.txt
deleted file mode 100644
index 0c77c2a..0000000
--- a/jarjar-rules.txt
+++ /dev/null
@@ -1 +0,0 @@
-rule com.google.** com.android.@1
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/PhoneNumberToTimeZonesMapper.java b/repackaged/geocoder/src/com/android/i18n/phonenumbers/PhoneNumberToTimeZonesMapper.java
new file mode 100644
index 0000000..0016005
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/PhoneNumberToTimeZonesMapper.java
@@ -0,0 +1,181 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberType;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import com.android.i18n.phonenumbers.prefixmapper.PrefixTimeZonesMap;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * An offline mapper from phone numbers to time zones.
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PhoneNumberToTimeZonesMapper {
+  private static final String MAPPING_DATA_DIRECTORY =
+      "/com/android/i18n/phonenumbers/timezones/data/";
+  private static final String MAPPING_DATA_FILE_NAME = "map_data";
+  // This is defined by ICU as the unknown time zone.
+  private static final String UNKNOWN_TIMEZONE = "Etc/Unknown";
+  // A list with the ICU unknown time zone as single element.
+  // @VisibleForTesting
+  static final List<String> UNKNOWN_TIME_ZONE_LIST = new ArrayList<String>(1);
+  static {
+    UNKNOWN_TIME_ZONE_LIST.add(UNKNOWN_TIMEZONE);
+  }
+
+  private static final Logger logger =
+      Logger.getLogger(PhoneNumberToTimeZonesMapper.class.getName());
+
+  private PrefixTimeZonesMap prefixTimeZonesMap = null;
+
+  // @VisibleForTesting
+  PhoneNumberToTimeZonesMapper(String prefixTimeZonesMapDataDirectory) {
+    this.prefixTimeZonesMap = loadPrefixTimeZonesMapFromFile(
+        prefixTimeZonesMapDataDirectory + MAPPING_DATA_FILE_NAME);
+  }
+
+  private PhoneNumberToTimeZonesMapper(PrefixTimeZonesMap prefixTimeZonesMap) {
+    this.prefixTimeZonesMap = prefixTimeZonesMap;
+  }
+
+  private static PrefixTimeZonesMap loadPrefixTimeZonesMapFromFile(String path) {
+    InputStream source = PhoneNumberToTimeZonesMapper.class.getResourceAsStream(path);
+    ObjectInputStream in = null;
+    PrefixTimeZonesMap map = new PrefixTimeZonesMap();
+    try {
+      in = new ObjectInputStream(source);
+      map.readExternal(in);
+    } catch (IOException e) {
+      logger.log(Level.WARNING, e.toString());
+    } finally {
+      close(in);
+    }
+    return map;
+  }
+
+  private static void close(InputStream in) {
+    if (in != null) {
+      try {
+        in.close();
+      } catch (IOException e) {
+        logger.log(Level.WARNING, e.toString());
+      }
+    }
+  }
+
+  /**
+   * Helper class used for lazy instantiation of a PhoneNumberToTimeZonesMapper. This also loads the
+   * map data in a thread-safe way.
+   */
+  private static class LazyHolder {
+    private static final PhoneNumberToTimeZonesMapper INSTANCE;
+    static {
+      PrefixTimeZonesMap map =
+          loadPrefixTimeZonesMapFromFile(MAPPING_DATA_DIRECTORY + MAPPING_DATA_FILE_NAME);
+      INSTANCE = new PhoneNumberToTimeZonesMapper(map);
+    }
+  }
+
+  /**
+   * Gets a {@link PhoneNumberToTimeZonesMapper} instance.
+   *
+   * <p> The {@link PhoneNumberToTimeZonesMapper} is implemented as a singleton. Therefore, calling
+   * this method multiple times will only result in one instance being created.
+   *
+   * @return  a {@link PhoneNumberToTimeZonesMapper} instance
+   */
+  public static synchronized PhoneNumberToTimeZonesMapper getInstance() {
+    return LazyHolder.INSTANCE;
+  }
+
+  /**
+   * Returns a list of time zones to which a phone number belongs.
+   *
+   * <p>This method assumes the validity of the number passed in has already been checked, and that
+   * the number is geo-localizable. We consider fixed-line and mobile numbers possible candidates
+   * for geo-localization.
+   *
+   * @param number  a valid phone number for which we want to get the time zones to which it belongs
+   * @return  a list of the corresponding time zones or a single element list with the default
+   *     unknown time zone if no other time zone was found or if the number was invalid
+   */
+  public List<String> getTimeZonesForGeographicalNumber(PhoneNumber number) {
+    return getTimeZonesForGeocodableNumber(number);
+  }
+
+  /**
+   * As per {@link #getTimeZonesForGeographicalNumber(PhoneNumber)} but explicitly checks
+   * the validity of the number passed in.
+   *
+   * @param number  the phone number for which we want to get the time zones to which it belongs
+   * @return  a list of the corresponding time zones or a single element list with the default
+   *     unknown time zone if no other time zone was found or if the number was invalid
+   */
+  public List<String> getTimeZonesForNumber(PhoneNumber number) {
+    PhoneNumberType numberType = PhoneNumberUtil.getInstance().getNumberType(number);
+    if (numberType == PhoneNumberType.UNKNOWN) {
+      return UNKNOWN_TIME_ZONE_LIST;
+    } else if (!PhoneNumberUtil.getInstance().isNumberGeographical(
+        numberType, number.getCountryCode())) {
+      return getCountryLevelTimeZonesforNumber(number);
+    }
+    return getTimeZonesForGeographicalNumber(number);
+  }
+
+  /**
+   * Returns a String with the ICU unknown time zone.
+   */
+  public static String getUnknownTimeZone() {
+    return UNKNOWN_TIMEZONE;
+  }
+
+  /**
+   * Returns a list of time zones to which a geocodable phone number belongs.
+   *
+   * @param number  the phone number for which we want to get the time zones to which it belongs
+   * @return  the list of corresponding  time zones or a single element list with the default
+   *     unknown time zone if no other time zone was found or if the number was invalid
+   */
+  private List<String> getTimeZonesForGeocodableNumber(PhoneNumber number) {
+    List<String> timezones = prefixTimeZonesMap.lookupTimeZonesForNumber(number);
+    return Collections.unmodifiableList(timezones.isEmpty() ? UNKNOWN_TIME_ZONE_LIST
+                                                            : timezones);
+  }
+
+  /**
+   * Returns the list of time zones corresponding to the country calling code of {@code number}.
+   *
+   * @param number  the phone number to look up
+   * @return  the list of corresponding time zones or a single element list with the default
+   *     unknown time zone if no other time zone was found
+   */
+  private List<String> getCountryLevelTimeZonesforNumber(PhoneNumber number) {
+    List<String> timezones = prefixTimeZonesMap.lookupCountryLevelTimeZonesForNumber(number);
+    return Collections.unmodifiableList(timezones.isEmpty() ? UNKNOWN_TIME_ZONE_LIST
+                                                            : timezones);
+  }
+}
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
new file mode 100644
index 0000000..4070f80
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
@@ -0,0 +1,222 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.geocoding;
+
+import com.android.i18n.phonenumbers.NumberParseException;
+import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberType;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import com.android.i18n.phonenumbers.prefixmapper.PrefixFileReader;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * An offline geocoder which provides geographical information related to a phone number.
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PhoneNumberOfflineGeocoder {
+  private static PhoneNumberOfflineGeocoder instance = null;
+  private static final String MAPPING_DATA_DIRECTORY =
+      "/com/android/i18n/phonenumbers/geocoding/data/";
+  private PrefixFileReader prefixFileReader = null;
+
+  private final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
+
+  // @VisibleForTesting
+  PhoneNumberOfflineGeocoder(String phonePrefixDataDirectory) {
+    prefixFileReader = new PrefixFileReader(phonePrefixDataDirectory);
+  }
+
+  /**
+   * Gets a {@link PhoneNumberOfflineGeocoder} instance to carry out international phone number
+   * geocoding.
+   *
+   * <p> The {@link PhoneNumberOfflineGeocoder} is implemented as a singleton. Therefore, calling
+   * this method multiple times will only result in one instance being created.
+   *
+   * @return  a {@link PhoneNumberOfflineGeocoder} instance
+   */
+  public static synchronized PhoneNumberOfflineGeocoder getInstance() {
+    if (instance == null) {
+      instance = new PhoneNumberOfflineGeocoder(MAPPING_DATA_DIRECTORY);
+    }
+    return instance;
+  }
+
+  /**
+   * Returns the customary display name in the given language for the given territory the phone
+   * number is from. If it could be from many territories, nothing is returned.
+   */
+  private String getCountryNameForNumber(PhoneNumber number, Locale language) {
+    List<String> regionCodes =
+        phoneUtil.getRegionCodesForCountryCode(number.getCountryCode());
+    if (regionCodes.size() == 1) {
+      return getRegionDisplayName(regionCodes.get(0), language);
+    } else {
+      String regionWhereNumberIsValid = "ZZ";
+      for (String regionCode : regionCodes) {
+        if (phoneUtil.isValidNumberForRegion(number, regionCode)) {
+          // If the number has already been found valid for one region, then we don't know which
+          // region it belongs to so we return nothing.
+          if (!regionWhereNumberIsValid.equals("ZZ")) {
+            return "";
+          }
+          regionWhereNumberIsValid = regionCode;
+        }
+      }
+      return getRegionDisplayName(regionWhereNumberIsValid, language);
+    }
+  }
+
+  /**
+   * Returns the customary display name in the given language for the given region.
+   */
+  private String getRegionDisplayName(String regionCode, Locale language) {
+    return (regionCode == null || regionCode.equals("ZZ")
+        || regionCode.equals(PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY))
+        ? "" : new Locale("", regionCode).getDisplayCountry(language);
+  }
+
+  /**
+   * Returns a text description for the given phone number, in the language provided. The
+   * description might consist of the name of the country where the phone number is from, or the
+   * name of the geographical area the phone number is from if more detailed information is
+   * available.
+   *
+   * <p>This method assumes the validity of the number passed in has already been checked, and that
+   * the number is suitable for geocoding. We consider fixed-line and mobile numbers possible
+   * candidates for geocoding.
+   *
+   * @param number  a valid phone number for which we want to get a text description
+   * @param languageCode  the language code for which the description should be written
+   * @return  a text description for the given language code for the given phone number, or an
+   *     empty string if the number could come from multiple countries, or the country code is
+   *     in fact invalid
+   */
+  public String getDescriptionForValidNumber(PhoneNumber number, Locale languageCode) {
+    String langStr = languageCode.getLanguage();
+    String scriptStr = "";  // No script is specified
+    String regionStr = languageCode.getCountry();
+
+    String areaDescription;
+    String mobileToken = PhoneNumberUtil.getCountryMobileToken(number.getCountryCode());
+    String nationalNumber = phoneUtil.getNationalSignificantNumber(number);
+    if (!mobileToken.equals("") && nationalNumber.startsWith(mobileToken)) {
+      // In some countries, eg. Argentina, mobile numbers have a mobile token before the national
+      // destination code, this should be removed before geocoding.
+      nationalNumber = nationalNumber.substring(mobileToken.length());
+      String region = phoneUtil.getRegionCodeForCountryCode(number.getCountryCode());
+      PhoneNumber copiedNumber;
+      try {
+        copiedNumber = phoneUtil.parse(nationalNumber, region);
+      } catch (NumberParseException e) {
+        // If this happens, just reuse what we had.
+        copiedNumber = number;
+      }
+      areaDescription = prefixFileReader.getDescriptionForNumber(copiedNumber, langStr, scriptStr,
+                                                                 regionStr);
+    } else {
+      areaDescription = prefixFileReader.getDescriptionForNumber(number, langStr, scriptStr,
+                                                                 regionStr);
+    }
+    return (areaDescription.length() > 0)
+        ? areaDescription : getCountryNameForNumber(number, languageCode);
+  }
+
+  /**
+   * As per {@link #getDescriptionForValidNumber(PhoneNumber, Locale)} but also considers the
+   * region of the user. If the phone number is from the same region as the user, only a lower-level
+   * description will be returned, if one exists. Otherwise, the phone number's region will be
+   * returned, with optionally some more detailed information.
+   *
+   * <p>For example, for a user from the region "US" (United States), we would show "Mountain View,
+   * CA" for a particular number, omitting the United States from the description. For a user from
+   * the United Kingdom (region "GB"), for the same number we may show "Mountain View, CA, United
+   * States" or even just "United States".
+   *
+   * <p>This method assumes the validity of the number passed in has already been checked.
+   *
+   * @param number  the phone number for which we want to get a text description
+   * @param languageCode  the language code for which the description should be written
+   * @param userRegion  the region code for a given user. This region will be omitted from the
+   *     description if the phone number comes from this region. It should be a two-letter
+   *     upper-case CLDR region code.
+   * @return  a text description for the given language code for the given phone number, or an
+   *     empty string if the number could come from multiple countries, or the country code is
+   *     in fact invalid
+   */
+  public String getDescriptionForValidNumber(PhoneNumber number, Locale languageCode,
+                                             String userRegion) {
+    // If the user region matches the number's region, then we just show the lower-level
+    // description, if one exists - if no description exists, we will show the region(country) name
+    // for the number.
+    String regionCode = phoneUtil.getRegionCodeForNumber(number);
+    if (userRegion.equals(regionCode)) {
+      return getDescriptionForValidNumber(number, languageCode);
+    }
+    // Otherwise, we just show the region(country) name for now.
+    return getRegionDisplayName(regionCode, languageCode);
+    // TODO: Concatenate the lower-level and country-name information in an appropriate
+    // way for each language.
+  }
+
+  /**
+   * As per {@link #getDescriptionForValidNumber(PhoneNumber, Locale)} but explicitly checks
+   * the validity of the number passed in.
+   *
+   * @param number  the phone number for which we want to get a text description
+   * @param languageCode  the language code for which the description should be written
+   * @return  a text description for the given language code for the given phone number, or empty
+   *     string if the number passed in is invalid or could belong to multiple countries
+   */
+  public String getDescriptionForNumber(PhoneNumber number, Locale languageCode) {
+    PhoneNumberType numberType = phoneUtil.getNumberType(number);
+    if (numberType == PhoneNumberType.UNKNOWN) {
+      return "";
+    } else if (!phoneUtil.isNumberGeographical(numberType, number.getCountryCode())) {
+      return getCountryNameForNumber(number, languageCode);
+    }
+    return getDescriptionForValidNumber(number, languageCode);
+  }
+
+  /**
+   * As per {@link #getDescriptionForValidNumber(PhoneNumber, Locale, String)} but
+   * explicitly checks the validity of the number passed in.
+   *
+   * @param number  the phone number for which we want to get a text description
+   * @param languageCode  the language code for which the description should be written
+   * @param userRegion  the region code for a given user. This region will be omitted from the
+   *     description if the phone number comes from this region. It should be a two-letter
+   *     upper-case CLDR region code.
+   * @return  a text description for the given language code for the given phone number, or empty
+   *     string if the number passed in is invalid or could belong to multiple countries
+   */
+  public String getDescriptionForNumber(PhoneNumber number, Locale languageCode,
+                                        String userRegion) {
+    PhoneNumberType numberType = phoneUtil.getNumberType(number);
+    if (numberType == PhoneNumberType.UNKNOWN) {
+      return "";
+    } else if (!phoneUtil.isNumberGeographical(numberType, number.getCountryCode())) {
+      return getCountryNameForNumber(number, languageCode);
+    }
+    return getDescriptionForValidNumber(number, languageCode, userRegion);
+  }
+}
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1201_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1201_en
new file mode 100644
index 0000000..738cdda
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1201_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1202_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1202_en
new file mode 100644
index 0000000..306ce02
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1202_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1203_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1203_en
new file mode 100644
index 0000000..3d6b888
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1203_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1204_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1204_en
new file mode 100644
index 0000000..e647f8b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1204_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1205_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1205_en
new file mode 100644
index 0000000..158325d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1205_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1206_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1206_en
new file mode 100644
index 0000000..c8e006d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1206_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1207_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1207_en
new file mode 100644
index 0000000..c0d7fed
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1207_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1208_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1208_en
new file mode 100644
index 0000000..7902c88
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1208_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1209_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1209_en
new file mode 100644
index 0000000..342bd1d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1209_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1210_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1210_en
new file mode 100644
index 0000000..519470d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1210_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1212_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1212_en
new file mode 100644
index 0000000..d4179c0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1212_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1213_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1213_en
new file mode 100644
index 0000000..e7315eb
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1213_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1214_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1214_en
new file mode 100644
index 0000000..24fe37e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1214_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1215_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1215_en
new file mode 100644
index 0000000..5a82d6b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1215_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1216_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1216_en
new file mode 100644
index 0000000..de9ae28
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1216_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1217_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1217_en
new file mode 100644
index 0000000..42ed99b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1217_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1218_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1218_en
new file mode 100644
index 0000000..69437c8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1218_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1219_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1219_en
new file mode 100644
index 0000000..28d49d4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1219_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1220_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1220_en
new file mode 100644
index 0000000..9f2bd2a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1220_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1223_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1223_en
new file mode 100644
index 0000000..f162631
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1223_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1224_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1224_en
new file mode 100644
index 0000000..edc41d8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1224_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1225_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1225_en
new file mode 100644
index 0000000..72a7e4f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1225_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1226_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1226_en
new file mode 100644
index 0000000..7f2d4fa
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1226_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1228_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1228_en
new file mode 100644
index 0000000..3088596
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1228_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1229_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1229_en
new file mode 100644
index 0000000..d2c7376
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1229_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1231_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1231_en
new file mode 100644
index 0000000..b7239f4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1231_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1234_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1234_en
new file mode 100644
index 0000000..cfa857a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1234_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1236_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1236_en
new file mode 100644
index 0000000..40b369e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1236_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1239_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1239_en
new file mode 100644
index 0000000..fc09d69
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1239_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1240_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1240_en
new file mode 100644
index 0000000..ca467e2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1240_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1242_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1242_en
new file mode 100644
index 0000000..6b42b61
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1242_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1248_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1248_en
new file mode 100644
index 0000000..fce5b26
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1248_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1249_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1249_en
new file mode 100644
index 0000000..c3f6671
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1249_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1250_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1250_en
new file mode 100644
index 0000000..cb9032c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1250_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1251_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1251_en
new file mode 100644
index 0000000..3b58823
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1251_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1252_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1252_en
new file mode 100644
index 0000000..e5b118b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1252_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1253_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1253_en
new file mode 100644
index 0000000..a9fa33f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1253_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1254_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1254_en
new file mode 100644
index 0000000..7653a15
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1254_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1256_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1256_en
new file mode 100644
index 0000000..5ce5759
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1256_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1260_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1260_en
new file mode 100644
index 0000000..0f843a2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1260_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1262_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1262_en
new file mode 100644
index 0000000..18fbe4d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1262_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1267_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1267_en
new file mode 100644
index 0000000..5b7fc86
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1267_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1269_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1269_en
new file mode 100644
index 0000000..f3c9eb1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1269_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1270_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1270_en
new file mode 100644
index 0000000..f08e69b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1270_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1272_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1272_en
new file mode 100644
index 0000000..6c7efbc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1272_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1276_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1276_en
new file mode 100644
index 0000000..4f7afc7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1276_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1279_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1279_en
new file mode 100644
index 0000000..2f8cd4e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1279_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1281_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1281_en
new file mode 100644
index 0000000..e77e3dd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1281_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1283_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1283_en
new file mode 100644
index 0000000..171e2ee
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1283_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1289_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1289_en
new file mode 100644
index 0000000..3ad70c6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1289_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1301_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1301_en
new file mode 100644
index 0000000..72ae493
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1301_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1302_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1302_en
new file mode 100644
index 0000000..9a8f0d0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1302_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1303_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1303_en
new file mode 100644
index 0000000..f8977e7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1303_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1304_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1304_en
new file mode 100644
index 0000000..05affb8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1304_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1305_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1305_en
new file mode 100644
index 0000000..4a712d2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1305_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1306_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1306_en
new file mode 100644
index 0000000..3a09853
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1306_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1307_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1307_en
new file mode 100644
index 0000000..1e47713
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1307_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1308_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1308_en
new file mode 100644
index 0000000..0439103
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1308_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1309_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1309_en
new file mode 100644
index 0000000..a7b0ee3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1309_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1310_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1310_en
new file mode 100644
index 0000000..a09548e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1310_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1312_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1312_en
new file mode 100644
index 0000000..9a2fdc6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1312_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1313_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1313_en
new file mode 100644
index 0000000..499d4cc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1313_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1314_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1314_en
new file mode 100644
index 0000000..87f62d6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1314_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1315_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1315_en
new file mode 100644
index 0000000..99db4f4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1315_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1316_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1316_en
new file mode 100644
index 0000000..99240c7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1316_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1317_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1317_en
new file mode 100644
index 0000000..fbd34c3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1317_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1318_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1318_en
new file mode 100644
index 0000000..3888496
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1318_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1319_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1319_en
new file mode 100644
index 0000000..0d26b46
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1319_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1320_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1320_en
new file mode 100644
index 0000000..ce98c69
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1320_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1321_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1321_en
new file mode 100644
index 0000000..f8292ef
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1321_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1323_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1323_en
new file mode 100644
index 0000000..20b1799
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1323_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1325_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1325_en
new file mode 100644
index 0000000..46091ed
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1325_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1330_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1330_en
new file mode 100644
index 0000000..1bda6b0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1330_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1331_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1331_en
new file mode 100644
index 0000000..d5f7c6c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1331_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1332_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1332_en
new file mode 100644
index 0000000..5208d75
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1332_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1334_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1334_en
new file mode 100644
index 0000000..dd1fcfe
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1334_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1336_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1336_en
new file mode 100644
index 0000000..3208387
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1336_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1337_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1337_en
new file mode 100644
index 0000000..a1c297f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1337_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1339_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1339_en
new file mode 100644
index 0000000..0c2e42b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1339_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1343_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1343_en
new file mode 100644
index 0000000..30fa7ed
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1343_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1345_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1345_en
new file mode 100644
index 0000000..cc5f70e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1345_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1346_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1346_en
new file mode 100644
index 0000000..a3176e2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1346_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1347_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1347_en
new file mode 100644
index 0000000..9772cb5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1347_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1351_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1351_en
new file mode 100644
index 0000000..eee213d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1351_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1352_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1352_en
new file mode 100644
index 0000000..f001b75
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1352_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1360_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1360_en
new file mode 100644
index 0000000..c639546
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1360_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1361_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1361_en
new file mode 100644
index 0000000..34d3317
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1361_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1364_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1364_en
new file mode 100644
index 0000000..238b4c9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1364_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1365_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1365_en
new file mode 100644
index 0000000..89d2590
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1365_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1380_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1380_en
new file mode 100644
index 0000000..44622e2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1380_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1385_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1385_en
new file mode 100644
index 0000000..4a4c1bb
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1385_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1386_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1386_en
new file mode 100644
index 0000000..32a565b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1386_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1401_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1401_en
new file mode 100644
index 0000000..869fd4f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1401_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1402_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1402_en
new file mode 100644
index 0000000..3111cbc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1402_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1403_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1403_en
new file mode 100644
index 0000000..89a2736
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1403_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1404_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1404_en
new file mode 100644
index 0000000..7eeefe8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1404_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1405_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1405_en
new file mode 100644
index 0000000..bf440cd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1405_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1406_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1406_en
new file mode 100644
index 0000000..aa6c0e9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1406_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1407_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1407_en
new file mode 100644
index 0000000..aa31c19
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1407_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1408_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1408_en
new file mode 100644
index 0000000..3e4ce5f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1408_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1409_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1409_en
new file mode 100644
index 0000000..80d7719
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1409_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1410_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1410_en
new file mode 100644
index 0000000..66ad9dd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1410_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1412_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1412_en
new file mode 100644
index 0000000..7b81a34
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1412_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1413_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1413_en
new file mode 100644
index 0000000..c22672c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1413_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1414_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1414_en
new file mode 100644
index 0000000..e3fbda6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1414_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1415_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1415_en
new file mode 100644
index 0000000..0ec8c74
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1415_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1416_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1416_en
new file mode 100644
index 0000000..f547275
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1416_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1417_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1417_en
new file mode 100644
index 0000000..148e1a2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1417_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1418_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1418_en
new file mode 100644
index 0000000..a7dfe64
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1418_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1419_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1419_en
new file mode 100644
index 0000000..c9b6308
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1419_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1423_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1423_en
new file mode 100644
index 0000000..3a8bc44
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1423_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1424_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1424_en
new file mode 100644
index 0000000..83a2cb4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1424_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1425_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1425_en
new file mode 100644
index 0000000..9160125
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1425_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1430_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1430_en
new file mode 100644
index 0000000..eb8782d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1430_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1431_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1431_en
new file mode 100644
index 0000000..412c009
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1431_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1432_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1432_en
new file mode 100644
index 0000000..81d3c8f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1432_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1434_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1434_en
new file mode 100644
index 0000000..4ab7d91
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1434_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1435_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1435_en
new file mode 100644
index 0000000..44c0dcc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1435_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1437_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1437_en
new file mode 100644
index 0000000..9992756
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1437_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1438_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1438_en
new file mode 100644
index 0000000..e253749
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1438_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1440_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1440_en
new file mode 100644
index 0000000..1aeb716
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1440_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1441_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1441_en
new file mode 100644
index 0000000..024ff72
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1441_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1442_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1442_en
new file mode 100644
index 0000000..3fdf84b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1442_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1443_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1443_en
new file mode 100644
index 0000000..ab579a4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1443_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1445_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1445_en
new file mode 100644
index 0000000..f94360d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1445_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1450_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1450_en
new file mode 100644
index 0000000..4feb4c7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1450_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1458_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1458_en
new file mode 100644
index 0000000..b4f99a3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1458_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1463_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1463_en
new file mode 100644
index 0000000..ccc7fac
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1463_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1469_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1469_en
new file mode 100644
index 0000000..5c9aea9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1469_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1470_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1470_en
new file mode 100644
index 0000000..29123ae
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1470_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1475_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1475_en
new file mode 100644
index 0000000..c1d58c4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1475_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1478_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1478_en
new file mode 100644
index 0000000..7a69e9f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1478_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1479_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1479_en
new file mode 100644
index 0000000..24f9440
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1479_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1480_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1480_en
new file mode 100644
index 0000000..2301d36
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1480_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1484_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1484_en
new file mode 100644
index 0000000..b99d7f8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1484_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1501_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1501_en
new file mode 100644
index 0000000..e713b7e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1501_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1502_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1502_en
new file mode 100644
index 0000000..97e9a53
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1502_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1503_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1503_en
new file mode 100644
index 0000000..2e242a1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1503_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1504_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1504_en
new file mode 100644
index 0000000..54fae9f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1504_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1505_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1505_en
new file mode 100644
index 0000000..48ea3e9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1505_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1506_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1506_en
new file mode 100644
index 0000000..eaa8495
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1506_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1507_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1507_en
new file mode 100644
index 0000000..635ee6e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1507_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1508_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1508_en
new file mode 100644
index 0000000..dadeaee
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1508_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1509_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1509_en
new file mode 100644
index 0000000..d1d7982
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1509_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1510_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1510_en
new file mode 100644
index 0000000..432422c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1510_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1512_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1512_en
new file mode 100644
index 0000000..779bc54
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1512_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1513_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1513_en
new file mode 100644
index 0000000..01fc83f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1513_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1514_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1514_en
new file mode 100644
index 0000000..736eb7d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1514_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1515_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1515_en
new file mode 100644
index 0000000..fe79267
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1515_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1516_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1516_en
new file mode 100644
index 0000000..a7b1314
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1516_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1517_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1517_en
new file mode 100644
index 0000000..5e49402
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1517_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1518_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1518_en
new file mode 100644
index 0000000..be1f0f2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1518_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1519_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1519_en
new file mode 100644
index 0000000..c43ecd6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1519_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1520_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1520_en
new file mode 100644
index 0000000..2099e17
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1520_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1530_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1530_en
new file mode 100644
index 0000000..77da775
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1530_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1531_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1531_en
new file mode 100644
index 0000000..867712c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1531_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1534_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1534_en
new file mode 100644
index 0000000..8122399
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1534_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1539_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1539_en
new file mode 100644
index 0000000..e97224b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1539_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1540_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1540_en
new file mode 100644
index 0000000..5a04caa
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1540_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1541_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1541_en
new file mode 100644
index 0000000..7cae6ee
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1541_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1548_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1548_en
new file mode 100644
index 0000000..cf1636a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1548_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1551_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1551_en
new file mode 100644
index 0000000..e36fbbc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1551_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1559_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1559_en
new file mode 100644
index 0000000..cc00fa0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1559_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1561_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1561_en
new file mode 100644
index 0000000..d58e47e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1561_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1562_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1562_en
new file mode 100644
index 0000000..fbc2449
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1562_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1563_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1563_en
new file mode 100644
index 0000000..f9c826c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1563_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1564_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1564_en
new file mode 100644
index 0000000..8b50002
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1564_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1567_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1567_en
new file mode 100644
index 0000000..4c005b5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1567_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1570_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1570_en
new file mode 100644
index 0000000..7ef5fe1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1570_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1571_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1571_en
new file mode 100644
index 0000000..f5fe194
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1571_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1573_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1573_en
new file mode 100644
index 0000000..97b5175
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1573_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1574_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1574_en
new file mode 100644
index 0000000..fdb404b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1574_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1575_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1575_en
new file mode 100644
index 0000000..7c8652c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1575_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1579_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1579_en
new file mode 100644
index 0000000..9574f1e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1579_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1580_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1580_en
new file mode 100644
index 0000000..012895f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1580_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1581_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1581_en
new file mode 100644
index 0000000..223fd37
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1581_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1585_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1585_en
new file mode 100644
index 0000000..665bb8f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1585_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1586_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1586_en
new file mode 100644
index 0000000..a61668b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1586_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1587_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1587_en
new file mode 100644
index 0000000..71f8a24
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1587_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1601_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1601_en
new file mode 100644
index 0000000..b034d16
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1601_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1602_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1602_en
new file mode 100644
index 0000000..00c8e9b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1602_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1603_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1603_en
new file mode 100644
index 0000000..d38464d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1603_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1604_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1604_en
new file mode 100644
index 0000000..74485d7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1604_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1605_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1605_en
new file mode 100644
index 0000000..65c3b6c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1605_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1606_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1606_en
new file mode 100644
index 0000000..7fed333
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1606_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1607_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1607_en
new file mode 100644
index 0000000..15c1d79
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1607_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1608_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1608_en
new file mode 100644
index 0000000..e83d1e2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1608_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1609_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1609_en
new file mode 100644
index 0000000..0caab16
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1609_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1610_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1610_en
new file mode 100644
index 0000000..960b47f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1610_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1612_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1612_en
new file mode 100644
index 0000000..c9f788b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1612_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1613_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1613_en
new file mode 100644
index 0000000..9002423
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1613_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1614_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1614_en
new file mode 100644
index 0000000..1d67ea5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1614_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1615_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1615_en
new file mode 100644
index 0000000..df22b4b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1615_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1616_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1616_en
new file mode 100644
index 0000000..572dee9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1616_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1617_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1617_en
new file mode 100644
index 0000000..a2cbbd3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1617_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1618_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1618_en
new file mode 100644
index 0000000..068f554
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1618_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1619_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1619_en
new file mode 100644
index 0000000..a5bfd6a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1619_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1620_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1620_en
new file mode 100644
index 0000000..558f9b0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1620_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1623_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1623_en
new file mode 100644
index 0000000..7294c6a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1623_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1626_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1626_en
new file mode 100644
index 0000000..fb16596
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1626_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1628_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1628_en
new file mode 100644
index 0000000..e4651f0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1628_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1629_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1629_en
new file mode 100644
index 0000000..cd009f1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1629_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1630_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1630_en
new file mode 100644
index 0000000..38dfc00
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1630_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1631_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1631_en
new file mode 100644
index 0000000..43200ef
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1631_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1636_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1636_en
new file mode 100644
index 0000000..c2a8108
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1636_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1639_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1639_en
new file mode 100644
index 0000000..090d2b4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1639_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1641_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1641_en
new file mode 100644
index 0000000..029375f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1641_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1646_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1646_en
new file mode 100644
index 0000000..c064ba3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1646_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1647_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1647_en
new file mode 100644
index 0000000..c000f64
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1647_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1649_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1649_en
new file mode 100644
index 0000000..0c11495
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1649_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1650_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1650_en
new file mode 100644
index 0000000..55293fb
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1650_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1651_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1651_en
new file mode 100644
index 0000000..3397a0e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1651_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1657_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1657_en
new file mode 100644
index 0000000..dd7858f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1657_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1660_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1660_en
new file mode 100644
index 0000000..5ae6908
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1660_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1661_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1661_en
new file mode 100644
index 0000000..e8a6159
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1661_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1662_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1662_en
new file mode 100644
index 0000000..4ab9592
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1662_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1667_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1667_en
new file mode 100644
index 0000000..878e9f0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1667_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1669_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1669_en
new file mode 100644
index 0000000..b3bf8a0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1669_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1671_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1671_en
new file mode 100644
index 0000000..df13b7a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1671_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1678_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1678_en
new file mode 100644
index 0000000..b2d0b54
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1678_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1680_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1680_en
new file mode 100644
index 0000000..157eac0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1680_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1681_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1681_en
new file mode 100644
index 0000000..b76ab1f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1681_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1682_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1682_en
new file mode 100644
index 0000000..b98d356
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1682_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1701_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1701_en
new file mode 100644
index 0000000..0b8af90
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1701_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1702_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1702_en
new file mode 100644
index 0000000..3e20271
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1702_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1703_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1703_en
new file mode 100644
index 0000000..80838a8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1703_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1704_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1704_en
new file mode 100644
index 0000000..40eba18
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1704_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1705_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1705_en
new file mode 100644
index 0000000..2ab1c13
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1705_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1706_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1706_en
new file mode 100644
index 0000000..4d8dd1c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1706_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1707_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1707_en
new file mode 100644
index 0000000..51812dc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1707_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1708_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1708_en
new file mode 100644
index 0000000..5b8ccb1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1708_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1709_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1709_en
new file mode 100644
index 0000000..c095549
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1709_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1712_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1712_en
new file mode 100644
index 0000000..3fa32c8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1712_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1713_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1713_en
new file mode 100644
index 0000000..c301aa2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1713_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1714_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1714_en
new file mode 100644
index 0000000..755a74a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1714_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1715_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1715_en
new file mode 100644
index 0000000..bcfd9ce
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1715_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1716_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1716_en
new file mode 100644
index 0000000..a6b3ee6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1716_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1717_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1717_en
new file mode 100644
index 0000000..3a33a09
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1717_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1718_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1718_en
new file mode 100644
index 0000000..40d8db1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1718_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1719_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1719_en
new file mode 100644
index 0000000..f4a7431
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1719_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1720_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1720_en
new file mode 100644
index 0000000..fbd0050
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1720_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1724_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1724_en
new file mode 100644
index 0000000..344a46b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1724_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1725_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1725_en
new file mode 100644
index 0000000..98690d0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1725_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1726_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1726_en
new file mode 100644
index 0000000..6b30f3c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1726_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1727_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1727_en
new file mode 100644
index 0000000..6e36ae3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1727_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1731_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1731_en
new file mode 100644
index 0000000..965cf8e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1731_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1732_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1732_en
new file mode 100644
index 0000000..efacd56
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1732_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1734_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1734_en
new file mode 100644
index 0000000..8647b39
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1734_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1737_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1737_en
new file mode 100644
index 0000000..6477b15
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1737_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1740_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1740_en
new file mode 100644
index 0000000..beb9874
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1740_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1743_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1743_en
new file mode 100644
index 0000000..29a919a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1743_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1747_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1747_en
new file mode 100644
index 0000000..24bb011
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1747_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1754_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1754_en
new file mode 100644
index 0000000..701f6a8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1754_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1757_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1757_en
new file mode 100644
index 0000000..d84adf9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1757_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1760_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1760_en
new file mode 100644
index 0000000..d0c02cf
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1760_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1762_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1762_en
new file mode 100644
index 0000000..1d7d568
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1762_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1763_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1763_en
new file mode 100644
index 0000000..99456c6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1763_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1765_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1765_en
new file mode 100644
index 0000000..8422436
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1765_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1769_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1769_en
new file mode 100644
index 0000000..2c1e5e8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1769_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1770_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1770_en
new file mode 100644
index 0000000..a45e61c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1770_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1772_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1772_en
new file mode 100644
index 0000000..aedb9a9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1772_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1773_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1773_en
new file mode 100644
index 0000000..3b5cb28
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1773_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1774_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1774_en
new file mode 100644
index 0000000..f57d6de
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1774_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1775_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1775_en
new file mode 100644
index 0000000..ce1ba5a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1775_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1778_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1778_en
new file mode 100644
index 0000000..d43286e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1778_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1779_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1779_en
new file mode 100644
index 0000000..ad2a62f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1779_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1780_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1780_en
new file mode 100644
index 0000000..3848d35
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1780_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1781_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1781_en
new file mode 100644
index 0000000..1b58baa
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1781_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1782_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1782_en
new file mode 100644
index 0000000..cfa9b29
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1782_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1785_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1785_en
new file mode 100644
index 0000000..9555480
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1785_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1786_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1786_en
new file mode 100644
index 0000000..6dcf1c5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1786_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1801_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1801_en
new file mode 100644
index 0000000..64549a1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1801_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1802_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1802_en
new file mode 100644
index 0000000..eeb00b9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1802_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1803_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1803_en
new file mode 100644
index 0000000..a2a4e7b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1803_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1804_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1804_en
new file mode 100644
index 0000000..28a4bb7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1804_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1805_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1805_en
new file mode 100644
index 0000000..3a548df
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1805_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1806_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1806_en
new file mode 100644
index 0000000..f0ae9e9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1806_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1807_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1807_en
new file mode 100644
index 0000000..d9cd36a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1807_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1808_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1808_en
new file mode 100644
index 0000000..628d574
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1808_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1809_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1809_en
new file mode 100644
index 0000000..09461ba
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1809_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1810_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1810_en
new file mode 100644
index 0000000..277ba1d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1810_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1812_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1812_en
new file mode 100644
index 0000000..b5f9fd0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1812_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1813_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1813_en
new file mode 100644
index 0000000..46aa88c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1813_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1814_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1814_en
new file mode 100644
index 0000000..537f281
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1814_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1815_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1815_en
new file mode 100644
index 0000000..e8c3026
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1815_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1816_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1816_en
new file mode 100644
index 0000000..7acae72
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1816_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1817_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1817_en
new file mode 100644
index 0000000..82f654c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1817_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1818_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1818_en
new file mode 100644
index 0000000..2d0de5a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1818_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1819_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1819_en
new file mode 100644
index 0000000..ecebe32
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1819_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1820_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1820_en
new file mode 100644
index 0000000..090b8dc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1820_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1825_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1825_en
new file mode 100644
index 0000000..a6c004d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1825_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1828_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1828_en
new file mode 100644
index 0000000..cfd3373
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1828_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1830_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1830_en
new file mode 100644
index 0000000..9be7aee
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1830_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1831_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1831_en
new file mode 100644
index 0000000..4000106
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1831_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1832_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1832_en
new file mode 100644
index 0000000..b6184a1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1832_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1838_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1838_en
new file mode 100644
index 0000000..59f15a7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1838_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1843_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1843_en
new file mode 100644
index 0000000..5002c7e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1843_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1845_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1845_en
new file mode 100644
index 0000000..06e9269
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1845_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1847_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1847_en
new file mode 100644
index 0000000..4dfd7a2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1847_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1848_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1848_en
new file mode 100644
index 0000000..ca5aca7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1848_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1850_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1850_en
new file mode 100644
index 0000000..9c4cc44
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1850_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1854_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1854_en
new file mode 100644
index 0000000..4440fe7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1854_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1856_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1856_en
new file mode 100644
index 0000000..1811dbe
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1856_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1857_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1857_en
new file mode 100644
index 0000000..708b2d1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1857_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1858_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1858_en
new file mode 100644
index 0000000..2d5c23f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1858_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1859_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1859_en
new file mode 100644
index 0000000..ad06fab
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1859_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1860_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1860_en
new file mode 100644
index 0000000..fd33cb4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1860_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1862_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1862_en
new file mode 100644
index 0000000..79757a7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1862_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1863_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1863_en
new file mode 100644
index 0000000..49d58b1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1863_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1864_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1864_en
new file mode 100644
index 0000000..2b49e91
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1864_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1865_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1865_en
new file mode 100644
index 0000000..0154f4c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1865_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1867_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1867_en
new file mode 100644
index 0000000..05fbabf
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1867_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1870_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1870_en
new file mode 100644
index 0000000..000d869
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1870_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1872_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1872_en
new file mode 100644
index 0000000..e851d4b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1872_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1873_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1873_en
new file mode 100644
index 0000000..78e7da1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1873_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1876_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1876_en
new file mode 100644
index 0000000..38e4ad8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1876_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1878_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1878_en
new file mode 100644
index 0000000..676f678
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1878_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1901_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1901_en
new file mode 100644
index 0000000..ddd65ed
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1901_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1902_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1902_en
new file mode 100644
index 0000000..2db24b2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1902_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1903_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1903_en
new file mode 100644
index 0000000..0129a4b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1903_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1904_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1904_en
new file mode 100644
index 0000000..32c15fe
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1904_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1905_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1905_en
new file mode 100644
index 0000000..0e353e6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1905_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1906_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1906_en
new file mode 100644
index 0000000..bd9ffcb
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1906_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1907_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1907_en
new file mode 100644
index 0000000..6be26e4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1907_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1908_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1908_en
new file mode 100644
index 0000000..962ce38
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1908_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1909_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1909_en
new file mode 100644
index 0000000..1613671
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1909_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1910_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1910_en
new file mode 100644
index 0000000..5b3f3b6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1910_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1912_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1912_en
new file mode 100644
index 0000000..9900df1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1912_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1913_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1913_en
new file mode 100644
index 0000000..c4b3a01
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1913_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1914_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1914_en
new file mode 100644
index 0000000..dc95cd0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1914_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1915_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1915_en
new file mode 100644
index 0000000..3dcc8a7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1915_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1916_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1916_en
new file mode 100644
index 0000000..85d11f9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1916_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1917_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1917_en
new file mode 100644
index 0000000..f1b0a2c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1917_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1918_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1918_en
new file mode 100644
index 0000000..ffd1762
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1918_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1919_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1919_en
new file mode 100644
index 0000000..8d101db
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1919_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1920_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1920_en
new file mode 100644
index 0000000..60087ad
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1920_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1925_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1925_en
new file mode 100644
index 0000000..961bc02
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1925_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1928_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1928_en
new file mode 100644
index 0000000..377cb35
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1928_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1929_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1929_en
new file mode 100644
index 0000000..9662e51
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1929_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1930_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1930_en
new file mode 100644
index 0000000..bf6ba80
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1930_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1931_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1931_en
new file mode 100644
index 0000000..74ee472
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1931_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1934_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1934_en
new file mode 100644
index 0000000..0856e34
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1934_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1936_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1936_en
new file mode 100644
index 0000000..4e66420
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1936_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1937_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1937_en
new file mode 100644
index 0000000..c727bf7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1937_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1938_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1938_en
new file mode 100644
index 0000000..764aeda
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1938_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1940_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1940_en
new file mode 100644
index 0000000..54cbd5f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1940_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1941_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1941_en
new file mode 100644
index 0000000..ff9beac
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1941_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1947_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1947_en
new file mode 100644
index 0000000..f553708
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1947_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1949_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1949_en
new file mode 100644
index 0000000..cfc39a6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1949_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1951_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1951_en
new file mode 100644
index 0000000..847e6f6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1951_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1952_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1952_en
new file mode 100644
index 0000000..eaaf0b2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1952_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1954_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1954_en
new file mode 100644
index 0000000..3fefdbd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1954_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1956_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1956_en
new file mode 100644
index 0000000..9cc12fc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1956_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1959_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1959_en
new file mode 100644
index 0000000..3126e19
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1959_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1970_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1970_en
new file mode 100644
index 0000000..ebb2e3b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1970_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1971_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1971_en
new file mode 100644
index 0000000..30530d0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1971_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1972_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1972_en
new file mode 100644
index 0000000..d77b65c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1972_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1973_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1973_en
new file mode 100644
index 0000000..a37c022
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1973_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1978_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1978_en
new file mode 100644
index 0000000..c2f0bd4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1978_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1979_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1979_en
new file mode 100644
index 0000000..f778a25
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1979_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1980_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1980_en
new file mode 100644
index 0000000..9855e15
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1980_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1984_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1984_en
new file mode 100644
index 0000000..917d351
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1984_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1985_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1985_en
new file mode 100644
index 0000000..8d3b3b2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1985_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1986_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1986_en
new file mode 100644
index 0000000..51842e6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1986_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1989_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1989_en
new file mode 100644
index 0000000..e5c0897
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/1989_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/20_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/20_en
new file mode 100644
index 0000000..cf1453e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/20_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/212_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/212_en
new file mode 100644
index 0000000..2ae8176
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/212_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/212_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/212_fr
new file mode 100644
index 0000000..9016b0d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/212_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/213_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/213_en
new file mode 100644
index 0000000..7a1379c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/213_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/216_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/216_en
new file mode 100644
index 0000000..9af2d13
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/216_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/218_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/218_en
new file mode 100644
index 0000000..6f964a5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/218_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/220_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/220_en
new file mode 100644
index 0000000..ce7ed8b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/220_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/221_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/221_en
new file mode 100644
index 0000000..87a8cc1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/221_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/222_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/222_en
new file mode 100644
index 0000000..7b4ec36
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/222_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/222_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/222_fr
new file mode 100644
index 0000000..ceb0870
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/222_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/223_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/223_en
new file mode 100644
index 0000000..38cd893
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/223_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/224_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/224_en
new file mode 100644
index 0000000..1a9cae3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/224_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/225_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/225_en
new file mode 100644
index 0000000..747091b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/225_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/226_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/226_en
new file mode 100644
index 0000000..329052f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/226_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/227_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/227_en
new file mode 100644
index 0000000..390f90a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/227_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_en
new file mode 100644
index 0000000..192a5d7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_es
new file mode 100644
index 0000000..7c124ef
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_fr
new file mode 100644
index 0000000..884ca42
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/228_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/229_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/229_en
new file mode 100644
index 0000000..21b5b82
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/229_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/229_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/229_fr
new file mode 100644
index 0000000..6002a86
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/229_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_en
new file mode 100644
index 0000000..3cf3259
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_es
new file mode 100644
index 0000000..49f2050
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_fr
new file mode 100644
index 0000000..bf51072
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/230_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/232_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/232_en
new file mode 100644
index 0000000..9cb3996
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/232_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/233_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/233_en
new file mode 100644
index 0000000..fde9139
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/233_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/234_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/234_en
new file mode 100644
index 0000000..da1af17
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/234_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/237_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/237_en
new file mode 100644
index 0000000..28ac500
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/237_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/238_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/238_en
new file mode 100644
index 0000000..092d85a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/238_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/239_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/239_en
new file mode 100644
index 0000000..37a5e89
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/239_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/239_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/239_pt
new file mode 100644
index 0000000..8610e0a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/239_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/240_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/240_en
new file mode 100644
index 0000000..18f98e3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/240_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/241_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/241_en
new file mode 100644
index 0000000..0848427
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/241_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/242_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/242_en
new file mode 100644
index 0000000..2ad2a1a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/242_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/243_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/243_en
new file mode 100644
index 0000000..14b51a0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/243_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/243_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/243_fr
new file mode 100644
index 0000000..ac48d42
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/243_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/244_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/244_en
new file mode 100644
index 0000000..7234500
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/244_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/244_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
new file mode 100644
index 0000000..0395f3e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/245_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/245_en
new file mode 100644
index 0000000..99f54bc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/245_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/245_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
new file mode 100644
index 0000000..6331439
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/247_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/247_en
new file mode 100644
index 0000000..259944a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/247_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/249_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/249_en
new file mode 100644
index 0000000..d605df8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/249_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/251_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/251_en
new file mode 100644
index 0000000..6da6432
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/251_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/252_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/252_en
new file mode 100644
index 0000000..dd65dce
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/252_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/254_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/254_en
new file mode 100644
index 0000000..7e14271
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/254_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/255_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/255_en
new file mode 100644
index 0000000..5d4140b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/255_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/256_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/256_en
new file mode 100644
index 0000000..6043317
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/256_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/257_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/257_en
new file mode 100644
index 0000000..3debe94
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/257_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/258_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/258_en
new file mode 100644
index 0000000..6f11df7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/258_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/258_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/258_pt
new file mode 100644
index 0000000..18ddf2e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/258_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/260_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/260_en
new file mode 100644
index 0000000..b469b16
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/260_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/261_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/261_en
new file mode 100644
index 0000000..af8affb
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/261_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/263_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/263_en
new file mode 100644
index 0000000..f9d8368
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/263_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/264_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/264_en
new file mode 100644
index 0000000..91675aa
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/264_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/266_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/266_en
new file mode 100644
index 0000000..3fc9c6f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/266_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/267_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/267_en
new file mode 100644
index 0000000..2d0f0fd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/267_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/268_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/268_en
new file mode 100644
index 0000000..c93c19e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/268_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/269_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/269_en
new file mode 100644
index 0000000..bbc053b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/269_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/27_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/27_en
new file mode 100644
index 0000000..4f13f91
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/27_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/290_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/290_en
new file mode 100644
index 0000000..6aea638
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/290_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/290_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/290_fr
new file mode 100644
index 0000000..1f877a6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/290_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/299_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/299_en
new file mode 100644
index 0000000..2e0fee5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/299_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/30_el b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/30_el
new file mode 100644
index 0000000..5f26cf5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/30_el
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/30_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/30_en
new file mode 100644
index 0000000..4d7e219
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/30_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/31_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/31_en
new file mode 100644
index 0000000..909fda2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/31_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/31_nl b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/31_nl
new file mode 100644
index 0000000..e18966e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/31_nl
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_de b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_de
new file mode 100644
index 0000000..e483050
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_de
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_en
new file mode 100644
index 0000000..8b04552
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_fr
new file mode 100644
index 0000000..23df1d7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_nl b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_nl
new file mode 100644
index 0000000..4f4f0d9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/32_nl
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/33_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/33_en
new file mode 100644
index 0000000..c8f107f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/33_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/33_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/33_fr
new file mode 100644
index 0000000..e6424bb
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/33_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/34_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/34_en
new file mode 100644
index 0000000..77a25fc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/34_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/34_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/34_es
new file mode 100644
index 0000000..652bfda
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/34_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/351_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/351_en
new file mode 100644
index 0000000..61f0da1
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/351_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/351_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/351_pt
new file mode 100644
index 0000000..eb08045
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/351_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_de b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_de
new file mode 100644
index 0000000..d4de4f8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_de
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_en
new file mode 100644
index 0000000..1938fcc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_fr
new file mode 100644
index 0000000..001b26b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/352_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/353_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/353_en
new file mode 100644
index 0000000..b207f52
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/353_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/354_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/354_en
new file mode 100644
index 0000000..2e85aa2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/354_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/355_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/355_en
new file mode 100644
index 0000000..5275f69
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/355_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_en
new file mode 100644
index 0000000..92607e3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_fi b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_fi
new file mode 100644
index 0000000..48a6509
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_fi
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_sv b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_sv
new file mode 100644
index 0000000..3c47565
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/358_sv
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/359_bg b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/359_bg
new file mode 100644
index 0000000..11573e0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/359_bg
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/359_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/359_en
new file mode 100644
index 0000000..7daae27
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/359_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/36_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/36_en
new file mode 100644
index 0000000..d9f2a71
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/36_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/36_hu b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/36_hu
new file mode 100644
index 0000000..6eaf151
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/36_hu
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/370_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/370_en
new file mode 100644
index 0000000..52b47bd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/370_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/371_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/371_en
new file mode 100644
index 0000000..5ad7e32
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/371_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/372_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/372_en
new file mode 100644
index 0000000..aaaa338
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/372_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_en
new file mode 100644
index 0000000..9ef1b6e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_ro b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_ro
new file mode 100644
index 0000000..3ef4931
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_ro
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_ru b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_ru
new file mode 100644
index 0000000..b643821
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/373_ru
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_en
new file mode 100644
index 0000000..236966f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_hy b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_hy
new file mode 100644
index 0000000..08d74b8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_hy
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_ru b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_ru
new file mode 100644
index 0000000..c43a0c2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/374_ru
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_be b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_be
new file mode 100644
index 0000000..9c06e9c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_be
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_en
new file mode 100644
index 0000000..41b5f4e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_ru b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_ru
new file mode 100644
index 0000000..0f1489a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/375_ru
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/380_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/380_en
new file mode 100644
index 0000000..ed24265
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/380_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/380_uk b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/380_uk
new file mode 100644
index 0000000..5c923f4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/380_uk
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/381_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/381_en
new file mode 100644
index 0000000..8cde57a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/381_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/381_sr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/381_sr
new file mode 100644
index 0000000..f0bc38e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/381_sr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/382_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/382_en
new file mode 100644
index 0000000..f4eedef
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/382_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_en
new file mode 100644
index 0000000..c1f8fbc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_sq b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_sq
new file mode 100644
index 0000000..d11ac78
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_sq
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_sr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_sr
new file mode 100644
index 0000000..8a8db36
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/383_sr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/385_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/385_en
new file mode 100644
index 0000000..75fe296
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/385_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_bs b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_bs
new file mode 100644
index 0000000..7cae66f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_bs
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_en
new file mode 100644
index 0000000..7568306
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_hr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_hr
new file mode 100644
index 0000000..f056039
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_hr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_sr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_sr
new file mode 100644
index 0000000..8cb87d6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/387_sr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/389_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/389_en
new file mode 100644
index 0000000..e3b6913
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/389_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/39_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/39_en
new file mode 100644
index 0000000..fada2f3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/39_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/39_it b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/39_it
new file mode 100644
index 0000000..db32682
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/39_it
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/40_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/40_en
new file mode 100644
index 0000000..d5704a3
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/40_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/40_ro b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/40_ro
new file mode 100644
index 0000000..6c56537
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/40_ro
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_de b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_de
new file mode 100644
index 0000000..e62c797
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_de
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_en
new file mode 100644
index 0000000..79ab086
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_fr
new file mode 100644
index 0000000..6fb2df8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_it b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_it
new file mode 100644
index 0000000..9cc1e5b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/41_it
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/420_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/420_en
new file mode 100644
index 0000000..6e39c43
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/420_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/421_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/421_en
new file mode 100644
index 0000000..5a5dc09
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/421_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/43_de b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/43_de
new file mode 100644
index 0000000..5687e97
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/43_de
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/43_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/43_en
new file mode 100644
index 0000000..050418d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/43_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/44_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/44_en
new file mode 100644
index 0000000..2dd3e79
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/44_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/46_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/46_en
new file mode 100644
index 0000000..0e30c33
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/46_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/46_sv b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/46_sv
new file mode 100644
index 0000000..31a27a8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/46_sv
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/47_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/47_en
new file mode 100644
index 0000000..765f730
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/47_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/48_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/48_en
new file mode 100644
index 0000000..969da0c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/48_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/48_pl b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/48_pl
new file mode 100644
index 0000000..cd5eb5a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/48_pl
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/49_de b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/49_de
new file mode 100644
index 0000000..428b8bf
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/49_de
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/49_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/49_en
new file mode 100644
index 0000000..ec5c04e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/49_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/501_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/501_en
new file mode 100644
index 0000000..dbf547d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/501_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/504_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/504_en
new file mode 100644
index 0000000..28c32df
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/504_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/51_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/51_en
new file mode 100644
index 0000000..7f84d3e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/51_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/52_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/52_en
new file mode 100644
index 0000000..fe5cc14
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/52_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/52_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/52_es
new file mode 100644
index 0000000..29a1ff0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/52_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/53_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/53_en
new file mode 100644
index 0000000..5d15867
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/53_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/54_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/54_en
new file mode 100644
index 0000000..23f565b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/54_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/54_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/54_es
new file mode 100644
index 0000000..d23a02e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/54_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/55_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/55_en
new file mode 100644
index 0000000..054d213
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/55_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/55_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/55_pt
new file mode 100644
index 0000000..6e927cc
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/55_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/56_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/56_en
new file mode 100644
index 0000000..a6724ae
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/56_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/56_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/56_es
new file mode 100644
index 0000000..b453a4e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/56_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/57_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/57_en
new file mode 100644
index 0000000..347d96b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/57_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/58_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/58_en
new file mode 100644
index 0000000..9c7a787
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/58_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/58_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/58_es
new file mode 100644
index 0000000..8407816
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/58_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/592_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/592_en
new file mode 100644
index 0000000..d137ba5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/592_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/599_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/599_en
new file mode 100644
index 0000000..8e5d390
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/599_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/60_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/60_en
new file mode 100644
index 0000000..1f08101
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/60_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/61_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/61_en
new file mode 100644
index 0000000..e57541a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/61_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/62_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/62_en
new file mode 100644
index 0000000..76a811b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/62_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/62_id b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/62_id
new file mode 100644
index 0000000..92d7a3b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/62_id
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/64_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/64_en
new file mode 100644
index 0000000..c347a2a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/64_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/66_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/66_en
new file mode 100644
index 0000000..cb2807d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/66_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/66_th b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/66_th
new file mode 100644
index 0000000..5e86e0b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/66_th
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/675_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/675_en
new file mode 100644
index 0000000..2a0ec3d
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/675_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/680_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/680_en
new file mode 100644
index 0000000..02729a0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/680_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/686_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/686_en
new file mode 100644
index 0000000..ce78e69
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/686_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/688_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/688_en
new file mode 100644
index 0000000..2999991
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/688_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/7_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/7_en
new file mode 100644
index 0000000..200dd2b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/7_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/7_ru b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/7_ru
new file mode 100644
index 0000000..ffddeba
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/7_ru
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/81_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/81_en
new file mode 100644
index 0000000..bb2776f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/81_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/81_ja b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/81_ja
new file mode 100644
index 0000000..7cc7384
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/81_ja
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ar b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ar
new file mode 100644
index 0000000..10f1725
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ar
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_bg b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_bg
new file mode 100644
index 0000000..0f3c055
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_bg
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ca b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ca
new file mode 100644
index 0000000..243c0a2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ca
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_cs b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_cs
new file mode 100644
index 0000000..bf56887
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_cs
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_el b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_el
new file mode 100644
index 0000000..48d7608
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_el
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_en
new file mode 100644
index 0000000..96a0165
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_es b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_es
new file mode 100644
index 0000000..3d8653a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_es
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_fi b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_fi
new file mode 100644
index 0000000..b7348e9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_fi
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_fr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_fr
new file mode 100644
index 0000000..dea606c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_fr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_hi b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_hi
new file mode 100644
index 0000000..4b491fd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_hi
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_hu b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_hu
new file mode 100644
index 0000000..96ca994
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_hu
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_iw b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_iw
new file mode 100644
index 0000000..e6f4613
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_iw
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ja b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ja
new file mode 100644
index 0000000..d559b04
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ja
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ko b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ko
new file mode 100644
index 0000000..e833c20
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ko
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_pl b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_pl
new file mode 100644
index 0000000..440ff0e
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_pl
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_pt b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_pt
new file mode 100644
index 0000000..c89b1b4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_pt
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ro b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ro
new file mode 100644
index 0000000..82606ac
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ro
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ru b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ru
new file mode 100644
index 0000000..e94b0d7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_ru
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_sl b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_sl
new file mode 100644
index 0000000..e083afe
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_sl
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_sr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_sr
new file mode 100644
index 0000000..ae96047
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_sr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_tr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_tr
new file mode 100644
index 0000000..f47b09c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_tr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_uk b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_uk
new file mode 100644
index 0000000..7f1676a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_uk
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_vi b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_vi
new file mode 100644
index 0000000..0221acd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_vi
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_zh b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_zh
new file mode 100644
index 0000000..6e53fd6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_zh
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_zh_Hant b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_zh_Hant
new file mode 100644
index 0000000..6559ae2
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/82_zh_Hant
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/84_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/84_en
new file mode 100644
index 0000000..b27fe95
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/84_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/84_vi b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/84_vi
new file mode 100644
index 0000000..366b492
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/84_vi
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/86_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/86_en
new file mode 100644
index 0000000..7a4f06c
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/86_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/86_zh b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/86_zh
new file mode 100644
index 0000000..b9e8f7b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/86_zh
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/880_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/880_en
new file mode 100644
index 0000000..fb94362
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/880_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_en
new file mode 100644
index 0000000..7bed31b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_zh b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_zh
new file mode 100644
index 0000000..d04e3ab
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_zh
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_zh_Hant b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_zh_Hant
new file mode 100644
index 0000000..eb259e9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/886_zh_Hant
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/90_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/90_en
new file mode 100644
index 0000000..a3dfd81
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/90_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/90_tr b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/90_tr
new file mode 100644
index 0000000..cfcf99a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/90_tr
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/91_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/91_en
new file mode 100644
index 0000000..5e6ed38
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/91_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/93_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/93_en
new file mode 100644
index 0000000..3c179c7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/93_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/93_fa b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/93_fa
new file mode 100644
index 0000000..19c76fd
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/93_fa
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/94_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/94_en
new file mode 100644
index 0000000..0794d2a
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/94_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/95_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/95_en
new file mode 100644
index 0000000..16ea9f9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/95_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/960_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/960_en
new file mode 100644
index 0000000..b1f951f
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/960_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/962_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/962_en
new file mode 100644
index 0000000..37a2bf8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/962_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/966_ar b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/966_ar
new file mode 100644
index 0000000..fc674a4
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/966_ar
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/966_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/966_en
new file mode 100644
index 0000000..d0027f9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/966_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/968_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/968_en
new file mode 100644
index 0000000..a7c1bf0
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/968_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/972_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/972_en
new file mode 100644
index 0000000..16c4033
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/972_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/972_iw b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/972_iw
new file mode 100644
index 0000000..a2a935b
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/972_iw
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/975_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/975_en
new file mode 100644
index 0000000..48956e5
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/975_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/976_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/976_en
new file mode 100644
index 0000000..01d58b6
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/976_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/98_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/98_en
new file mode 100644
index 0000000..2d8f8f7
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/98_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/98_fa b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/98_fa
new file mode 100644
index 0000000..19206f8
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/98_fa
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/992_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/992_en
new file mode 100644
index 0000000..7bdce26
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/992_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/994_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/994_en
new file mode 100644
index 0000000..69468e9
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/994_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/996_en b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/996_en
new file mode 100644
index 0000000..cbec067
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/996_en
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/config b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/config
new file mode 100644
index 0000000..df76a36
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/geocoding/data/config
Binary files differ
diff --git a/repackaged/geocoder/src/com/android/i18n/phonenumbers/timezones/data/map_data b/repackaged/geocoder/src/com/android/i18n/phonenumbers/timezones/data/map_data
new file mode 100644
index 0000000..f2d1f79
--- /dev/null
+++ b/repackaged/geocoder/src/com/android/i18n/phonenumbers/timezones/data/map_data
Binary files differ
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/DefaultMapStorage.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/DefaultMapStorage.java
new file mode 100644
index 0000000..04f77f0
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/DefaultMapStorage.java
@@ -0,0 +1,95 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.SortedMap;
+
+/**
+ * Default phone prefix map storage strategy that is used for data not containing description
+ * duplications. It is mainly intended to avoid the overhead of the string table management when it
+ * is actually unnecessary (i.e no string duplication).
+ *
+ * @author Shaopeng Jia
+ */
+class DefaultMapStorage extends PhonePrefixMapStorageStrategy {
+
+  public DefaultMapStorage() {}
+
+  private int[] phoneNumberPrefixes;
+  private String[] descriptions;
+
+  @Override
+  public int getPrefix(int index) {
+    return phoneNumberPrefixes[index];
+  }
+
+  @Override
+  public String getDescription(int index) {
+    return descriptions[index];
+  }
+
+  @Override
+  public void readFromSortedMap(SortedMap<Integer, String> sortedPhonePrefixMap) {
+    numOfEntries = sortedPhonePrefixMap.size();
+    phoneNumberPrefixes = new int[numOfEntries];
+    descriptions = new String[numOfEntries];
+    int index = 0;
+    for (int prefix : sortedPhonePrefixMap.keySet()) {
+      phoneNumberPrefixes[index++] = prefix;
+      possibleLengths.add((int) Math.log10(prefix) + 1);
+    }
+    sortedPhonePrefixMap.values().toArray(descriptions);
+  }
+
+  @Override
+  public void readExternal(ObjectInput objectInput) throws IOException {
+    numOfEntries = objectInput.readInt();
+    if (phoneNumberPrefixes == null || phoneNumberPrefixes.length < numOfEntries) {
+      phoneNumberPrefixes = new int[numOfEntries];
+    }
+    if (descriptions == null || descriptions.length < numOfEntries) {
+      descriptions = new String[numOfEntries];
+    }
+    for (int i = 0; i < numOfEntries; i++) {
+      phoneNumberPrefixes[i] = objectInput.readInt();
+      descriptions[i] = objectInput.readUTF();
+    }
+    int sizeOfLengths = objectInput.readInt();
+    possibleLengths.clear();
+    for (int i = 0; i < sizeOfLengths; i++) {
+      possibleLengths.add(objectInput.readInt());
+    }
+  }
+
+  @Override
+  public void writeExternal(ObjectOutput objectOutput) throws IOException {
+    objectOutput.writeInt(numOfEntries);
+    for (int i = 0; i < numOfEntries; i++) {
+      objectOutput.writeInt(phoneNumberPrefixes[i]);
+      objectOutput.writeUTF(descriptions[i]);
+    }
+    int sizeOfLengths = possibleLengths.size();
+    objectOutput.writeInt(sizeOfLengths);
+    for (Integer length : possibleLengths) {
+      objectOutput.writeInt(length);
+    }
+  }
+}
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorage.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorage.java
new file mode 100644
index 0000000..8360989
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorage.java
@@ -0,0 +1,264 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Map.Entry;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+/**
+ * Flyweight phone prefix map storage strategy that uses a table to store unique strings and shorts
+ * to store the prefix and description indexes when possible. It is particularly space-efficient
+ * when the provided phone prefix map contains a lot of redundant descriptions.
+ *
+ * @author Philippe Liard
+ */
+final class FlyweightMapStorage extends PhonePrefixMapStorageStrategy {
+  // Size of short and integer types in bytes.
+  private static final int SHORT_NUM_BYTES = Short.SIZE / 8;
+  private static final int INT_NUM_BYTES = Integer.SIZE / 8;
+
+  // The number of bytes used to store a phone number prefix.
+  private int prefixSizeInBytes;
+  // The number of bytes used to store a description index. It is computed from the size of the
+  // description pool containing all the strings.
+  private int descIndexSizeInBytes;
+
+  private ByteBuffer phoneNumberPrefixes;
+  private ByteBuffer descriptionIndexes;
+
+  // Sorted string array of unique description strings.
+  private String[] descriptionPool;
+
+  @Override
+  public int getPrefix(int index) {
+    return readWordFromBuffer(phoneNumberPrefixes, prefixSizeInBytes, index);
+  }
+
+  /**
+   * This implementation returns the same string (same identity) when called for multiple indexes
+   * corresponding to prefixes that have the same description.
+   */
+  @Override
+  public String getDescription(int index) {
+    int indexInDescriptionPool =
+        readWordFromBuffer(descriptionIndexes, descIndexSizeInBytes, index);
+    return descriptionPool[indexInDescriptionPool];
+  }
+
+  @Override
+  public void readFromSortedMap(SortedMap<Integer, String> phonePrefixMap) {
+    SortedSet<String> descriptionsSet = new TreeSet<String>();
+    numOfEntries = phonePrefixMap.size();
+    prefixSizeInBytes = getOptimalNumberOfBytesForValue(phonePrefixMap.lastKey());
+    phoneNumberPrefixes = ByteBuffer.allocate(numOfEntries * prefixSizeInBytes);
+
+    // Fill the phone number prefixes byte buffer, the set of possible lengths of prefixes and the
+    // description set.
+    int index = 0;
+    for (Entry<Integer, String> entry : phonePrefixMap.entrySet()) {
+      int prefix = entry.getKey();
+      storeWordInBuffer(phoneNumberPrefixes, prefixSizeInBytes, index, prefix);
+      possibleLengths.add((int) Math.log10(prefix) + 1);
+      descriptionsSet.add(entry.getValue());
+      ++index;
+    }
+    createDescriptionPool(descriptionsSet, phonePrefixMap);
+  }
+
+  /**
+   * Creates the description pool from the provided set of string descriptions and phone prefix map.
+   */
+  private void createDescriptionPool(SortedSet<String> descriptionsSet,
+      SortedMap<Integer, String> phonePrefixMap) {
+    descIndexSizeInBytes = getOptimalNumberOfBytesForValue(descriptionsSet.size() - 1);
+    descriptionIndexes = ByteBuffer.allocate(numOfEntries * descIndexSizeInBytes);
+    descriptionPool = new String[descriptionsSet.size()];
+    descriptionsSet.toArray(descriptionPool);
+
+    // Map the phone number prefixes to the descriptions.
+    int index = 0;
+    for (int i = 0; i < numOfEntries; i++) {
+      int prefix = readWordFromBuffer(phoneNumberPrefixes, prefixSizeInBytes, i);
+      String description = phonePrefixMap.get(prefix);
+      int positionInDescriptionPool = Arrays.binarySearch(descriptionPool, description);
+      storeWordInBuffer(descriptionIndexes, descIndexSizeInBytes, index, positionInDescriptionPool);
+      ++index;
+    }
+  }
+
+  @Override
+  public void readExternal(ObjectInput objectInput) throws IOException {
+    // Read binary words sizes.
+    prefixSizeInBytes = objectInput.readInt();
+    descIndexSizeInBytes = objectInput.readInt();
+
+    // Read possible lengths.
+    int sizeOfLengths = objectInput.readInt();
+    possibleLengths.clear();
+    for (int i = 0; i < sizeOfLengths; i++) {
+      possibleLengths.add(objectInput.readInt());
+    }
+
+    // Read description pool size.
+    int descriptionPoolSize = objectInput.readInt();
+    // Read description pool.
+    if (descriptionPool == null || descriptionPool.length < descriptionPoolSize) {
+      descriptionPool = new String[descriptionPoolSize];
+    }
+    for (int i = 0; i < descriptionPoolSize; i++) {
+      String description = objectInput.readUTF();
+      descriptionPool[i] = description;
+    }
+    readEntries(objectInput);
+  }
+
+  /**
+   * Reads the phone prefix entries from the provided input stream and stores them to the internal
+   * byte buffers.
+   */
+  private void readEntries(ObjectInput objectInput) throws IOException {
+    numOfEntries = objectInput.readInt();
+    if (phoneNumberPrefixes == null || phoneNumberPrefixes.capacity() < numOfEntries) {
+      phoneNumberPrefixes = ByteBuffer.allocate(numOfEntries * prefixSizeInBytes);
+    }
+    if (descriptionIndexes == null || descriptionIndexes.capacity() < numOfEntries) {
+      descriptionIndexes = ByteBuffer.allocate(numOfEntries * descIndexSizeInBytes);
+    }
+    for (int i = 0; i < numOfEntries; i++) {
+      readExternalWord(objectInput, prefixSizeInBytes, phoneNumberPrefixes, i);
+      readExternalWord(objectInput, descIndexSizeInBytes, descriptionIndexes, i);
+    }
+  }
+
+  @Override
+  public void writeExternal(ObjectOutput objectOutput) throws IOException {
+    // Write binary words sizes.
+    objectOutput.writeInt(prefixSizeInBytes);
+    objectOutput.writeInt(descIndexSizeInBytes);
+
+    // Write possible lengths.
+    int sizeOfLengths = possibleLengths.size();
+    objectOutput.writeInt(sizeOfLengths);
+    for (Integer length : possibleLengths) {
+      objectOutput.writeInt(length);
+    }
+
+    // Write description pool size.
+    objectOutput.writeInt(descriptionPool.length);
+    // Write description pool.
+    for (String description : descriptionPool) {
+      objectOutput.writeUTF(description);
+    }
+
+    // Write entries.
+    objectOutput.writeInt(numOfEntries);
+    for (int i = 0; i < numOfEntries; i++) {
+      writeExternalWord(objectOutput, prefixSizeInBytes, phoneNumberPrefixes, i);
+      writeExternalWord(objectOutput, descIndexSizeInBytes, descriptionIndexes, i);
+    }
+  }
+
+  /**
+   * Gets the minimum number of bytes that can be used to store the provided {@code value}.
+   */
+  private static int getOptimalNumberOfBytesForValue(int value) {
+    return value <= Short.MAX_VALUE ? SHORT_NUM_BYTES : INT_NUM_BYTES;
+  }
+
+  /**
+   * Stores a value which is read from the provided {@code objectInput} to the provided byte {@code
+   * buffer} at the specified {@code index}.
+   *
+   * @param objectInput  the object input stream from which the value is read
+   * @param wordSize  the number of bytes used to store the value read from the stream
+   * @param outputBuffer  the byte buffer to which the value is stored
+   * @param index  the index where the value is stored in the buffer
+   * @throws IOException  if an error occurred reading from the object input stream
+   */
+  private static void readExternalWord(ObjectInput objectInput, int wordSize,
+      ByteBuffer outputBuffer, int index) throws IOException {
+    int wordIndex = index * wordSize;
+    if (wordSize == SHORT_NUM_BYTES) {
+      outputBuffer.putShort(wordIndex, objectInput.readShort());
+    } else {
+      outputBuffer.putInt(wordIndex, objectInput.readInt());
+    }
+  }
+
+  /**
+   * Writes the value read from the provided byte {@code buffer} at the specified {@code index} to
+   * the provided {@code objectOutput}.
+   *
+   * @param objectOutput  the object output stream to which the value is written
+   * @param wordSize  the number of bytes used to store the value
+   * @param inputBuffer  the byte buffer from which the value is read
+   * @param index  the index of the value in the the byte buffer
+   * @throws IOException if an error occurred writing to the provided object output stream
+   */
+  private static void writeExternalWord(ObjectOutput objectOutput, int wordSize,
+      ByteBuffer inputBuffer, int index) throws IOException {
+    int wordIndex = index * wordSize;
+    if (wordSize == SHORT_NUM_BYTES) {
+      objectOutput.writeShort(inputBuffer.getShort(wordIndex));
+    } else {
+      objectOutput.writeInt(inputBuffer.getInt(wordIndex));
+    }
+  }
+
+  /**
+   * Reads the {@code value} at the specified {@code index} from the provided byte {@code buffer}.
+   * Note that only integer and short sizes are supported.
+   *
+   * @param buffer  the byte buffer from which the value is read
+   * @param wordSize  the number of bytes used to store the value
+   * @param index  the index where the value is read from
+   *
+   * @return  the value read from the buffer
+   */
+  private static int readWordFromBuffer(ByteBuffer buffer, int wordSize, int index) {
+    int wordIndex = index * wordSize;
+    return wordSize == SHORT_NUM_BYTES ? buffer.getShort(wordIndex) : buffer.getInt(wordIndex);
+  }
+
+  /**
+   * Stores the provided {@code value} to the provided byte {@code buffer} at the specified {@code
+   * index} using the provided {@code wordSize} in bytes. Note that only integer and short sizes are
+   * supported.
+   *
+   * @param buffer  the byte buffer to which the value is stored
+   * @param wordSize  the number of bytes used to store the provided value
+   * @param index  the index to which the value is stored
+   * @param value  the value that is stored assuming it does not require more than the specified
+   *    number of bytes.
+   */
+  private static void storeWordInBuffer(ByteBuffer buffer, int wordSize, int index, int value) {
+    int wordIndex = index * wordSize;
+    if (wordSize == SHORT_NUM_BYTES) {
+      buffer.putShort(wordIndex, (short) value);
+    } else {
+      buffer.putInt(wordIndex, value);
+    }
+  }
+}
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/MappingFileProvider.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/MappingFileProvider.java
new file mode 100644
index 0000000..9a32c0c
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/MappingFileProvider.java
@@ -0,0 +1,233 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+/**
+ * A utility which knows the data files that are available for the phone prefix mappers to use.
+ * The data files contain mappings from phone number prefixes to text descriptions, and are
+ * organized by country calling code and language that the text descriptions are in.
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class MappingFileProvider implements Externalizable {
+  private int numOfEntries = 0;
+  private int[] countryCallingCodes;
+  private List<Set<String>> availableLanguages;
+  private static final Map<String, String> LOCALE_NORMALIZATION_MAP;
+
+  static {
+    Map<String, String> normalizationMap = new HashMap<String, String>();
+    normalizationMap.put("zh_TW", "zh_Hant");
+    normalizationMap.put("zh_HK", "zh_Hant");
+    normalizationMap.put("zh_MO", "zh_Hant");
+
+    LOCALE_NORMALIZATION_MAP = Collections.unmodifiableMap(normalizationMap);
+  }
+
+  /**
+   * Creates an empty {@link MappingFileProvider}. The default constructor is necessary for
+   * implementing {@link Externalizable}. The empty provider could later be populated by
+   * {@link #readFileConfigs(java.util.SortedMap)} or {@link #readExternal(java.io.ObjectInput)}.
+   */
+  public MappingFileProvider() {
+  }
+
+  /**
+   * Initializes an {@link MappingFileProvider} with {@code availableDataFiles}.
+   *
+   * @param availableDataFiles  a map from country calling codes to sets of languages in which data
+   *     files are available for the specific country calling code. The map is sorted in ascending
+   *     order of the country calling codes as integers.
+   */
+  public void readFileConfigs(SortedMap<Integer, Set<String>> availableDataFiles) {
+    numOfEntries = availableDataFiles.size();
+    countryCallingCodes = new int[numOfEntries];
+    availableLanguages = new ArrayList<Set<String>>(numOfEntries);
+    int index = 0;
+    for (int countryCallingCode : availableDataFiles.keySet()) {
+      countryCallingCodes[index++] = countryCallingCode;
+      availableLanguages.add(new HashSet<String>(availableDataFiles.get(countryCallingCode)));
+    }
+  }
+
+  /**
+   * Supports Java Serialization.
+   */
+  public void readExternal(ObjectInput objectInput) throws IOException {
+    numOfEntries = objectInput.readInt();
+    if (countryCallingCodes == null || countryCallingCodes.length < numOfEntries) {
+      countryCallingCodes = new int[numOfEntries];
+    }
+    if (availableLanguages == null) {
+      availableLanguages = new ArrayList<Set<String>>();
+    }
+    for (int i = 0; i < numOfEntries; i++) {
+      countryCallingCodes[i] = objectInput.readInt();
+      int numOfLangs = objectInput.readInt();
+      Set<String> setOfLangs = new HashSet<String>();
+      for (int j = 0; j < numOfLangs; j++) {
+        setOfLangs.add(objectInput.readUTF());
+      }
+      availableLanguages.add(setOfLangs);
+    }
+  }
+
+  /**
+   * Supports Java Serialization.
+   */
+  public void writeExternal(ObjectOutput objectOutput) throws IOException {
+    objectOutput.writeInt(numOfEntries);
+    for (int i = 0; i < numOfEntries; i++) {
+      objectOutput.writeInt(countryCallingCodes[i]);
+      Set<String> setOfLangs = availableLanguages.get(i);
+      int numOfLangs = setOfLangs.size();
+      objectOutput.writeInt(numOfLangs);
+      for (String lang : setOfLangs) {
+        objectOutput.writeUTF(lang);
+      }
+    }
+  }
+
+  /**
+   * Returns a string representing the data in this class. The string contains one line for each
+   * country calling code. The country calling code is followed by a '|' and then a list of
+   * comma-separated languages sorted in ascending order.
+   */
+  @Override
+  public String toString() {
+    StringBuilder output = new StringBuilder();
+    for (int i = 0; i < numOfEntries; i++) {
+      output.append(countryCallingCodes[i]);
+      output.append('|');
+      SortedSet<String> sortedSetOfLangs = new TreeSet<String>(availableLanguages.get(i));
+      for (String lang : sortedSetOfLangs) {
+        output.append(lang);
+        output.append(',');
+      }
+      output.append('\n');
+    }
+    return output.toString();
+  }
+
+  /**
+   * Gets the name of the file that contains the mapping data for the {@code countryCallingCode} in
+   * the language specified.
+   *
+   * @param countryCallingCode  the country calling code of phone numbers which the data file
+   *     contains
+   * @param language  two or three-letter lowercase ISO language codes as defined by ISO 639. Note
+   *     that where two different language codes exist (e.g. 'he' and 'iw' for Hebrew) we use the
+   *     one that Java/Android canonicalized on ('iw' in this case).
+   * @param script  four-letter titlecase (the first letter is uppercase and the rest of the letters
+   *     are lowercase) ISO script codes as defined in ISO 15924
+   * @param region  two-letter uppercase ISO country codes as defined by ISO 3166-1
+   * @return  the name of the file, or empty string if no such file can be found
+   */
+  String getFileName(int countryCallingCode, String language, String script, String region) {
+    if (language.length() == 0) {
+      return "";
+    }
+    int index = Arrays.binarySearch(countryCallingCodes, countryCallingCode);
+    if (index < 0) {
+      return "";
+    }
+    Set<String> setOfLangs = availableLanguages.get(index);
+    if (setOfLangs.size() > 0) {
+      String languageCode = findBestMatchingLanguageCode(setOfLangs, language, script, region);
+      if (languageCode.length() > 0) {
+        StringBuilder fileName = new StringBuilder();
+        fileName.append(countryCallingCode).append('_').append(languageCode);
+        return fileName.toString();
+      }
+    }
+    return "";
+  }
+
+  private String findBestMatchingLanguageCode(
+      Set<String> setOfLangs, String language, String script, String region) {
+    StringBuilder fullLocale = constructFullLocale(language, script, region);
+    String fullLocaleStr = fullLocale.toString();
+    String normalizedLocale = LOCALE_NORMALIZATION_MAP.get(fullLocaleStr);
+    if (normalizedLocale != null) {
+      if (setOfLangs.contains(normalizedLocale)) {
+        return normalizedLocale;
+      }
+    }
+    if (setOfLangs.contains(fullLocaleStr)) {
+      return fullLocaleStr;
+    }
+
+    if (onlyOneOfScriptOrRegionIsEmpty(script, region)) {
+      if (setOfLangs.contains(language)) {
+        return language;
+      }
+    } else if (script.length() > 0 && region.length() > 0) {
+      StringBuilder langWithScript = new StringBuilder(language).append('_').append(script);
+      String langWithScriptStr = langWithScript.toString();
+      if (setOfLangs.contains(langWithScriptStr)) {
+        return langWithScriptStr;
+      }
+
+      StringBuilder langWithRegion = new StringBuilder(language).append('_').append(region);
+      String langWithRegionStr = langWithRegion.toString();
+      if (setOfLangs.contains(langWithRegionStr)) {
+        return langWithRegionStr;
+      }
+
+      if (setOfLangs.contains(language)) {
+        return language;
+      }
+    }
+    return "";
+  }
+
+  private boolean onlyOneOfScriptOrRegionIsEmpty(String script, String region) {
+    return (script.length() == 0 && region.length() > 0)
+        || (region.length() == 0 && script.length() > 0);
+  }
+
+  private StringBuilder constructFullLocale(String language, String script, String region) {
+    StringBuilder fullLocale = new StringBuilder(language);
+    appendSubsequentLocalePart(script, fullLocale);
+    appendSubsequentLocalePart(region, fullLocale);
+    return fullLocale;
+  }
+
+  private void appendSubsequentLocalePart(String subsequentLocalePart, StringBuilder fullLocale) {
+    if (subsequentLocalePart.length() > 0) {
+      fullLocale.append('_').append(subsequentLocalePart);
+    }
+  }
+}
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMap.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMap.java
new file mode 100644
index 0000000..dcc73f8
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMap.java
@@ -0,0 +1,218 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.logging.Logger;
+
+/**
+ * A utility that maps phone number prefixes to a description string, which may be, for example,
+ * the geographical area the prefix covers.
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PhonePrefixMap implements Externalizable {
+  private final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
+  private static final Logger logger = Logger.getLogger(PhonePrefixMap.class.getName());
+
+  private PhonePrefixMapStorageStrategy phonePrefixMapStorage;
+
+  // @VisibleForTesting
+  PhonePrefixMapStorageStrategy getPhonePrefixMapStorage() {
+    return phonePrefixMapStorage;
+  }
+
+  /**
+   * Creates an empty {@link PhonePrefixMap}. The default constructor is necessary for implementing
+   * {@link Externalizable}. The empty map could later be populated by
+   * {@link #readPhonePrefixMap(java.util.SortedMap)} or {@link #readExternal(java.io.ObjectInput)}.
+   */
+  public PhonePrefixMap() {}
+
+  /**
+   * Gets the size of the provided phone prefix map storage. The map storage passed-in will be
+   * filled as a result.
+   */
+  private static int getSizeOfPhonePrefixMapStorage(PhonePrefixMapStorageStrategy mapStorage,
+      SortedMap<Integer, String> phonePrefixMap) throws IOException {
+    mapStorage.readFromSortedMap(phonePrefixMap);
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+    mapStorage.writeExternal(objectOutputStream);
+    objectOutputStream.flush();
+    int sizeOfStorage = byteArrayOutputStream.size();
+    objectOutputStream.close();
+    return sizeOfStorage;
+  }
+
+  private PhonePrefixMapStorageStrategy createDefaultMapStorage() {
+    return new DefaultMapStorage();
+  }
+
+  private PhonePrefixMapStorageStrategy createFlyweightMapStorage() {
+    return new FlyweightMapStorage();
+  }
+
+  /**
+   * Gets the smaller phone prefix map storage strategy according to the provided phone prefix map.
+   * It actually uses (outputs the data to a stream) both strategies and retains the best one which
+   * make this method quite expensive.
+   */
+  // @VisibleForTesting
+  PhonePrefixMapStorageStrategy getSmallerMapStorage(SortedMap<Integer, String> phonePrefixMap) {
+    try {
+      PhonePrefixMapStorageStrategy flyweightMapStorage = createFlyweightMapStorage();
+      int sizeOfFlyweightMapStorage = getSizeOfPhonePrefixMapStorage(flyweightMapStorage,
+                                                                     phonePrefixMap);
+
+      PhonePrefixMapStorageStrategy defaultMapStorage = createDefaultMapStorage();
+      int sizeOfDefaultMapStorage = getSizeOfPhonePrefixMapStorage(defaultMapStorage,
+                                                                   phonePrefixMap);
+
+      return sizeOfFlyweightMapStorage < sizeOfDefaultMapStorage
+          ? flyweightMapStorage : defaultMapStorage;
+    } catch (IOException e) {
+      logger.severe(e.getMessage());
+      return createFlyweightMapStorage();
+    }
+  }
+
+  /**
+   * Creates an {@link PhonePrefixMap} initialized with {@code sortedPhonePrefixMap}.  Note that the
+   * underlying implementation of this method is expensive thus should not be called by
+   * time-critical applications.
+   *
+   * @param sortedPhonePrefixMap  a map from phone number prefixes to descriptions of those prefixes
+   * sorted in ascending order of the phone number prefixes as integers.
+   */
+  public void readPhonePrefixMap(SortedMap<Integer, String> sortedPhonePrefixMap) {
+    phonePrefixMapStorage = getSmallerMapStorage(sortedPhonePrefixMap);
+  }
+
+  /**
+   * Supports Java Serialization.
+   */
+  public void readExternal(ObjectInput objectInput) throws IOException {
+    // Read the phone prefix map storage strategy flag.
+    boolean useFlyweightMapStorage = objectInput.readBoolean();
+    if (useFlyweightMapStorage) {
+      phonePrefixMapStorage = new FlyweightMapStorage();
+    } else {
+      phonePrefixMapStorage = new DefaultMapStorage();
+    }
+    phonePrefixMapStorage.readExternal(objectInput);
+  }
+
+  /**
+   * Supports Java Serialization.
+   */
+  public void writeExternal(ObjectOutput objectOutput) throws IOException {
+    objectOutput.writeBoolean(phonePrefixMapStorage instanceof FlyweightMapStorage);
+    phonePrefixMapStorage.writeExternal(objectOutput);
+  }
+
+  /**
+   * Returns the description of the {@code number}. This method distinguishes the case of an invalid
+   * prefix and a prefix for which the name is not available in the current language. If the
+   * description is not available in the current language an empty string is returned. If no
+   * description was found for the provided number, null is returned.
+   *
+   * @param number  the phone number to look up
+   * @return  the description of the number
+   */
+  String lookup(long number) {
+    int numOfEntries = phonePrefixMapStorage.getNumOfEntries();
+    if (numOfEntries == 0) {
+      return null;
+    }
+    long phonePrefix = number;
+    int currentIndex = numOfEntries - 1;
+    SortedSet<Integer> currentSetOfLengths = phonePrefixMapStorage.getPossibleLengths();
+    while (currentSetOfLengths.size() > 0) {
+      Integer possibleLength = currentSetOfLengths.last();
+      String phonePrefixStr = String.valueOf(phonePrefix);
+      if (phonePrefixStr.length() > possibleLength) {
+        phonePrefix = Long.parseLong(phonePrefixStr.substring(0, possibleLength));
+      }
+      currentIndex = binarySearch(0, currentIndex, phonePrefix);
+      if (currentIndex < 0) {
+        return null;
+      }
+      int currentPrefix = phonePrefixMapStorage.getPrefix(currentIndex);
+      if (phonePrefix == currentPrefix) {
+        return phonePrefixMapStorage.getDescription(currentIndex);
+      }
+      currentSetOfLengths = currentSetOfLengths.headSet(possibleLength);
+    }
+    return null;
+  }
+
+  /**
+   * As per {@link #lookup(long)}, but receives the number as a PhoneNumber instead of a long.
+   *
+   * @param number  the phone number to look up
+   * @return  the description corresponding to the prefix that best matches this phone number
+   */
+  public String lookup(PhoneNumber number) {
+    long phonePrefix =
+        Long.parseLong(number.getCountryCode() + phoneUtil.getNationalSignificantNumber(number));
+    return lookup(phonePrefix);
+  }
+
+  /**
+   * Does a binary search for {@code value} in the provided array from {@code start} to {@code end}
+   * (inclusive). Returns the position if {@code value} is found; otherwise, returns the
+   * position which has the largest value that is less than {@code value}. This means if
+   * {@code value} is the smallest, -1 will be returned.
+   */
+  private int binarySearch(int start, int end, long value) {
+    int current = 0;
+    while (start <= end) {
+      current = (start + end) >>> 1;
+      int currentValue = phonePrefixMapStorage.getPrefix(current);
+      if (currentValue == value) {
+        return current;
+      } else if (currentValue > value) {
+        current--;
+        end = current;
+      } else {
+        start = current + 1;
+      }
+    }
+    return current;
+  }
+
+  /**
+   * Dumps the mappings contained in the phone prefix map.
+   */
+  @Override
+  public String toString() {
+    return phonePrefixMapStorage.toString();
+  }
+}
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMapStorageStrategy.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMapStorageStrategy.java
new file mode 100644
index 0000000..5563cc5
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMapStorageStrategy.java
@@ -0,0 +1,109 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.SortedMap;
+import java.util.TreeSet;
+
+/**
+ * Abstracts the way phone prefix data is stored into memory and serialized to a stream. It is used
+ * by {@link PhonePrefixMap} to support the most space-efficient storage strategy according to the
+ * provided data.
+ *
+ * @author Philippe Liard
+ */
+abstract class PhonePrefixMapStorageStrategy {
+  protected int numOfEntries = 0;
+  protected final TreeSet<Integer> possibleLengths = new TreeSet<Integer>();
+
+  /**
+   * Gets the phone number prefix located at the provided {@code index}.
+   *
+   * @param index  the index of the prefix that needs to be returned
+   * @return  the phone number prefix at the provided index
+   */
+  public abstract int getPrefix(int index);
+
+  /**
+   * Gets the description corresponding to the phone number prefix located at the provided {@code
+   * index}. If the description is not available in the current language an empty string is
+   * returned.
+   *
+   * @param index  the index of the phone number prefix that needs to be returned
+   * @return  the description corresponding to the phone number prefix at the provided index
+   */
+  public abstract String getDescription(int index);
+
+  /**
+   * Sets the internal state of the underlying storage implementation from the provided {@code
+   * sortedPhonePrefixMap} that maps phone number prefixes to description strings.
+   *
+   * @param sortedPhonePrefixMap  a sorted map that maps phone number prefixes including country
+   *    calling code to description strings
+   */
+  public abstract void readFromSortedMap(SortedMap<Integer, String> sortedPhonePrefixMap);
+
+  /**
+   * Sets the internal state of the underlying storage implementation reading the provided {@code
+   * objectInput}.
+   *
+   * @param objectInput  the object input stream from which the phone prefix map is read
+   * @throws IOException  if an error occurred reading the provided input stream
+   */
+  public abstract void readExternal(ObjectInput objectInput) throws IOException;
+
+  /**
+   * Writes the internal state of the underlying storage implementation to the provided {@code
+   * objectOutput}.
+   *
+   * @param objectOutput  the object output stream to which the phone prefix map is written
+   * @throws IOException  if an error occurred writing to the provided output stream
+   */
+  public abstract void writeExternal(ObjectOutput objectOutput) throws IOException;
+
+  /**
+   * @return  the number of entries contained in the phone prefix map
+   */
+  public int getNumOfEntries() {
+    return numOfEntries;
+  }
+
+  /**
+   * @return  the set containing the possible lengths of prefixes
+   */
+  public TreeSet<Integer> getPossibleLengths() {
+    return possibleLengths;
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder output = new StringBuilder();
+    int numOfEntries = getNumOfEntries();
+
+    for (int i = 0; i < numOfEntries; i++) {
+      output.append(getPrefix(i))
+          .append("|")
+          .append(getDescription(i))
+          .append("\n");
+    }
+    return output.toString();
+  }
+}
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PrefixFileReader.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PrefixFileReader.java
new file mode 100644
index 0000000..9886121
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PrefixFileReader.java
@@ -0,0 +1,147 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * A helper class doing file handling and lookup of phone number prefix mappings.
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PrefixFileReader {
+  private static final Logger logger = Logger.getLogger(PrefixFileReader.class.getName());
+
+  private final String phonePrefixDataDirectory;
+  // The mappingFileProvider knows for which combination of countryCallingCode and language a phone
+  // prefix mapping file is available in the file system, so that a file can be loaded when needed.
+  private MappingFileProvider mappingFileProvider = new MappingFileProvider();
+  // A mapping from countryCallingCode_lang to the corresponding phone prefix map that has been
+  // loaded.
+  private Map<String, PhonePrefixMap> availablePhonePrefixMaps =
+      new HashMap<String, PhonePrefixMap>();
+
+  public PrefixFileReader(String phonePrefixDataDirectory) {
+    this.phonePrefixDataDirectory = phonePrefixDataDirectory;
+    loadMappingFileProvider();
+  }
+
+  private void loadMappingFileProvider() {
+    InputStream source =
+        PrefixFileReader.class.getResourceAsStream(phonePrefixDataDirectory + "config");
+    ObjectInputStream in = null;
+    try {
+      in = new ObjectInputStream(source);
+      mappingFileProvider.readExternal(in);
+    } catch (IOException e) {
+      logger.log(Level.WARNING, e.toString());
+    } finally {
+      close(in);
+    }
+  }
+
+  private PhonePrefixMap getPhonePrefixDescriptions(
+      int prefixMapKey, String language, String script, String region) {
+    String fileName = mappingFileProvider.getFileName(prefixMapKey, language, script, region);
+    if (fileName.length() == 0) {
+      return null;
+    }
+    if (!availablePhonePrefixMaps.containsKey(fileName)) {
+      loadPhonePrefixMapFromFile(fileName);
+    }
+    return availablePhonePrefixMaps.get(fileName);
+  }
+
+  private void loadPhonePrefixMapFromFile(String fileName) {
+    InputStream source =
+        PrefixFileReader.class.getResourceAsStream(phonePrefixDataDirectory + fileName);
+    ObjectInputStream in = null;
+    try {
+      in = new ObjectInputStream(source);
+      PhonePrefixMap map = new PhonePrefixMap();
+      map.readExternal(in);
+      availablePhonePrefixMaps.put(fileName, map);
+    } catch (IOException e) {
+      logger.log(Level.WARNING, e.toString());
+    } finally {
+      close(in);
+    }
+  }
+
+  private static void close(InputStream in) {
+    if (in != null) {
+      try {
+        in.close();
+      } catch (IOException e) {
+        logger.log(Level.WARNING, e.toString());
+      }
+    }
+  }
+
+  /**
+   * Returns a text description in the given language for the given phone number.
+   *
+   * @param number  the phone number for which we want to get a text description
+   * @param language  two or three-letter lowercase ISO language codes as defined by ISO 639. Note
+   *     that where two different language codes exist (e.g. 'he' and 'iw' for Hebrew) we use the
+   *     one that Java/Android canonicalized on ('iw' in this case).
+   * @param script  four-letter titlecase (the first letter is uppercase and the rest of the letters
+   *     are lowercase) ISO script code as defined in ISO 15924
+   * @param region  two-letter uppercase ISO country code as defined by ISO 3166-1
+   * @return  a text description in the given language for the given phone number, or an empty
+   *     string if a description is not available
+   */
+  public String getDescriptionForNumber(
+      PhoneNumber number, String language, String script, String region) {
+    int countryCallingCode = number.getCountryCode();
+    // As the NANPA data is split into multiple files covering 3-digit areas, use a phone number
+    // prefix of 4 digits for NANPA instead, e.g. 1650.
+    int phonePrefix = (countryCallingCode != 1)
+        ? countryCallingCode : (1000 + (int) (number.getNationalNumber() / 10000000));
+    PhonePrefixMap phonePrefixDescriptions =
+        getPhonePrefixDescriptions(phonePrefix, language, script, region);
+    String description = (phonePrefixDescriptions != null)
+        ? phonePrefixDescriptions.lookup(number) : null;
+    // When a location is not available in the requested language, fall back to English.
+    if ((description == null || description.length() == 0) && mayFallBackToEnglish(language)) {
+      PhonePrefixMap defaultMap = getPhonePrefixDescriptions(phonePrefix, "en", "", "");
+      if (defaultMap == null) {
+        return "";
+      }
+      description = defaultMap.lookup(number);
+    }
+    return description != null ? description : "";
+  }
+
+  private boolean mayFallBackToEnglish(String lang) {
+    // Don't fall back to English if the requested language is among the following:
+    // - Chinese
+    // - Japanese
+    // - Korean
+    return !lang.equals("zh") && !lang.equals("ja") && !lang.equals("ko");
+  }
+}
diff --git a/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMap.java b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMap.java
new file mode 100644
index 0000000..3a6565e
--- /dev/null
+++ b/repackaged/internal/prefixmapper/src/com/android/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMap.java
@@ -0,0 +1,128 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import com.android.i18n.phonenumbers.PhoneNumberUtil;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.StringTokenizer;
+
+/**
+ * A utility that maps phone number prefixes to a list of strings describing the time zones to
+ * which each prefix belongs.
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PrefixTimeZonesMap implements Externalizable {
+  private final PhonePrefixMap phonePrefixMap = new PhonePrefixMap();
+  private static final String RAW_STRING_TIMEZONES_SEPARATOR = "&";
+
+  /**
+    * Creates a {@link PrefixTimeZonesMap} initialized with {@code sortedPrefixTimeZoneMap}.  Note
+    * that the underlying implementation of this method is expensive thus should not be called by
+    * time-critical applications.
+    *
+    * @param sortedPrefixTimeZoneMap  a map from phone number prefixes to their corresponding time
+    * zones, sorted in ascending order of the phone number prefixes as integers.
+    */
+  public void readPrefixTimeZonesMap(SortedMap<Integer, String> sortedPrefixTimeZoneMap) {
+    phonePrefixMap.readPhonePrefixMap(sortedPrefixTimeZoneMap);
+  }
+
+  /**
+   * Supports Java Serialization.
+   */
+  public void writeExternal(ObjectOutput objectOutput) throws IOException {
+    phonePrefixMap.writeExternal(objectOutput);
+  }
+
+  public void readExternal(ObjectInput objectInput) throws IOException {
+    phonePrefixMap.readExternal(objectInput);
+  }
+
+  /**
+   * Returns the list of time zones {@code key} corresponds to.
+   *
+   * <p>{@code key} could be the calling country code and the full significant number of a
+   * certain number, or it could be just a phone-number prefix.
+   * For example, the full number 16502530000 (from the phone-number +1 650 253 0000) is a valid
+   * input. Also, any of its prefixes, such as 16502, is also valid.
+   *
+   * @param key  the key to look up
+   * @return  the list of corresponding time zones
+   */
+  private List<String> lookupTimeZonesForNumber(long key) {
+    // Lookup in the map data. The returned String may consist of several time zones, so it must be
+    // split.
+    String timezonesString = phonePrefixMap.lookup(key);
+    if (timezonesString == null) {
+      return new LinkedList<String>();
+    }
+    return tokenizeRawOutputString(timezonesString);
+  }
+
+  /**
+   * As per {@link #lookupTimeZonesForNumber(long)}, but receives the number as a PhoneNumber
+   * instead of a long.
+   *
+   * @param number  the phone number to look up
+   * @return  the list of corresponding time zones
+   */
+  public List<String> lookupTimeZonesForNumber(PhoneNumber number) {
+    long phonePrefix = Long.parseLong(number.getCountryCode()
+        + PhoneNumberUtil.getInstance().getNationalSignificantNumber(number));
+    return lookupTimeZonesForNumber(phonePrefix);
+  }
+
+  /**
+   * Returns the list of time zones {@code number}'s calling country code corresponds to.
+   *
+   * @param number  the phone number to look up
+   * @return  the list of corresponding time zones
+   */
+  public List<String> lookupCountryLevelTimeZonesForNumber(PhoneNumber number) {
+    return lookupTimeZonesForNumber(number.getCountryCode());
+  }
+
+  /**
+   * Split {@code timezonesString} into all the time zones that are part of it.
+   */
+  private List<String> tokenizeRawOutputString(String timezonesString) {
+    StringTokenizer tokenizer = new StringTokenizer(timezonesString,
+                                                    RAW_STRING_TIMEZONES_SEPARATOR);
+    LinkedList<String> timezonesList = new LinkedList<String>();
+    while (tokenizer.hasMoreTokens()) {
+      timezonesList.add(tokenizer.nextToken());
+    }
+    return timezonesList;
+  }
+
+  /**
+   * Dumps the mappings contained in the phone prefix map.
+   */
+  @Override
+  public String toString() {
+    return phonePrefixMap.toString();
+  }
+}
diff --git a/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorageTest.java b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorageTest.java
new file mode 100644
index 0000000..9184d51
--- /dev/null
+++ b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/FlyweightMapStorageTest.java
@@ -0,0 +1,109 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Collections;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+/**
+ * Unittests for FlyweightMapStorage.java
+ *
+ * @author Philippe Liard
+ * @hide This class is not part of the Android public SDK API
+ */
+public class FlyweightMapStorageTest extends TestCase {
+  private static final SortedMap<Integer, String> phonePrefixMap;
+  static {
+    SortedMap<Integer, String> tmpMap = new TreeMap<Integer, String>();
+    tmpMap.put(331402, "Paris");
+    tmpMap.put(331434, "Paris");
+    tmpMap.put(334910, "Marseille");
+    tmpMap.put(334911, "Marseille");
+    tmpMap.put(334912, "");
+    tmpMap.put(334913, "");
+    phonePrefixMap = Collections.unmodifiableSortedMap(tmpMap);
+  }
+
+  private FlyweightMapStorage mapStorage;
+
+  @Override
+  protected void setUp() throws Exception {
+    mapStorage = new FlyweightMapStorage();
+    mapStorage.readFromSortedMap(phonePrefixMap);
+  }
+
+  public void testReadFromSortedMap() {
+    assertEquals(331402, mapStorage.getPrefix(0));
+    assertEquals(331434, mapStorage.getPrefix(1));
+    assertEquals(334910, mapStorage.getPrefix(2));
+    assertEquals(334911, mapStorage.getPrefix(3));
+
+    assertEquals("Paris", mapStorage.getDescription(0));
+    assertSame(mapStorage.getDescription(0), mapStorage.getDescription(1));
+
+    assertEquals("Marseille", mapStorage.getDescription(2));
+    assertSame(mapStorage.getDescription(2), mapStorage.getDescription(3));
+  }
+
+  public void testReadFromSortedMapSupportsEmptyDescription() {
+    assertEquals(334912, mapStorage.getPrefix(4));
+    assertEquals(334913, mapStorage.getPrefix(5));
+
+    assertEquals("", mapStorage.getDescription(4));
+    assertSame(mapStorage.getDescription(4), mapStorage.getDescription(5));
+  }
+
+  public void testWriteAndReadExternal() throws IOException {
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+    mapStorage.writeExternal(objectOutputStream);
+    objectOutputStream.flush();
+
+    FlyweightMapStorage newMapStorage = new FlyweightMapStorage();
+    ObjectInputStream objectInputStream =
+        new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
+    newMapStorage.readExternal(objectInputStream);
+
+    String expected = mapStorage.toString();
+    assertEquals(expected, newMapStorage.toString());
+  }
+
+  public void testReadExternalThrowsIOExceptionWithMalformedData() throws IOException {
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+    objectOutputStream.writeUTF("hello");
+    objectOutputStream.flush();
+    ObjectInputStream objectInputStream =
+        new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
+    FlyweightMapStorage newMapStorage = new FlyweightMapStorage();
+    try {
+      newMapStorage.readExternal(objectInputStream);
+      fail();
+    } catch (IOException e) {
+      // Exception expected.
+    }
+  }
+}
diff --git a/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/MappingFileProviderTest.java b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/MappingFileProviderTest.java
new file mode 100644
index 0000000..399ba55
--- /dev/null
+++ b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/MappingFileProviderTest.java
@@ -0,0 +1,95 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Unittests for MappingFileProvider.java
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class MappingFileProviderTest extends TestCase {
+  private final MappingFileProvider mappingProvider = new MappingFileProvider();
+  private static final Logger logger = Logger.getLogger(MappingFileProviderTest.class.getName());
+
+  public MappingFileProviderTest() {
+    SortedMap<Integer, Set<String>> mapping = new TreeMap<Integer, Set<String>>();
+    mapping.put(1, newHashSet("en"));
+    mapping.put(86, newHashSet("zh", "en", "zh_Hant"));
+    mapping.put(41, newHashSet("de", "fr", "it", "rm"));
+    mapping.put(65, newHashSet("en", "zh_Hans", "ms", "ta"));
+
+    mappingProvider.readFileConfigs(mapping);
+  }
+
+  private static HashSet<String> newHashSet(String... strings) {
+    HashSet<String> set = new HashSet<String>();
+    set.addAll(Arrays.asList(strings));
+    return set;
+  }
+
+  public void testReadWriteExternal() {
+    try {
+      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+      ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+      mappingProvider.writeExternal(objectOutputStream);
+      objectOutputStream.flush();
+
+      MappingFileProvider newMappingProvider = new MappingFileProvider();
+      newMappingProvider.readExternal(
+          new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
+      assertEquals(mappingProvider.toString(), newMappingProvider.toString());
+    } catch (IOException e) {
+      logger.log(Level.SEVERE, e.getMessage());
+      fail();
+    }
+  }
+
+  public void testGetFileName() {
+    assertEquals("1_en", mappingProvider.getFileName(1, "en", "", ""));
+    assertEquals("1_en", mappingProvider.getFileName(1, "en", "", "US"));
+    assertEquals("1_en", mappingProvider.getFileName(1, "en", "", "GB"));
+    assertEquals("41_de", mappingProvider.getFileName(41, "de", "", "CH"));
+    assertEquals("", mappingProvider.getFileName(44, "en", "", "GB"));
+    assertEquals("86_zh", mappingProvider.getFileName(86, "zh", "", ""));
+    assertEquals("86_zh", mappingProvider.getFileName(86, "zh", "Hans", ""));
+    assertEquals("86_zh", mappingProvider.getFileName(86, "zh", "", "CN"));
+    assertEquals("", mappingProvider.getFileName(86, "", "", "CN"));
+    assertEquals("86_zh", mappingProvider.getFileName(86, "zh", "Hans", "CN"));
+    assertEquals("86_zh", mappingProvider.getFileName(86, "zh", "Hans", "SG"));
+    assertEquals("86_zh", mappingProvider.getFileName(86, "zh", "", "SG"));
+    assertEquals("86_zh_Hant", mappingProvider.getFileName(86, "zh", "", "TW"));
+    assertEquals("86_zh_Hant", mappingProvider.getFileName(86, "zh", "", "HK"));
+    assertEquals("86_zh_Hant", mappingProvider.getFileName(86, "zh", "Hant", "TW"));
+  }
+}
diff --git a/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMapTest.java b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMapTest.java
new file mode 100644
index 0000000..60f16bc
--- /dev/null
+++ b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PhonePrefixMapTest.java
@@ -0,0 +1,195 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+/**
+ * Unittests for PhonePrefixMap.java
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PhonePrefixMapTest extends TestCase {
+  private final PhonePrefixMap phonePrefixMapForUS = new PhonePrefixMap();
+  private final PhonePrefixMap phonePrefixMapForIT = new PhonePrefixMap();
+  private PhoneNumber number = new PhoneNumber();
+
+  public PhonePrefixMapTest() {
+    SortedMap<Integer, String> sortedMapForUS = new TreeMap<Integer, String>();
+    sortedMapForUS.put(1212, "New York");
+    sortedMapForUS.put(1480, "Arizona");
+    sortedMapForUS.put(1650, "California");
+    sortedMapForUS.put(1907, "Alaska");
+    sortedMapForUS.put(1201664, "Westwood, NJ");
+    sortedMapForUS.put(1480893, "Phoenix, AZ");
+    sortedMapForUS.put(1501372, "Little Rock, AR");
+    sortedMapForUS.put(1626308, "Alhambra, CA");
+    sortedMapForUS.put(1650345, "San Mateo, CA");
+    sortedMapForUS.put(1867993, "Dawson, YT");
+    sortedMapForUS.put(1972480, "Richardson, TX");
+
+    phonePrefixMapForUS.readPhonePrefixMap(sortedMapForUS);
+
+    SortedMap<Integer, String> sortedMapForIT = new TreeMap<Integer, String>();
+    sortedMapForIT.put(3902, "Milan");
+    sortedMapForIT.put(3906, "Rome");
+    sortedMapForIT.put(39010, "Genoa");
+    sortedMapForIT.put(390131, "Alessandria");
+    sortedMapForIT.put(390321, "Novara");
+    sortedMapForIT.put(390975, "Potenza");
+
+    phonePrefixMapForIT.readPhonePrefixMap(sortedMapForIT);
+  }
+
+  private static SortedMap<Integer, String> createDefaultStorageMapCandidate() {
+    SortedMap<Integer, String> sortedMap = new TreeMap<Integer, String>();
+    // Make the phone prefixs bigger to store them using integer.
+    sortedMap.put(121212345, "New York");
+    sortedMap.put(148034434, "Arizona");
+    return sortedMap;
+  }
+
+  private static SortedMap<Integer, String> createFlyweightStorageMapCandidate() {
+    SortedMap<Integer, String> sortedMap = new TreeMap<Integer, String>();
+    sortedMap.put(1212, "New York");
+    sortedMap.put(1213, "New York");
+    sortedMap.put(1214, "New York");
+    sortedMap.put(1480, "Arizona");
+    return sortedMap;
+  }
+
+  public void testGetSmallerMapStorageChoosesDefaultImpl() {
+    PhonePrefixMapStorageStrategy mapStorage =
+        new PhonePrefixMap().getSmallerMapStorage(createDefaultStorageMapCandidate());
+    assertFalse(mapStorage instanceof FlyweightMapStorage);
+  }
+
+  public void testGetSmallerMapStorageChoosesFlyweightImpl() {
+    PhonePrefixMapStorageStrategy mapStorage =
+        new PhonePrefixMap().getSmallerMapStorage(createFlyweightStorageMapCandidate());
+    assertTrue(mapStorage instanceof FlyweightMapStorage);
+  }
+
+  public void testLookupInvalidNumber_US() {
+    // central office code cannot start with 1.
+    number.setCountryCode(1).setNationalNumber(2121234567L);
+    assertEquals("New York", phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumber_NJ() {
+    number.setCountryCode(1).setNationalNumber(2016641234L);
+    assertEquals("Westwood, NJ", phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumber_NY() {
+    number.setCountryCode(1).setNationalNumber(2126641234L);
+    assertEquals("New York", phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumber_CA_1() {
+    number.setCountryCode(1).setNationalNumber(6503451234L);
+    assertEquals("San Mateo, CA", phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumber_CA_2() {
+    number.setCountryCode(1).setNationalNumber(6502531234L);
+    assertEquals("California", phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumberFound_TX() {
+    number.setCountryCode(1).setNationalNumber(9724801234L);
+    assertEquals("Richardson, TX", phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumberNotFound_TX() {
+    number.setCountryCode(1).setNationalNumber(9724811234L);
+    assertNull(phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumber_CH() {
+    number.setCountryCode(41).setNationalNumber(446681300L);
+    assertNull(phonePrefixMapForUS.lookup(number));
+  }
+
+  public void testLookupNumber_IT() {
+    number.setCountryCode(39).setNationalNumber(212345678L).setItalianLeadingZero(true);
+    assertEquals("Milan", phonePrefixMapForIT.lookup(number));
+
+    number.setNationalNumber(612345678L);
+    assertEquals("Rome", phonePrefixMapForIT.lookup(number));
+
+    number.setNationalNumber(3211234L);
+    assertEquals("Novara", phonePrefixMapForIT.lookup(number));
+
+    // A mobile number
+    number.setNationalNumber(321123456L).setItalianLeadingZero(false);
+    assertNull(phonePrefixMapForIT.lookup(number));
+
+    // An invalid number (too short)
+    number.setNationalNumber(321123L).setItalianLeadingZero(true);
+    assertEquals("Novara", phonePrefixMapForIT.lookup(number));
+  }
+
+  /**
+   * Creates a new phone prefix map serializing the provided phone prefix map to a stream and then
+   * reading this stream. The resulting phone prefix map is expected to be strictly equal to the
+   * provided one from which it was generated.
+   */
+  private static PhonePrefixMap createNewPhonePrefixMap(
+      PhonePrefixMap phonePrefixMap) throws IOException {
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+    phonePrefixMap.writeExternal(objectOutputStream);
+    objectOutputStream.flush();
+
+    PhonePrefixMap newPhonePrefixMap = new PhonePrefixMap();
+    newPhonePrefixMap.readExternal(
+        new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
+    return newPhonePrefixMap;
+  }
+
+  public void testReadWriteExternalWithDefaultStrategy() throws IOException {
+    PhonePrefixMap localPhonePrefixMap = new PhonePrefixMap();
+    localPhonePrefixMap.readPhonePrefixMap(createDefaultStorageMapCandidate());
+    assertFalse(localPhonePrefixMap.getPhonePrefixMapStorage() instanceof FlyweightMapStorage);
+
+    PhonePrefixMap newPhonePrefixMap;
+    newPhonePrefixMap = createNewPhonePrefixMap(localPhonePrefixMap);
+    assertEquals(localPhonePrefixMap.toString(), newPhonePrefixMap.toString());
+  }
+
+  public void testReadWriteExternalWithFlyweightStrategy() throws IOException {
+    PhonePrefixMap localPhonePrefixMap = new PhonePrefixMap();
+    localPhonePrefixMap.readPhonePrefixMap(createFlyweightStorageMapCandidate());
+    assertTrue(localPhonePrefixMap.getPhonePrefixMapStorage() instanceof FlyweightMapStorage);
+
+    PhonePrefixMap newPhonePrefixMap;
+    newPhonePrefixMap = createNewPhonePrefixMap(localPhonePrefixMap);
+    assertEquals(localPhonePrefixMap.toString(), newPhonePrefixMap.toString());
+  }
+}
diff --git a/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PrefixFileReaderTest.java b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PrefixFileReaderTest.java
new file mode 100644
index 0000000..ab2efdc
--- /dev/null
+++ b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PrefixFileReaderTest.java
@@ -0,0 +1,77 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2013 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import junit.framework.TestCase;
+
+/**
+ * Unit tests for PrefixFileReader.java
+ *
+ * @author Cecilia Roes
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PrefixFileReaderTest extends TestCase {
+  private final PrefixFileReader reader = new PrefixFileReader(TEST_MAPPING_DATA_DIRECTORY);
+  private static final String TEST_MAPPING_DATA_DIRECTORY =
+      "/com/android/i18n/phonenumbers/geocoding/testing_data/";
+
+  private static final PhoneNumber KO_NUMBER =
+      new PhoneNumber().setCountryCode(82).setNationalNumber(22123456L);
+  private static final PhoneNumber US_NUMBER1 =
+      new PhoneNumber().setCountryCode(1).setNationalNumber(6502530000L);
+  private static final PhoneNumber US_NUMBER2 =
+      new PhoneNumber().setCountryCode(1).setNationalNumber(2128120000L);
+  private static final PhoneNumber US_NUMBER3 =
+      new PhoneNumber().setCountryCode(1).setNationalNumber(6174240000L);
+  private static final PhoneNumber SE_NUMBER =
+      new PhoneNumber().setCountryCode(46).setNationalNumber(81234567L);
+
+  public void testGetDescriptionForNumberWithMapping() {
+    assertEquals("Kalifornien",
+                 reader.getDescriptionForNumber(US_NUMBER1, "de", "", "CH"));
+    assertEquals("CA",
+                 reader.getDescriptionForNumber(US_NUMBER1, "en", "", "AU"));
+    assertEquals("\uC11C\uC6B8",
+                 reader.getDescriptionForNumber(KO_NUMBER, "ko", "", ""));
+    assertEquals("Seoul",
+                 reader.getDescriptionForNumber(KO_NUMBER, "en", "", ""));
+  }
+
+  public void testGetDescriptionForNumberWithMissingMapping() {
+    assertEquals("", reader.getDescriptionForNumber(US_NUMBER3, "en", "", ""));
+  }
+
+  public void testGetDescriptionUsingFallbackLanguage() {
+    // Mapping file exists but the number isn't present, causing it to fallback.
+    assertEquals("New York, NY",
+                 reader.getDescriptionForNumber(US_NUMBER2, "de", "", "CH"));
+    // No mapping file exists, causing it to fallback.
+    assertEquals("New York, NY",
+                 reader.getDescriptionForNumber(US_NUMBER2, "sv", "", ""));
+  }
+
+  public void testGetDescriptionForNonFallbackLanguage() {
+    assertEquals("", reader.getDescriptionForNumber(US_NUMBER2, "ko", "", ""));
+  }
+
+  public void testGetDescriptionForNumberWithoutMappingFile() {
+    assertEquals("", reader.getDescriptionForNumber(SE_NUMBER, "sv", "", ""));
+    assertEquals("", reader.getDescriptionForNumber(SE_NUMBER, "en", "", ""));
+  }
+}
diff --git a/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMapTest.java b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMapTest.java
new file mode 100644
index 0000000..1fb4d42
--- /dev/null
+++ b/repackaged/internal/prefixmapper/test/com/android/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMapTest.java
@@ -0,0 +1,178 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.prefixmapper;
+
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+/**
+ * Unittests for PrefixTimeZonesMap.java
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PrefixTimeZonesMapTest extends TestCase {
+  private final PrefixTimeZonesMap prefixTimeZonesMapForUS = new PrefixTimeZonesMap();
+  private final PrefixTimeZonesMap prefixTimeZonesMapForRU = new PrefixTimeZonesMap();
+
+  // US time zones
+  private static final String CHICAGO_TZ = "America/Chicago";
+  private static final String DENVER_TZ = "America/Denver";
+  private static final String LOS_ANGELES_TZ = "America/Los_Angeles";
+  private static final String NEW_YORK_TZ = "America/New_York";
+
+  // Russian time zones
+  private static final String IRKUTSK_TZ = "Asia/Irkutsk";
+  private static final String MOSCOW_TZ = "Europe/Moscow";
+  private static final String VLADIVOSTOK_TZ = "Asia/Vladivostok";
+  private static final String YEKATERINBURG_TZ = "Asia/Yekaterinburg";
+
+  public PrefixTimeZonesMapTest() {
+    SortedMap<Integer, String> sortedMapForUS = new TreeMap<Integer, String>();
+    sortedMapForUS.put(1, NEW_YORK_TZ + "&" + CHICAGO_TZ + "&" + LOS_ANGELES_TZ + "&" + DENVER_TZ);
+    sortedMapForUS.put(1201, NEW_YORK_TZ);
+    sortedMapForUS.put(1205, CHICAGO_TZ);
+    sortedMapForUS.put(1208292, LOS_ANGELES_TZ);
+    sortedMapForUS.put(1208234, DENVER_TZ);
+    sortedMapForUS.put(1541367, LOS_ANGELES_TZ);
+    sortedMapForUS.put(1423843, NEW_YORK_TZ);
+    sortedMapForUS.put(1402721, CHICAGO_TZ);
+    sortedMapForUS.put(1208888, DENVER_TZ);
+
+    prefixTimeZonesMapForUS.readPrefixTimeZonesMap(sortedMapForUS);
+
+    SortedMap<Integer, String> sortedMapForRU = new TreeMap<Integer, String>();
+    sortedMapForRU.put(7421, VLADIVOSTOK_TZ);
+    sortedMapForRU.put(7879, MOSCOW_TZ);
+    sortedMapForRU.put(7342, YEKATERINBURG_TZ);
+    sortedMapForRU.put(7395, IRKUTSK_TZ);
+
+    prefixTimeZonesMapForRU.readPrefixTimeZonesMap(sortedMapForRU);
+  }
+
+  static List<String> buildListOfTimeZones(String ... timezones) {
+    ArrayList<String> timezonesList = new ArrayList<String>(timezones.length);
+    for (String timezone : timezones) {
+      timezonesList.add(timezone);
+    }
+    return timezonesList;
+  }
+
+  private static SortedMap<Integer, String> createMapCandidate() {
+    SortedMap<Integer, String> sortedMap = new TreeMap<Integer, String>();
+    sortedMap.put(1212, NEW_YORK_TZ);
+    sortedMap.put(1213, NEW_YORK_TZ);
+    sortedMap.put(1214, NEW_YORK_TZ);
+    sortedMap.put(1480, CHICAGO_TZ);
+    return sortedMap;
+  }
+
+  public void testLookupTimeZonesForNumberCountryLevel_US() {
+    PhoneNumber number = new PhoneNumber();
+    number.setCountryCode(1).setNationalNumber(1000000000L);
+    assertEquals(buildListOfTimeZones(NEW_YORK_TZ, CHICAGO_TZ, LOS_ANGELES_TZ, DENVER_TZ),
+                 prefixTimeZonesMapForUS.lookupTimeZonesForNumber(number));
+  }
+
+  public void testLookupTimeZonesForNumber_ValidNumber_Chicago() {
+    PhoneNumber number = new PhoneNumber();
+    number.setCountryCode(1).setNationalNumber(2051235458L);
+    assertEquals(buildListOfTimeZones(CHICAGO_TZ),
+                 prefixTimeZonesMapForUS.lookupTimeZonesForNumber(number));
+  }
+
+  public void testLookupTimeZonesForNumber_LA() {
+    PhoneNumber number = new PhoneNumber();
+    number.setCountryCode(1).setNationalNumber(2082924565L);
+    assertEquals(buildListOfTimeZones(LOS_ANGELES_TZ),
+                 prefixTimeZonesMapForUS.lookupTimeZonesForNumber(number));
+  }
+
+  public void testLookupTimeZonesForNumber_NY() {
+    PhoneNumber number = new PhoneNumber();
+    number.setCountryCode(1).setNationalNumber(2016641234L);
+    assertEquals(buildListOfTimeZones(NEW_YORK_TZ),
+                 prefixTimeZonesMapForUS.lookupTimeZonesForNumber(number));
+  }
+
+  public void testLookupTimeZonesForNumber_CH() {
+    PhoneNumber number = new PhoneNumber();
+    number.setCountryCode(41).setNationalNumber(446681300L);
+    assertEquals(buildListOfTimeZones(),
+                 prefixTimeZonesMapForUS.lookupTimeZonesForNumber(number));
+  }
+
+  public void testLookupTimeZonesForNumber_RU() {
+    PhoneNumber number = new PhoneNumber();
+    number.setCountryCode(7).setNationalNumber(87945154L);
+    assertEquals(buildListOfTimeZones(MOSCOW_TZ),
+                 prefixTimeZonesMapForRU.lookupTimeZonesForNumber(number));
+
+    number.setNationalNumber(421548578L);
+    assertEquals(buildListOfTimeZones(VLADIVOSTOK_TZ),
+                 prefixTimeZonesMapForRU.lookupTimeZonesForNumber(number));
+
+    number.setNationalNumber(342457897L);
+    assertEquals(buildListOfTimeZones(YEKATERINBURG_TZ),
+                 prefixTimeZonesMapForRU.lookupTimeZonesForNumber(number));
+
+    // A mobile number
+    number.setNationalNumber(9342457897L);
+    assertEquals(buildListOfTimeZones(),
+                 prefixTimeZonesMapForRU.lookupTimeZonesForNumber(number));
+
+    // An invalid number (too short)
+    number.setNationalNumber(3951L);
+    assertEquals(buildListOfTimeZones(IRKUTSK_TZ),
+                 prefixTimeZonesMapForRU.lookupTimeZonesForNumber(number));
+  }
+
+  /**
+   * Creates a new PrefixTimeZonesMap serializing the provided map to a stream and then reading
+   * this stream. The resulting PrefixTimeZonesMap is expected to be strictly equal to the provided
+   * one from which it was generated.
+   */
+  private static PrefixTimeZonesMap createNewPrefixTimeZonesMap(
+      PrefixTimeZonesMap prefixTimeZonesMap) throws IOException {
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+    prefixTimeZonesMap.writeExternal(objectOutputStream);
+    objectOutputStream.flush();
+
+    PrefixTimeZonesMap newPrefixTimeZonesMap = new PrefixTimeZonesMap();
+    newPrefixTimeZonesMap.readExternal(
+        new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())));
+    return newPrefixTimeZonesMap;
+  }
+
+  public void testReadWriteExternal() throws IOException {
+    PrefixTimeZonesMap localPrefixTimeZonesMap = new PrefixTimeZonesMap();
+    localPrefixTimeZonesMap.readPrefixTimeZonesMap(createMapCandidate());
+
+    PrefixTimeZonesMap newPrefixTimeZonesMap = createNewPrefixTimeZonesMap(localPrefixTimeZonesMap);
+    assertEquals(localPrefixTimeZonesMap.toString(), newPrefixTimeZonesMap.toString());
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java
new file mode 100644
index 0000000..5432f67
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java
@@ -0,0 +1,87 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This file is automatically generated by {@link BuildMetadataProtoFromXml}.
+ * Please don't modify it directly.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @hide This class is not part of the Android public SDK API
+ */
+public class AlternateFormatsCountryCodeSet {
+  // A set of all country codes for which data is available.
+  static Set<Integer> getCountryCodeSet() {
+    // The capacity is set to 62 as there are 47 different entries,
+    // and this offers a load factor of roughly 0.75.
+    Set<Integer> countryCodeSet = new HashSet<Integer>(62);
+
+    countryCodeSet.add(7);
+    countryCodeSet.add(27);
+    countryCodeSet.add(30);
+    countryCodeSet.add(31);
+    countryCodeSet.add(34);
+    countryCodeSet.add(36);
+    countryCodeSet.add(39);
+    countryCodeSet.add(43);
+    countryCodeSet.add(44);
+    countryCodeSet.add(49);
+    countryCodeSet.add(52);
+    countryCodeSet.add(54);
+    countryCodeSet.add(55);
+    countryCodeSet.add(58);
+    countryCodeSet.add(61);
+    countryCodeSet.add(62);
+    countryCodeSet.add(63);
+    countryCodeSet.add(64);
+    countryCodeSet.add(66);
+    countryCodeSet.add(81);
+    countryCodeSet.add(84);
+    countryCodeSet.add(90);
+    countryCodeSet.add(91);
+    countryCodeSet.add(94);
+    countryCodeSet.add(95);
+    countryCodeSet.add(255);
+    countryCodeSet.add(350);
+    countryCodeSet.add(351);
+    countryCodeSet.add(352);
+    countryCodeSet.add(358);
+    countryCodeSet.add(359);
+    countryCodeSet.add(372);
+    countryCodeSet.add(373);
+    countryCodeSet.add(380);
+    countryCodeSet.add(381);
+    countryCodeSet.add(385);
+    countryCodeSet.add(505);
+    countryCodeSet.add(506);
+    countryCodeSet.add(595);
+    countryCodeSet.add(675);
+    countryCodeSet.add(676);
+    countryCodeSet.add(679);
+    countryCodeSet.add(855);
+    countryCodeSet.add(856);
+    countryCodeSet.add(971);
+    countryCodeSet.add(972);
+    countryCodeSet.add(995);
+
+    return countryCodeSet;
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
new file mode 100644
index 0000000..7d3e6fe
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
@@ -0,0 +1,667 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.NumberFormat;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import com.android.i18n.phonenumbers.internal.RegexCache;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A formatter which formats phone numbers as they are entered.
+ *
+ * <p>An AsYouTypeFormatter can be created by invoking
+ * {@link PhoneNumberUtil#getAsYouTypeFormatter}. After that, digits can be added by invoking
+ * {@link #inputDigit} on the formatter instance, and the partially formatted phone number will be
+ * returned each time a digit is added. {@link #clear} can be invoked before formatting a new
+ * number.
+ *
+ * <p>See the unittests for more details on how the formatter is to be used.
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class AsYouTypeFormatter {
+  private String currentOutput = "";
+  private StringBuilder formattingTemplate = new StringBuilder();
+  // The pattern from numberFormat that is currently used to create formattingTemplate.
+  private String currentFormattingPattern = "";
+  private StringBuilder accruedInput = new StringBuilder();
+  private StringBuilder accruedInputWithoutFormatting = new StringBuilder();
+  // This indicates whether AsYouTypeFormatter is currently doing the formatting.
+  private boolean ableToFormat = true;
+  // Set to true when users enter their own formatting. AsYouTypeFormatter will do no formatting at
+  // all when this is set to true.
+  private boolean inputHasFormatting = false;
+  // This is set to true when we know the user is entering a full national significant number, since
+  // we have either detected a national prefix or an international dialing prefix. When this is
+  // true, we will no longer use local number formatting patterns.
+  private boolean isCompleteNumber = false;
+  private boolean isExpectingCountryCallingCode = false;
+  private final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
+  private String defaultCountry;
+
+  // Character used when appropriate to separate a prefix, such as a long NDD or a country calling
+  // code, from the national number.
+  private static final char SEPARATOR_BEFORE_NATIONAL_NUMBER = ' ';
+  private static final PhoneMetadata EMPTY_METADATA =
+      new PhoneMetadata().setInternationalPrefix("NA");
+  private PhoneMetadata defaultMetadata;
+  private PhoneMetadata currentMetadata;
+
+  // A pattern that is used to match character classes in regular expressions. An example of a
+  // character class is [1-4].
+  private static final Pattern CHARACTER_CLASS_PATTERN = Pattern.compile("\\[([^\\[\\]])*\\]");
+  // Any digit in a regular expression that actually denotes a digit. For example, in the regular
+  // expression 80[0-2]\d{6,10}, the first 2 digits (8 and 0) are standalone digits, but the rest
+  // are not.
+  // Two look-aheads are needed because the number following \\d could be a two-digit number, since
+  // the phone number can be as long as 15 digits.
+  private static final Pattern STANDALONE_DIGIT_PATTERN = Pattern.compile("\\d(?=[^,}][^,}])");
+
+  // A pattern that is used to determine if a numberFormat under availableFormats is eligible to be
+  // used by the AYTF. It is eligible when the format element under numberFormat contains groups of
+  // the dollar sign followed by a single digit, separated by valid phone number punctuation. This
+  // prevents invalid punctuation (such as the star sign in Israeli star numbers) getting into the
+  // output of the AYTF.
+  private static final Pattern ELIGIBLE_FORMAT_PATTERN =
+      Pattern.compile("[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*"
+          + "(\\$\\d" + "[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*)+");
+  // A set of characters that, if found in a national prefix formatting rules, are an indicator to
+  // us that we should separate the national prefix from the number when formatting.
+  private static final Pattern NATIONAL_PREFIX_SEPARATORS_PATTERN = Pattern.compile("[- ]");
+
+  // This is the minimum length of national number accrued that is required to trigger the
+  // formatter. The first element of the leadingDigitsPattern of each numberFormat contains a
+  // regular expression that matches up to this number of digits.
+  private static final int MIN_LEADING_DIGITS_LENGTH = 3;
+
+  // The digits that have not been entered yet will be represented by a \u2008, the punctuation
+  // space.
+  private static final String DIGIT_PLACEHOLDER = "\u2008";
+  private static final Pattern DIGIT_PATTERN = Pattern.compile(DIGIT_PLACEHOLDER);
+  private int lastMatchPosition = 0;
+  // The position of a digit upon which inputDigitAndRememberPosition is most recently invoked, as
+  // found in the original sequence of characters the user entered.
+  private int originalPosition = 0;
+  // The position of a digit upon which inputDigitAndRememberPosition is most recently invoked, as
+  // found in accruedInputWithoutFormatting.
+  private int positionToRemember = 0;
+  // This contains anything that has been entered so far preceding the national significant number,
+  // and it is formatted (e.g. with space inserted). For example, this can contain IDD, country
+  // code, and/or NDD, etc.
+  private StringBuilder prefixBeforeNationalNumber = new StringBuilder();
+  private boolean shouldAddSpaceAfterNationalPrefix = false;
+  // This contains the national prefix that has been extracted. It contains only digits without
+  // formatting.
+  private String extractedNationalPrefix = "";
+  private StringBuilder nationalNumber = new StringBuilder();
+  private List<NumberFormat> possibleFormats = new ArrayList<NumberFormat>();
+
+  // A cache for frequently used country-specific regular expressions.
+  private RegexCache regexCache = new RegexCache(64);
+
+  /**
+   * Constructs an as-you-type formatter. Should be obtained from {@link
+   * PhoneNumberUtil#getAsYouTypeFormatter}.
+   *
+   * @param regionCode  the country/region where the phone number is being entered
+   */
+  AsYouTypeFormatter(String regionCode) {
+    defaultCountry = regionCode;
+    currentMetadata = getMetadataForRegion(defaultCountry);
+    defaultMetadata = currentMetadata;
+  }
+
+  // The metadata needed by this class is the same for all regions sharing the same country calling
+  // code. Therefore, we return the metadata for "main" region for this country calling code.
+  private PhoneMetadata getMetadataForRegion(String regionCode) {
+    int countryCallingCode = phoneUtil.getCountryCodeForRegion(regionCode);
+    String mainCountry = phoneUtil.getRegionCodeForCountryCode(countryCallingCode);
+    PhoneMetadata metadata = phoneUtil.getMetadataForRegion(mainCountry);
+    if (metadata != null) {
+      return metadata;
+    }
+    // Set to a default instance of the metadata. This allows us to function with an incorrect
+    // region code, even if formatting only works for numbers specified with "+".
+    return EMPTY_METADATA;
+  }
+
+  // Returns true if a new template is created as opposed to reusing the existing template.
+  private boolean maybeCreateNewTemplate() {
+    // When there are multiple available formats, the formatter uses the first format where a
+    // formatting template could be created.
+    Iterator<NumberFormat> it = possibleFormats.iterator();
+    while (it.hasNext()) {
+      NumberFormat numberFormat = it.next();
+      String pattern = numberFormat.getPattern();
+      if (currentFormattingPattern.equals(pattern)) {
+        return false;
+      }
+      if (createFormattingTemplate(numberFormat)) {
+        currentFormattingPattern = pattern;
+        shouldAddSpaceAfterNationalPrefix =
+            NATIONAL_PREFIX_SEPARATORS_PATTERN.matcher(
+                numberFormat.getNationalPrefixFormattingRule()).find();
+        // With a new formatting template, the matched position using the old template needs to be
+        // reset.
+        lastMatchPosition = 0;
+        return true;
+      } else {  // Remove the current number format from possibleFormats.
+        it.remove();
+      }
+    }
+    ableToFormat = false;
+    return false;
+  }
+
+  private void getAvailableFormats(String leadingDigits) {
+    List<NumberFormat> formatList =
+        (isCompleteNumber && currentMetadata.intlNumberFormatSize() > 0)
+        ? currentMetadata.intlNumberFormats()
+        : currentMetadata.numberFormats();
+    boolean nationalPrefixIsUsedByCountry = currentMetadata.hasNationalPrefix();
+    for (NumberFormat format : formatList) {
+      if (!nationalPrefixIsUsedByCountry
+          || isCompleteNumber
+          || format.getNationalPrefixOptionalWhenFormatting()
+          || PhoneNumberUtil.formattingRuleHasFirstGroupOnly(
+              format.getNationalPrefixFormattingRule())) {
+        if (isFormatEligible(format.getFormat())) {
+          possibleFormats.add(format);
+        }
+      }
+    }
+    narrowDownPossibleFormats(leadingDigits);
+  }
+
+  private boolean isFormatEligible(String format) {
+    return ELIGIBLE_FORMAT_PATTERN.matcher(format).matches();
+  }
+
+  private void narrowDownPossibleFormats(String leadingDigits) {
+    int indexOfLeadingDigitsPattern = leadingDigits.length() - MIN_LEADING_DIGITS_LENGTH;
+    Iterator<NumberFormat> it = possibleFormats.iterator();
+    while (it.hasNext()) {
+      NumberFormat format = it.next();
+      if (format.leadingDigitsPatternSize() == 0) {
+        // Keep everything that isn't restricted by leading digits.
+        continue;
+      }
+      int lastLeadingDigitsPattern =
+          Math.min(indexOfLeadingDigitsPattern, format.leadingDigitsPatternSize() - 1);
+      Pattern leadingDigitsPattern = regexCache.getPatternForRegex(
+          format.getLeadingDigitsPattern(lastLeadingDigitsPattern));
+      Matcher m = leadingDigitsPattern.matcher(leadingDigits);
+      if (!m.lookingAt()) {
+        it.remove();
+      }
+    }
+  }
+
+  private boolean createFormattingTemplate(NumberFormat format) {
+    String numberPattern = format.getPattern();
+
+    // The formatter doesn't format numbers when numberPattern contains "|", e.g.
+    // (20|3)\d{4}. In those cases we quickly return.
+    if (numberPattern.indexOf('|') != -1) {
+      return false;
+    }
+
+    // Replace anything in the form of [..] with \d
+    numberPattern = CHARACTER_CLASS_PATTERN.matcher(numberPattern).replaceAll("\\\\d");
+
+    // Replace any standalone digit (not the one in d{}) with \d
+    numberPattern = STANDALONE_DIGIT_PATTERN.matcher(numberPattern).replaceAll("\\\\d");
+    formattingTemplate.setLength(0);
+    String tempTemplate = getFormattingTemplate(numberPattern, format.getFormat());
+    if (tempTemplate.length() > 0) {
+      formattingTemplate.append(tempTemplate);
+      return true;
+    }
+    return false;
+  }
+
+  // Gets a formatting template which can be used to efficiently format a partial number where
+  // digits are added one by one.
+  private String getFormattingTemplate(String numberPattern, String numberFormat) {
+    // Creates a phone number consisting only of the digit 9 that matches the
+    // numberPattern by applying the pattern to the longestPhoneNumber string.
+    String longestPhoneNumber = "999999999999999";
+    Matcher m = regexCache.getPatternForRegex(numberPattern).matcher(longestPhoneNumber);
+    m.find();  // this will always succeed
+    String aPhoneNumber = m.group();
+    // No formatting template can be created if the number of digits entered so far is longer than
+    // the maximum the current formatting rule can accommodate.
+    if (aPhoneNumber.length() < nationalNumber.length()) {
+      return "";
+    }
+    // Formats the number according to numberFormat
+    String template = aPhoneNumber.replaceAll(numberPattern, numberFormat);
+    // Replaces each digit with character DIGIT_PLACEHOLDER
+    template = template.replaceAll("9", DIGIT_PLACEHOLDER);
+    return template;
+  }
+
+  /**
+   * Clears the internal state of the formatter, so it can be reused.
+   */
+  public void clear() {
+    currentOutput = "";
+    accruedInput.setLength(0);
+    accruedInputWithoutFormatting.setLength(0);
+    formattingTemplate.setLength(0);
+    lastMatchPosition = 0;
+    currentFormattingPattern = "";
+    prefixBeforeNationalNumber.setLength(0);
+    extractedNationalPrefix = "";
+    nationalNumber.setLength(0);
+    ableToFormat = true;
+    inputHasFormatting = false;
+    positionToRemember = 0;
+    originalPosition = 0;
+    isCompleteNumber = false;
+    isExpectingCountryCallingCode = false;
+    possibleFormats.clear();
+    shouldAddSpaceAfterNationalPrefix = false;
+    if (!currentMetadata.equals(defaultMetadata)) {
+      currentMetadata = getMetadataForRegion(defaultCountry);
+    }
+  }
+
+  /**
+   * Formats a phone number on-the-fly as each digit is entered.
+   *
+   * @param nextChar  the most recently entered digit of a phone number. Formatting characters are
+   *     allowed, but as soon as they are encountered this method formats the number as entered and
+   *     not "as you type" anymore. Full width digits and Arabic-indic digits are allowed, and will
+   *     be shown as they are.
+   * @return  the partially formatted phone number.
+   */
+  public String inputDigit(char nextChar) {
+    currentOutput = inputDigitWithOptionToRememberPosition(nextChar, false);
+    return currentOutput;
+  }
+
+  /**
+   * Same as {@link #inputDigit}, but remembers the position where {@code nextChar} is inserted, so
+   * that it can be retrieved later by using {@link #getRememberedPosition}. The remembered
+   * position will be automatically adjusted if additional formatting characters are later
+   * inserted/removed in front of {@code nextChar}.
+   */
+  public String inputDigitAndRememberPosition(char nextChar) {
+    currentOutput = inputDigitWithOptionToRememberPosition(nextChar, true);
+    return currentOutput;
+  }
+
+  @SuppressWarnings("fallthrough")
+  private String inputDigitWithOptionToRememberPosition(char nextChar, boolean rememberPosition) {
+    accruedInput.append(nextChar);
+    if (rememberPosition) {
+      originalPosition = accruedInput.length();
+    }
+    // We do formatting on-the-fly only when each character entered is either a digit, or a plus
+    // sign (accepted at the start of the number only).
+    if (!isDigitOrLeadingPlusSign(nextChar)) {
+      ableToFormat = false;
+      inputHasFormatting = true;
+    } else {
+      nextChar = normalizeAndAccrueDigitsAndPlusSign(nextChar, rememberPosition);
+    }
+    if (!ableToFormat) {
+      // When we are unable to format because of reasons other than that formatting chars have been
+      // entered, it can be due to really long IDDs or NDDs. If that is the case, we might be able
+      // to do formatting again after extracting them.
+      if (inputHasFormatting) {
+        return accruedInput.toString();
+      } else if (attemptToExtractIdd()) {
+        if (attemptToExtractCountryCallingCode()) {
+          return attemptToChoosePatternWithPrefixExtracted();
+        }
+      } else if (ableToExtractLongerNdd()) {
+        // Add an additional space to separate long NDD and national significant number for
+        // readability. We don't set shouldAddSpaceAfterNationalPrefix to true, since we don't want
+        // this to change later when we choose formatting templates.
+        prefixBeforeNationalNumber.append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
+        return attemptToChoosePatternWithPrefixExtracted();
+      }
+      return accruedInput.toString();
+    }
+
+    // We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH digits (the plus
+    // sign is counted as a digit as well for this purpose) have been entered.
+    switch (accruedInputWithoutFormatting.length()) {
+      case 0:
+      case 1:
+      case 2:
+        return accruedInput.toString();
+      case 3:
+        if (attemptToExtractIdd()) {
+          isExpectingCountryCallingCode = true;
+        } else {  // No IDD or plus sign is found, might be entering in national format.
+          extractedNationalPrefix = removeNationalPrefixFromNationalNumber();
+          return attemptToChooseFormattingPattern();
+        }
+        // fall through
+      default:
+        if (isExpectingCountryCallingCode) {
+          if (attemptToExtractCountryCallingCode()) {
+            isExpectingCountryCallingCode = false;
+          }
+          return prefixBeforeNationalNumber + nationalNumber.toString();
+        }
+        if (possibleFormats.size() > 0) {  // The formatting patterns are already chosen.
+          String tempNationalNumber = inputDigitHelper(nextChar);
+          // See if the accrued digits can be formatted properly already. If not, use the results
+          // from inputDigitHelper, which does formatting based on the formatting pattern chosen.
+          String formattedNumber = attemptToFormatAccruedDigits();
+          if (formattedNumber.length() > 0) {
+            return formattedNumber;
+          }
+          narrowDownPossibleFormats(nationalNumber.toString());
+          if (maybeCreateNewTemplate()) {
+            return inputAccruedNationalNumber();
+          }
+          return ableToFormat
+             ? appendNationalNumber(tempNationalNumber)
+             : accruedInput.toString();
+        } else {
+          return attemptToChooseFormattingPattern();
+        }
+    }
+  }
+
+  private String attemptToChoosePatternWithPrefixExtracted() {
+    ableToFormat = true;
+    isExpectingCountryCallingCode = false;
+    possibleFormats.clear();
+    lastMatchPosition = 0;
+    formattingTemplate.setLength(0);
+    currentFormattingPattern = "";
+    return attemptToChooseFormattingPattern();
+  }
+
+  // @VisibleForTesting
+  String getExtractedNationalPrefix() {
+    return extractedNationalPrefix;
+  }
+
+  // Some national prefixes are a substring of others. If extracting the shorter NDD doesn't result
+  // in a number we can format, we try to see if we can extract a longer version here.
+  private boolean ableToExtractLongerNdd() {
+    if (extractedNationalPrefix.length() > 0) {
+      // Put the extracted NDD back to the national number before attempting to extract a new NDD.
+      nationalNumber.insert(0, extractedNationalPrefix);
+      // Remove the previously extracted NDD from prefixBeforeNationalNumber. We cannot simply set
+      // it to empty string because people sometimes incorrectly enter national prefix after the
+      // country code, e.g. +44 (0)20-1234-5678.
+      int indexOfPreviousNdd = prefixBeforeNationalNumber.lastIndexOf(extractedNationalPrefix);
+      prefixBeforeNationalNumber.setLength(indexOfPreviousNdd);
+    }
+    return !extractedNationalPrefix.equals(removeNationalPrefixFromNationalNumber());
+  }
+
+  private boolean isDigitOrLeadingPlusSign(char nextChar) {
+    return Character.isDigit(nextChar)
+        || (accruedInput.length() == 1
+            && PhoneNumberUtil.PLUS_CHARS_PATTERN.matcher(Character.toString(nextChar)).matches());
+  }
+
+  /**
+   * Checks to see if there is an exact pattern match for these digits. If so, we should use this
+   * instead of any other formatting template whose leadingDigitsPattern also matches the input.
+   */
+  String attemptToFormatAccruedDigits() {
+    for (NumberFormat numberFormat : possibleFormats) {
+      Matcher m = regexCache.getPatternForRegex(numberFormat.getPattern()).matcher(nationalNumber);
+      if (m.matches()) {
+        shouldAddSpaceAfterNationalPrefix =
+            NATIONAL_PREFIX_SEPARATORS_PATTERN.matcher(
+                numberFormat.getNationalPrefixFormattingRule()).find();
+        String formattedNumber = m.replaceAll(numberFormat.getFormat());
+        return appendNationalNumber(formattedNumber);
+      }
+    }
+    return "";
+  }
+
+  /**
+   * Returns the current position in the partially formatted phone number of the character which was
+   * previously passed in as the parameter of {@link #inputDigitAndRememberPosition}.
+   */
+  public int getRememberedPosition() {
+    if (!ableToFormat) {
+      return originalPosition;
+    }
+    int accruedInputIndex = 0;
+    int currentOutputIndex = 0;
+    while (accruedInputIndex < positionToRemember && currentOutputIndex < currentOutput.length()) {
+      if (accruedInputWithoutFormatting.charAt(accruedInputIndex)
+          == currentOutput.charAt(currentOutputIndex)) {
+        accruedInputIndex++;
+      }
+      currentOutputIndex++;
+    }
+    return currentOutputIndex;
+  }
+
+  /**
+   * Combines the national number with any prefix (IDD/+ and country code or national prefix) that
+   * was collected. A space will be inserted between them if the current formatting template
+   * indicates this to be suitable.
+   */
+  private String appendNationalNumber(String nationalNumber) {
+    int prefixBeforeNationalNumberLength = prefixBeforeNationalNumber.length();
+    if (shouldAddSpaceAfterNationalPrefix && prefixBeforeNationalNumberLength > 0
+        && prefixBeforeNationalNumber.charAt(prefixBeforeNationalNumberLength - 1)
+            != SEPARATOR_BEFORE_NATIONAL_NUMBER) {
+      // We want to add a space after the national prefix if the national prefix formatting rule
+      // indicates that this would normally be done, with the exception of the case where we already
+      // appended a space because the NDD was surprisingly long.
+      return new String(prefixBeforeNationalNumber) + SEPARATOR_BEFORE_NATIONAL_NUMBER
+          + nationalNumber;
+    } else {
+      return prefixBeforeNationalNumber + nationalNumber;
+    }
+  }
+
+  /**
+   * Attempts to set the formatting template and returns a string which contains the formatted
+   * version of the digits entered so far.
+   */
+  private String attemptToChooseFormattingPattern() {
+    // We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH digits of national
+    // number (excluding national prefix) have been entered.
+    if (nationalNumber.length() >= MIN_LEADING_DIGITS_LENGTH) {
+
+      getAvailableFormats(nationalNumber.toString());
+      // See if the accrued digits can be formatted properly already.
+      String formattedNumber = attemptToFormatAccruedDigits();
+      if (formattedNumber.length() > 0) {
+        return formattedNumber;
+      }
+      return maybeCreateNewTemplate() ? inputAccruedNationalNumber() : accruedInput.toString();
+    } else {
+      return appendNationalNumber(nationalNumber.toString());
+    }
+  }
+
+  /**
+   * Invokes inputDigitHelper on each digit of the national number accrued, and returns a formatted
+   * string in the end.
+   */
+  private String inputAccruedNationalNumber() {
+    int lengthOfNationalNumber = nationalNumber.length();
+    if (lengthOfNationalNumber > 0) {
+      String tempNationalNumber = "";
+      for (int i = 0; i < lengthOfNationalNumber; i++) {
+        tempNationalNumber = inputDigitHelper(nationalNumber.charAt(i));
+      }
+      return ableToFormat ? appendNationalNumber(tempNationalNumber) : accruedInput.toString();
+    } else {
+      return prefixBeforeNationalNumber.toString();
+    }
+  }
+
+  /**
+   * Returns true if the current country is a NANPA country and the national number begins with
+   * the national prefix.
+   */
+  private boolean isNanpaNumberWithNationalPrefix() {
+    // For NANPA numbers beginning with 1[2-9], treat the 1 as the national prefix. The reason is
+    // that national significant numbers in NANPA always start with [2-9] after the national prefix.
+    // Numbers beginning with 1[01] can only be short/emergency numbers, which don't need the
+    // national prefix.
+    return (currentMetadata.getCountryCode() == 1) && (nationalNumber.charAt(0) == '1')
+        && (nationalNumber.charAt(1) != '0') && (nationalNumber.charAt(1) != '1');
+  }
+
+  // Returns the national prefix extracted, or an empty string if it is not present.
+  private String removeNationalPrefixFromNationalNumber() {
+    int startOfNationalNumber = 0;
+    if (isNanpaNumberWithNationalPrefix()) {
+      startOfNationalNumber = 1;
+      prefixBeforeNationalNumber.append('1').append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
+      isCompleteNumber = true;
+    } else if (currentMetadata.hasNationalPrefixForParsing()) {
+      Pattern nationalPrefixForParsing =
+          regexCache.getPatternForRegex(currentMetadata.getNationalPrefixForParsing());
+      Matcher m = nationalPrefixForParsing.matcher(nationalNumber);
+      // Since some national prefix patterns are entirely optional, check that a national prefix
+      // could actually be extracted.
+      if (m.lookingAt() && m.end() > 0) {
+        // When the national prefix is detected, we use international formatting rules instead of
+        // national ones, because national formatting rules could contain local formatting rules
+        // for numbers entered without area code.
+        isCompleteNumber = true;
+        startOfNationalNumber = m.end();
+        prefixBeforeNationalNumber.append(nationalNumber.substring(0, startOfNationalNumber));
+      }
+    }
+    String nationalPrefix = nationalNumber.substring(0, startOfNationalNumber);
+    nationalNumber.delete(0, startOfNationalNumber);
+    return nationalPrefix;
+  }
+
+  /**
+   * Extracts IDD and plus sign to prefixBeforeNationalNumber when they are available, and places
+   * the remaining input into nationalNumber.
+   *
+   * @return  true when accruedInputWithoutFormatting begins with the plus sign or valid IDD for
+   *     defaultCountry.
+   */
+  private boolean attemptToExtractIdd() {
+    Pattern internationalPrefix =
+        regexCache.getPatternForRegex("\\" + PhoneNumberUtil.PLUS_SIGN + "|"
+            + currentMetadata.getInternationalPrefix());
+    Matcher iddMatcher = internationalPrefix.matcher(accruedInputWithoutFormatting);
+    if (iddMatcher.lookingAt()) {
+      isCompleteNumber = true;
+      int startOfCountryCallingCode = iddMatcher.end();
+      nationalNumber.setLength(0);
+      nationalNumber.append(accruedInputWithoutFormatting.substring(startOfCountryCallingCode));
+      prefixBeforeNationalNumber.setLength(0);
+      prefixBeforeNationalNumber.append(
+          accruedInputWithoutFormatting.substring(0, startOfCountryCallingCode));
+      if (accruedInputWithoutFormatting.charAt(0) != PhoneNumberUtil.PLUS_SIGN) {
+        prefixBeforeNationalNumber.append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
+      }
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Extracts the country calling code from the beginning of nationalNumber to
+   * prefixBeforeNationalNumber when they are available, and places the remaining input into
+   * nationalNumber.
+   *
+   * @return  true when a valid country calling code can be found.
+   */
+  private boolean attemptToExtractCountryCallingCode() {
+    if (nationalNumber.length() == 0) {
+      return false;
+    }
+    StringBuilder numberWithoutCountryCallingCode = new StringBuilder();
+    int countryCode = phoneUtil.extractCountryCode(nationalNumber, numberWithoutCountryCallingCode);
+    if (countryCode == 0) {
+      return false;
+    }
+    nationalNumber.setLength(0);
+    nationalNumber.append(numberWithoutCountryCallingCode);
+    String newRegionCode = phoneUtil.getRegionCodeForCountryCode(countryCode);
+    if (PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(newRegionCode)) {
+      currentMetadata = phoneUtil.getMetadataForNonGeographicalRegion(countryCode);
+    } else if (!newRegionCode.equals(defaultCountry)) {
+      currentMetadata = getMetadataForRegion(newRegionCode);
+    }
+    String countryCodeString = Integer.toString(countryCode);
+    prefixBeforeNationalNumber.append(countryCodeString).append(SEPARATOR_BEFORE_NATIONAL_NUMBER);
+    // When we have successfully extracted the IDD, the previously extracted NDD should be cleared
+    // because it is no longer valid.
+    extractedNationalPrefix = "";
+    return true;
+  }
+
+  // Accrues digits and the plus sign to accruedInputWithoutFormatting for later use. If nextChar
+  // contains a digit in non-ASCII format (e.g. the full-width version of digits), it is first
+  // normalized to the ASCII version. The return value is nextChar itself, or its normalized
+  // version, if nextChar is a digit in non-ASCII format. This method assumes its input is either a
+  // digit or the plus sign.
+  private char normalizeAndAccrueDigitsAndPlusSign(char nextChar, boolean rememberPosition) {
+    char normalizedChar;
+    if (nextChar == PhoneNumberUtil.PLUS_SIGN) {
+      normalizedChar = nextChar;
+      accruedInputWithoutFormatting.append(nextChar);
+    } else {
+      int radix = 10;
+      normalizedChar = Character.forDigit(Character.digit(nextChar, radix), radix);
+      accruedInputWithoutFormatting.append(normalizedChar);
+      nationalNumber.append(normalizedChar);
+    }
+    if (rememberPosition) {
+      positionToRemember = accruedInputWithoutFormatting.length();
+    }
+    return normalizedChar;
+  }
+
+  private String inputDigitHelper(char nextChar) {
+    // Note that formattingTemplate is not guaranteed to have a value, it could be empty, e.g.
+    // when the next digit is entered after extracting an IDD or NDD.
+    Matcher digitMatcher = DIGIT_PATTERN.matcher(formattingTemplate);
+    if (digitMatcher.find(lastMatchPosition)) {
+      String tempTemplate = digitMatcher.replaceFirst(Character.toString(nextChar));
+      formattingTemplate.replace(0, tempTemplate.length(), tempTemplate);
+      lastMatchPosition = digitMatcher.start();
+      return formattingTemplate.substring(0, lastMatchPosition + 1);
+    } else {
+      if (possibleFormats.size() == 1) {
+        // More digits are entered than we could handle, and there are no other valid patterns to
+        // try.
+        ableToFormat = false;
+      }  // else, we just reset the formatting pattern.
+      currentFormattingPattern = "";
+      return accruedInput.toString();
+    }
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
new file mode 100644
index 0000000..6d6b33f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
@@ -0,0 +1,946 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2010 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This file is automatically generated by {@link BuildMetadataProtoFromXml}.
+ * Please don't modify it directly.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @hide This class is not part of the Android public SDK API
+ */
+public class CountryCodeToRegionCodeMap {
+  // A mapping from a country code to the region codes which denote the
+  // country/region represented by that country code. In the case of multiple
+  // 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 286 as there are 215 different entries,
+    // and this offers a load factor of roughly 0.75.
+    Map<Integer, List<String>> countryCodeToRegionCodeMap =
+        new HashMap<Integer, List<String>>(286);
+
+    ArrayList<String> listWithRegionCode;
+
+    listWithRegionCode = new ArrayList<String>(25);
+    listWithRegionCode.add("US");
+    listWithRegionCode.add("AG");
+    listWithRegionCode.add("AI");
+    listWithRegionCode.add("AS");
+    listWithRegionCode.add("BB");
+    listWithRegionCode.add("BM");
+    listWithRegionCode.add("BS");
+    listWithRegionCode.add("CA");
+    listWithRegionCode.add("DM");
+    listWithRegionCode.add("DO");
+    listWithRegionCode.add("GD");
+    listWithRegionCode.add("GU");
+    listWithRegionCode.add("JM");
+    listWithRegionCode.add("KN");
+    listWithRegionCode.add("KY");
+    listWithRegionCode.add("LC");
+    listWithRegionCode.add("MP");
+    listWithRegionCode.add("MS");
+    listWithRegionCode.add("PR");
+    listWithRegionCode.add("SX");
+    listWithRegionCode.add("TC");
+    listWithRegionCode.add("TT");
+    listWithRegionCode.add("VC");
+    listWithRegionCode.add("VG");
+    listWithRegionCode.add("VI");
+    countryCodeToRegionCodeMap.put(1, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("RU");
+    listWithRegionCode.add("KZ");
+    countryCodeToRegionCodeMap.put(7, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("EG");
+    countryCodeToRegionCodeMap.put(20, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ZA");
+    countryCodeToRegionCodeMap.put(27, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GR");
+    countryCodeToRegionCodeMap.put(30, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NL");
+    countryCodeToRegionCodeMap.put(31, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BE");
+    countryCodeToRegionCodeMap.put(32, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("FR");
+    countryCodeToRegionCodeMap.put(33, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ES");
+    countryCodeToRegionCodeMap.put(34, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("HU");
+    countryCodeToRegionCodeMap.put(36, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("IT");
+    listWithRegionCode.add("VA");
+    countryCodeToRegionCodeMap.put(39, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("RO");
+    countryCodeToRegionCodeMap.put(40, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CH");
+    countryCodeToRegionCodeMap.put(41, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AT");
+    countryCodeToRegionCodeMap.put(43, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(4);
+    listWithRegionCode.add("GB");
+    listWithRegionCode.add("GG");
+    listWithRegionCode.add("IM");
+    listWithRegionCode.add("JE");
+    countryCodeToRegionCodeMap.put(44, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("DK");
+    countryCodeToRegionCodeMap.put(45, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SE");
+    countryCodeToRegionCodeMap.put(46, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("NO");
+    listWithRegionCode.add("SJ");
+    countryCodeToRegionCodeMap.put(47, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PL");
+    countryCodeToRegionCodeMap.put(48, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("DE");
+    countryCodeToRegionCodeMap.put(49, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PE");
+    countryCodeToRegionCodeMap.put(51, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MX");
+    countryCodeToRegionCodeMap.put(52, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CU");
+    countryCodeToRegionCodeMap.put(53, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AR");
+    countryCodeToRegionCodeMap.put(54, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BR");
+    countryCodeToRegionCodeMap.put(55, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CL");
+    countryCodeToRegionCodeMap.put(56, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CO");
+    countryCodeToRegionCodeMap.put(57, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("VE");
+    countryCodeToRegionCodeMap.put(58, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MY");
+    countryCodeToRegionCodeMap.put(60, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(3);
+    listWithRegionCode.add("AU");
+    listWithRegionCode.add("CC");
+    listWithRegionCode.add("CX");
+    countryCodeToRegionCodeMap.put(61, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ID");
+    countryCodeToRegionCodeMap.put(62, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PH");
+    countryCodeToRegionCodeMap.put(63, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NZ");
+    countryCodeToRegionCodeMap.put(64, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SG");
+    countryCodeToRegionCodeMap.put(65, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TH");
+    countryCodeToRegionCodeMap.put(66, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("JP");
+    countryCodeToRegionCodeMap.put(81, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KR");
+    countryCodeToRegionCodeMap.put(82, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("VN");
+    countryCodeToRegionCodeMap.put(84, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CN");
+    countryCodeToRegionCodeMap.put(86, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TR");
+    countryCodeToRegionCodeMap.put(90, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IN");
+    countryCodeToRegionCodeMap.put(91, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PK");
+    countryCodeToRegionCodeMap.put(92, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AF");
+    countryCodeToRegionCodeMap.put(93, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LK");
+    countryCodeToRegionCodeMap.put(94, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MM");
+    countryCodeToRegionCodeMap.put(95, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IR");
+    countryCodeToRegionCodeMap.put(98, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SS");
+    countryCodeToRegionCodeMap.put(211, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("MA");
+    listWithRegionCode.add("EH");
+    countryCodeToRegionCodeMap.put(212, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("DZ");
+    countryCodeToRegionCodeMap.put(213, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TN");
+    countryCodeToRegionCodeMap.put(216, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LY");
+    countryCodeToRegionCodeMap.put(218, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GM");
+    countryCodeToRegionCodeMap.put(220, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SN");
+    countryCodeToRegionCodeMap.put(221, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MR");
+    countryCodeToRegionCodeMap.put(222, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ML");
+    countryCodeToRegionCodeMap.put(223, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GN");
+    countryCodeToRegionCodeMap.put(224, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CI");
+    countryCodeToRegionCodeMap.put(225, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BF");
+    countryCodeToRegionCodeMap.put(226, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NE");
+    countryCodeToRegionCodeMap.put(227, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TG");
+    countryCodeToRegionCodeMap.put(228, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BJ");
+    countryCodeToRegionCodeMap.put(229, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MU");
+    countryCodeToRegionCodeMap.put(230, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LR");
+    countryCodeToRegionCodeMap.put(231, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SL");
+    countryCodeToRegionCodeMap.put(232, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GH");
+    countryCodeToRegionCodeMap.put(233, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NG");
+    countryCodeToRegionCodeMap.put(234, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TD");
+    countryCodeToRegionCodeMap.put(235, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CF");
+    countryCodeToRegionCodeMap.put(236, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CM");
+    countryCodeToRegionCodeMap.put(237, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CV");
+    countryCodeToRegionCodeMap.put(238, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ST");
+    countryCodeToRegionCodeMap.put(239, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GQ");
+    countryCodeToRegionCodeMap.put(240, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GA");
+    countryCodeToRegionCodeMap.put(241, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CG");
+    countryCodeToRegionCodeMap.put(242, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CD");
+    countryCodeToRegionCodeMap.put(243, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AO");
+    countryCodeToRegionCodeMap.put(244, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GW");
+    countryCodeToRegionCodeMap.put(245, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IO");
+    countryCodeToRegionCodeMap.put(246, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AC");
+    countryCodeToRegionCodeMap.put(247, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SC");
+    countryCodeToRegionCodeMap.put(248, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SD");
+    countryCodeToRegionCodeMap.put(249, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("RW");
+    countryCodeToRegionCodeMap.put(250, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ET");
+    countryCodeToRegionCodeMap.put(251, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SO");
+    countryCodeToRegionCodeMap.put(252, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("DJ");
+    countryCodeToRegionCodeMap.put(253, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KE");
+    countryCodeToRegionCodeMap.put(254, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TZ");
+    countryCodeToRegionCodeMap.put(255, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("UG");
+    countryCodeToRegionCodeMap.put(256, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BI");
+    countryCodeToRegionCodeMap.put(257, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MZ");
+    countryCodeToRegionCodeMap.put(258, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ZM");
+    countryCodeToRegionCodeMap.put(260, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MG");
+    countryCodeToRegionCodeMap.put(261, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("RE");
+    listWithRegionCode.add("YT");
+    countryCodeToRegionCodeMap.put(262, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ZW");
+    countryCodeToRegionCodeMap.put(263, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NA");
+    countryCodeToRegionCodeMap.put(264, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MW");
+    countryCodeToRegionCodeMap.put(265, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LS");
+    countryCodeToRegionCodeMap.put(266, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BW");
+    countryCodeToRegionCodeMap.put(267, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SZ");
+    countryCodeToRegionCodeMap.put(268, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KM");
+    countryCodeToRegionCodeMap.put(269, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("SH");
+    listWithRegionCode.add("TA");
+    countryCodeToRegionCodeMap.put(290, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ER");
+    countryCodeToRegionCodeMap.put(291, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AW");
+    countryCodeToRegionCodeMap.put(297, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("FO");
+    countryCodeToRegionCodeMap.put(298, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GL");
+    countryCodeToRegionCodeMap.put(299, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GI");
+    countryCodeToRegionCodeMap.put(350, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PT");
+    countryCodeToRegionCodeMap.put(351, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LU");
+    countryCodeToRegionCodeMap.put(352, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IE");
+    countryCodeToRegionCodeMap.put(353, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IS");
+    countryCodeToRegionCodeMap.put(354, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AL");
+    countryCodeToRegionCodeMap.put(355, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MT");
+    countryCodeToRegionCodeMap.put(356, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CY");
+    countryCodeToRegionCodeMap.put(357, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("FI");
+    listWithRegionCode.add("AX");
+    countryCodeToRegionCodeMap.put(358, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BG");
+    countryCodeToRegionCodeMap.put(359, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LT");
+    countryCodeToRegionCodeMap.put(370, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LV");
+    countryCodeToRegionCodeMap.put(371, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("EE");
+    countryCodeToRegionCodeMap.put(372, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MD");
+    countryCodeToRegionCodeMap.put(373, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AM");
+    countryCodeToRegionCodeMap.put(374, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BY");
+    countryCodeToRegionCodeMap.put(375, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AD");
+    countryCodeToRegionCodeMap.put(376, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MC");
+    countryCodeToRegionCodeMap.put(377, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SM");
+    countryCodeToRegionCodeMap.put(378, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("UA");
+    countryCodeToRegionCodeMap.put(380, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("RS");
+    countryCodeToRegionCodeMap.put(381, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("ME");
+    countryCodeToRegionCodeMap.put(382, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("XK");
+    countryCodeToRegionCodeMap.put(383, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("HR");
+    countryCodeToRegionCodeMap.put(385, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SI");
+    countryCodeToRegionCodeMap.put(386, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BA");
+    countryCodeToRegionCodeMap.put(387, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MK");
+    countryCodeToRegionCodeMap.put(389, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CZ");
+    countryCodeToRegionCodeMap.put(420, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SK");
+    countryCodeToRegionCodeMap.put(421, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LI");
+    countryCodeToRegionCodeMap.put(423, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("FK");
+    countryCodeToRegionCodeMap.put(500, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BZ");
+    countryCodeToRegionCodeMap.put(501, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GT");
+    countryCodeToRegionCodeMap.put(502, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SV");
+    countryCodeToRegionCodeMap.put(503, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("HN");
+    countryCodeToRegionCodeMap.put(504, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NI");
+    countryCodeToRegionCodeMap.put(505, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CR");
+    countryCodeToRegionCodeMap.put(506, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PA");
+    countryCodeToRegionCodeMap.put(507, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PM");
+    countryCodeToRegionCodeMap.put(508, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("HT");
+    countryCodeToRegionCodeMap.put(509, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(3);
+    listWithRegionCode.add("GP");
+    listWithRegionCode.add("BL");
+    listWithRegionCode.add("MF");
+    countryCodeToRegionCodeMap.put(590, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BO");
+    countryCodeToRegionCodeMap.put(591, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GY");
+    countryCodeToRegionCodeMap.put(592, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("EC");
+    countryCodeToRegionCodeMap.put(593, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GF");
+    countryCodeToRegionCodeMap.put(594, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PY");
+    countryCodeToRegionCodeMap.put(595, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MQ");
+    countryCodeToRegionCodeMap.put(596, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SR");
+    countryCodeToRegionCodeMap.put(597, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("UY");
+    countryCodeToRegionCodeMap.put(598, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(2);
+    listWithRegionCode.add("CW");
+    listWithRegionCode.add("BQ");
+    countryCodeToRegionCodeMap.put(599, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TL");
+    countryCodeToRegionCodeMap.put(670, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NF");
+    countryCodeToRegionCodeMap.put(672, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BN");
+    countryCodeToRegionCodeMap.put(673, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NR");
+    countryCodeToRegionCodeMap.put(674, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PG");
+    countryCodeToRegionCodeMap.put(675, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TO");
+    countryCodeToRegionCodeMap.put(676, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SB");
+    countryCodeToRegionCodeMap.put(677, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("VU");
+    countryCodeToRegionCodeMap.put(678, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("FJ");
+    countryCodeToRegionCodeMap.put(679, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PW");
+    countryCodeToRegionCodeMap.put(680, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("WF");
+    countryCodeToRegionCodeMap.put(681, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("CK");
+    countryCodeToRegionCodeMap.put(682, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NU");
+    countryCodeToRegionCodeMap.put(683, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("WS");
+    countryCodeToRegionCodeMap.put(685, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KI");
+    countryCodeToRegionCodeMap.put(686, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NC");
+    countryCodeToRegionCodeMap.put(687, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TV");
+    countryCodeToRegionCodeMap.put(688, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PF");
+    countryCodeToRegionCodeMap.put(689, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TK");
+    countryCodeToRegionCodeMap.put(690, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("FM");
+    countryCodeToRegionCodeMap.put(691, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MH");
+    countryCodeToRegionCodeMap.put(692, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("001");
+    countryCodeToRegionCodeMap.put(800, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("001");
+    countryCodeToRegionCodeMap.put(808, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KP");
+    countryCodeToRegionCodeMap.put(850, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("HK");
+    countryCodeToRegionCodeMap.put(852, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MO");
+    countryCodeToRegionCodeMap.put(853, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KH");
+    countryCodeToRegionCodeMap.put(855, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LA");
+    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);
+    listWithRegionCode.add("TW");
+    countryCodeToRegionCodeMap.put(886, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("001");
+    countryCodeToRegionCodeMap.put(888, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MV");
+    countryCodeToRegionCodeMap.put(960, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("LB");
+    countryCodeToRegionCodeMap.put(961, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("JO");
+    countryCodeToRegionCodeMap.put(962, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SY");
+    countryCodeToRegionCodeMap.put(963, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IQ");
+    countryCodeToRegionCodeMap.put(964, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KW");
+    countryCodeToRegionCodeMap.put(965, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("SA");
+    countryCodeToRegionCodeMap.put(966, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("YE");
+    countryCodeToRegionCodeMap.put(967, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("OM");
+    countryCodeToRegionCodeMap.put(968, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("PS");
+    countryCodeToRegionCodeMap.put(970, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AE");
+    countryCodeToRegionCodeMap.put(971, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("IL");
+    countryCodeToRegionCodeMap.put(972, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BH");
+    countryCodeToRegionCodeMap.put(973, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("QA");
+    countryCodeToRegionCodeMap.put(974, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BT");
+    countryCodeToRegionCodeMap.put(975, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("MN");
+    countryCodeToRegionCodeMap.put(976, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("NP");
+    countryCodeToRegionCodeMap.put(977, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("001");
+    countryCodeToRegionCodeMap.put(979, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TJ");
+    countryCodeToRegionCodeMap.put(992, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("TM");
+    countryCodeToRegionCodeMap.put(993, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("AZ");
+    countryCodeToRegionCodeMap.put(994, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("GE");
+    countryCodeToRegionCodeMap.put(995, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("KG");
+    countryCodeToRegionCodeMap.put(996, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("UZ");
+    countryCodeToRegionCodeMap.put(998, listWithRegionCode);
+
+    return countryCodeToRegionCodeMap;
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataLoader.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataLoader.java
new file mode 100644
index 0000000..18d69e9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataLoader.java
@@ -0,0 +1,41 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2014 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import java.io.InputStream;
+
+/**
+ * Interface for clients to specify a customized phone metadata loader, useful for Android apps to
+ * load Android resources since the library loads Java resources by default, e.g. with
+ * <a href="http://developer.android.com/reference/android/content/res/AssetManager.html">
+ * AssetManager</a>. Note that implementation owners have the responsibility to ensure this is
+ * thread-safe.
+ * @hide This class is not part of the Android public SDK API
+ */
+public interface MetadataLoader {
+  /**
+   * Returns an input stream corresponding to the metadata to load. This method may be called
+   * concurrently so implementations must be thread-safe.
+   *
+   * @param metadataFileName  file name (including path) of metadata to load. File path is an
+   *     absolute class path like /com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto
+   * @return  the input stream for the metadata file. The library will close this stream
+   *     after it is done. Return null in case the metadata file could not be found
+   */
+  public InputStream loadMetadata(String metadataFileName);
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataManager.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataManager.java
new file mode 100644
index 0000000..4594111
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataManager.java
@@ -0,0 +1,234 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2012 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadataCollection;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Manager for loading metadata for alternate formats and short numbers. We also declare some
+ * constants for phone number metadata loading, to more easily maintain all three types of metadata
+ * together.
+ * TODO: Consider managing phone number metadata loading here too.
+ */
+final class MetadataManager {
+  static final String MULTI_FILE_PHONE_NUMBER_METADATA_FILE_PREFIX =
+      "/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto";
+  static final String SINGLE_FILE_PHONE_NUMBER_METADATA_FILE_NAME =
+      "/com/android/i18n/phonenumbers/data/SingleFilePhoneNumberMetadataProto";
+  private static final String ALTERNATE_FORMATS_FILE_PREFIX =
+      "/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto";
+  private static final String SHORT_NUMBER_METADATA_FILE_PREFIX =
+      "/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto";
+
+  static final MetadataLoader DEFAULT_METADATA_LOADER = new MetadataLoader() {
+    @Override
+    public InputStream loadMetadata(String metadataFileName) {
+      return MetadataManager.class.getResourceAsStream(metadataFileName);
+    }
+  };
+
+  private static final Logger logger = Logger.getLogger(MetadataManager.class.getName());
+
+  // A mapping from a country calling code to the alternate formats for that country calling code.
+  private static final ConcurrentHashMap<Integer, PhoneMetadata> alternateFormatsMap =
+      new ConcurrentHashMap<Integer, PhoneMetadata>();
+
+  // A mapping from a region code to the short number metadata for that region code.
+  private static final ConcurrentHashMap<String, PhoneMetadata> shortNumberMetadataMap =
+      new ConcurrentHashMap<String, PhoneMetadata>();
+
+  // The set of country calling codes for which there are alternate formats. For every country
+  // calling code in this set there should be metadata linked into the resources.
+  private static final Set<Integer> alternateFormatsCountryCodes =
+      AlternateFormatsCountryCodeSet.getCountryCodeSet();
+
+  // The set of region codes for which there are short number metadata. For every region code in
+  // this set there should be metadata linked into the resources.
+  private static final Set<String> shortNumberMetadataRegionCodes =
+      ShortNumbersRegionCodeSet.getRegionCodeSet();
+
+  private MetadataManager() {}
+
+  static PhoneMetadata getAlternateFormatsForCountry(int countryCallingCode) {
+    if (!alternateFormatsCountryCodes.contains(countryCallingCode)) {
+      return null;
+    }
+    return getMetadataFromMultiFilePrefix(countryCallingCode, alternateFormatsMap,
+        ALTERNATE_FORMATS_FILE_PREFIX, DEFAULT_METADATA_LOADER);
+  }
+
+  static PhoneMetadata getShortNumberMetadataForRegion(String regionCode) {
+    if (!shortNumberMetadataRegionCodes.contains(regionCode)) {
+      return null;
+    }
+    return getMetadataFromMultiFilePrefix(regionCode, shortNumberMetadataMap,
+        SHORT_NUMBER_METADATA_FILE_PREFIX, DEFAULT_METADATA_LOADER);
+  }
+
+  static Set<String> getSupportedShortNumberRegions() {
+    return Collections.unmodifiableSet(shortNumberMetadataRegionCodes);
+  }
+
+  /**
+   * @param key  the lookup key for the provided map, typically a region code or a country calling
+   *     code
+   * @param map  the map containing mappings of already loaded metadata from their {@code key}. If
+   *     this {@code key}'s metadata isn't already loaded, it will be added to this map after
+   *     loading
+   * @param filePrefix  the prefix of the file to load metadata from
+   * @param metadataLoader  the metadata loader used to inject alternative metadata sources
+   */
+  static <T> PhoneMetadata getMetadataFromMultiFilePrefix(T key,
+      ConcurrentHashMap<T, PhoneMetadata> map, String filePrefix, MetadataLoader metadataLoader) {
+    PhoneMetadata metadata = map.get(key);
+    if (metadata != null) {
+      return metadata;
+    }
+    // We assume key.toString() is well-defined.
+    String fileName = filePrefix + "_" + key;
+    List<PhoneMetadata> metadataList = getMetadataFromSingleFileName(fileName, metadataLoader);
+    if (metadataList.size() > 1) {
+      logger.log(Level.WARNING, "more than one metadata in file " + fileName);
+    }
+    metadata = metadataList.get(0);
+    PhoneMetadata oldValue = map.putIfAbsent(key, metadata);
+    return (oldValue != null) ? oldValue : metadata;
+  }
+
+  // Loader and holder for the metadata maps loaded from a single file.
+  static class SingleFileMetadataMaps {
+    static SingleFileMetadataMaps load(String fileName, MetadataLoader metadataLoader) {
+      List<PhoneMetadata> metadataList = getMetadataFromSingleFileName(fileName, metadataLoader);
+      Map<String, PhoneMetadata> regionCodeToMetadata = new HashMap<String, PhoneMetadata>();
+      Map<Integer, PhoneMetadata> countryCallingCodeToMetadata =
+          new HashMap<Integer, PhoneMetadata>();
+      for (PhoneMetadata metadata : metadataList) {
+        String regionCode = metadata.getId();
+        if (PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)) {
+          // regionCode belongs to a non-geographical entity.
+          countryCallingCodeToMetadata.put(metadata.getCountryCode(), metadata);
+        } else {
+          regionCodeToMetadata.put(regionCode, metadata);
+        }
+      }
+      return new SingleFileMetadataMaps(regionCodeToMetadata, countryCallingCodeToMetadata);
+    }
+
+    // A map from a region code to the PhoneMetadata for that region.
+    // For phone number metadata, the region code "001" is excluded, since that is used for the
+    // non-geographical phone number entities.
+    private final Map<String, PhoneMetadata> regionCodeToMetadata;
+
+    // A map from a country calling code to the PhoneMetadata for that country calling code.
+    // Examples of the country calling codes include 800 (International Toll Free Service) and 808
+    // (International Shared Cost Service).
+    // For phone number metadata, only the non-geographical phone number entities' country calling
+    // codes are present.
+    private final Map<Integer, PhoneMetadata> countryCallingCodeToMetadata;
+
+    private SingleFileMetadataMaps(Map<String, PhoneMetadata> regionCodeToMetadata,
+        Map<Integer, PhoneMetadata> countryCallingCodeToMetadata) {
+      this.regionCodeToMetadata = Collections.unmodifiableMap(regionCodeToMetadata);
+      this.countryCallingCodeToMetadata = Collections.unmodifiableMap(countryCallingCodeToMetadata);
+    }
+
+    PhoneMetadata get(String regionCode) {
+      return regionCodeToMetadata.get(regionCode);
+    }
+
+    PhoneMetadata get(int countryCallingCode) {
+      return countryCallingCodeToMetadata.get(countryCallingCode);
+    }
+  }
+
+  // Manages the atomic reference lifecycle of a SingleFileMetadataMaps encapsulation.
+  static SingleFileMetadataMaps getSingleFileMetadataMaps(
+      AtomicReference<SingleFileMetadataMaps> ref, String fileName, MetadataLoader metadataLoader) {
+    SingleFileMetadataMaps maps = ref.get();
+    if (maps != null) {
+      return maps;
+    }
+    maps = SingleFileMetadataMaps.load(fileName, metadataLoader);
+    ref.compareAndSet(null, maps);
+    return ref.get();
+  }
+
+  private static List<PhoneMetadata> getMetadataFromSingleFileName(String fileName,
+      MetadataLoader metadataLoader) {
+    InputStream source = metadataLoader.loadMetadata(fileName);
+    if (source == null) {
+      // Sanity check; this would only happen if we packaged jars incorrectly.
+      throw new IllegalStateException("missing metadata: " + fileName);
+    }
+    PhoneMetadataCollection metadataCollection = loadMetadataAndCloseInput(source);
+    List<PhoneMetadata> metadataList = metadataCollection.getMetadataList();
+    if (metadataList.size() == 0) {
+      // Sanity check; this should not happen since we build with non-empty metadata.
+      throw new IllegalStateException("empty metadata: " + fileName);
+    }
+    return metadataList;
+  }
+
+  /**
+   * Loads and returns the metadata from the given stream and closes the stream.
+   *
+   * @param source  the non-null stream from which metadata is to be read
+   * @return  the loaded metadata
+   */
+  private static PhoneMetadataCollection loadMetadataAndCloseInput(InputStream source) {
+    ObjectInputStream ois = null;
+    try {
+      try {
+        ois = new ObjectInputStream(source);
+      } catch (IOException e) {
+        throw new RuntimeException("cannot load/parse metadata", e);
+      }
+      PhoneMetadataCollection metadataCollection = new PhoneMetadataCollection();
+      try {
+        metadataCollection.readExternal(ois);
+      } catch (IOException e) {
+        throw new RuntimeException("cannot load/parse metadata", e);
+      }
+      return metadataCollection;
+    } finally {
+      try {
+        if (ois != null) {
+          // This will close all underlying streams as well, including source.
+          ois.close();
+        } else {
+          source.close();
+        }
+      } catch (IOException e) {
+        logger.log(Level.WARNING, "error closing input stream (ignored)", e);
+      }
+    }
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataSource.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataSource.java
new file mode 100644
index 0000000..0e338a8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataSource.java
@@ -0,0 +1,40 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2015 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+
+/**
+ * A source for phone metadata for all regions.
+ */
+interface MetadataSource {
+
+  /**
+   * Gets phone metadata for a region.
+   * @param regionCode the region code.
+   * @return the phone metadata for that region, or null if there is none.
+   */
+  PhoneMetadata getMetadataForRegion(String regionCode);
+
+  /**
+   * Gets phone metadata for a non-geographical region.
+   * @param countryCallingCode the country calling code.
+   * @return the phone metadata for that region, or null if there is none.
+   */
+  PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode);
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MultiFileMetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MultiFileMetadataSourceImpl.java
new file mode 100644
index 0000000..7d9e713
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MultiFileMetadataSourceImpl.java
@@ -0,0 +1,87 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2015 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Implementation of {@link MetadataSource} that reads from multiple resource files.
+ */
+final class MultiFileMetadataSourceImpl implements MetadataSource {
+  // The prefix of the binary files containing phone number metadata for different regions.
+  // This enables us to set up with different metadata, such as for testing.
+  private final String phoneNumberMetadataFilePrefix;
+
+  // The {@link MetadataLoader} used to inject alternative metadata sources.
+  private final MetadataLoader metadataLoader;
+
+  // A mapping from a region code to the phone number metadata for that region code.
+  // Unlike the mappings for alternate formats and short number metadata, the phone number metadata
+  // is loaded from a non-statically determined file prefix; therefore this map is bound to the
+  // instance and not static.
+  private final ConcurrentHashMap<String, PhoneMetadata> geographicalRegions =
+      new ConcurrentHashMap<String, PhoneMetadata>();
+
+  // A mapping from a country calling code for a non-geographical entity to the phone number
+  // metadata for that country calling code. Examples of the country calling codes include 800
+  // (International Toll Free Service) and 808 (International Shared Cost Service).
+  // Unlike the mappings for alternate formats and short number metadata, the phone number metadata
+  // is loaded from a non-statically determined file prefix; therefore this map is bound to the
+  // instance and not static.
+  private final ConcurrentHashMap<Integer, PhoneMetadata> nonGeographicalRegions =
+      new ConcurrentHashMap<Integer, PhoneMetadata>();
+
+  // It is assumed that metadataLoader is not null. Checks should happen before passing it in here.
+  // @VisibleForTesting
+  MultiFileMetadataSourceImpl(String phoneNumberMetadataFilePrefix, MetadataLoader metadataLoader) {
+    this.phoneNumberMetadataFilePrefix = phoneNumberMetadataFilePrefix;
+    this.metadataLoader = metadataLoader;
+  }
+
+  // It is assumed that metadataLoader is not null. Checks should happen before passing it in here.
+  MultiFileMetadataSourceImpl(MetadataLoader metadataLoader) {
+    this(MetadataManager.MULTI_FILE_PHONE_NUMBER_METADATA_FILE_PREFIX, metadataLoader);
+  }
+
+  @Override
+  public PhoneMetadata getMetadataForRegion(String regionCode) {
+    return MetadataManager.getMetadataFromMultiFilePrefix(regionCode, geographicalRegions,
+        phoneNumberMetadataFilePrefix, metadataLoader);
+  }
+
+  @Override
+  public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
+    if (!isNonGeographical(countryCallingCode)) {
+      // The given country calling code was for a geographical region.
+      return null;
+    }
+    return MetadataManager.getMetadataFromMultiFilePrefix(countryCallingCode, nonGeographicalRegions,
+        phoneNumberMetadataFilePrefix, metadataLoader);
+  }
+
+  // A country calling code is non-geographical if it only maps to the non-geographical region code,
+  // i.e. "001".
+  private boolean isNonGeographical(int countryCallingCode) {
+    List<String> regionCodes =
+        CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap().get(countryCallingCode);
+    return (regionCodes.size() == 1
+        && PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0)));
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/NumberParseException.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/NumberParseException.java
new file mode 100644
index 0000000..7307502
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/NumberParseException.java
@@ -0,0 +1,79 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+/**
+ * Generic exception class for errors encountered when parsing phone numbers.
+ * @hide This class is not part of the Android public SDK API
+ */
+@SuppressWarnings("serial")
+public class NumberParseException extends Exception {
+
+  /**
+   * The reason that a string could not be interpreted as a phone number.
+ * @hide This class is not part of the Android public SDK API
+   */
+  public enum ErrorType {
+    /**
+     * The country code supplied did not belong to a supported country or non-geographical entity.
+     */
+    INVALID_COUNTRY_CODE,
+    /**
+     * This generally indicates the string passed in had less than 3 digits in it. More
+     * specifically, the number failed to match the regular expression VALID_PHONE_NUMBER in
+     * PhoneNumberUtil.java.
+     */
+    NOT_A_NUMBER,
+    /**
+     * This indicates the string started with an international dialing prefix, but after this was
+     * stripped from the number, had less digits than any valid phone number (including country
+     * code) could have.
+     */
+    TOO_SHORT_AFTER_IDD,
+    /**
+     * This indicates the string, after any country code has been stripped, had less digits than any
+     * valid phone number could have.
+     */
+    TOO_SHORT_NSN,
+    /**
+     * This indicates the string had more digits than any valid phone number could have.
+     */
+    TOO_LONG,
+  }
+
+  private ErrorType errorType;
+  private String message;
+
+  public NumberParseException(ErrorType errorType, String message) {
+    super(message);
+    this.message = message;
+    this.errorType = errorType;
+  }
+
+  /**
+   * Returns the error type of the exception that has been thrown.
+   */
+  public ErrorType getErrorType() {
+    return errorType;
+  }
+
+  @Override
+  public String toString() {
+    return "Error type: " + errorType + ". " + message;
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java
new file mode 100644
index 0000000..18bc76b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java
@@ -0,0 +1,125 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import java.util.Arrays;
+
+/**
+ * The immutable match of a phone number within a piece of text. Matches may be found using
+ * {@link PhoneNumberUtil#findNumbers}.
+ *
+ * <p>A match consists of the {@linkplain #number() phone number} as well as the
+ * {@linkplain #start() start} and {@linkplain #end() end} offsets of the corresponding subsequence
+ * of the searched text. Use {@link #rawString()} to obtain a copy of the matched subsequence.
+ *
+ * <p>The following annotated example clarifies the relationship between the searched text, the
+ * match offsets, and the parsed number:
+
+ * <pre>
+ * CharSequence text = "Call me at +1 425 882-8080 for details.";
+ * String country = "US";
+ * PhoneNumberUtil util = PhoneNumberUtil.getInstance();
+ *
+ * // Find the first phone number match:
+ * PhoneNumberMatch m = util.findNumbers(text, country).iterator().next();
+ *
+ * // rawString() contains the phone number as it appears in the text.
+ * "+1 425 882-8080".equals(m.rawString());
+ *
+ * // start() and end() define the range of the matched subsequence.
+ * CharSequence subsequence = text.subSequence(m.start(), m.end());
+ * "+1 425 882-8080".contentEquals(subsequence);
+ *
+ * // number() returns the the same result as PhoneNumberUtil.{@link PhoneNumberUtil#parse parse()}
+ * // invoked on rawString().
+ * util.parse(m.rawString(), country).equals(m.number());
+ * </pre>
+ * @hide This class is not part of the Android public SDK API
+ */
+public final class PhoneNumberMatch {
+  /** The start index into the text. */
+  private final int start;
+  /** The raw substring matched. */
+  private final String rawString;
+  /** The matched phone number. */
+  private final PhoneNumber number;
+
+  /**
+   * Creates a new match.
+   *
+   * @param start  the start index into the target text
+   * @param rawString  the matched substring of the target text
+   * @param number  the matched phone number
+   */
+  PhoneNumberMatch(int start, String rawString, PhoneNumber number) {
+    if (start < 0) {
+      throw new IllegalArgumentException("Start index must be >= 0.");
+    }
+    if (rawString == null || number == null) {
+      throw new NullPointerException();
+    }
+    this.start = start;
+    this.rawString = rawString;
+    this.number = number;
+  }
+
+  /** Returns the phone number matched by the receiver. */
+  public PhoneNumber number() {
+    return number;
+  }
+
+  /** Returns the start index of the matched phone number within the searched text. */
+  public int start() {
+    return start;
+  }
+
+  /** Returns the exclusive end index of the matched phone number within the searched text. */
+  public int end() {
+    return start + rawString.length();
+  }
+
+  /** Returns the raw string matched as a phone number in the searched text. */
+  public String rawString() {
+    return rawString;
+  }
+
+  @Override
+  public int hashCode() {
+    return Arrays.hashCode(new Object[]{start, rawString, number});
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+    if (!(obj instanceof PhoneNumberMatch)) {
+      return false;
+    }
+    PhoneNumberMatch other = (PhoneNumberMatch) obj;
+    return rawString.equals(other.rawString) && (start == other.start)
+        && number.equals(other.number);
+  }
+
+  @Override
+  public String toString() {
+    return "PhoneNumberMatch [" + start() + "," + end() + ") " + rawString;
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java
new file mode 100644
index 0000000..f21f275
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java
@@ -0,0 +1,728 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.PhoneNumberUtil.Leniency;
+import com.android.i18n.phonenumbers.PhoneNumberUtil.MatchType;
+import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
+import com.android.i18n.phonenumbers.Phonemetadata.NumberFormat;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import java.lang.Character.UnicodeBlock;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.
+ * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in
+ * {@link PhoneNumberUtil}.
+ *
+ * <p>Vanity numbers (phone numbers using alphabetic digits such as <tt>1-800-SIX-FLAGS</tt> are
+ * not found.
+ *
+ * <p>This class is not thread-safe.
+ */
+final class PhoneNumberMatcher implements Iterator<PhoneNumberMatch> {
+  /**
+   * The phone number pattern used by {@link #find}, similar to
+   * {@code PhoneNumberUtil.VALID_PHONE_NUMBER}, but with the following differences:
+   * <ul>
+   *   <li>All captures are limited in order to place an upper bound to the text matched by the
+   *       pattern.
+   * <ul>
+   *   <li>Leading punctuation / plus signs are limited.
+   *   <li>Consecutive occurrences of punctuation are limited.
+   *   <li>Number of digits is limited.
+   * </ul>
+   *   <li>No whitespace is allowed at the start or end.
+   *   <li>No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.
+   * </ul>
+   */
+  private static final Pattern PATTERN;
+  /**
+   * Matches strings that look like publication pages. Example:
+   * <pre>Computing Complete Answers to Queries in the Presence of Limited Access Patterns.
+   * Chen Li. VLDB J. 12(3): 211-227 (2003).</pre>
+   *
+   * The string "211-227 (2003)" is not a telephone number.
+   */
+  private static final Pattern PUB_PAGES = Pattern.compile("\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}");
+
+  /**
+   * Matches strings that look like dates using "/" as a separator. Examples: 3/10/2011, 31/10/96 or
+   * 08/31/95.
+   */
+  private static final Pattern SLASH_SEPARATED_DATES =
+      Pattern.compile("(?:(?:[0-3]?\\d/[01]?\\d)|(?:[01]?\\d/[0-3]?\\d))/(?:[12]\\d)?\\d{2}");
+
+  /**
+   * Matches timestamps. Examples: "2012-01-02 08:00". Note that the reg-ex does not include the
+   * trailing ":\d\d" -- that is covered by TIME_STAMPS_SUFFIX.
+   */
+  private static final Pattern TIME_STAMPS =
+      Pattern.compile("[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$");
+  private static final Pattern TIME_STAMPS_SUFFIX = Pattern.compile(":[0-5]\\d");
+
+  /**
+   * Pattern to check that brackets match. Opening brackets should be closed within a phone number.
+   * This also checks that there is something inside the brackets. Having no brackets at all is also
+   * fine.
+   */
+  private static final Pattern MATCHING_BRACKETS;
+
+  /**
+   * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are
+   * ordered according to specificity. For example, white-space is last since that is frequently
+   * used in numbers, not just to separate two numbers. We have separate patterns since we don't
+   * want to break up the phone-number-like text on more than one different kind of symbol at one
+   * time, although symbols of the same type (e.g. space) can be safely grouped together.
+   *
+   * Note that if there is a match, we will always check any text found up to the first match as
+   * well.
+   */
+  private static final Pattern[] INNER_MATCHES = {
+      // Breaks on the slash - e.g. "651-234-2345/332-445-1234"
+      Pattern.compile("/+(.*)"),
+      // Note that the bracket here is inside the capturing group, since we consider it part of the
+      // phone number. Will match a pattern like "(650) 223 3345 (754) 223 3321".
+      Pattern.compile("(\\([^(]*)"),
+      // Breaks on a hyphen - e.g. "12345 - 332-445-1234 is my number."
+      // We require a space on either side of the hyphen for it to be considered a separator.
+      Pattern.compile("(?:\\p{Z}-|-\\p{Z})\\p{Z}*(.+)"),
+      // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's
+      // possible that it's supposed to be used to break two numbers without spaces, and we haven't
+      // seen many instances of it used within a number.
+      Pattern.compile("[\u2012-\u2015\uFF0D]\\p{Z}*(.+)"),
+      // Breaks on a full stop - e.g. "12345. 332-445-1234 is my number."
+      Pattern.compile("\\.+\\p{Z}*([^.]+)"),
+      // Breaks on space - e.g. "3324451234 8002341234"
+      Pattern.compile("\\p{Z}+(\\P{Z}+)")
+  };
+
+  /**
+   * Punctuation that may be at the start of a phone number - brackets and plus signs.
+   */
+  private static final Pattern LEAD_CLASS;
+
+  static {
+    /* Builds the MATCHING_BRACKETS and PATTERN regular expressions. The building blocks below exist
+     * to make the pattern more easily understood. */
+
+    String openingParens = "(\\[\uFF08\uFF3B";
+    String closingParens = ")\\]\uFF09\uFF3D";
+    String nonParens = "[^" + openingParens + closingParens + "]";
+
+    /* Limit on the number of pairs of brackets in a phone number. */
+    String bracketPairLimit = limit(0, 3);
+    /*
+     * An opening bracket at the beginning may not be closed, but subsequent ones should be.  It's
+     * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a
+     * closing bracket first. We limit the sets of brackets in a phone number to four.
+     */
+    MATCHING_BRACKETS = Pattern.compile(
+        "(?:[" + openingParens + "])?" + "(?:" + nonParens + "+" + "[" + closingParens + "])?"
+        + nonParens + "+"
+        + "(?:[" + openingParens + "]" + nonParens + "+[" + closingParens + "])" + bracketPairLimit
+        + nonParens + "*");
+
+    /* Limit on the number of leading (plus) characters. */
+    String leadLimit = limit(0, 2);
+    /* Limit on the number of consecutive punctuation characters. */
+    String punctuationLimit = limit(0, 4);
+    /* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a
+     * single block, set high enough to accommodate the entire national number and the international
+     * country code. */
+    int digitBlockLimit =
+        PhoneNumberUtil.MAX_LENGTH_FOR_NSN + PhoneNumberUtil.MAX_LENGTH_COUNTRY_CODE;
+    /* Limit on the number of blocks separated by punctuation. Uses digitBlockLimit since some
+     * formats use spaces to separate each digit. */
+    String blockLimit = limit(0, digitBlockLimit);
+
+    /* A punctuation sequence allowing white space. */
+    String punctuation = "[" + PhoneNumberUtil.VALID_PUNCTUATION + "]" + punctuationLimit;
+    /* A digits block without punctuation. */
+    String digitSequence = "\\p{Nd}" + limit(1, digitBlockLimit);
+
+    String leadClassChars = openingParens + PhoneNumberUtil.PLUS_CHARS;
+    String leadClass = "[" + leadClassChars + "]";
+    LEAD_CLASS = Pattern.compile(leadClass);
+
+    /* Phone number pattern allowing optional punctuation. */
+    PATTERN = Pattern.compile(
+        "(?:" + leadClass + punctuation + ")" + leadLimit
+        + digitSequence + "(?:" + punctuation + digitSequence + ")" + blockLimit
+        + "(?:" + PhoneNumberUtil.EXTN_PATTERNS_FOR_MATCHING + ")?",
+        PhoneNumberUtil.REGEX_FLAGS);
+  }
+
+  /** Returns a regular expression quantifier with an upper and lower limit. */
+  private static String limit(int lower, int upper) {
+    if ((lower < 0) || (upper <= 0) || (upper < lower)) {
+      throw new IllegalArgumentException();
+    }
+    return "{" + lower + "," + upper + "}";
+  }
+
+  /** The potential states of a PhoneNumberMatcher. */
+  private enum State {
+    NOT_READY, READY, DONE
+  }
+
+  /** The phone number utility. */
+  private final PhoneNumberUtil phoneUtil;
+  /** The text searched for phone numbers. */
+  private final CharSequence text;
+  /**
+   * The region (country) to assume for phone numbers without an international prefix, possibly
+   * null.
+   */
+  private final String preferredRegion;
+  /** The degree of validation requested. */
+  private final Leniency leniency;
+  /** The maximum number of retries after matching an invalid number. */
+  private long maxTries;
+
+  /** The iteration tristate. */
+  private State state = State.NOT_READY;
+  /** The last successful match, null unless in {@link State#READY}. */
+  private PhoneNumberMatch lastMatch = null;
+  /** The next index to start searching at. Undefined in {@link State#DONE}. */
+  private int searchIndex = 0;
+
+  /**
+   * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a
+   * new instance.
+   *
+   * @param util  the phone number util to use
+   * @param text  the character sequence that we will search, null for no text
+   * @param country  the country to assume for phone numbers not written in international format
+   *     (with a leading plus, or with the international dialing prefix of the specified region).
+   *     May be null or "ZZ" if only numbers with a leading plus should be
+   *     considered.
+   * @param leniency  the leniency to use when evaluating candidate phone numbers
+   * @param maxTries  the maximum number of invalid numbers to try before giving up on the text.
+   *     This is to cover degenerate cases where the text has a lot of false positives in it. Must
+   *     be {@code >= 0}.
+   */
+  PhoneNumberMatcher(PhoneNumberUtil util, CharSequence text, String country, Leniency leniency,
+      long maxTries) {
+
+    if ((util == null) || (leniency == null)) {
+      throw new NullPointerException();
+    }
+    if (maxTries < 0) {
+      throw new IllegalArgumentException();
+    }
+    this.phoneUtil = util;
+    this.text = (text != null) ? text : "";
+    this.preferredRegion = country;
+    this.leniency = leniency;
+    this.maxTries = maxTries;
+  }
+
+  /**
+   * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}
+   * that represents a phone number. Returns the next match, null if none was found.
+   *
+   * @param index  the search index to start searching at
+   * @return  the phone number match found, null if none can be found
+   */
+  private PhoneNumberMatch find(int index) {
+    Matcher matcher = PATTERN.matcher(text);
+    while ((maxTries > 0) && matcher.find(index)) {
+      int start = matcher.start();
+      CharSequence candidate = text.subSequence(start, matcher.end());
+
+      // Check for extra numbers at the end.
+      // TODO: This is the place to start when trying to support extraction of multiple phone number
+      // from split notations (+41 79 123 45 67 / 68).
+      candidate = trimAfterFirstMatch(PhoneNumberUtil.SECOND_NUMBER_START_PATTERN, candidate);
+
+      PhoneNumberMatch match = extractMatch(candidate, start);
+      if (match != null) {
+        return match;
+      }
+
+      index = start + candidate.length();
+      maxTries--;
+    }
+
+    return null;
+  }
+
+  /**
+   * Trims away any characters after the first match of {@code pattern} in {@code candidate},
+   * returning the trimmed version.
+   */
+  private static CharSequence trimAfterFirstMatch(Pattern pattern, CharSequence candidate) {
+    Matcher trailingCharsMatcher = pattern.matcher(candidate);
+    if (trailingCharsMatcher.find()) {
+      candidate = candidate.subSequence(0, trailingCharsMatcher.start());
+    }
+    return candidate;
+  }
+
+  /**
+   * Helper method to determine if a character is a Latin-script letter or not. For our purposes,
+   * combining marks should also return true since we assume they have been added to a preceding
+   * Latin character.
+   */
+  // @VisibleForTesting
+  static boolean isLatinLetter(char letter) {
+    // Combining marks are a subset of non-spacing-mark.
+    if (!Character.isLetter(letter) && Character.getType(letter) != Character.NON_SPACING_MARK) {
+      return false;
+    }
+    UnicodeBlock block = UnicodeBlock.of(letter);
+    return block.equals(UnicodeBlock.BASIC_LATIN)
+        || block.equals(UnicodeBlock.LATIN_1_SUPPLEMENT)
+        || block.equals(UnicodeBlock.LATIN_EXTENDED_A)
+        || block.equals(UnicodeBlock.LATIN_EXTENDED_ADDITIONAL)
+        || block.equals(UnicodeBlock.LATIN_EXTENDED_B)
+        || block.equals(UnicodeBlock.COMBINING_DIACRITICAL_MARKS);
+  }
+
+  private static boolean isInvalidPunctuationSymbol(char character) {
+    return character == '%' || Character.getType(character) == Character.CURRENCY_SYMBOL;
+  }
+
+  /**
+   * Attempts to extract a match from a {@code candidate} character sequence.
+   *
+   * @param candidate  the candidate text that might contain a phone number
+   * @param offset  the offset of {@code candidate} within {@link #text}
+   * @return  the match found, null if none can be found
+   */
+  private PhoneNumberMatch extractMatch(CharSequence candidate, int offset) {
+    // Skip a match that is more likely to be a date.
+    if (SLASH_SEPARATED_DATES.matcher(candidate).find()) {
+      return null;
+    }
+
+    // Skip potential time-stamps.
+    if (TIME_STAMPS.matcher(candidate).find()) {
+      String followingText = text.toString().substring(offset + candidate.length());
+      if (TIME_STAMPS_SUFFIX.matcher(followingText).lookingAt()) {
+        return null;
+      }
+    }
+
+    // Try to come up with a valid match given the entire candidate.
+    PhoneNumberMatch match = parseAndVerify(candidate, offset);
+    if (match != null) {
+      return match;
+    }
+
+    // If that failed, try to find an "inner match" - there might be a phone number within this
+    // candidate.
+    return extractInnerMatch(candidate, offset);
+  }
+
+  /**
+   * Attempts to extract a match from {@code candidate} if the whole candidate does not qualify as a
+   * match.
+   *
+   * @param candidate  the candidate text that might contain a phone number
+   * @param offset  the current offset of {@code candidate} within {@link #text}
+   * @return  the match found, null if none can be found
+   */
+  private PhoneNumberMatch extractInnerMatch(CharSequence candidate, int offset) {
+    for (Pattern possibleInnerMatch : INNER_MATCHES) {
+      Matcher groupMatcher = possibleInnerMatch.matcher(candidate);
+      boolean isFirstMatch = true;
+      while (groupMatcher.find() && maxTries > 0) {
+        if (isFirstMatch) {
+          // We should handle any group before this one too.
+          CharSequence group = trimAfterFirstMatch(
+              PhoneNumberUtil.UNWANTED_END_CHAR_PATTERN,
+              candidate.subSequence(0, groupMatcher.start()));
+          PhoneNumberMatch match = parseAndVerify(group, offset);
+          if (match != null) {
+            return match;
+          }
+          maxTries--;
+          isFirstMatch = false;
+        }
+        CharSequence group = trimAfterFirstMatch(
+            PhoneNumberUtil.UNWANTED_END_CHAR_PATTERN, groupMatcher.group(1));
+        PhoneNumberMatch match = parseAndVerify(group, offset + groupMatcher.start(1));
+        if (match != null) {
+          return match;
+        }
+        maxTries--;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Parses a phone number from the {@code candidate} using {@link PhoneNumberUtil#parse} and
+   * verifies it matches the requested {@link #leniency}. If parsing and verification succeed, a
+   * corresponding {@link PhoneNumberMatch} is returned, otherwise this method returns null.
+   *
+   * @param candidate  the candidate match
+   * @param offset  the offset of {@code candidate} within {@link #text}
+   * @return  the parsed and validated phone number match, or null
+   */
+  private PhoneNumberMatch parseAndVerify(CharSequence candidate, int offset) {
+    try {
+      // Check the candidate doesn't contain any formatting which would indicate that it really
+      // isn't a phone number.
+      if (!MATCHING_BRACKETS.matcher(candidate).matches() || PUB_PAGES.matcher(candidate).find()) {
+        return null;
+      }
+
+      // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded
+      // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.
+      if (leniency.compareTo(Leniency.VALID) >= 0) {
+        // If the candidate is not at the start of the text, and does not start with phone-number
+        // punctuation, check the previous character.
+        if (offset > 0 && !LEAD_CLASS.matcher(candidate).lookingAt()) {
+          char previousChar = text.charAt(offset - 1);
+          // We return null if it is a latin letter or an invalid punctuation symbol.
+          if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {
+            return null;
+          }
+        }
+        int lastCharIndex = offset + candidate.length();
+        if (lastCharIndex < text.length()) {
+          char nextChar = text.charAt(lastCharIndex);
+          if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {
+            return null;
+          }
+        }
+      }
+
+      PhoneNumber number = phoneUtil.parseAndKeepRawInput(candidate, preferredRegion);
+
+      // Check Israel * numbers: these are a special case in that they are four-digit numbers that
+      // our library supports, but they can only be dialled with a leading *. Since we don't
+      // actually store or detect the * in our phone number library, this means in practice we
+      // detect most four digit numbers as being valid for Israel. We are considering moving these
+      // numbers to ShortNumberInfo instead, in which case this problem would go away, but in the
+      // meantime we want to restrict the false matches so we only allow these numbers if they are
+      // preceded by a star. We enforce this for all leniency levels even though these numbers are
+      // technically accepted by isPossibleNumber and isValidNumber since we consider it to be a
+      // deficiency in those methods that they accept these numbers without the *.
+      // TODO: Remove this or make it significantly less hacky once we've decided how to
+      // handle these short codes going forward in ShortNumberInfo. We could use the formatting
+      // rules for instance, but that would be slower.
+      if (phoneUtil.getRegionCodeForCountryCode(number.getCountryCode()).equals("IL")
+          && phoneUtil.getNationalSignificantNumber(number).length() == 4
+          && (offset == 0 || (offset > 0 && text.charAt(offset - 1) != '*'))) {
+        // No match.
+        return null;
+      }
+
+      if (leniency.verify(number, candidate, phoneUtil)) {
+        // We used parseAndKeepRawInput to create this number, but for now we don't return the extra
+        // values parsed. TODO: stop clearing all values here and switch all users over
+        // to using rawInput() rather than the rawString() of PhoneNumberMatch.
+        number.clearCountryCodeSource();
+        number.clearRawInput();
+        number.clearPreferredDomesticCarrierCode();
+        return new PhoneNumberMatch(offset, candidate.toString(), number);
+      }
+    } catch (NumberParseException e) {
+      // ignore and continue
+    }
+    return null;
+  }
+
+  /**
+   * Small helper interface such that the number groups can be checked according to different
+   * criteria, both for our default way of performing formatting and for any alternate formats we
+   * may want to check.
+   */
+  interface NumberGroupingChecker {
+    /**
+     * Returns true if the groups of digits found in our candidate phone number match our
+     * expectations.
+     *
+     * @param number  the original number we found when parsing
+     * @param normalizedCandidate  the candidate number, normalized to only contain ASCII digits,
+     *     but with non-digits (spaces etc) retained
+     * @param expectedNumberGroups  the groups of digits that we would expect to see if we
+     *     formatted this number
+     */
+    boolean checkGroups(PhoneNumberUtil util, PhoneNumber number,
+                        StringBuilder normalizedCandidate, String[] expectedNumberGroups);
+  }
+
+  static boolean allNumberGroupsRemainGrouped(PhoneNumberUtil util,
+                                              PhoneNumber number,
+                                              StringBuilder normalizedCandidate,
+                                              String[] formattedNumberGroups) {
+    int fromIndex = 0;
+    if (number.getCountryCodeSource() != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
+      // First skip the country code if the normalized candidate contained it.
+      String countryCode = Integer.toString(number.getCountryCode());
+      fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();
+    }
+    // Check each group of consecutive digits are not broken into separate groupings in the
+    // {@code normalizedCandidate} string.
+    for (int i = 0; i < formattedNumberGroups.length; i++) {
+      // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}
+      // doesn't contain the consecutive digits in formattedNumberGroups[i].
+      fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);
+      if (fromIndex < 0) {
+        return false;
+      }
+      // Moves {@code fromIndex} forward.
+      fromIndex += formattedNumberGroups[i].length();
+      if (i == 0 && fromIndex < normalizedCandidate.length()) {
+        // We are at the position right after the NDC. We get the region used for formatting
+        // information based on the country code in the phone number, rather than the number itself,
+        // as we do not need to distinguish between different countries with the same country
+        // calling code and this is faster.
+        String region = util.getRegionCodeForCountryCode(number.getCountryCode());
+        if (util.getNddPrefixForRegion(region, true) != null
+            && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {
+          // This means there is no formatting symbol after the NDC. In this case, we only
+          // accept the number if there is no formatting symbol at all in the number, except
+          // for extensions. This is only important for countries with national prefixes.
+          String nationalSignificantNumber = util.getNationalSignificantNumber(number);
+          return normalizedCandidate.substring(fromIndex - formattedNumberGroups[i].length())
+              .startsWith(nationalSignificantNumber);
+        }
+      }
+    }
+    // The check here makes sure that we haven't mistakenly already used the extension to
+    // match the last group of the subscriber number. Note the extension cannot have
+    // formatting in-between digits.
+    return normalizedCandidate.substring(fromIndex).contains(number.getExtension());
+  }
+
+  static boolean allNumberGroupsAreExactlyPresent(PhoneNumberUtil util,
+                                                  PhoneNumber number,
+                                                  StringBuilder normalizedCandidate,
+                                                  String[] formattedNumberGroups) {
+    String[] candidateGroups =
+        PhoneNumberUtil.NON_DIGITS_PATTERN.split(normalizedCandidate.toString());
+    // Set this to the last group, skipping it if the number has an extension.
+    int candidateNumberGroupIndex =
+        number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1;
+    // First we check if the national significant number is formatted as a block.
+    // We use contains and not equals, since the national significant number may be present with
+    // a prefix such as a national number prefix, or the country code itself.
+    if (candidateGroups.length == 1
+        || candidateGroups[candidateNumberGroupIndex].contains(
+            util.getNationalSignificantNumber(number))) {
+      return true;
+    }
+    // Starting from the end, go through in reverse, excluding the first group, and check the
+    // candidate and number groups are the same.
+    for (int formattedNumberGroupIndex = (formattedNumberGroups.length - 1);
+         formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0;
+         formattedNumberGroupIndex--, candidateNumberGroupIndex--) {
+      if (!candidateGroups[candidateNumberGroupIndex].equals(
+          formattedNumberGroups[formattedNumberGroupIndex])) {
+        return false;
+      }
+    }
+    // Now check the first group. There may be a national prefix at the start, so we only check
+    // that the candidate group ends with the formatted number group.
+    return (candidateNumberGroupIndex >= 0
+        && candidateGroups[candidateNumberGroupIndex].endsWith(formattedNumberGroups[0]));
+  }
+
+  /**
+   * Helper method to get the national-number part of a number, formatted without any national
+   * prefix, and return it as a set of digit blocks that would be formatted together.
+   */
+  private static String[] getNationalNumberGroups(PhoneNumberUtil util, PhoneNumber number,
+                                                  NumberFormat formattingPattern) {
+    if (formattingPattern == null) {
+      // This will be in the format +CC-DG;ext=EXT where DG represents groups of digits.
+      String rfc3966Format = util.format(number, PhoneNumberFormat.RFC3966);
+      // We remove the extension part from the formatted string before splitting it into different
+      // groups.
+      int endIndex = rfc3966Format.indexOf(';');
+      if (endIndex < 0) {
+        endIndex = rfc3966Format.length();
+      }
+      // The country-code will have a '-' following it.
+      int startIndex = rfc3966Format.indexOf('-') + 1;
+      return rfc3966Format.substring(startIndex, endIndex).split("-");
+    } else {
+      // We format the NSN only, and split that according to the separator.
+      String nationalSignificantNumber = util.getNationalSignificantNumber(number);
+      return util.formatNsnUsingPattern(nationalSignificantNumber,
+                                        formattingPattern, PhoneNumberFormat.RFC3966).split("-");
+    }
+  }
+
+  static boolean checkNumberGroupingIsValid(
+      PhoneNumber number, CharSequence candidate, PhoneNumberUtil util,
+      NumberGroupingChecker checker) {
+    // TODO: Evaluate how this works for other locales (testing has been limited to NANPA regions)
+    // and optimise if necessary.
+    StringBuilder normalizedCandidate =
+        PhoneNumberUtil.normalizeDigits(candidate, true /* keep non-digits */);
+    String[] formattedNumberGroups = getNationalNumberGroups(util, number, null);
+    if (checker.checkGroups(util, number, normalizedCandidate, formattedNumberGroups)) {
+      return true;
+    }
+    // If this didn't pass, see if there are any alternate formats, and try them instead.
+    PhoneMetadata alternateFormats =
+        MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());
+    if (alternateFormats != null) {
+      for (NumberFormat alternateFormat : alternateFormats.numberFormats()) {
+        formattedNumberGroups = getNationalNumberGroups(util, number, alternateFormat);
+        if (checker.checkGroups(util, number, normalizedCandidate, formattedNumberGroups)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
+  static boolean containsMoreThanOneSlashInNationalNumber(PhoneNumber number, String candidate) {
+    int firstSlashInBodyIndex = candidate.indexOf('/');
+    if (firstSlashInBodyIndex < 0) {
+      // No slashes, this is okay.
+      return false;
+    }
+    // Now look for a second one.
+    int secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);
+    if (secondSlashInBodyIndex < 0) {
+      // Only one slash, this is okay.
+      return false;
+    }
+
+    // If the first slash is after the country calling code, this is permitted.
+    boolean candidateHasCountryCode =
+        (number.getCountryCodeSource() == CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN
+         || number.getCountryCodeSource() == CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
+    if (candidateHasCountryCode
+        && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex))
+            .equals(Integer.toString(number.getCountryCode()))) {
+      // Any more slashes and this is illegal.
+      return candidate.substring(secondSlashInBodyIndex + 1).contains("/");
+    }
+    return true;
+  }
+
+  static boolean containsOnlyValidXChars(
+      PhoneNumber number, String candidate, PhoneNumberUtil util) {
+    // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the
+    // national significant number or (2) an extension sign, in which case they always precede the
+    // extension number. We assume a carrier code is more than 1 digit, so the first case has to
+    // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'
+    // or 'X'. We ignore the character if it appears as the last character of the string.
+    for (int index = 0; index < candidate.length() - 1; index++) {
+      char charAtIndex = candidate.charAt(index);
+      if (charAtIndex == 'x' || charAtIndex == 'X') {
+        char charAtNextIndex = candidate.charAt(index + 1);
+        if (charAtNextIndex == 'x' || charAtNextIndex == 'X') {
+          // This is the carrier code case, in which the 'X's always precede the national
+          // significant number.
+          index++;
+          if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {
+            return false;
+          }
+        // This is the extension sign case, in which the 'x' or 'X' should always precede the
+        // extension number.
+        } else if (!PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(index)).equals(
+            number.getExtension())) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+
+  static boolean isNationalPrefixPresentIfRequired(PhoneNumber number, PhoneNumberUtil util) {
+    // First, check how we deduced the country code. If it was written in international format, then
+    // the national prefix is not required.
+    if (number.getCountryCodeSource() != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
+      return true;
+    }
+    String phoneNumberRegion =
+        util.getRegionCodeForCountryCode(number.getCountryCode());
+    PhoneMetadata metadata = util.getMetadataForRegion(phoneNumberRegion);
+    if (metadata == null) {
+      return true;
+    }
+    // Check if a national prefix should be present when formatting this number.
+    String nationalNumber = util.getNationalSignificantNumber(number);
+    NumberFormat formatRule =
+        util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
+    // To do this, we check that a national prefix formatting rule was present and that it wasn't
+    // just the first-group symbol ($1) with punctuation.
+    if ((formatRule != null) && formatRule.getNationalPrefixFormattingRule().length() > 0) {
+      if (formatRule.getNationalPrefixOptionalWhenFormatting()) {
+        // The national-prefix is optional in these cases, so we don't need to check if it was
+        // present.
+        return true;
+      }
+      if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(
+          formatRule.getNationalPrefixFormattingRule())) {
+        // National Prefix not needed for this number.
+        return true;
+      }
+      // Normalize the remainder.
+      String rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput());
+      StringBuilder rawInput = new StringBuilder(rawInputCopy);
+      // Check if we found a national prefix and/or carrier code at the start of the raw input, and
+      // return the result.
+      return util.maybeStripNationalPrefixAndCarrierCode(rawInput, metadata, null);
+    }
+    return true;
+  }
+
+  @Override
+  public boolean hasNext() {
+    if (state == State.NOT_READY) {
+      lastMatch = find(searchIndex);
+      if (lastMatch == null) {
+        state = State.DONE;
+      } else {
+        searchIndex = lastMatch.end();
+        state = State.READY;
+      }
+    }
+    return state == State.READY;
+  }
+
+  @Override
+  public PhoneNumberMatch next() {
+    // Check the state and find the next match as a side-effect if necessary.
+    if (!hasNext()) {
+      throw new NoSuchElementException();
+    }
+
+    // Don't retain that memory any longer than necessary.
+    PhoneNumberMatch result = lastMatch;
+    lastMatch = null;
+    state = State.NOT_READY;
+    return result;
+  }
+
+  /**
+   * Always throws {@link UnsupportedOperationException} as removal is not supported.
+   */
+  @Override
+  public void remove() {
+    throw new UnsupportedOperationException();
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
new file mode 100644
index 0000000..3f67c51
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
@@ -0,0 +1,3515 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2009 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.NumberFormat;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneNumberDesc;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource;
+import com.android.i18n.phonenumbers.internal.MatcherApi;
+import com.android.i18n.phonenumbers.internal.RegexBasedMatcher;
+import com.android.i18n.phonenumbers.internal.RegexCache;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Utility for international phone numbers. Functionality includes formatting, parsing and
+ * validation.
+ *
+ * <p>If you use this library, and want to be notified about important changes, please sign up to
+ * our <a href="https://groups.google.com/forum/#!aboutgroup/libphonenumber-discuss">mailing list</a>.
+ *
+ * NOTE: A lot of methods in this class require Region Code strings. These must be provided using
+ * CLDR two-letter region-code format. These should be in upper-case. The list of the codes
+ * can be found here:
+ * http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
+ * @hide This class is not part of the Android public SDK API
+ */
+public class PhoneNumberUtil {
+  private static final Logger logger = Logger.getLogger(PhoneNumberUtil.class.getName());
+
+  /** 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 = 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 = 17;
+  // The maximum length of the country calling code.
+  static final int MAX_LENGTH_COUNTRY_CODE = 3;
+  // We don't allow input strings for parsing to be longer than 250 chars. This prevents malicious
+  // input from overflowing the regular-expression engine.
+  private static final int MAX_INPUT_STRING_LENGTH = 250;
+
+  // Region-code for the unknown region.
+  private static final String UNKNOWN_REGION = "ZZ";
+
+  private static final int NANPA_COUNTRY_CODE = 1;
+
+  // The prefix that needs to be inserted in front of a Colombian landline number when dialed from
+  // a mobile phone in Colombia.
+  private static final String COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = "3";
+
+  // Map of country calling codes that use a mobile token before the area code. One example of when
+  // this is relevant is when determining the length of the national destination code, which should
+  // be the length of the area code plus the length of the mobile token.
+  private static final Map<Integer, String> MOBILE_TOKEN_MAPPINGS;
+
+  // Set of country codes that have geographically assigned mobile numbers (see GEO_MOBILE_COUNTRIES
+  // below) which are not based on *area codes*. For example, in China mobile numbers start with a
+  // carrier indicator, and beyond that are geographically assigned: this carrier indicator is not
+  // considered to be an area code.
+  private static final Set<Integer> GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES;
+
+  // Set of country calling codes that have geographically assigned mobile numbers. This may not be
+  // complete; we add calling codes case by case, as we find geographical mobile numbers or hear
+  // from user reports. Note that countries like the US, where we can't distinguish between
+  // fixed-line or mobile numbers, are not listed here, since we consider FIXED_LINE_OR_MOBILE to be
+  // a possibly geographically-related type anyway (like FIXED_LINE).
+  private static final Set<Integer> GEO_MOBILE_COUNTRIES;
+
+  // The PLUS_SIGN signifies the international prefix.
+  static final char PLUS_SIGN = '+';
+
+  private static final char STAR_SIGN = '*';
+
+  private static final String RFC3966_EXTN_PREFIX = ";ext=";
+  private static final String RFC3966_PREFIX = "tel:";
+  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 dialling, otherwise the call
+  // will not reach the intended destination.
+  private static final Map<Character, Character> DIALLABLE_CHAR_MAPPINGS;
+
+  // Only upper-case variants of alpha characters are stored.
+  private static final Map<Character, Character> ALPHA_MAPPINGS;
+
+  // For performance reasons, amalgamate both into one map.
+  private static final Map<Character, Character> ALPHA_PHONE_MAPPINGS;
+
+  // Separate map of all symbols that we wish to retain when formatting alpha numbers. This
+  // includes digits, ASCII letters and number grouping symbols such as "-" and " ".
+  private static final Map<Character, Character> ALL_PLUS_NUMBER_GROUPING_SYMBOLS;
+
+  static {
+    HashMap<Integer, String> mobileTokenMap = new HashMap<Integer, String>();
+    mobileTokenMap.put(52, "1");
+    mobileTokenMap.put(54, "9");
+    MOBILE_TOKEN_MAPPINGS = Collections.unmodifiableMap(mobileTokenMap);
+
+    HashSet<Integer> geoMobileCountriesWithoutMobileAreaCodes = new HashSet<Integer>();
+    geoMobileCountriesWithoutMobileAreaCodes.add(86);  // China
+    GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES =
+        Collections.unmodifiableSet(geoMobileCountriesWithoutMobileAreaCodes);
+
+    HashSet<Integer> geoMobileCountries = new HashSet<Integer>();
+    geoMobileCountries.add(52);  // Mexico
+    geoMobileCountries.add(54);  // Argentina
+    geoMobileCountries.add(55);  // Brazil
+    geoMobileCountries.add(62);  // Indonesia: some prefixes only (fixed CMDA wireless)
+    geoMobileCountries.addAll(geoMobileCountriesWithoutMobileAreaCodes);
+    GEO_MOBILE_COUNTRIES = Collections.unmodifiableSet(geoMobileCountries);
+
+    // Simple ASCII digits map used to populate ALPHA_PHONE_MAPPINGS and
+    // ALL_PLUS_NUMBER_GROUPING_SYMBOLS.
+    HashMap<Character, Character> asciiDigitMappings = new HashMap<Character, Character>();
+    asciiDigitMappings.put('0', '0');
+    asciiDigitMappings.put('1', '1');
+    asciiDigitMappings.put('2', '2');
+    asciiDigitMappings.put('3', '3');
+    asciiDigitMappings.put('4', '4');
+    asciiDigitMappings.put('5', '5');
+    asciiDigitMappings.put('6', '6');
+    asciiDigitMappings.put('7', '7');
+    asciiDigitMappings.put('8', '8');
+    asciiDigitMappings.put('9', '9');
+
+    HashMap<Character, Character> alphaMap = new HashMap<Character, Character>(40);
+    alphaMap.put('A', '2');
+    alphaMap.put('B', '2');
+    alphaMap.put('C', '2');
+    alphaMap.put('D', '3');
+    alphaMap.put('E', '3');
+    alphaMap.put('F', '3');
+    alphaMap.put('G', '4');
+    alphaMap.put('H', '4');
+    alphaMap.put('I', '4');
+    alphaMap.put('J', '5');
+    alphaMap.put('K', '5');
+    alphaMap.put('L', '5');
+    alphaMap.put('M', '6');
+    alphaMap.put('N', '6');
+    alphaMap.put('O', '6');
+    alphaMap.put('P', '7');
+    alphaMap.put('Q', '7');
+    alphaMap.put('R', '7');
+    alphaMap.put('S', '7');
+    alphaMap.put('T', '8');
+    alphaMap.put('U', '8');
+    alphaMap.put('V', '8');
+    alphaMap.put('W', '9');
+    alphaMap.put('X', '9');
+    alphaMap.put('Y', '9');
+    alphaMap.put('Z', '9');
+    ALPHA_MAPPINGS = Collections.unmodifiableMap(alphaMap);
+
+    HashMap<Character, Character> combinedMap = new HashMap<Character, Character>(100);
+    combinedMap.putAll(ALPHA_MAPPINGS);
+    combinedMap.putAll(asciiDigitMappings);
+    ALPHA_PHONE_MAPPINGS = Collections.unmodifiableMap(combinedMap);
+
+    HashMap<Character, Character> diallableCharMap = new HashMap<Character, Character>();
+    diallableCharMap.putAll(asciiDigitMappings);
+    diallableCharMap.put(PLUS_SIGN, PLUS_SIGN);
+    diallableCharMap.put('*', '*');
+    diallableCharMap.put('#', '#');
+    DIALLABLE_CHAR_MAPPINGS = Collections.unmodifiableMap(diallableCharMap);
+
+    HashMap<Character, Character> allPlusNumberGroupings = new HashMap<Character, Character>();
+    // Put (lower letter -> upper letter) and (upper letter -> upper letter) mappings.
+    for (char c : ALPHA_MAPPINGS.keySet()) {
+      allPlusNumberGroupings.put(Character.toLowerCase(c), c);
+      allPlusNumberGroupings.put(c, c);
+    }
+    allPlusNumberGroupings.putAll(asciiDigitMappings);
+    // Put grouping symbols.
+    allPlusNumberGroupings.put('-', '-');
+    allPlusNumberGroupings.put('\uFF0D', '-');
+    allPlusNumberGroupings.put('\u2010', '-');
+    allPlusNumberGroupings.put('\u2011', '-');
+    allPlusNumberGroupings.put('\u2012', '-');
+    allPlusNumberGroupings.put('\u2013', '-');
+    allPlusNumberGroupings.put('\u2014', '-');
+    allPlusNumberGroupings.put('\u2015', '-');
+    allPlusNumberGroupings.put('\u2212', '-');
+    allPlusNumberGroupings.put('/', '/');
+    allPlusNumberGroupings.put('\uFF0F', '/');
+    allPlusNumberGroupings.put(' ', ' ');
+    allPlusNumberGroupings.put('\u3000', ' ');
+    allPlusNumberGroupings.put('\u2060', ' ');
+    allPlusNumberGroupings.put('.', '.');
+    allPlusNumberGroupings.put('\uFF0E', '.');
+    ALL_PLUS_NUMBER_GROUPING_SYMBOLS = Collections.unmodifiableMap(allPlusNumberGroupings);
+  }
+
+  // Pattern that makes it easy to distinguish whether a region has a single international dialing
+  // prefix or not. If a region has a single international prefix (e.g. 011 in USA), it will be
+  // represented as a string that contains a sequence of ASCII digits, and possibly a tilde, which
+  // signals waiting for the tone. If there are multiple available international prefixes in a
+  // region, they will be represented as a regex string that always contains one or more characters
+  // that are not ASCII digits or a tilde.
+  private static final Pattern SINGLE_INTERNATIONAL_PREFIX =
+      Pattern.compile("[\\d]+(?:[~\u2053\u223C\uFF5E][\\d]+)?");
+
+  // Regular expression of acceptable punctuation found in phone numbers, used to find numbers in
+  // text and to decide what is a viable phone number. This excludes diallable characters.
+  // This consists of dash characters, white space characters, full stops, slashes,
+  // square brackets, parentheses and tildes. It also includes the letter 'x' as that is found as a
+  // 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\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.
+  private static final String VALID_ALPHA =
+      Arrays.toString(ALPHA_MAPPINGS.keySet().toArray()).replaceAll("[, \\[\\]]", "")
+      + Arrays.toString(ALPHA_MAPPINGS.keySet().toArray())
+          .toLowerCase().replaceAll("[, \\[\\]]", "");
+  static final String PLUS_CHARS = "+\uFF0B";
+  static final Pattern PLUS_CHARS_PATTERN = Pattern.compile("[" + PLUS_CHARS + "]+");
+  private static final Pattern SEPARATOR_PATTERN = Pattern.compile("[" + VALID_PUNCTUATION + "]+");
+  private static final Pattern CAPTURING_DIGIT_PATTERN = Pattern.compile("(" + DIGITS + ")");
+
+  // Regular expression of acceptable characters that may start a phone number for the purposes of
+  // parsing. This allows us to strip away meaningless prefixes to phone numbers that may be
+  // mistakenly given to us. This consists of digits, the plus symbol and arabic-indic digits. This
+  // does not contain alpha characters, although they may be used later in the number. It also does
+  // not include other punctuation, as this will be stripped later during parsing and is of no
+  // information value when parsing a number.
+  private static final String VALID_START_CHAR = "[" + PLUS_CHARS + DIGITS + "]";
+  private static final Pattern VALID_START_CHAR_PATTERN = Pattern.compile(VALID_START_CHAR);
+
+  // Regular expression of characters typically used to start a second phone number for the purposes
+  // of parsing. This allows us to strip off parts of the number that are actually the start of
+  // another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this
+  // actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second
+  // extension so that the first number is parsed correctly.
+  private static final String SECOND_NUMBER_START = "[\\\\/] *x";
+  static final Pattern SECOND_NUMBER_START_PATTERN = Pattern.compile(SECOND_NUMBER_START);
+
+  // Regular expression of trailing characters that we want to remove. We remove all characters that
+  // are not alpha or numerical characters. The hash character is retained here, as it may signify
+  // the previous block was an extension.
+  private static final String UNWANTED_END_CHARS = "[[\\P{N}&&\\P{L}]&&[^#]]+$";
+  static final Pattern UNWANTED_END_CHAR_PATTERN = Pattern.compile(UNWANTED_END_CHARS);
+
+  // We use this pattern to check if the phone number has at least three letters in it - if so, then
+  // we treat it as a number where some phone-number digits are represented by letters.
+  private static final Pattern VALID_ALPHA_PHONE_PATTERN = Pattern.compile("(?:.*?[A-Za-z]){3}.*");
+
+  // Regular expression of viable phone numbers. This is location independent. Checks we have at
+  // least three leading digits, and only valid punctuation, alpha characters and
+  // digits in the phone number. Does not include extension data.
+  // The symbol 'x' is allowed here as valid punctuation since it is often used as a placeholder for
+  // carrier codes, for example in Brazilian phone numbers. We also allow multiple "+" characters at
+  // the start.
+  // Corresponds to the following:
+  // [digits]{minLengthNsn}|
+  // plus_sign*(([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*
+  //
+  // The first reg-ex is to allow short numbers (two digits long) to be parsed if they are entered
+  // as "15" etc, but only if there is no punctuation in them. The second expression restricts the
+  // number of digits to three or more, but then allows them to be in international form, and to
+  // have alpha-characters and punctuation.
+  //
+  // Note VALID_PUNCTUATION starts with a -, so must be the first in the range.
+  private static final String VALID_PHONE_NUMBER =
+      DIGITS + "{" + MIN_LENGTH_FOR_NSN + "}" + "|"
+      + "[" + PLUS_CHARS + "]*+(?:[" + VALID_PUNCTUATION + STAR_SIGN + "]*" + DIGITS + "){3,}["
+      + VALID_PUNCTUATION + STAR_SIGN + VALID_ALPHA + DIGITS + "]*";
+
+  // Default extension prefix to use when formatting. This will be put in front of any extension
+  // component of the number, after the main national number is formatted. For example, if you wish
+  // the default extension formatting to be " extn: 3456", then you should specify " extn: " here
+  // as the default extension prefix. This can be overridden by region-specific preferences.
+  private static final String DEFAULT_EXTN_PREFIX = " ext. ";
+
+  // Pattern to capture digits used in an extension. Places a maximum length of "7" for an
+  // extension.
+  private static final String CAPTURING_EXTN_DIGITS = "(" + DIGITS + "{1,7})";
+  // Regexp of all possible ways to write extensions, for use when parsing. This will be run as a
+  // case-insensitive regexp match. Wide character versions are also provided after each ASCII
+  // version.
+  private static final String EXTN_PATTERNS_FOR_PARSING;
+  static final String EXTN_PATTERNS_FOR_MATCHING;
+  static {
+    // One-character symbols that can be used to indicate an extension.
+    String singleExtnSymbolsForMatching = "x\uFF58#\uFF03~\uFF5E";
+    // For parsing, we are slightly more lenient in our interpretation than for matching. Here we
+    // allow "comma" and "semicolon" as possible extension indicators. When matching, these are
+    // hardly ever used to indicate this.
+    String singleExtnSymbolsForParsing = ",;" + singleExtnSymbolsForMatching;
+
+    EXTN_PATTERNS_FOR_PARSING = createExtnPattern(singleExtnSymbolsForParsing);
+    EXTN_PATTERNS_FOR_MATCHING = createExtnPattern(singleExtnSymbolsForMatching);
+  }
+
+  /**
+   * Helper initialiser method to create the regular-expression pattern to match extensions,
+   * allowing the one-char extension symbols provided by {@code singleExtnSymbols}.
+   */
+  private static String createExtnPattern(String singleExtnSymbols) {
+    // There are three regular expressions here. The first covers RFC 3966 format, where the
+    // extension is added using ";ext=". The second more generic one starts with optional white
+    // space and ends with an optional full stop (.), followed by zero or more spaces/tabs/commas
+    // and then the numbers themselves. The other one covers the special case of American numbers
+    // where the extension is written with a hash at the end, such as "- 503#"
+    // Note that the only capturing groups should be around the digits that you want to capture as
+    // part of the extension, or else parsing will fail!
+    // Canonical-equivalence doesn't seem to be an option with Android java, so we allow two options
+    // for representing the accented o - the character itself, and one in the unicode decomposed
+    // form with the combining acute accent.
+    return (RFC3966_EXTN_PREFIX + CAPTURING_EXTN_DIGITS + "|" + "[ \u00A0\\t,]*"
+        + "(?:e?xt(?:ensi(?:o\u0301?|\u00F3))?n?|\uFF45?\uFF58\uFF54\uFF4E?|"
+        + "[" + singleExtnSymbols + "]|int|anexo|\uFF49\uFF4E\uFF54)"
+        + "[:\\.\uFF0E]?[ \u00A0\\t,-]*" + CAPTURING_EXTN_DIGITS + "#?|"
+        + "[- ]+(" + DIGITS + "{1,5})#");
+  }
+
+  // Regexp of all known extension prefixes used by different regions followed by 1 or more valid
+  // digits, for use when parsing.
+  private static final Pattern EXTN_PATTERN =
+      Pattern.compile("(?:" + EXTN_PATTERNS_FOR_PARSING + ")$", REGEX_FLAGS);
+
+  // We append optionally the extension pattern to the end here, as a valid phone number may
+  // have an extension prefix appended, followed by 1 or more digits.
+  private static final Pattern VALID_PHONE_NUMBER_PATTERN =
+      Pattern.compile(VALID_PHONE_NUMBER + "(?:" + EXTN_PATTERNS_FOR_PARSING + ")?", REGEX_FLAGS);
+
+  static final Pattern NON_DIGITS_PATTERN = Pattern.compile("(\\D+)");
+
+  // The FIRST_GROUP_PATTERN was originally set to $1 but there are some countries for which the
+  // first group is not used in the national pattern (e.g. Argentina) so the $1 group does not match
+  // correctly.  Therefore, we use \d, so that the first group actually used in the pattern will be
+  // matched.
+  private static final Pattern FIRST_GROUP_PATTERN = Pattern.compile("(\\$\\d)");
+  // Constants used in the formatting rules to represent the national prefix, first group and
+  // carrier code respectively.
+  private static final String NP_STRING = "$NP";
+  private static final String FG_STRING = "$FG";
+  private static final String CC_STRING = "$CC";
+
+  // A pattern that is used to determine if the national prefix formatting rule has the first group
+  // only, i.e., does not start with the national prefix. Note that the pattern explicitly allows
+  // for unbalanced parentheses.
+  private static final Pattern FIRST_GROUP_ONLY_PREFIX_PATTERN = Pattern.compile("\\(?\\$1\\)?");
+
+  private static PhoneNumberUtil instance = null;
+
+  public static final String REGION_CODE_FOR_NON_GEO_ENTITY = "001";
+
+  /**
+   * INTERNATIONAL and NATIONAL formats are consistent with the definition in ITU-T Recommendation
+   * E.123. However we follow local conventions such as using '-' instead of whitespace as
+   * separators. For example, the number of the Google Switzerland office will be written as
+   * "+41 44 668 1800" in INTERNATIONAL format, and as "044 668 1800" in NATIONAL format. E164
+   * format is as per INTERNATIONAL format but with no formatting applied, e.g. "+41446681800".
+   * RFC3966 is as per INTERNATIONAL format, but with all spaces and other separating symbols
+   * replaced with a hyphen, and with any phone number extension appended with ";ext=". It also
+   * will have a prefix of "tel:" added, e.g. "tel:+41-44-668-1800".
+   *
+   * Note: If you are considering storing the number in a neutral format, you are highly advised to
+   * use the PhoneNumber class.
+ * @hide This class is not part of the Android public SDK API
+   */
+  public enum PhoneNumberFormat {
+    E164,
+    INTERNATIONAL,
+    NATIONAL,
+    RFC3966
+  }
+
+  /**
+   * Type of phone numbers.
+ * @hide This class is not part of the Android public SDK API
+   */
+  public enum PhoneNumberType {
+    FIXED_LINE,
+    MOBILE,
+    // In some regions (e.g. the USA), it is impossible to distinguish between fixed-line and
+    // mobile numbers by looking at the phone number itself.
+    FIXED_LINE_OR_MOBILE,
+    // Freephone lines
+    TOLL_FREE,
+    PREMIUM_RATE,
+    // The cost of this call is shared between the caller and the recipient, and is hence typically
+    // less than PREMIUM_RATE calls. See // http://en.wikipedia.org/wiki/Shared_Cost_Service for
+    // more information.
+    SHARED_COST,
+    // Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
+    VOIP,
+    // A personal number is associated with a particular person, and may be routed to either a
+    // MOBILE or FIXED_LINE number. Some more information can be found here:
+    // http://en.wikipedia.org/wiki/Personal_Numbers
+    PERSONAL_NUMBER,
+    PAGER,
+    // Used for "Universal Access Numbers" or "Company Numbers". They may be further routed to
+    // specific offices, but allow one number to be used for a company.
+    UAN,
+    // Used for "Voice Mail Access Numbers".
+    VOICEMAIL,
+    // A phone number is of type UNKNOWN when it does not fit any of the known patterns for a
+    // specific region.
+    UNKNOWN
+  }
+
+  /**
+   * Types of phone number matches. See detailed description beside the isNumberMatch() method.
+ * @hide This class is not part of the Android public SDK API
+   */
+  public enum MatchType {
+    NOT_A_NUMBER,
+    NO_MATCH,
+    SHORT_NSN_MATCH,
+    NSN_MATCH,
+    EXACT_MATCH,
+  }
+
+  /**
+   * Possible outcomes when testing if a PhoneNumber is possible.
+ * @hide This class is not part of the Android public SDK API
+   */
+  public enum ValidationResult {
+    /** The number length matches that of valid numbers for this region. */
+    IS_POSSIBLE,
+    /**
+     * The number length matches that of local numbers for this region only (i.e. numbers that may
+     * be able to be dialled within an area, but do not have all the information to be dialled from
+     * anywhere inside or outside the country).
+     */
+    IS_POSSIBLE_LOCAL_ONLY,
+    /** The number has an invalid country calling code. */
+    INVALID_COUNTRY_CODE,
+    /** The number is shorter than all valid numbers for this region. */
+    TOO_SHORT,
+    /**
+     * The number is longer than the shortest valid numbers for this region, shorter than the
+     * longest valid numbers for this region, and does not itself have a number length that matches
+     * valid numbers for this region. This can also be returned in the case where
+     * isPossibleNumberForTypeWithReason was called, and there are no numbers of this type at all
+     * for this region.
+     */
+    INVALID_LENGTH,
+    /** The number is longer than all valid numbers for this region. */
+    TOO_LONG,
+  }
+
+  /**
+   * Leniency when {@linkplain PhoneNumberUtil#findNumbers finding} potential phone numbers in text
+   * segments. The levels here are ordered in increasing strictness.
+ * @hide This class is not part of the Android public SDK API
+   */
+  public enum Leniency {
+    /**
+     * Phone numbers accepted are {@linkplain PhoneNumberUtil#isPossibleNumber(PhoneNumber)
+     * possible}, but not necessarily {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid}.
+     */
+    POSSIBLE {
+      @Override
+      boolean verify(PhoneNumber number, CharSequence candidate, PhoneNumberUtil util) {
+        return util.isPossibleNumber(number);
+      }
+    },
+    /**
+     * Phone numbers accepted are {@linkplain PhoneNumberUtil#isPossibleNumber(PhoneNumber)
+     * possible} and {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid}. Numbers written
+     * in national format must have their national-prefix present if it is usually written for a
+     * number of this type.
+     */
+    VALID {
+      @Override
+      boolean verify(PhoneNumber number, CharSequence candidate, PhoneNumberUtil util) {
+        if (!util.isValidNumber(number)
+            || !PhoneNumberMatcher.containsOnlyValidXChars(number, candidate.toString(), util)) {
+          return false;
+        }
+        return PhoneNumberMatcher.isNationalPrefixPresentIfRequired(number, util);
+      }
+    },
+    /**
+     * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and
+     * are grouped in a possible way for this locale. For example, a US number written as
+     * "65 02 53 00 00" and "650253 0000" are not accepted at this leniency level, whereas
+     * "650 253 0000", "650 2530000" or "6502530000" are.
+     * Numbers with more than one '/' symbol in the national significant number are also dropped at
+     * this level.
+     * <p>
+     * Warning: This level might result in lower coverage especially for regions outside of country
+     * code "+1". If you are not sure about which level to use, email the discussion group
+     * libphonenumber-discuss@googlegroups.com.
+     */
+    STRICT_GROUPING {
+      @Override
+      boolean verify(PhoneNumber number, CharSequence candidate, PhoneNumberUtil util) {
+        String candidateString = candidate.toString();
+        if (!util.isValidNumber(number)
+            || !PhoneNumberMatcher.containsOnlyValidXChars(number, candidateString, util)
+            || PhoneNumberMatcher.containsMoreThanOneSlashInNationalNumber(number, candidateString)
+            || !PhoneNumberMatcher.isNationalPrefixPresentIfRequired(number, util)) {
+          return false;
+        }
+        return PhoneNumberMatcher.checkNumberGroupingIsValid(
+            number, candidate, util, new PhoneNumberMatcher.NumberGroupingChecker() {
+              @Override
+              public boolean checkGroups(PhoneNumberUtil util, PhoneNumber number,
+                                         StringBuilder normalizedCandidate,
+                                         String[] expectedNumberGroups) {
+                return PhoneNumberMatcher.allNumberGroupsRemainGrouped(
+                    util, number, normalizedCandidate, expectedNumberGroups);
+              }
+            });
+      }
+    },
+    /**
+     * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and
+     * are grouped in the same way that we would have formatted it, or as a single block. For
+     * example, a US number written as "650 2530000" is not accepted at this leniency level, whereas
+     * "650 253 0000" or "6502530000" are.
+     * Numbers with more than one '/' symbol are also dropped at this level.
+     * <p>
+     * Warning: This level might result in lower coverage especially for regions outside of country
+     * code "+1". If you are not sure about which level to use, email the discussion group
+     * libphonenumber-discuss@googlegroups.com.
+     */
+    EXACT_GROUPING {
+      @Override
+      boolean verify(PhoneNumber number, CharSequence candidate, PhoneNumberUtil util) {
+        String candidateString = candidate.toString();
+        if (!util.isValidNumber(number)
+            || !PhoneNumberMatcher.containsOnlyValidXChars(number, candidateString, util)
+            || PhoneNumberMatcher.containsMoreThanOneSlashInNationalNumber(number, candidateString)
+            || !PhoneNumberMatcher.isNationalPrefixPresentIfRequired(number, util)) {
+          return false;
+        }
+        return PhoneNumberMatcher.checkNumberGroupingIsValid(
+            number, candidate, util, new PhoneNumberMatcher.NumberGroupingChecker() {
+              @Override
+              public boolean checkGroups(PhoneNumberUtil util, PhoneNumber number,
+                                         StringBuilder normalizedCandidate,
+                                         String[] expectedNumberGroups) {
+                return PhoneNumberMatcher.allNumberGroupsAreExactlyPresent(
+                    util, number, normalizedCandidate, expectedNumberGroups);
+              }
+            });
+      }
+    };
+
+    /** Returns true if {@code number} is a verified number according to this leniency. */
+    abstract boolean verify(PhoneNumber number, CharSequence candidate, PhoneNumberUtil util);
+  }
+
+  // A source of metadata for different regions.
+  private final MetadataSource metadataSource;
+
+  // A mapping from a country calling code to the region codes which denote the region represented
+  // by that country calling code. In the case of multiple regions sharing a calling code, such as
+  // the NANPA regions, the one indicated with "isMainCountryForCode" in the metadata should be
+  // first.
+  private final Map<Integer, List<String>> countryCallingCodeToRegionCodeMap;
+
+  // An API for validation checking.
+  private final MatcherApi matcherApi = RegexBasedMatcher.create();
+
+  // The set of regions that share country calling code 1.
+  // There are roughly 26 regions.
+  // We set the initial capacity of the HashSet to 35 to offer a load factor of roughly 0.75.
+  private final Set<String> nanpaRegions = new HashSet<String>(35);
+
+  // A cache for frequently used region-specific regular expressions.
+  // The initial capacity is set to 100 as this seems to be an optimal value for Android, based on
+  // performance measurements.
+  private final RegexCache regexCache = new RegexCache(100);
+
+  // The set of regions the library supports.
+  // There are roughly 240 of them and we set the initial capacity of the HashSet to 320 to offer a
+  // load factor of roughly 0.75.
+  private final Set<String> supportedRegions = new HashSet<String>(320);
+
+  // The set of country calling codes that map to the non-geo entity region ("001"). This set
+  // currently contains < 12 elements so the default capacity of 16 (load factor=0.75) is fine.
+  private final Set<Integer> countryCodesForNonGeographicalRegion = new HashSet<Integer>();
+
+  /**
+   * This class implements a singleton, the constructor is only visible to facilitate testing.
+   */
+  // @VisibleForTesting
+  PhoneNumberUtil(MetadataSource metadataSource,
+      Map<Integer, List<String>> countryCallingCodeToRegionCodeMap) {
+    this.metadataSource = metadataSource;
+    this.countryCallingCodeToRegionCodeMap = countryCallingCodeToRegionCodeMap;
+    for (Map.Entry<Integer, List<String>> entry : countryCallingCodeToRegionCodeMap.entrySet()) {
+      List<String> regionCodes = entry.getValue();
+      // We can assume that if the country calling code maps to the non-geo entity region code then
+      // that's the only region code it maps to.
+      if (regionCodes.size() == 1 && REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0))) {
+        // This is the subset of all country codes that map to the non-geo entity region code.
+        countryCodesForNonGeographicalRegion.add(entry.getKey());
+      } else {
+        // The supported regions set does not include the "001" non-geo entity region code.
+        supportedRegions.addAll(regionCodes);
+      }
+    }
+    // If the non-geo entity still got added to the set of supported regions it must be because
+    // there are entries that list the non-geo entity alongside normal regions (which is wrong).
+    // If we discover this, remove the non-geo entity from the set of supported regions and log.
+    if (supportedRegions.remove(REGION_CODE_FOR_NON_GEO_ENTITY)) {
+      logger.log(Level.WARNING, "invalid metadata (country calling code was mapped to the non-geo "
+          + "entity as well as specific region(s))");
+    }
+    nanpaRegions.addAll(countryCallingCodeToRegionCodeMap.get(NANPA_COUNTRY_CODE));
+  }
+
+  /**
+   * Attempts to extract a possible number from the string passed in. This currently strips all
+   * leading characters that cannot be used to start a phone number. Characters that can be used to
+   * start a phone number are defined in the VALID_START_CHAR_PATTERN. If none of these characters
+   * are found in the number passed in, an empty string is returned. This function also attempts to
+   * strip off any alternative extensions or endings if two or more are present, such as in the case
+   * of: (530) 583-6985 x302/x2303. The second extension here makes this actually two phone numbers,
+   * (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second extension so that the first
+   * number is parsed correctly.
+   *
+   * @param number  the string that might contain a phone number
+   * @return  the number, stripped of any non-phone-number prefix (such as "Tel:") or an empty
+   *     string if no character used to start phone numbers (such as + or any digit) is found in the
+   *     number
+   */
+  static CharSequence extractPossibleNumber(CharSequence number) {
+    Matcher m = VALID_START_CHAR_PATTERN.matcher(number);
+    if (m.find()) {
+      number = number.subSequence(m.start(), number.length());
+      // Remove trailing non-alpha non-numerical characters.
+      Matcher trailingCharsMatcher = UNWANTED_END_CHAR_PATTERN.matcher(number);
+      if (trailingCharsMatcher.find()) {
+        number = number.subSequence(0, trailingCharsMatcher.start());
+      }
+      // Check for extra numbers at the end.
+      Matcher secondNumber = SECOND_NUMBER_START_PATTERN.matcher(number);
+      if (secondNumber.find()) {
+        number = number.subSequence(0, secondNumber.start());
+      }
+      return number;
+    } else {
+      return "";
+    }
+  }
+
+  /**
+   * 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 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.
+   *
+   * @param number  string to be checked for viability as a phone number
+   * @return  true if the number could be a phone number of some sort, otherwise false
+   */
+  // @VisibleForTesting
+  static boolean isViablePhoneNumber(CharSequence number) {
+    if (number.length() < MIN_LENGTH_FOR_NSN) {
+      return false;
+    }
+    Matcher m = VALID_PHONE_NUMBER_PATTERN.matcher(number);
+    return m.matches();
+  }
+
+  /**
+   * Normalizes a string of characters representing a phone number. This performs the following
+   * conversions:
+   *   - Punctuation is stripped.
+   *   For ALPHA/VANITY numbers:
+   *   - Letters are converted to their numeric representation on a telephone keypad. The keypad
+   *     used here is the one defined in ITU Recommendation E.161. This is only done if there are 3
+   *     or more letters in the number, to lessen the risk that such letters are typos.
+   *   For other numbers:
+   *   - Wide-ascii digits are converted to normal ASCII (European) digits.
+   *   - Arabic-Indic numerals are converted to European numerals.
+   *   - Spurious alpha characters are stripped.
+   *
+   * @param number  a StringBuilder of characters representing a phone number that will be
+   *     normalized in place
+   */
+  static StringBuilder normalize(StringBuilder number) {
+    Matcher m = VALID_ALPHA_PHONE_PATTERN.matcher(number);
+    if (m.matches()) {
+      number.replace(0, number.length(), normalizeHelper(number, ALPHA_PHONE_MAPPINGS, true));
+    } else {
+      number.replace(0, number.length(), normalizeDigitsOnly(number));
+    }
+    return number;
+  }
+
+  /**
+   * Normalizes a string of characters representing a phone number. This converts wide-ascii and
+   * arabic-indic numerals to European numerals, and strips punctuation and alpha characters.
+   *
+   * @param number  a string of characters representing a phone number
+   * @return  the normalized string version of the phone number
+   */
+  public static String normalizeDigitsOnly(CharSequence number) {
+    return normalizeDigits(number, false /* strip non-digits */).toString();
+  }
+
+  static StringBuilder normalizeDigits(CharSequence number, boolean keepNonDigits) {
+    StringBuilder normalizedDigits = new StringBuilder(number.length());
+    for (int i = 0; i < number.length(); i++) {
+      char c = number.charAt(i);
+      int digit = Character.digit(c, 10);
+      if (digit != -1) {
+        normalizedDigits.append(digit);
+      } else if (keepNonDigits) {
+        normalizedDigits.append(c);
+      }
+    }
+    return normalizedDigits;
+  }
+
+  /**
+   * Normalizes a string of characters representing a phone number. This strips all characters which
+   * are not diallable on a mobile phone keypad (including all non-ASCII digits).
+   *
+   * @param number  a string of characters representing a phone number
+   * @return  the normalized string version of the phone number
+   */
+  public static String normalizeDiallableCharsOnly(CharSequence number) {
+    return normalizeHelper(number, DIALLABLE_CHAR_MAPPINGS, true /* remove non matches */);
+  }
+
+  /**
+   * Converts all alpha characters in a number to their respective digits on a keypad, but retains
+   * existing formatting.
+   */
+  public static String convertAlphaCharactersInNumber(CharSequence number) {
+    return normalizeHelper(number, ALPHA_PHONE_MAPPINGS, false);
+  }
+
+  /**
+   * Gets the length of the geographical area code from the
+   * PhoneNumber object passed in, so that clients could use it
+   * to split a national significant number into geographical area code and subscriber number. It
+   * works in such a way that the resultant subscriber number should be diallable, at least on some
+   * devices. An example of how this could be used:
+   *
+   * <pre>{@code
+   * PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
+   * PhoneNumber number = phoneUtil.parse("16502530000", "US");
+   * String nationalSignificantNumber = phoneUtil.getNationalSignificantNumber(number);
+   * String areaCode;
+   * String subscriberNumber;
+   *
+   * int areaCodeLength = phoneUtil.getLengthOfGeographicalAreaCode(number);
+   * if (areaCodeLength > 0) {
+   *   areaCode = nationalSignificantNumber.substring(0, areaCodeLength);
+   *   subscriberNumber = nationalSignificantNumber.substring(areaCodeLength);
+   * } else {
+   *   areaCode = "";
+   *   subscriberNumber = nationalSignificantNumber;
+   * }
+   * }</pre>
+   *
+   * N.B.: area code is a very ambiguous concept, so the I18N team generally recommends against
+   * using it for most purposes, but recommends using the more general {@code national_number}
+   * instead. Read the following carefully before deciding to use this method:
+   * <ul>
+   *  <li> geographical area codes change over time, and this method honors those changes;
+   *    therefore, it doesn't guarantee the stability of the result it produces.
+   *  <li> subscriber numbers may not be diallable from all devices (notably mobile devices, which
+   *    typically requires the full national_number to be dialled in most regions).
+   *  <li> most non-geographical numbers have no area codes, including numbers from non-geographical
+   *    entities
+   *  <li> some geographical numbers have no area codes.
+   * </ul>
+   * @param number  the PhoneNumber object for which clients
+   *     want to know the length of the area code
+   * @return  the length of area code of the PhoneNumber object
+   *     passed in
+   */
+  public int getLengthOfGeographicalAreaCode(PhoneNumber number) {
+    PhoneMetadata metadata = getMetadataForRegion(getRegionCodeForNumber(number));
+    if (metadata == null) {
+      return 0;
+    }
+    // If a country doesn't use a national prefix, and this number doesn't have an Italian leading
+    // zero, we assume it is a closed dialling plan with no area codes.
+    if (!metadata.hasNationalPrefix() && !number.isItalianLeadingZero()) {
+      return 0;
+    }
+
+    PhoneNumberType type = getNumberType(number);
+    int countryCallingCode = number.getCountryCode();
+    if (type == PhoneNumberType.MOBILE
+        // Note this is a rough heuristic; it doesn't cover Indonesia well, for example, where area
+        // codes are present for some mobile phones but not for others. We have no better way of
+        // representing this in the metadata at this point.
+        && GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES.contains(countryCallingCode)) {
+      return 0;
+    }
+
+    if (!isNumberGeographical(type, countryCallingCode)) {
+      return 0;
+    }
+
+    return getLengthOfNationalDestinationCode(number);
+  }
+
+  /**
+   * Gets the length of the national destination code (NDC) from the
+   * PhoneNumber object passed in, so that clients could use it
+   * to split a national significant number into NDC and subscriber number. The NDC of a phone
+   * number is normally the first group of digit(s) right after the country calling code when the
+   * number is formatted in the international format, if there is a subscriber number part that
+   * follows. An example of how this could be used:
+   *
+   * <pre>{@code
+   * PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
+   * PhoneNumber number = phoneUtil.parse("18002530000", "US");
+   * String nationalSignificantNumber = phoneUtil.getNationalSignificantNumber(number);
+   * String nationalDestinationCode;
+   * String subscriberNumber;
+   *
+   * int nationalDestinationCodeLength = phoneUtil.getLengthOfNationalDestinationCode(number);
+   * if (nationalDestinationCodeLength > 0) {
+   *   nationalDestinationCode = nationalSignificantNumber.substring(0,
+   *       nationalDestinationCodeLength);
+   *   subscriberNumber = nationalSignificantNumber.substring(nationalDestinationCodeLength);
+   * } else {
+   *   nationalDestinationCode = "";
+   *   subscriberNumber = nationalSignificantNumber;
+   * }
+   * }</pre>
+   *
+   * Refer to the unittests to see the difference between this function and
+   * {@link #getLengthOfGeographicalAreaCode}.
+   *
+   * @param number  the PhoneNumber object for which clients
+   *     want to know the length of the NDC
+   * @return  the length of NDC of the PhoneNumber object
+   *     passed in
+   */
+  public int getLengthOfNationalDestinationCode(PhoneNumber number) {
+    PhoneNumber copiedProto;
+    if (number.hasExtension()) {
+      // We don't want to alter the proto given to us, but we don't want to include the extension
+      // when we format it, so we copy it and clear the extension here.
+      copiedProto = new PhoneNumber();
+      copiedProto.mergeFrom(number);
+      copiedProto.clearExtension();
+    } else {
+      copiedProto = number;
+    }
+
+    String nationalSignificantNumber = format(copiedProto,
+                                              PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
+    String[] numberGroups = NON_DIGITS_PATTERN.split(nationalSignificantNumber);
+    // The pattern will start with "+COUNTRY_CODE " so the first group will always be the empty
+    // string (before the + symbol) and the second group will be the country calling code. The third
+    // group will be area code if it is not the last group.
+    if (numberGroups.length <= 3) {
+      return 0;
+    }
+
+    if (getNumberType(number) == PhoneNumberType.MOBILE) {
+      // For example Argentinian mobile numbers, when formatted in the international format, are in
+      // the form of +54 9 NDC XXXX.... As a result, we take the length of the third group (NDC) and
+      // add the length of the second group (which is the mobile token), which also forms part of
+      // the national significant number. This assumes that the mobile token is always formatted
+      // separately from the rest of the phone number.
+      String mobileToken = getCountryMobileToken(number.getCountryCode());
+      if (!mobileToken.equals("")) {
+        return numberGroups[2].length() + numberGroups[3].length();
+      }
+    }
+    return numberGroups[2].length();
+  }
+
+  /**
+   * Returns the mobile token for the provided country calling code if it has one, otherwise
+   * returns an empty string. A mobile token is a number inserted before the area code when dialing
+   * a mobile number from that country from abroad.
+   *
+   * @param countryCallingCode  the country calling code for which we want the mobile token
+   * @return  the mobile token, as a string, for the given country calling code
+   */
+  public static String getCountryMobileToken(int countryCallingCode) {
+    if (MOBILE_TOKEN_MAPPINGS.containsKey(countryCallingCode)) {
+      return MOBILE_TOKEN_MAPPINGS.get(countryCallingCode);
+    }
+    return "";
+  }
+
+  /**
+   * Normalizes a string of characters representing a phone number by replacing all characters found
+   * in the accompanying map with the values therein, and stripping all other characters if
+   * removeNonMatches is true.
+   *
+   * @param number  a string of characters representing a phone number
+   * @param normalizationReplacements  a mapping of characters to what they should be replaced by in
+   *     the normalized version of the phone number
+   * @param removeNonMatches  indicates whether characters that are not able to be replaced should
+   *     be stripped from the number. If this is false, they will be left unchanged in the number.
+   * @return  the normalized string version of the phone number
+   */
+  private static String normalizeHelper(CharSequence number,
+                                        Map<Character, Character> normalizationReplacements,
+                                        boolean removeNonMatches) {
+    StringBuilder normalizedNumber = new StringBuilder(number.length());
+    for (int i = 0; i < number.length(); i++) {
+      char character = number.charAt(i);
+      Character newDigit = normalizationReplacements.get(Character.toUpperCase(character));
+      if (newDigit != null) {
+        normalizedNumber.append(newDigit);
+      } else if (!removeNonMatches) {
+        normalizedNumber.append(character);
+      }
+      // If neither of the above are true, we remove this character.
+    }
+    return normalizedNumber.toString();
+  }
+
+  /**
+   * Sets or resets the PhoneNumberUtil singleton instance. If set to null, the next call to
+   * {@code getInstance()} will load (and return) the default instance.
+   */
+  // @VisibleForTesting
+  static synchronized void setInstance(PhoneNumberUtil util) {
+    instance = util;
+  }
+
+  /**
+   * Returns all regions the library has metadata for.
+   *
+   * @return  an unordered set of the two-letter region codes for every geographical region the
+   *     library supports
+   */
+  public Set<String> getSupportedRegions() {
+    return Collections.unmodifiableSet(supportedRegions);
+  }
+
+  /**
+   * Returns all global network calling codes the library has metadata for.
+   *
+   * @return  an unordered set of the country calling codes for every non-geographical entity the
+   *     library supports
+   */
+  public Set<Integer> getSupportedGlobalNetworkCallingCodes() {
+    return Collections.unmodifiableSet(countryCodesForNonGeographicalRegion);
+  }
+
+ /**
+   * Returns all country calling codes the library has metadata for, covering both non-geographical
+   * entities (global network calling codes) and those used for geographical entities. This could be
+   * used to populate a drop-down box of country calling codes for a phone-number widget, for
+   * instance.
+   *
+   * @return  an unordered set of the country calling codes for every geographical and
+   *     non-geographical entity the library supports
+   */
+  public Set<Integer> getSupportedCallingCodes() {
+    return Collections.unmodifiableSet(countryCallingCodeToRegionCodeMap.keySet());
+  }
+
+  /**
+   * Returns true if there is any possible number data set for a particular PhoneNumberDesc.
+   */
+  private static boolean descHasPossibleNumberData(PhoneNumberDesc desc) {
+    // If this is empty, it means numbers of this type inherit from the "general desc" -> the value
+    // "-1" means that no numbers exist for this type.
+    return desc.getPossibleLengthCount() != 1 || desc.getPossibleLength(0) != -1;
+  }
+
+  // Note: descHasData must account for any of MetadataFilter's excludableChildFields potentially
+  // being absent from the metadata. It must check them all. For any changes in descHasData, ensure
+  // that all the excludableChildFields are still being checked. If your change is safe simply
+  // mention why during a review without needing to change MetadataFilter.
+  /**
+   * Returns true if there is any data set for a particular PhoneNumberDesc.
+   */
+  private static boolean descHasData(PhoneNumberDesc desc) {
+    // Checking most properties since we don't know what's present, since a custom build may have
+    // stripped just one of them (e.g. liteBuild strips exampleNumber). We don't bother checking the
+    // possibleLengthsLocalOnly, since if this is the only thing that's present we don't really
+    // support the type at all: no type-specific methods will work with only this data.
+    return desc.hasExampleNumber()
+        || descHasPossibleNumberData(desc)
+        || desc.hasNationalNumberPattern();
+  }
+
+  /**
+   * Returns the types we have metadata for based on the PhoneMetadata object passed in, which must
+   * be non-null.
+   */
+  private Set<PhoneNumberType> getSupportedTypesForMetadata(PhoneMetadata metadata) {
+    Set<PhoneNumberType> types = new TreeSet<PhoneNumberType>();
+    for (PhoneNumberType type : PhoneNumberType.values()) {
+      if (type == PhoneNumberType.FIXED_LINE_OR_MOBILE || type == PhoneNumberType.UNKNOWN) {
+        // Never return FIXED_LINE_OR_MOBILE (it is a convenience type, and represents that a
+        // particular number type can't be determined) or UNKNOWN (the non-type).
+        continue;
+      }
+      if (descHasData(getNumberDescByType(metadata, type))) {
+        types.add(type);
+      }
+    }
+    return Collections.unmodifiableSet(types);
+  }
+
+  /**
+   * Returns the types for a given region which the library has metadata for. Will not include
+   * FIXED_LINE_OR_MOBILE (if numbers in this region could be classified as FIXED_LINE_OR_MOBILE,
+   * both FIXED_LINE and MOBILE would be present) and UNKNOWN.
+   *
+   * No types will be returned for invalid or unknown region codes.
+   */
+  public Set<PhoneNumberType> getSupportedTypesForRegion(String regionCode) {
+    if (!isValidRegionCode(regionCode)) {
+      logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
+      return Collections.unmodifiableSet(new TreeSet<PhoneNumberType>());
+    }
+    PhoneMetadata metadata = getMetadataForRegion(regionCode);
+    return getSupportedTypesForMetadata(metadata);
+  }
+
+  /**
+   * Returns the types for a country-code belonging to a non-geographical entity which the library
+   * has metadata for. Will not include FIXED_LINE_OR_MOBILE (if numbers for this non-geographical
+   * entity could be classified as FIXED_LINE_OR_MOBILE, both FIXED_LINE and MOBILE would be
+   * present) and UNKNOWN.
+   *
+   * No types will be returned for country calling codes that do not map to a known non-geographical
+   * entity.
+   */
+  public Set<PhoneNumberType> getSupportedTypesForNonGeoEntity(int countryCallingCode) {
+    PhoneMetadata metadata = getMetadataForNonGeographicalRegion(countryCallingCode);
+    if (metadata == null) {
+      logger.log(Level.WARNING, "Unknown country calling code for a non-geographical entity "
+          + "provided: " + countryCallingCode);
+      return Collections.unmodifiableSet(new TreeSet<PhoneNumberType>());
+    }
+    return getSupportedTypesForMetadata(metadata);
+  }
+
+  /**
+   * Gets a {@link PhoneNumberUtil} instance to carry out international phone number formatting,
+   * parsing, or validation. The instance is loaded with all phone number metadata.
+   *
+   * <p>The {@link PhoneNumberUtil} is implemented as a singleton. Therefore, calling getInstance
+   * multiple times will only result in one instance being created.
+   *
+   * @return a PhoneNumberUtil instance
+   */
+  public static synchronized PhoneNumberUtil getInstance() {
+    if (instance == null) {
+      setInstance(createInstance(MetadataManager.DEFAULT_METADATA_LOADER));
+    }
+    return instance;
+  }
+
+  /**
+   * Create a new {@link PhoneNumberUtil} instance to carry out international phone number
+   * formatting, parsing, or validation. The instance is loaded with all metadata by
+   * using the metadataLoader specified.
+   *
+   * <p>This method should only be used in the rare case in which you want to manage your own
+   * metadata loading. Calling this method multiple times is very expensive, as each time
+   * a new instance is created from scratch. When in doubt, use {@link #getInstance}.
+   *
+   * @param metadataLoader  customized metadata loader. This should not be null
+   * @return  a PhoneNumberUtil instance
+   */
+  public static PhoneNumberUtil createInstance(MetadataLoader metadataLoader) {
+    if (metadataLoader == null) {
+      throw new IllegalArgumentException("metadataLoader could not be null.");
+    }
+    return createInstance(new MultiFileMetadataSourceImpl(metadataLoader));
+  }
+
+  /**
+   * Create a new {@link PhoneNumberUtil} instance to carry out international phone number
+   * formatting, parsing, or validation. The instance is loaded with all metadata by
+   * using the metadataSource specified.
+   *
+   * <p>This method should only be used in the rare case in which you want to manage your own
+   * metadata loading. Calling this method multiple times is very expensive, as each time
+   * a new instance is created from scratch. When in doubt, use {@link #getInstance}.
+   *
+   * @param metadataSource  customized metadata source. This should not be null
+   * @return  a PhoneNumberUtil instance
+   */
+  private static PhoneNumberUtil createInstance(MetadataSource metadataSource) {
+    if (metadataSource == null) {
+      throw new IllegalArgumentException("metadataSource could not be null.");
+    }
+    return new PhoneNumberUtil(metadataSource,
+        CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap());
+  }
+
+  /**
+   * Helper function to check if the national prefix formatting rule has the first group only, i.e.,
+   * does not start with the national prefix.
+   */
+  static boolean formattingRuleHasFirstGroupOnly(String nationalPrefixFormattingRule) {
+    return nationalPrefixFormattingRule.length() == 0
+        || FIRST_GROUP_ONLY_PREFIX_PATTERN.matcher(nationalPrefixFormattingRule).matches();
+  }
+
+  /**
+   * Tests whether a phone number has a geographical association. It checks if the number is
+   * associated with a certain region in the country to which it belongs. Note that this doesn't
+   * verify if the number is actually in use.
+   */
+  public boolean isNumberGeographical(PhoneNumber phoneNumber) {
+    return isNumberGeographical(getNumberType(phoneNumber), phoneNumber.getCountryCode());
+  }
+
+  /**
+   * Overload of isNumberGeographical(PhoneNumber), since calculating the phone number type is
+   * expensive; if we have already done this, we don't want to do it again.
+   */
+  public boolean isNumberGeographical(PhoneNumberType phoneNumberType, int countryCallingCode) {
+    return phoneNumberType == PhoneNumberType.FIXED_LINE
+        || phoneNumberType == PhoneNumberType.FIXED_LINE_OR_MOBILE
+        || (GEO_MOBILE_COUNTRIES.contains(countryCallingCode)
+            && phoneNumberType == PhoneNumberType.MOBILE);
+  }
+
+  /**
+   * Helper function to check region code is not unknown or null.
+   */
+  private boolean isValidRegionCode(String regionCode) {
+    return regionCode != null && supportedRegions.contains(regionCode);
+  }
+
+  /**
+   * Helper function to check the country calling code is valid.
+   */
+  private boolean hasValidCountryCallingCode(int countryCallingCode) {
+    return countryCallingCodeToRegionCodeMap.containsKey(countryCallingCode);
+  }
+
+  /**
+   * Formats a phone number in the specified format using default rules. Note that this does not
+   * promise to produce a phone number that the user can dial from where they are - although we do
+   * format in either 'national' or 'international' format depending on what the client asks for, we
+   * do not currently support a more abbreviated format, such as for users in the same "area" who
+   * could potentially dial the number without area code. Note that if the phone number has a
+   * country calling code of 0 or an otherwise invalid country calling code, we cannot work out
+   * which formatting rules to apply so we return the national significant number with no formatting
+   * applied.
+   *
+   * @param number  the phone number to be formatted
+   * @param numberFormat  the format the phone number should be formatted into
+   * @return  the formatted phone number
+   */
+  public String format(PhoneNumber number, PhoneNumberFormat numberFormat) {
+    if (number.getNationalNumber() == 0 && number.hasRawInput()) {
+      // Unparseable numbers that kept their raw input just use that.
+      // This is the only case where a number can be formatted as E164 without a
+      // leading '+' symbol (but the original number wasn't parseable anyway).
+      // TODO: Consider removing the 'if' above so that unparseable
+      // strings without raw input format to the empty string instead of "+00".
+      String rawInput = number.getRawInput();
+      if (rawInput.length() > 0) {
+        return rawInput;
+      }
+    }
+    StringBuilder formattedNumber = new StringBuilder(20);
+    format(number, numberFormat, formattedNumber);
+    return formattedNumber.toString();
+  }
+
+  /**
+   * Same as {@link #format(PhoneNumber, PhoneNumberFormat)}, but accepts a mutable StringBuilder as
+   * a parameter to decrease object creation when invoked many times.
+   */
+  public void format(PhoneNumber number, PhoneNumberFormat numberFormat,
+                     StringBuilder formattedNumber) {
+    // Clear the StringBuilder first.
+    formattedNumber.setLength(0);
+    int countryCallingCode = number.getCountryCode();
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+
+    if (numberFormat == PhoneNumberFormat.E164) {
+      // Early exit for E164 case (even if the country calling code is invalid) since no formatting
+      // of the national number needs to be applied. Extensions are not formatted.
+      formattedNumber.append(nationalSignificantNumber);
+      prefixNumberWithCountryCallingCode(countryCallingCode, PhoneNumberFormat.E164,
+                                         formattedNumber);
+      return;
+    }
+    if (!hasValidCountryCallingCode(countryCallingCode)) {
+      formattedNumber.append(nationalSignificantNumber);
+      return;
+    }
+    // Note getRegionCodeForCountryCode() is used because formatting information for regions which
+    // share a country calling code is contained by only one region for performance reasons. For
+    // example, for NANPA regions it will be contained in the metadata for US.
+    String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+    // Metadata cannot be null because the country calling code is valid (which means that the
+    // region code cannot be ZZ and must be one of our supported region codes).
+    PhoneMetadata metadata =
+        getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
+    formattedNumber.append(formatNsn(nationalSignificantNumber, metadata, numberFormat));
+    maybeAppendFormattedExtension(number, metadata, numberFormat, formattedNumber);
+    prefixNumberWithCountryCallingCode(countryCallingCode, numberFormat, formattedNumber);
+  }
+
+  /**
+   * Formats a phone number in the specified format using client-defined formatting rules. Note that
+   * if the phone number has a country calling code of zero or an otherwise invalid country calling
+   * code, we cannot work out things like whether there should be a national prefix applied, or how
+   * to format extensions, so we return the national significant number with no formatting applied.
+   *
+   * @param number  the phone number to be formatted
+   * @param numberFormat  the format the phone number should be formatted into
+   * @param userDefinedFormats  formatting rules specified by clients
+   * @return  the formatted phone number
+   */
+  public String formatByPattern(PhoneNumber number,
+                                PhoneNumberFormat numberFormat,
+                                List<NumberFormat> userDefinedFormats) {
+    int countryCallingCode = number.getCountryCode();
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+    if (!hasValidCountryCallingCode(countryCallingCode)) {
+      return nationalSignificantNumber;
+    }
+    // Note getRegionCodeForCountryCode() is used because formatting information for regions which
+    // share a country calling code is contained by only one region for performance reasons. For
+    // example, for NANPA regions it will be contained in the metadata for US.
+    String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+    // Metadata cannot be null because the country calling code is valid.
+    PhoneMetadata metadata =
+        getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
+
+    StringBuilder formattedNumber = new StringBuilder(20);
+
+    NumberFormat formattingPattern =
+        chooseFormattingPatternForNumber(userDefinedFormats, nationalSignificantNumber);
+    if (formattingPattern == null) {
+      // If no pattern above is matched, we format the number as a whole.
+      formattedNumber.append(nationalSignificantNumber);
+    } else {
+      NumberFormat.Builder numFormatCopy = NumberFormat.newBuilder();
+      // Before we do a replacement of the national prefix pattern $NP with the national prefix, we
+      // need to copy the rule so that subsequent replacements for different numbers have the
+      // appropriate national prefix.
+      numFormatCopy.mergeFrom(formattingPattern);
+      String nationalPrefixFormattingRule = formattingPattern.getNationalPrefixFormattingRule();
+      if (nationalPrefixFormattingRule.length() > 0) {
+        String nationalPrefix = metadata.getNationalPrefix();
+        if (nationalPrefix.length() > 0) {
+          // Replace $NP with national prefix and $FG with the first group ($1).
+          nationalPrefixFormattingRule =
+              nationalPrefixFormattingRule.replace(NP_STRING, nationalPrefix);
+          nationalPrefixFormattingRule = nationalPrefixFormattingRule.replace(FG_STRING, "$1");
+          numFormatCopy.setNationalPrefixFormattingRule(nationalPrefixFormattingRule);
+        } else {
+          // We don't want to have a rule for how to format the national prefix if there isn't one.
+          numFormatCopy.clearNationalPrefixFormattingRule();
+        }
+      }
+      formattedNumber.append(
+          formatNsnUsingPattern(nationalSignificantNumber, numFormatCopy, numberFormat));
+    }
+    maybeAppendFormattedExtension(number, metadata, numberFormat, formattedNumber);
+    prefixNumberWithCountryCallingCode(countryCallingCode, numberFormat, formattedNumber);
+    return formattedNumber.toString();
+  }
+
+  /**
+   * Formats a phone number in national format for dialing using the carrier as specified in the
+   * {@code carrierCode}. The {@code carrierCode} will always be used regardless of whether the
+   * phone number already has a preferred domestic carrier code stored. If {@code carrierCode}
+   * contains an empty string, returns the number in national format without any carrier code.
+   *
+   * @param number  the phone number to be formatted
+   * @param carrierCode  the carrier selection code to be used
+   * @return  the formatted phone number in national format for dialing using the carrier as
+   *     specified in the {@code carrierCode}
+   */
+  public String formatNationalNumberWithCarrierCode(PhoneNumber number, CharSequence carrierCode) {
+    int countryCallingCode = number.getCountryCode();
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+    if (!hasValidCountryCallingCode(countryCallingCode)) {
+      return nationalSignificantNumber;
+    }
+
+    // Note getRegionCodeForCountryCode() is used because formatting information for regions which
+    // share a country calling code is contained by only one region for performance reasons. For
+    // example, for NANPA regions it will be contained in the metadata for US.
+    String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+    // Metadata cannot be null because the country calling code is valid.
+    PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
+
+    StringBuilder formattedNumber = new StringBuilder(20);
+    formattedNumber.append(formatNsn(nationalSignificantNumber, metadata,
+                                     PhoneNumberFormat.NATIONAL, carrierCode));
+    maybeAppendFormattedExtension(number, metadata, PhoneNumberFormat.NATIONAL, formattedNumber);
+    prefixNumberWithCountryCallingCode(countryCallingCode, PhoneNumberFormat.NATIONAL,
+                                       formattedNumber);
+    return formattedNumber.toString();
+  }
+
+  private PhoneMetadata getMetadataForRegionOrCallingCode(
+      int countryCallingCode, String regionCode) {
+    return REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)
+        ? getMetadataForNonGeographicalRegion(countryCallingCode)
+        : getMetadataForRegion(regionCode);
+  }
+
+  /**
+   * Formats a phone number in national format for dialing using the carrier as specified in the
+   * preferredDomesticCarrierCode field of the PhoneNumber object passed in. If that is missing,
+   * use the {@code fallbackCarrierCode} passed in instead. If there is no
+   * {@code preferredDomesticCarrierCode}, and the {@code fallbackCarrierCode} contains an empty
+   * string, return the number in national format without any carrier code.
+   *
+   * <p>Use {@link #formatNationalNumberWithCarrierCode} instead if the carrier code passed in
+   * should take precedence over the number's {@code preferredDomesticCarrierCode} when formatting.
+   *
+   * @param number  the phone number to be formatted
+   * @param fallbackCarrierCode  the carrier selection code to be used, if none is found in the
+   *     phone number itself
+   * @return  the formatted phone number in national format for dialing using the number's
+   *     {@code preferredDomesticCarrierCode}, or the {@code fallbackCarrierCode} passed in if
+   *     none is found
+   */
+  public String formatNationalNumberWithPreferredCarrierCode(PhoneNumber number,
+                                                             CharSequence fallbackCarrierCode) {
+    return formatNationalNumberWithCarrierCode(number,
+        // Historically, we set this to an empty string when parsing with raw input if none was
+        // found in the input string. However, this doesn't result in a number we can dial. For this
+        // reason, we treat the empty string the same as if it isn't set at all.
+        number.getPreferredDomesticCarrierCode().length() > 0
+        ? number.getPreferredDomesticCarrierCode()
+        : fallbackCarrierCode);
+  }
+
+  /**
+   * Returns a number formatted in such a way that it can be dialed from a mobile phone in a
+   * specific region. If the number cannot be reached from the region (e.g. some countries block
+   * toll-free numbers from being called outside of the country), the method returns an empty
+   * string.
+   *
+   * @param number  the phone number to be formatted
+   * @param regionCallingFrom  the region where the call is being placed
+   * @param withFormatting  whether the number should be returned with formatting symbols, such as
+   *     spaces and dashes.
+   * @return  the formatted phone number
+   */
+  public String formatNumberForMobileDialing(PhoneNumber number, String regionCallingFrom,
+                                             boolean withFormatting) {
+    int countryCallingCode = number.getCountryCode();
+    if (!hasValidCountryCallingCode(countryCallingCode)) {
+      return number.hasRawInput() ? number.getRawInput() : "";
+    }
+
+    String formattedNumber = "";
+    // Clear the extension, as that part cannot normally be dialed together with the main number.
+    PhoneNumber numberNoExt = new PhoneNumber().mergeFrom(number).clearExtension();
+    String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+    PhoneNumberType numberType = getNumberType(numberNoExt);
+    boolean isValidNumber = (numberType != PhoneNumberType.UNKNOWN);
+    if (regionCallingFrom.equals(regionCode)) {
+      boolean isFixedLineOrMobile =
+          (numberType == PhoneNumberType.FIXED_LINE) || (numberType == PhoneNumberType.MOBILE)
+          || (numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE);
+      // Carrier codes may be needed in some countries. We handle this here.
+      if (regionCode.equals("CO") && numberType == PhoneNumberType.FIXED_LINE) {
+        formattedNumber =
+            formatNationalNumberWithCarrierCode(numberNoExt, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX);
+      } else if (regionCode.equals("BR") && isFixedLineOrMobile) {
+        // Historically, we set this to an empty string when parsing with raw input if none was
+        // found in the input string. However, this doesn't result in a number we can dial. For this
+        // reason, we treat the empty string the same as if it isn't set at all.
+        formattedNumber = numberNoExt.getPreferredDomesticCarrierCode().length() > 0
+            ? formattedNumber = formatNationalNumberWithPreferredCarrierCode(numberNoExt, "")
+            // Brazilian fixed line and mobile numbers need to be dialed with a carrier code when
+            // called within Brazil. Without that, most of the carriers won't connect the call.
+            // Because of that, we return an empty string here.
+            : "";
+      } else if (isValidNumber && regionCode.equals("HU")) {
+        // The national format for HU numbers doesn't contain the national prefix, because that is
+        // how numbers are normally written down. However, the national prefix is obligatory when
+        // dialing from a mobile phone, except for short numbers. As a result, we add it back here
+        // if it is a valid regular length phone number.
+        formattedNumber =
+            getNddPrefixForRegion(regionCode, true /* strip non-digits */) + " "
+            + format(numberNoExt, PhoneNumberFormat.NATIONAL);
+      } else if (countryCallingCode == NANPA_COUNTRY_CODE) {
+        // For NANPA countries, we output international format for numbers that can be dialed
+        // internationally, since that always works, except for numbers which might potentially be
+        // short numbers, which are always dialled in national format.
+        PhoneMetadata regionMetadata = getMetadataForRegion(regionCallingFrom);
+        if (canBeInternationallyDialled(numberNoExt)
+            && testNumberLength(getNationalSignificantNumber(numberNoExt), regionMetadata)
+                != ValidationResult.TOO_SHORT) {
+          formattedNumber = format(numberNoExt, PhoneNumberFormat.INTERNATIONAL);
+        } else {
+          formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL);
+        }
+      } else {
+        // For non-geographical countries, and Mexican, Chilean, and Uzbek fixed line and mobile
+        // numbers, we output international format for numbers that can be dialed internationally as
+        // that always works.
+        if ((regionCode.equals(REGION_CODE_FOR_NON_GEO_ENTITY)
+             // MX fixed line and mobile numbers should always be formatted in international format,
+             // even when dialed within MX. For national format to work, a carrier code needs to be
+             // used, and the correct carrier code depends on if the caller and callee are from the
+             // same local area. It is trickier to get that to work correctly than using
+             // international format, which is tested to work fine on all carriers.
+             // CL fixed line numbers need the national prefix when dialing in the national format,
+             // but don't have it when used for display. The reverse is true for mobile numbers.  As
+             // a result, we output them in the international format to make it work.
+             // UZ mobile and fixed-line numbers have to be formatted in international format or
+             // prefixed with special codes like 03, 04 (for fixed-line) and 05 (for mobile) for
+             // dialling successfully from mobile devices. As we do not have complete information on
+             // special codes and to be consistent with formatting across all phone types we return
+             // the number in international format here.
+             || ((regionCode.equals("MX") || regionCode.equals("CL")
+                 || regionCode.equals("UZ")) && isFixedLineOrMobile))
+            && canBeInternationallyDialled(numberNoExt)) {
+          formattedNumber = format(numberNoExt, PhoneNumberFormat.INTERNATIONAL);
+        } else {
+          formattedNumber = format(numberNoExt, PhoneNumberFormat.NATIONAL);
+        }
+      }
+    } else if (isValidNumber && canBeInternationallyDialled(numberNoExt)) {
+      // We assume that short numbers are not diallable from outside their region, so if a number
+      // is not a valid regular length phone number, we treat it as if it cannot be internationally
+      // dialled.
+      return withFormatting ? format(numberNoExt, PhoneNumberFormat.INTERNATIONAL)
+                            : format(numberNoExt, PhoneNumberFormat.E164);
+    }
+    return withFormatting ? formattedNumber
+                          : normalizeDiallableCharsOnly(formattedNumber);
+  }
+
+  /**
+   * Formats a phone number for out-of-country dialing purposes. If no regionCallingFrom is
+   * supplied, we format the number in its INTERNATIONAL format. If the country calling code is the
+   * same as that of the region where the number is from, then NATIONAL formatting will be applied.
+   *
+   * <p>If the number itself has a country calling code of zero or an otherwise invalid country
+   * calling code, then we return the number with no formatting applied.
+   *
+   * <p>Note this function takes care of the case for calling inside of NANPA and between Russia and
+   * Kazakhstan (who share the same country calling code). In those cases, no international prefix
+   * is used. For regions which have multiple international prefixes, the number in its
+   * INTERNATIONAL format will be returned instead.
+   *
+   * @param number  the phone number to be formatted
+   * @param regionCallingFrom  the region where the call is being placed
+   * @return  the formatted phone number
+   */
+  public String formatOutOfCountryCallingNumber(PhoneNumber number,
+                                                String regionCallingFrom) {
+    if (!isValidRegionCode(regionCallingFrom)) {
+      logger.log(Level.WARNING,
+                 "Trying to format number from invalid region "
+                 + regionCallingFrom
+                 + ". International formatting applied.");
+      return format(number, PhoneNumberFormat.INTERNATIONAL);
+    }
+    int countryCallingCode = number.getCountryCode();
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+    if (!hasValidCountryCallingCode(countryCallingCode)) {
+      return nationalSignificantNumber;
+    }
+    if (countryCallingCode == NANPA_COUNTRY_CODE) {
+      if (isNANPACountry(regionCallingFrom)) {
+        // For NANPA regions, return the national format for these regions but prefix it with the
+        // country calling code.
+        return countryCallingCode + " " + format(number, PhoneNumberFormat.NATIONAL);
+      }
+    } else if (countryCallingCode == getCountryCodeForValidRegion(regionCallingFrom)) {
+      // If regions share a country calling code, the country calling code need not be dialled.
+      // This also applies when dialling within a region, so this if clause covers both these cases.
+      // Technically this is the case for dialling from La Reunion to other overseas departments of
+      // France (French Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover this
+      // edge case for now and for those cases return the version including country calling code.
+      // Details here: http://www.petitfute.com/voyage/225-info-pratiques-reunion
+      return format(number, PhoneNumberFormat.NATIONAL);
+    }
+    // Metadata cannot be null because we checked 'isValidRegionCode()' above.
+    PhoneMetadata metadataForRegionCallingFrom = getMetadataForRegion(regionCallingFrom);
+    String internationalPrefix = metadataForRegionCallingFrom.getInternationalPrefix();
+
+    // For regions that have multiple international prefixes, the international format of the
+    // number is returned, unless there is a preferred international prefix.
+    String internationalPrefixForFormatting = "";
+    if (SINGLE_INTERNATIONAL_PREFIX.matcher(internationalPrefix).matches()) {
+      internationalPrefixForFormatting = internationalPrefix;
+    } else if (metadataForRegionCallingFrom.hasPreferredInternationalPrefix()) {
+      internationalPrefixForFormatting =
+          metadataForRegionCallingFrom.getPreferredInternationalPrefix();
+    }
+
+    String regionCode = getRegionCodeForCountryCode(countryCallingCode);
+    // Metadata cannot be null because the country calling code is valid.
+    PhoneMetadata metadataForRegion =
+        getMetadataForRegionOrCallingCode(countryCallingCode, regionCode);
+    String formattedNationalNumber =
+        formatNsn(nationalSignificantNumber, metadataForRegion, PhoneNumberFormat.INTERNATIONAL);
+    StringBuilder formattedNumber = new StringBuilder(formattedNationalNumber);
+    maybeAppendFormattedExtension(number, metadataForRegion, PhoneNumberFormat.INTERNATIONAL,
+                                  formattedNumber);
+    if (internationalPrefixForFormatting.length() > 0) {
+      formattedNumber.insert(0, " ").insert(0, countryCallingCode).insert(0, " ")
+          .insert(0, internationalPrefixForFormatting);
+    } else {
+      prefixNumberWithCountryCallingCode(countryCallingCode,
+                                         PhoneNumberFormat.INTERNATIONAL,
+                                         formattedNumber);
+    }
+    return formattedNumber.toString();
+  }
+
+  /**
+   * Formats a phone number using the original phone number format that the number is parsed from.
+   * The original format is embedded in the country_code_source field of the PhoneNumber object
+   * passed in. If such information is missing, the number will be formatted into the NATIONAL
+   * format by default. When we don't have a formatting pattern for the number, the method returns
+   * the raw input when it is available.
+   *
+   * Note this method guarantees no digit will be inserted, removed or modified as a result of
+   * formatting.
+   *
+   * @param number  the phone number that needs to be formatted in its original number format
+   * @param regionCallingFrom  the region whose IDD needs to be prefixed if the original number
+   *     has one
+   * @return  the formatted phone number in its original number format
+   */
+  public String formatInOriginalFormat(PhoneNumber number, String regionCallingFrom) {
+    if (number.hasRawInput() && !hasFormattingPatternForNumber(number)) {
+      // We check if we have the formatting pattern because without that, we might format the number
+      // as a group without national prefix.
+      return number.getRawInput();
+    }
+    if (!number.hasCountryCodeSource()) {
+      return format(number, PhoneNumberFormat.NATIONAL);
+    }
+    String formattedNumber;
+    switch (number.getCountryCodeSource()) {
+      case FROM_NUMBER_WITH_PLUS_SIGN:
+        formattedNumber = format(number, PhoneNumberFormat.INTERNATIONAL);
+        break;
+      case FROM_NUMBER_WITH_IDD:
+        formattedNumber = formatOutOfCountryCallingNumber(number, regionCallingFrom);
+        break;
+      case FROM_NUMBER_WITHOUT_PLUS_SIGN:
+        formattedNumber = format(number, PhoneNumberFormat.INTERNATIONAL).substring(1);
+        break;
+      case FROM_DEFAULT_COUNTRY:
+        // Fall-through to default case.
+      default:
+        String regionCode = getRegionCodeForCountryCode(number.getCountryCode());
+        // We strip non-digits from the NDD here, and from the raw input later, so that we can
+        // compare them easily.
+        String nationalPrefix = getNddPrefixForRegion(regionCode, true /* strip non-digits */);
+        String nationalFormat = format(number, PhoneNumberFormat.NATIONAL);
+        if (nationalPrefix == null || nationalPrefix.length() == 0) {
+          // If the region doesn't have a national prefix at all, we can safely return the national
+          // format without worrying about a national prefix being added.
+          formattedNumber = nationalFormat;
+          break;
+        }
+        // Otherwise, we check if the original number was entered with a national prefix.
+        if (rawInputContainsNationalPrefix(
+            number.getRawInput(), nationalPrefix, regionCode)) {
+          // If so, we can safely return the national format.
+          formattedNumber = nationalFormat;
+          break;
+        }
+        // Metadata cannot be null here because getNddPrefixForRegion() (above) returns null if
+        // there is no metadata for the region.
+        PhoneMetadata metadata = getMetadataForRegion(regionCode);
+        String nationalNumber = getNationalSignificantNumber(number);
+        NumberFormat formatRule =
+            chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
+        // The format rule could still be null here if the national number was 0 and there was no
+        // raw input (this should not be possible for numbers generated by the phonenumber library
+        // as they would also not have a country calling code and we would have exited earlier).
+        if (formatRule == null) {
+          formattedNumber = nationalFormat;
+          break;
+        }
+        // When the format we apply to this number doesn't contain national prefix, we can just
+        // return the national format.
+        // TODO: Refactor the code below with the code in
+        // isNationalPrefixPresentIfRequired.
+        String candidateNationalPrefixRule = formatRule.getNationalPrefixFormattingRule();
+        // We assume that the first-group symbol will never be _before_ the national prefix.
+        int indexOfFirstGroup = candidateNationalPrefixRule.indexOf("$1");
+        if (indexOfFirstGroup <= 0) {
+          formattedNumber = nationalFormat;
+          break;
+        }
+        candidateNationalPrefixRule =
+            candidateNationalPrefixRule.substring(0, indexOfFirstGroup);
+        candidateNationalPrefixRule = normalizeDigitsOnly(candidateNationalPrefixRule);
+        if (candidateNationalPrefixRule.length() == 0) {
+          // National prefix not used when formatting this number.
+          formattedNumber = nationalFormat;
+          break;
+        }
+        // Otherwise, we need to remove the national prefix from our output.
+        NumberFormat.Builder numFormatCopy =  NumberFormat.newBuilder();
+        numFormatCopy.mergeFrom(formatRule);
+        numFormatCopy.clearNationalPrefixFormattingRule();
+        List<NumberFormat> numberFormats = new ArrayList<NumberFormat>(1);
+        numberFormats.add(numFormatCopy);
+        formattedNumber = formatByPattern(number, PhoneNumberFormat.NATIONAL, numberFormats);
+        break;
+    }
+    String rawInput = number.getRawInput();
+    // 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.
+    if (formattedNumber != null && rawInput.length() > 0) {
+      String normalizedFormattedNumber = normalizeDiallableCharsOnly(formattedNumber);
+      String normalizedRawInput = normalizeDiallableCharsOnly(rawInput);
+      if (!normalizedFormattedNumber.equals(normalizedRawInput)) {
+        formattedNumber = rawInput;
+      }
+    }
+    return formattedNumber;
+  }
+
+  // Check if rawInput, which is assumed to be in the national format, has a national prefix. The
+  // national prefix is assumed to be in digits-only form.
+  private boolean rawInputContainsNationalPrefix(String rawInput, String nationalPrefix,
+      String regionCode) {
+    String normalizedNationalNumber = normalizeDigitsOnly(rawInput);
+    if (normalizedNationalNumber.startsWith(nationalPrefix)) {
+      try {
+        // Some Japanese numbers (e.g. 00777123) might be mistaken to contain the national prefix
+        // when written without it (e.g. 0777123) if we just do prefix matching. To tackle that, we
+        // check the validity of the number if the assumed national prefix is removed (777123 won't
+        // be valid in Japan).
+        return isValidNumber(
+            parse(normalizedNationalNumber.substring(nationalPrefix.length()), regionCode));
+      } catch (NumberParseException e) {
+        return false;
+      }
+    }
+    return false;
+  }
+
+  private boolean hasFormattingPatternForNumber(PhoneNumber number) {
+    int countryCallingCode = number.getCountryCode();
+    String phoneNumberRegion = getRegionCodeForCountryCode(countryCallingCode);
+    PhoneMetadata metadata =
+        getMetadataForRegionOrCallingCode(countryCallingCode, phoneNumberRegion);
+    if (metadata == null) {
+      return false;
+    }
+    String nationalNumber = getNationalSignificantNumber(number);
+    NumberFormat formatRule =
+        chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
+    return formatRule != null;
+  }
+
+  /**
+   * Formats a phone number for out-of-country dialing purposes.
+   *
+   * Note that in this version, if the number was entered originally using alpha characters and
+   * this version of the number is stored in raw_input, this representation of the number will be
+   * used rather than the digit representation. Grouping information, as specified by characters
+   * such as "-" and " ", will be retained.
+   *
+   * <p><b>Caveats:</b></p>
+   * <ul>
+   *  <li> This will not produce good results if the country calling code is both present in the raw
+   *       input _and_ is the start of the national number. This is not a problem in the regions
+   *       which typically use alpha numbers.
+   *  <li> This will also not produce good results if the raw input has any grouping information
+   *       within the first three digits of the national number, and if the function needs to strip
+   *       preceding digits/words in the raw input before these digits. Normally people group the
+   *       first three digits together so this is not a huge problem - and will be fixed if it
+   *       proves to be so.
+   * </ul>
+   *
+   * @param number  the phone number that needs to be formatted
+   * @param regionCallingFrom  the region where the call is being placed
+   * @return  the formatted phone number
+   */
+  public String formatOutOfCountryKeepingAlphaChars(PhoneNumber number,
+                                                    String regionCallingFrom) {
+    String rawInput = number.getRawInput();
+    // If there is no raw input, then we can't keep alpha characters because there aren't any.
+    // In this case, we return formatOutOfCountryCallingNumber.
+    if (rawInput.length() == 0) {
+      return formatOutOfCountryCallingNumber(number, regionCallingFrom);
+    }
+    int countryCode = number.getCountryCode();
+    if (!hasValidCountryCallingCode(countryCode)) {
+      return rawInput;
+    }
+    // Strip any prefix such as country calling code, IDD, that was present. We do this by comparing
+    // the number in raw_input with the parsed number.
+    // To do this, first we normalize punctuation. We retain number grouping symbols such as " "
+    // only.
+    rawInput = normalizeHelper(rawInput, ALL_PLUS_NUMBER_GROUPING_SYMBOLS, true);
+    // Now we trim everything before the first three digits in the parsed number. We choose three
+    // because all valid alpha numbers have 3 digits at the start - if it does not, then we don't
+    // trim anything at all. Similarly, if the national number was less than three digits, we don't
+    // trim anything at all.
+    String nationalNumber = getNationalSignificantNumber(number);
+    if (nationalNumber.length() > 3) {
+      int firstNationalNumberDigit = rawInput.indexOf(nationalNumber.substring(0, 3));
+      if (firstNationalNumberDigit != -1) {
+        rawInput = rawInput.substring(firstNationalNumberDigit);
+      }
+    }
+    PhoneMetadata metadataForRegionCallingFrom = getMetadataForRegion(regionCallingFrom);
+    if (countryCode == NANPA_COUNTRY_CODE) {
+      if (isNANPACountry(regionCallingFrom)) {
+        return countryCode + " " + rawInput;
+      }
+    } else if (metadataForRegionCallingFrom != null
+        && countryCode == getCountryCodeForValidRegion(regionCallingFrom)) {
+      NumberFormat formattingPattern =
+          chooseFormattingPatternForNumber(metadataForRegionCallingFrom.numberFormats(),
+                                           nationalNumber);
+      if (formattingPattern == null) {
+        // If no pattern above is matched, we format the original input.
+        return rawInput;
+      }
+      NumberFormat.Builder newFormat = NumberFormat.newBuilder();
+      newFormat.mergeFrom(formattingPattern);
+      // The first group is the first group of digits that the user wrote together.
+      newFormat.setPattern("(\\d+)(.*)");
+      // Here we just concatenate them back together after the national prefix has been fixed.
+      newFormat.setFormat("$1$2");
+      // Now we format using this pattern instead of the default pattern, but with the national
+      // prefix prefixed if necessary.
+      // This will not work in the cases where the pattern (and not the leading digits) decide
+      // whether a national prefix needs to be used, since we have overridden the pattern to match
+      // anything, but that is not the case in the metadata to date.
+      return formatNsnUsingPattern(rawInput, newFormat, PhoneNumberFormat.NATIONAL);
+    }
+    String internationalPrefixForFormatting = "";
+    // If an unsupported region-calling-from is entered, or a country with multiple international
+    // prefixes, the international format of the number is returned, unless there is a preferred
+    // international prefix.
+    if (metadataForRegionCallingFrom != null) {
+      String internationalPrefix = metadataForRegionCallingFrom.getInternationalPrefix();
+      internationalPrefixForFormatting =
+          SINGLE_INTERNATIONAL_PREFIX.matcher(internationalPrefix).matches()
+          ? internationalPrefix
+          : metadataForRegionCallingFrom.getPreferredInternationalPrefix();
+    }
+    StringBuilder formattedNumber = new StringBuilder(rawInput);
+    String regionCode = getRegionCodeForCountryCode(countryCode);
+    // Metadata cannot be null because the country calling code is valid.
+    PhoneMetadata metadataForRegion = getMetadataForRegionOrCallingCode(countryCode, regionCode);
+    maybeAppendFormattedExtension(number, metadataForRegion,
+                                  PhoneNumberFormat.INTERNATIONAL, formattedNumber);
+    if (internationalPrefixForFormatting.length() > 0) {
+      formattedNumber.insert(0, " ").insert(0, countryCode).insert(0, " ")
+          .insert(0, internationalPrefixForFormatting);
+    } else {
+      // Invalid region entered as country-calling-from (so no metadata was found for it) or the
+      // region chosen has multiple international dialling prefixes.
+      if (!isValidRegionCode(regionCallingFrom)) {
+        logger.log(Level.WARNING,
+                   "Trying to format number from invalid region "
+                   + regionCallingFrom
+                   + ". International formatting applied.");
+      }
+      prefixNumberWithCountryCallingCode(countryCode,
+                                         PhoneNumberFormat.INTERNATIONAL,
+                                         formattedNumber);
+    }
+    return formattedNumber.toString();
+  }
+
+  /**
+   * Gets the national significant number of a phone number. Note a national significant number
+   * doesn't contain a national prefix or any formatting.
+   *
+   * @param number  the phone number for which the national significant number is needed
+   * @return  the national significant number of the PhoneNumber object passed in
+   */
+  public String getNationalSignificantNumber(PhoneNumber number) {
+    // If leading zero(s) have been set, we prefix this now. Note this is not a national prefix.
+    StringBuilder nationalNumber = new StringBuilder();
+    if (number.isItalianLeadingZero() && number.getNumberOfLeadingZeros() > 0) {
+      char[] zeros = new char[number.getNumberOfLeadingZeros()];
+      Arrays.fill(zeros, '0');
+      nationalNumber.append(new String(zeros));
+    }
+    nationalNumber.append(number.getNationalNumber());
+    return nationalNumber.toString();
+  }
+
+  /**
+   * A helper function that is used by format and formatByPattern.
+   */
+  private void prefixNumberWithCountryCallingCode(int countryCallingCode,
+                                                  PhoneNumberFormat numberFormat,
+                                                  StringBuilder formattedNumber) {
+    switch (numberFormat) {
+      case E164:
+        formattedNumber.insert(0, countryCallingCode).insert(0, PLUS_SIGN);
+        return;
+      case INTERNATIONAL:
+        formattedNumber.insert(0, " ").insert(0, countryCallingCode).insert(0, PLUS_SIGN);
+        return;
+      case RFC3966:
+        formattedNumber.insert(0, "-").insert(0, countryCallingCode).insert(0, PLUS_SIGN)
+            .insert(0, RFC3966_PREFIX);
+        return;
+      case NATIONAL:
+      default:
+        return;
+    }
+  }
+
+  // Simple wrapper of formatNsn for the common case of no carrier code.
+  private String formatNsn(String number, PhoneMetadata metadata, PhoneNumberFormat numberFormat) {
+    return formatNsn(number, metadata, numberFormat, null);
+  }
+
+  // Note in some regions, the national number can be written in two completely different ways
+  // depending on whether it forms part of the NATIONAL format or INTERNATIONAL format. The
+  // numberFormat parameter here is used to specify which format to use for those cases. If a
+  // carrierCode is specified, this will be inserted into the formatted string to replace $CC.
+  private String formatNsn(String number,
+                           PhoneMetadata metadata,
+                           PhoneNumberFormat numberFormat,
+                           CharSequence carrierCode) {
+    List<NumberFormat> intlNumberFormats = metadata.intlNumberFormats();
+    // When the intlNumberFormats exists, we use that to format national number for the
+    // INTERNATIONAL format instead of using the numberDesc.numberFormats.
+    List<NumberFormat> availableFormats =
+        (intlNumberFormats.size() == 0 || numberFormat == PhoneNumberFormat.NATIONAL)
+        ? metadata.numberFormats()
+        : metadata.intlNumberFormats();
+    NumberFormat formattingPattern = chooseFormattingPatternForNumber(availableFormats, number);
+    return (formattingPattern == null)
+        ? number
+        : formatNsnUsingPattern(number, formattingPattern, numberFormat, carrierCode);
+  }
+
+  NumberFormat chooseFormattingPatternForNumber(List<NumberFormat> availableFormats,
+                                                String nationalNumber) {
+    for (NumberFormat numFormat : availableFormats) {
+      int size = numFormat.leadingDigitsPatternSize();
+      if (size == 0 || regexCache.getPatternForRegex(
+              // We always use the last leading_digits_pattern, as it is the most detailed.
+              numFormat.getLeadingDigitsPattern(size - 1)).matcher(nationalNumber).lookingAt()) {
+        Matcher m = regexCache.getPatternForRegex(numFormat.getPattern()).matcher(nationalNumber);
+        if (m.matches()) {
+          return numFormat;
+        }
+      }
+    }
+    return null;
+  }
+
+  // Simple wrapper of formatNsnUsingPattern for the common case of no carrier code.
+  String formatNsnUsingPattern(String nationalNumber,
+                               NumberFormat formattingPattern,
+                               PhoneNumberFormat numberFormat) {
+    return formatNsnUsingPattern(nationalNumber, formattingPattern, numberFormat, null);
+  }
+
+  // Note that carrierCode is optional - if null or an empty string, no carrier code replacement
+  // will take place.
+  private String formatNsnUsingPattern(String nationalNumber,
+                                       NumberFormat formattingPattern,
+                                       PhoneNumberFormat numberFormat,
+                                       CharSequence carrierCode) {
+    String numberFormatRule = formattingPattern.getFormat();
+    Matcher m =
+        regexCache.getPatternForRegex(formattingPattern.getPattern()).matcher(nationalNumber);
+    String formattedNationalNumber = "";
+    if (numberFormat == PhoneNumberFormat.NATIONAL
+        && carrierCode != null && carrierCode.length() > 0
+        && formattingPattern.getDomesticCarrierCodeFormattingRule().length() > 0) {
+      // Replace the $CC in the formatting rule with the desired carrier code.
+      String carrierCodeFormattingRule = formattingPattern.getDomesticCarrierCodeFormattingRule();
+      carrierCodeFormattingRule = carrierCodeFormattingRule.replace(CC_STRING, carrierCode);
+      // Now replace the $FG in the formatting rule with the first group and the carrier code
+      // combined in the appropriate way.
+      numberFormatRule = FIRST_GROUP_PATTERN.matcher(numberFormatRule)
+          .replaceFirst(carrierCodeFormattingRule);
+      formattedNationalNumber = m.replaceAll(numberFormatRule);
+    } else {
+      // Use the national prefix formatting rule instead.
+      String nationalPrefixFormattingRule = formattingPattern.getNationalPrefixFormattingRule();
+      if (numberFormat == PhoneNumberFormat.NATIONAL
+          && nationalPrefixFormattingRule != null
+          && nationalPrefixFormattingRule.length() > 0) {
+        Matcher firstGroupMatcher = FIRST_GROUP_PATTERN.matcher(numberFormatRule);
+        formattedNationalNumber =
+            m.replaceAll(firstGroupMatcher.replaceFirst(nationalPrefixFormattingRule));
+      } else {
+        formattedNationalNumber = m.replaceAll(numberFormatRule);
+      }
+    }
+    if (numberFormat == PhoneNumberFormat.RFC3966) {
+      // Strip any leading punctuation.
+      Matcher matcher = SEPARATOR_PATTERN.matcher(formattedNationalNumber);
+      if (matcher.lookingAt()) {
+        formattedNationalNumber = matcher.replaceFirst("");
+      }
+      // Replace the rest with a dash between each number group.
+      formattedNationalNumber = matcher.reset(formattedNationalNumber).replaceAll("-");
+    }
+    return formattedNationalNumber;
+  }
+
+  /**
+   * Gets a valid number for the specified region.
+   *
+   * @param regionCode  the region for which an example number is needed
+   * @return  a valid fixed-line number for the specified region. Returns null when the metadata
+   *    does not contain such information, or the region 001 is passed in. For 001 (representing
+   *    non-geographical numbers), call {@link #getExampleNumberForNonGeoEntity} instead.
+   */
+  public PhoneNumber getExampleNumber(String regionCode) {
+    return getExampleNumberForType(regionCode, PhoneNumberType.FIXED_LINE);
+  }
+
+  /**
+   * Gets an invalid number for the specified region. This is useful for unit-testing purposes,
+   * where you want to test what will happen with an invalid number. Note that the number that is
+   * returned will always be able to be parsed and will have the correct country code. It may also
+   * be a valid *short* number/code for this region. Validity checking such numbers is handled with
+   * {@link com.android.i18n.phonenumbers.ShortNumberInfo}.
+   *
+   * @param regionCode  the region for which an example number is needed
+   * @return  an invalid number for the specified region. Returns null when an unsupported region or
+   *     the region 001 (Earth) is passed in.
+   */
+  public PhoneNumber getInvalidExampleNumber(String regionCode) {
+    if (!isValidRegionCode(regionCode)) {
+      logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
+      return null;
+    }
+    // We start off with a valid fixed-line number since every country supports this. Alternatively
+    // we could start with a different number type, since fixed-line numbers typically have a wide
+    // breadth of valid number lengths and we may have to make it very short before we get an
+    // invalid number.
+    PhoneNumberDesc desc = getNumberDescByType(getMetadataForRegion(regionCode),
+        PhoneNumberType.FIXED_LINE);
+    if (!desc.hasExampleNumber()) {
+      // This shouldn't happen; we have a test for this.
+      return null;
+    }
+    String exampleNumber = desc.getExampleNumber();
+    // Try and make the number invalid. We do this by changing the length. We try reducing the
+    // length of the number, since currently no region has a number that is the same length as
+    // MIN_LENGTH_FOR_NSN. This is probably quicker than making the number longer, which is another
+    // alternative. We could also use the possible number pattern to extract the possible lengths of
+    // the number to make this faster, but this method is only for unit-testing so simplicity is
+    // preferred to performance.  We don't want to return a number that can't be parsed, so we check
+    // the number is long enough. We try all possible lengths because phone number plans often have
+    // overlapping prefixes so the number 123456 might be valid as a fixed-line number, and 12345 as
+    // a mobile number. It would be faster to loop in a different order, but we prefer numbers that
+    // look closer to real numbers (and it gives us a variety of different lengths for the resulting
+    // phone numbers - otherwise they would all be MIN_LENGTH_FOR_NSN digits long.)
+    for (int phoneNumberLength = exampleNumber.length() - 1;
+         phoneNumberLength >= MIN_LENGTH_FOR_NSN;
+         phoneNumberLength--) {
+      String numberToTry = exampleNumber.substring(0, phoneNumberLength);
+      try {
+        PhoneNumber possiblyValidNumber = parse(numberToTry, regionCode);
+        if (!isValidNumber(possiblyValidNumber)) {
+          return possiblyValidNumber;
+        }
+      } catch (NumberParseException e) {
+        // Shouldn't happen: we have already checked the length, we know example numbers have
+        // only valid digits, and we know the region code is fine.
+      }
+    }
+    // We have a test to check that this doesn't happen for any of our supported regions.
+    return null;
+  }
+
+  /**
+   * Gets a valid number for the specified region and number type.
+   *
+   * @param regionCode  the region for which an example number is needed
+   * @param type  the type of number that is needed
+   * @return  a valid number for the specified region and type. Returns null when the metadata
+   *     does not contain such information or if an invalid region or region 001 was entered.
+   *     For 001 (representing non-geographical numbers), call
+   *     {@link #getExampleNumberForNonGeoEntity} instead.
+   */
+  public PhoneNumber getExampleNumberForType(String regionCode, PhoneNumberType type) {
+    // Check the region code is valid.
+    if (!isValidRegionCode(regionCode)) {
+      logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
+      return null;
+    }
+    PhoneNumberDesc desc = getNumberDescByType(getMetadataForRegion(regionCode), type);
+    try {
+      if (desc.hasExampleNumber()) {
+        return parse(desc.getExampleNumber(), regionCode);
+      }
+    } catch (NumberParseException e) {
+      logger.log(Level.SEVERE, e.toString());
+    }
+    return null;
+  }
+
+  /**
+   * Gets a valid number for the specified number type (it may belong to any country).
+   *
+   * @param type  the type of number that is needed
+   * @return  a valid number for the specified type. Returns null when the metadata
+   *     does not contain such information. This should only happen when no numbers of this type are
+   *     allocated anywhere in the world anymore.
+   */
+  public PhoneNumber getExampleNumberForType(PhoneNumberType type) {
+    for (String regionCode : getSupportedRegions()) {
+      PhoneNumber exampleNumber = getExampleNumberForType(regionCode, type);
+      if (exampleNumber != null) {
+        return exampleNumber;
+      }
+    }
+    // If there wasn't an example number for a region, try the non-geographical entities.
+    for (int countryCallingCode : getSupportedGlobalNetworkCallingCodes()) {
+      PhoneNumberDesc desc = getNumberDescByType(
+          getMetadataForNonGeographicalRegion(countryCallingCode), type);
+      try {
+        if (desc.hasExampleNumber()) {
+          return parse("+" + countryCallingCode + desc.getExampleNumber(), UNKNOWN_REGION);
+        }
+      } catch (NumberParseException e) {
+        logger.log(Level.SEVERE, e.toString());
+      }
+    }
+    // There are no example numbers of this type for any country in the library.
+    return null;
+  }
+
+  /**
+   * Gets a valid number for the specified country calling code for a non-geographical entity.
+   *
+   * @param countryCallingCode  the country calling code for a non-geographical entity
+   * @return  a valid number for the non-geographical entity. Returns null when the metadata
+   *    does not contain such information, or the country calling code passed in does not belong
+   *    to a non-geographical entity.
+   */
+  public PhoneNumber getExampleNumberForNonGeoEntity(int countryCallingCode) {
+    PhoneMetadata metadata = getMetadataForNonGeographicalRegion(countryCallingCode);
+    if (metadata != null) {
+      // For geographical entities, fixed-line data is always present. However, for non-geographical
+      // entities, this is not the case, so we have to go through different types to find the
+      // example number. We don't check fixed-line or personal number since they aren't used by
+      // non-geographical entities (if this changes, a unit-test will catch this.)
+      for (PhoneNumberDesc desc : Arrays.asList(metadata.getMobile(), metadata.getTollFree(),
+               metadata.getSharedCost(), metadata.getVoip(), metadata.getVoicemail(),
+               metadata.getUan(), metadata.getPremiumRate())) {
+        try {
+          if (desc != null && desc.hasExampleNumber()) {
+            return parse("+" + countryCallingCode + desc.getExampleNumber(), UNKNOWN_REGION);
+          }
+        } catch (NumberParseException e) {
+          logger.log(Level.SEVERE, e.toString());
+        }
+      }
+    } else {
+      logger.log(Level.WARNING,
+                 "Invalid or unknown country calling code provided: " + countryCallingCode);
+    }
+    return null;
+  }
+
+  /**
+   * Appends the formatted extension of a phone number to formattedNumber, if the phone number had
+   * an extension specified.
+   */
+  private void maybeAppendFormattedExtension(PhoneNumber number, PhoneMetadata metadata,
+                                             PhoneNumberFormat numberFormat,
+                                             StringBuilder formattedNumber) {
+    if (number.hasExtension() && number.getExtension().length() > 0) {
+      if (numberFormat == PhoneNumberFormat.RFC3966) {
+        formattedNumber.append(RFC3966_EXTN_PREFIX).append(number.getExtension());
+      } else {
+        if (metadata.hasPreferredExtnPrefix()) {
+          formattedNumber.append(metadata.getPreferredExtnPrefix()).append(number.getExtension());
+        } else {
+          formattedNumber.append(DEFAULT_EXTN_PREFIX).append(number.getExtension());
+        }
+      }
+    }
+  }
+
+  PhoneNumberDesc getNumberDescByType(PhoneMetadata metadata, PhoneNumberType type) {
+    switch (type) {
+      case PREMIUM_RATE:
+        return metadata.getPremiumRate();
+      case TOLL_FREE:
+        return metadata.getTollFree();
+      case MOBILE:
+        return metadata.getMobile();
+      case FIXED_LINE:
+      case FIXED_LINE_OR_MOBILE:
+        return metadata.getFixedLine();
+      case SHARED_COST:
+        return metadata.getSharedCost();
+      case VOIP:
+        return metadata.getVoip();
+      case PERSONAL_NUMBER:
+        return metadata.getPersonalNumber();
+      case PAGER:
+        return metadata.getPager();
+      case UAN:
+        return metadata.getUan();
+      case VOICEMAIL:
+        return metadata.getVoicemail();
+      default:
+        return metadata.getGeneralDesc();
+    }
+  }
+
+  /**
+   * Gets the type of a valid phone number.
+   *
+   * @param number  the phone number that we want to know the type
+   * @return  the type of the phone number, or UNKNOWN if it is invalid
+   */
+  public PhoneNumberType getNumberType(PhoneNumber number) {
+    String regionCode = getRegionCodeForNumber(number);
+    PhoneMetadata metadata = getMetadataForRegionOrCallingCode(number.getCountryCode(), regionCode);
+    if (metadata == null) {
+      return PhoneNumberType.UNKNOWN;
+    }
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+    return getNumberTypeHelper(nationalSignificantNumber, metadata);
+  }
+
+  private PhoneNumberType getNumberTypeHelper(String nationalNumber, PhoneMetadata metadata) {
+    if (!isNumberMatchingDesc(nationalNumber, metadata.getGeneralDesc())) {
+      return PhoneNumberType.UNKNOWN;
+    }
+
+    if (isNumberMatchingDesc(nationalNumber, metadata.getPremiumRate())) {
+      return PhoneNumberType.PREMIUM_RATE;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getTollFree())) {
+      return PhoneNumberType.TOLL_FREE;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getSharedCost())) {
+      return PhoneNumberType.SHARED_COST;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getVoip())) {
+      return PhoneNumberType.VOIP;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getPersonalNumber())) {
+      return PhoneNumberType.PERSONAL_NUMBER;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getPager())) {
+      return PhoneNumberType.PAGER;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getUan())) {
+      return PhoneNumberType.UAN;
+    }
+    if (isNumberMatchingDesc(nationalNumber, metadata.getVoicemail())) {
+      return PhoneNumberType.VOICEMAIL;
+    }
+
+    boolean isFixedLine = isNumberMatchingDesc(nationalNumber, metadata.getFixedLine());
+    if (isFixedLine) {
+      if (metadata.getSameMobileAndFixedLinePattern()) {
+        return PhoneNumberType.FIXED_LINE_OR_MOBILE;
+      } else if (isNumberMatchingDesc(nationalNumber, metadata.getMobile())) {
+        return PhoneNumberType.FIXED_LINE_OR_MOBILE;
+      }
+      return PhoneNumberType.FIXED_LINE;
+    }
+    // Otherwise, test to see if the number is mobile. Only do this if certain that the patterns for
+    // mobile and fixed line aren't the same.
+    if (!metadata.getSameMobileAndFixedLinePattern()
+        && isNumberMatchingDesc(nationalNumber, metadata.getMobile())) {
+      return PhoneNumberType.MOBILE;
+    }
+    return PhoneNumberType.UNKNOWN;
+  }
+
+  /**
+   * Returns the metadata for the given region code or {@code null} if the region code is invalid
+   * or unknown.
+   */
+  PhoneMetadata getMetadataForRegion(String regionCode) {
+    if (!isValidRegionCode(regionCode)) {
+      return null;
+    }
+    return metadataSource.getMetadataForRegion(regionCode);
+  }
+
+  PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
+    if (!countryCallingCodeToRegionCodeMap.containsKey(countryCallingCode)) {
+      return null;
+    }
+    return metadataSource.getMetadataForNonGeographicalRegion(countryCallingCode);
+  }
+
+  boolean isNumberMatchingDesc(String nationalNumber, PhoneNumberDesc numberDesc) {
+    // Check if any possible number lengths are present; if so, we use them to avoid checking the
+    // validation pattern if they don't match. If they are absent, this means they match the general
+    // description, which we have already checked before checking a specific number type.
+    int actualLength = nationalNumber.length();
+    List<Integer> possibleLengths = numberDesc.getPossibleLengthList();
+    if (possibleLengths.size() > 0 && !possibleLengths.contains(actualLength)) {
+      return false;
+    }
+    return matcherApi.matchNationalNumber(nationalNumber, numberDesc, false);
+  }
+
+  /**
+   * Tests whether a phone number matches a valid pattern. Note this doesn't verify the number
+   * is actually in use, which is impossible to tell by just looking at a number itself. It only
+   * verifies whether the parsed, canonicalised number is valid: not whether a particular series of
+   * digits entered by the user is diallable from the region provided when parsing. For example, the
+   * number +41 (0) 78 927 2696 can be parsed into a number with country code "41" and national
+   * significant number "789272696". This is valid, while the original string is not diallable.
+   *
+   * @param number  the phone number that we want to validate
+   * @return  a boolean that indicates whether the number is of a valid pattern
+   */
+  public boolean isValidNumber(PhoneNumber number) {
+    String regionCode = getRegionCodeForNumber(number);
+    return isValidNumberForRegion(number, regionCode);
+  }
+
+  /**
+   * Tests whether a phone number is valid for a certain region. Note this doesn't verify the number
+   * is actually in use, which is impossible to tell by just looking at a number itself. If the
+   * country calling code is not the same as the country calling code for the region, this
+   * immediately exits with false. After this, the specific number pattern rules for the region are
+   * examined. This is useful for determining for example whether a particular number is valid for
+   * Canada, rather than just a valid NANPA number.
+   * Warning: In most cases, you want to use {@link #isValidNumber} instead. For example, this
+   * method will mark numbers from British Crown dependencies such as the Isle of Man as invalid for
+   * the region "GB" (United Kingdom), since it has its own region code, "IM", which may be
+   * undesirable.
+   *
+   * @param number  the phone number that we want to validate
+   * @param regionCode  the region that we want to validate the phone number for
+   * @return  a boolean that indicates whether the number is of a valid pattern
+   */
+  public boolean isValidNumberForRegion(PhoneNumber number, String regionCode) {
+    int countryCode = number.getCountryCode();
+    PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCode, regionCode);
+    if ((metadata == null)
+        || (!REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)
+         && countryCode != getCountryCodeForValidRegion(regionCode))) {
+      // Either the region code was invalid, or the country calling code for this number does not
+      // match that of the region code.
+      return false;
+    }
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+    return getNumberTypeHelper(nationalSignificantNumber, metadata) != PhoneNumberType.UNKNOWN;
+  }
+
+  /**
+   * Returns the region where a phone number is from. This could be used for geocoding at the region
+   * level. Only guarantees correct results for valid, full numbers (not short-codes, or invalid
+   * numbers).
+   *
+   * @param number  the phone number whose origin we want to know
+   * @return  the region where the phone number is from, or null if no region matches this calling
+   *     code
+   */
+  public String getRegionCodeForNumber(PhoneNumber number) {
+    int countryCode = number.getCountryCode();
+    List<String> regions = countryCallingCodeToRegionCodeMap.get(countryCode);
+    if (regions == null) {
+      logger.log(Level.INFO, "Missing/invalid country_code (" + countryCode + ")");
+      return null;
+    }
+    if (regions.size() == 1) {
+      return regions.get(0);
+    } else {
+      return getRegionCodeForNumberFromRegionList(number, regions);
+    }
+  }
+
+  private String getRegionCodeForNumberFromRegionList(PhoneNumber number,
+                                                      List<String> regionCodes) {
+    String nationalNumber = getNationalSignificantNumber(number);
+    for (String regionCode : regionCodes) {
+      // If leadingDigits is present, use this. Otherwise, do full validation.
+      // Metadata cannot be null because the region codes come from the country calling code map.
+      PhoneMetadata metadata = getMetadataForRegion(regionCode);
+      if (metadata.hasLeadingDigits()) {
+        if (regexCache.getPatternForRegex(metadata.getLeadingDigits())
+                .matcher(nationalNumber).lookingAt()) {
+          return regionCode;
+        }
+      } else if (getNumberTypeHelper(nationalNumber, metadata) != PhoneNumberType.UNKNOWN) {
+        return regionCode;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the region code that matches the specific country calling code. In the case of no
+   * region code being found, ZZ will be returned. In the case of multiple regions, the one
+   * designated in the metadata as the "main" region for this calling code will be returned. If the
+   * countryCallingCode entered is valid but doesn't match a specific region (such as in the case of
+   * non-geographical calling codes like 800) the value "001" will be returned (corresponding to
+   * the value for World in the UN M.49 schema).
+   */
+  public String getRegionCodeForCountryCode(int countryCallingCode) {
+    List<String> regionCodes = countryCallingCodeToRegionCodeMap.get(countryCallingCode);
+    return regionCodes == null ? UNKNOWN_REGION : regionCodes.get(0);
+  }
+
+  /**
+   * Returns a list with the region codes that match the specific country calling code. For
+   * non-geographical country calling codes, the region code 001 is returned. Also, in the case
+   * of no region code being found, an empty list is returned.
+   */
+  public List<String> getRegionCodesForCountryCode(int countryCallingCode) {
+    List<String> regionCodes = countryCallingCodeToRegionCodeMap.get(countryCallingCode);
+    return Collections.unmodifiableList(regionCodes == null ? new ArrayList<String>(0)
+                                                            : regionCodes);
+  }
+
+  /**
+   * Returns the country calling code for a specific region. For example, this would be 1 for the
+   * United States, and 64 for New Zealand.
+   *
+   * @param regionCode  the region that we want to get the country calling code for
+   * @return  the country calling code for the region denoted by regionCode
+   */
+  public int getCountryCodeForRegion(String regionCode) {
+    if (!isValidRegionCode(regionCode)) {
+      logger.log(Level.WARNING,
+                 "Invalid or missing region code ("
+                  + ((regionCode == null) ? "null" : regionCode)
+                  + ") provided.");
+      return 0;
+    }
+    return getCountryCodeForValidRegion(regionCode);
+  }
+
+  /**
+   * Returns the country calling code for a specific region. For example, this would be 1 for the
+   * United States, and 64 for New Zealand. Assumes the region is already valid.
+   *
+   * @param regionCode  the region that we want to get the country calling code for
+   * @return  the country calling code for the region denoted by regionCode
+   * @throws IllegalArgumentException if the region is invalid
+   */
+  private int getCountryCodeForValidRegion(String regionCode) {
+    PhoneMetadata metadata = getMetadataForRegion(regionCode);
+    if (metadata == null) {
+      throw new IllegalArgumentException("Invalid region code: " + regionCode);
+    }
+    return metadata.getCountryCode();
+  }
+
+  /**
+   * Returns the national dialling prefix for a specific region. For example, this would be 1 for
+   * the United States, and 0 for New Zealand. Set stripNonDigits to true to strip symbols like "~"
+   * (which indicates a wait for a dialling tone) from the prefix returned. If no national prefix is
+   * present, we return null.
+   *
+   * <p>Warning: Do not use this method for do-your-own formatting - for some regions, the
+   * national dialling prefix is used only for certain types of numbers. Use the library's
+   * formatting functions to prefix the national prefix when required.
+   *
+   * @param regionCode  the region that we want to get the dialling prefix for
+   * @param stripNonDigits  true to strip non-digits from the national dialling prefix
+   * @return  the dialling prefix for the region denoted by regionCode
+   */
+  public String getNddPrefixForRegion(String regionCode, boolean stripNonDigits) {
+    PhoneMetadata metadata = getMetadataForRegion(regionCode);
+    if (metadata == null) {
+      logger.log(Level.WARNING,
+                 "Invalid or missing region code ("
+                  + ((regionCode == null) ? "null" : regionCode)
+                  + ") provided.");
+      return null;
+    }
+    String nationalPrefix = metadata.getNationalPrefix();
+    // If no national prefix was found, we return null.
+    if (nationalPrefix.length() == 0) {
+      return null;
+    }
+    if (stripNonDigits) {
+      // Note: if any other non-numeric symbols are ever used in national prefixes, these would have
+      // to be removed here as well.
+      nationalPrefix = nationalPrefix.replace("~", "");
+    }
+    return nationalPrefix;
+  }
+
+  /**
+   * Checks if this is a region under the North American Numbering Plan Administration (NANPA).
+   *
+   * @return  true if regionCode is one of the regions under NANPA
+   */
+  public boolean isNANPACountry(String regionCode) {
+    return nanpaRegions.contains(regionCode);
+  }
+
+  /**
+   * Checks if the number is a valid vanity (alpha) number such as 800 MICROSOFT. A valid vanity
+   * number will start with at least 3 digits and will have three or more alpha characters. This
+   * does not do region-specific checks - to work out if this number is actually valid for a region,
+   * it should be parsed and methods such as {@link #isPossibleNumberWithReason} and
+   * {@link #isValidNumber} should be used.
+   *
+   * @param number  the number that needs to be checked
+   * @return  true if the number is a valid vanity number
+   */
+  public boolean isAlphaNumber(CharSequence number) {
+    if (!isViablePhoneNumber(number)) {
+      // Number is too short, or doesn't match the basic phone number pattern.
+      return false;
+    }
+    StringBuilder strippedNumber = new StringBuilder(number);
+    maybeStripExtension(strippedNumber);
+    return VALID_ALPHA_PHONE_PATTERN.matcher(strippedNumber).matches();
+  }
+
+  /**
+   * Convenience wrapper around {@link #isPossibleNumberWithReason}. Instead of returning the reason
+   * for failure, this method returns true if the number is either a possible fully-qualified number
+   * (containing the area code and country code), or if the number could be a possible local number
+   * (with a country code, but missing an area code). Local numbers are considered possible if they
+   * could be possibly dialled in this format: if the area code is needed for a call to connect, the
+   * number is not considered possible without it.
+   *
+   * @param number  the number that needs to be checked
+   * @return  true if the number is possible
+   */
+  public boolean isPossibleNumber(PhoneNumber number) {
+    ValidationResult result = isPossibleNumberWithReason(number);
+    return result == ValidationResult.IS_POSSIBLE
+        || result == ValidationResult.IS_POSSIBLE_LOCAL_ONLY;
+  }
+
+  /**
+   * Convenience wrapper around {@link #isPossibleNumberForTypeWithReason}. Instead of returning the
+   * reason for failure, this method returns true if the number is either a possible fully-qualified
+   * number (containing the area code and country code), or if the number could be a possible local
+   * number (with a country code, but missing an area code). Local numbers are considered possible
+   * if they could be possibly dialled in this format: if the area code is needed for a call to
+   * connect, the number is not considered possible without it.
+   *
+   * @param number  the number that needs to be checked
+   * @param type  the type we are interested in
+   * @return  true if the number is possible for this particular type
+   */
+  public boolean isPossibleNumberForType(PhoneNumber number, PhoneNumberType type) {
+    ValidationResult result = isPossibleNumberForTypeWithReason(number, type);
+    return result == ValidationResult.IS_POSSIBLE
+        || result == ValidationResult.IS_POSSIBLE_LOCAL_ONLY;
+  }
+
+  /**
+   * Helper method to check a number against possible lengths for this region, based on the metadata
+   * being passed in, and determine whether it matches, or is too short or too long.
+   */
+  private ValidationResult testNumberLength(CharSequence number, PhoneMetadata metadata) {
+    return testNumberLength(number, metadata, PhoneNumberType.UNKNOWN);
+  }
+
+  /**
+   * Helper method to check a number against possible lengths for this number type, and determine
+   * whether it matches, or is too short or too long.
+   */
+  private ValidationResult testNumberLength(
+      CharSequence number, PhoneMetadata metadata, PhoneNumberType type) {
+    PhoneNumberDesc descForType = getNumberDescByType(metadata, type);
+    // There should always be "possibleLengths" set for every element. This is declared in the XML
+    // schema which is verified by PhoneNumberMetadataSchemaTest.
+    // For size efficiency, where a sub-description (e.g. fixed-line) has the same possibleLengths
+    // as the parent, this is missing, so we fall back to the general desc (where no numbers of the
+    // type exist at all, there is one possible length (-1) which is guaranteed not to match the
+    // length of any real phone number).
+    List<Integer> possibleLengths = descForType.getPossibleLengthList().isEmpty()
+        ? metadata.getGeneralDesc().getPossibleLengthList() : descForType.getPossibleLengthList();
+
+    List<Integer> localLengths = descForType.getPossibleLengthLocalOnlyList();
+
+    if (type == PhoneNumberType.FIXED_LINE_OR_MOBILE) {
+      if (!descHasPossibleNumberData(getNumberDescByType(metadata, PhoneNumberType.FIXED_LINE))) {
+        // The rare case has been encountered where no fixedLine data is available (true for some
+        // non-geographical entities), so we just check mobile.
+        return testNumberLength(number, metadata, PhoneNumberType.MOBILE);
+      } else {
+        PhoneNumberDesc mobileDesc = getNumberDescByType(metadata, PhoneNumberType.MOBILE);
+        if (descHasPossibleNumberData(mobileDesc)) {
+          // Merge the mobile data in if there was any. We have to make a copy to do this.
+          possibleLengths = new ArrayList<Integer>(possibleLengths);
+          // Note that when adding the possible lengths from mobile, we have to again check they
+          // aren't empty since if they are this indicates they are the same as the general desc and
+          // should be obtained from there.
+          possibleLengths.addAll(mobileDesc.getPossibleLengthList().size() == 0
+              ? metadata.getGeneralDesc().getPossibleLengthList()
+              : mobileDesc.getPossibleLengthList());
+          // The current list is sorted; we need to merge in the new list and re-sort (duplicates
+          // are okay). Sorting isn't so expensive because the lists are very small.
+          Collections.sort(possibleLengths);
+
+          if (localLengths.isEmpty()) {
+            localLengths = mobileDesc.getPossibleLengthLocalOnlyList();
+          } else {
+            localLengths = new ArrayList<Integer>(localLengths);
+            localLengths.addAll(mobileDesc.getPossibleLengthLocalOnlyList());
+            Collections.sort(localLengths);
+          }
+        }
+      }
+    }
+
+    // If the type is not supported at all (indicated by the possible lengths containing -1 at this
+    // point) we return invalid length.
+    if (possibleLengths.get(0) == -1) {
+      return ValidationResult.INVALID_LENGTH;
+    }
+
+    int actualLength = number.length();
+    // This is safe because there is never an overlap beween the possible lengths and the local-only
+    // lengths; this is checked at build time.
+    if (localLengths.contains(actualLength)) {
+      return ValidationResult.IS_POSSIBLE_LOCAL_ONLY;
+    }
+
+    int minimumLength = possibleLengths.get(0);
+    if (minimumLength == actualLength) {
+      return ValidationResult.IS_POSSIBLE;
+    } else if (minimumLength > actualLength) {
+      return ValidationResult.TOO_SHORT;
+    } else if (possibleLengths.get(possibleLengths.size() - 1) < actualLength) {
+      return ValidationResult.TOO_LONG;
+    }
+    // We skip the first element; we've already checked it.
+    return possibleLengths.subList(1, possibleLengths.size()).contains(actualLength)
+        ? ValidationResult.IS_POSSIBLE : ValidationResult.INVALID_LENGTH;
+  }
+
+  /**
+   * Check whether a phone number is a possible number. It provides a more lenient check than
+   * {@link #isValidNumber} in the following sense:
+   * <ol>
+   *   <li> It only checks the length of phone numbers. In particular, it doesn't check starting
+   *        digits of the number.
+   *   <li> It doesn't attempt to figure out the type of the number, but uses general rules which
+   *        applies to all types of phone numbers in a region. Therefore, it is much faster than
+   *        isValidNumber.
+   *   <li> For some numbers (particularly fixed-line), many regions have the concept of area code,
+   *        which together with subscriber number constitute the national significant number. It is
+   *        sometimes okay to dial only the subscriber number when dialing in the same area. This
+   *        function will return IS_POSSIBLE_LOCAL_ONLY if the subscriber-number-only version is
+   *        passed in. On the other hand, because isValidNumber validates using information on both
+   *        starting digits (for fixed line numbers, that would most likely be area codes) and
+   *        length (obviously includes the length of area codes for fixed line numbers), it will
+   *        return false for the subscriber-number-only version.
+   * </ol>
+   * @param number  the number that needs to be checked
+   * @return  a ValidationResult object which indicates whether the number is possible
+   */
+  public ValidationResult isPossibleNumberWithReason(PhoneNumber number) {
+    return isPossibleNumberForTypeWithReason(number, PhoneNumberType.UNKNOWN);
+  }
+
+  /**
+   * Check whether a phone number is a possible number of a particular type. For types that don't
+   * exist in a particular region, this will return a result that isn't so useful; it is recommended
+   * that you use {@link #getSupportedTypesForRegion} or {@link #getSupportedTypesForNonGeoEntity}
+   * respectively before calling this method to determine whether you should call it for this number
+   * at all.
+   *
+   * This provides a more lenient check than {@link #isValidNumber} in the following sense:
+   *
+   * <ol>
+   *   <li> It only checks the length of phone numbers. In particular, it doesn't check starting
+   *        digits of the number.
+   *   <li> For some numbers (particularly fixed-line), many regions have the concept of area code,
+   *        which together with subscriber number constitute the national significant number. It is
+   *        sometimes okay to dial only the subscriber number when dialing in the same area. This
+   *        function will return IS_POSSIBLE_LOCAL_ONLY if the subscriber-number-only version is
+   *        passed in. On the other hand, because isValidNumber validates using information on both
+   *        starting digits (for fixed line numbers, that would most likely be area codes) and
+   *        length (obviously includes the length of area codes for fixed line numbers), it will
+   *        return false for the subscriber-number-only version.
+   * </ol>
+   *
+   * @param number  the number that needs to be checked
+   * @param type  the type we are interested in
+   * @return  a ValidationResult object which indicates whether the number is possible
+   */
+  public ValidationResult isPossibleNumberForTypeWithReason(
+      PhoneNumber number, PhoneNumberType type) {
+    String nationalNumber = getNationalSignificantNumber(number);
+    int countryCode = number.getCountryCode();
+    // Note: For regions that share a country calling code, like NANPA numbers, we just use the
+    // rules from the default region (US in this case) since the getRegionCodeForNumber will not
+    // work if the number is possible but not valid. There is in fact one country calling code (290)
+    // where the possible number pattern differs between various regions (Saint Helena and Tristan
+    // da Cuñha), but this is handled by putting all possible lengths for any country with this
+    // country calling code in the metadata for the default region in this case.
+    if (!hasValidCountryCallingCode(countryCode)) {
+      return ValidationResult.INVALID_COUNTRY_CODE;
+    }
+    String regionCode = getRegionCodeForCountryCode(countryCode);
+    // Metadata cannot be null because the country calling code is valid.
+    PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCode, regionCode);
+    return testNumberLength(nationalNumber, metadata, type);
+  }
+
+  /**
+   * Check whether a phone number is a possible number given a number in the form of a string, and
+   * the region where the number could be dialed from. It provides a more lenient check than
+   * {@link #isValidNumber}. See {@link #isPossibleNumber(PhoneNumber)} for details.
+   *
+   * <p>This method first parses the number, then invokes {@link #isPossibleNumber(PhoneNumber)}
+   * with the resultant PhoneNumber object.
+   *
+   * @param number  the number that needs to be checked
+   * @param regionDialingFrom  the region that we are expecting the number to be dialed from.
+   *     Note this is different from the region where the number belongs.  For example, the number
+   *     +1 650 253 0000 is a number that belongs to US. When written in this form, it can be
+   *     dialed from any region. When it is written as 00 1 650 253 0000, it can be dialed from any
+   *     region which uses an international dialling prefix of 00. When it is written as
+   *     650 253 0000, it can only be dialed from within the US, and when written as 253 0000, it
+   *     can only be dialed from within a smaller area in the US (Mountain View, CA, to be more
+   *     specific).
+   * @return  true if the number is possible
+   */
+  public boolean isPossibleNumber(CharSequence number, String regionDialingFrom) {
+    try {
+      return isPossibleNumber(parse(number, regionDialingFrom));
+    } catch (NumberParseException e) {
+      return false;
+    }
+  }
+
+  /**
+   * Attempts to extract a valid number from a phone number that is too long to be valid, and resets
+   * the PhoneNumber object passed in to that valid version. If no valid number could be extracted,
+   * the PhoneNumber object passed in will not be modified.
+   * @param number  a PhoneNumber object which contains a number that is too long to be valid
+   * @return  true if a valid phone number can be successfully extracted
+   */
+  public boolean truncateTooLongNumber(PhoneNumber number) {
+    if (isValidNumber(number)) {
+      return true;
+    }
+    PhoneNumber numberCopy = new PhoneNumber();
+    numberCopy.mergeFrom(number);
+    long nationalNumber = number.getNationalNumber();
+    do {
+      nationalNumber /= 10;
+      numberCopy.setNationalNumber(nationalNumber);
+      if (isPossibleNumberWithReason(numberCopy) == ValidationResult.TOO_SHORT
+          || nationalNumber == 0) {
+        return false;
+      }
+    } while (!isValidNumber(numberCopy));
+    number.setNationalNumber(nationalNumber);
+    return true;
+  }
+
+  /**
+   * Gets an {@link com.android.i18n.phonenumbers.AsYouTypeFormatter} for the specific region.
+   *
+   * @param regionCode  the region where the phone number is being entered
+   * @return  an {@link com.android.i18n.phonenumbers.AsYouTypeFormatter} object, which can be used
+   *     to format phone numbers in the specific region "as you type"
+   */
+  public AsYouTypeFormatter getAsYouTypeFormatter(String regionCode) {
+    return new AsYouTypeFormatter(regionCode);
+  }
+
+  // Extracts country calling code from fullNumber, returns it and places the remaining number in
+  // nationalNumber. It assumes that the leading plus sign or IDD has already been removed. Returns
+  // 0 if fullNumber doesn't start with a valid country calling code, and leaves nationalNumber
+  // unmodified.
+  int extractCountryCode(StringBuilder fullNumber, StringBuilder nationalNumber) {
+    if ((fullNumber.length() == 0) || (fullNumber.charAt(0) == '0')) {
+      // Country codes do not begin with a '0'.
+      return 0;
+    }
+    int potentialCountryCode;
+    int numberLength = fullNumber.length();
+    for (int i = 1; i <= MAX_LENGTH_COUNTRY_CODE && i <= numberLength; i++) {
+      potentialCountryCode = Integer.parseInt(fullNumber.substring(0, i));
+      if (countryCallingCodeToRegionCodeMap.containsKey(potentialCountryCode)) {
+        nationalNumber.append(fullNumber.substring(i));
+        return potentialCountryCode;
+      }
+    }
+    return 0;
+  }
+
+  /**
+   * Tries to extract a country calling code from a number. This method will return zero if no
+   * country calling code is considered to be present. Country calling codes are extracted in the
+   * following ways:
+   * <ul>
+   *  <li> by stripping the international dialing prefix of the region the person is dialing from,
+   *       if this is present in the number, and looking at the next digits
+   *  <li> by stripping the '+' sign if present and then looking at the next digits
+   *  <li> by comparing the start of the number and the country calling code of the default region.
+   *       If the number is not considered possible for the numbering plan of the default region
+   *       initially, but starts with the country calling code of this region, validation will be
+   *       reattempted after stripping this country calling code. If this number is considered a
+   *       possible number, then the first digits will be considered the country calling code and
+   *       removed as such.
+   * </ul>
+   * It will throw a NumberParseException if the number starts with a '+' but the country calling
+   * code supplied after this does not match that of any known region.
+   *
+   * @param number  non-normalized telephone number that we wish to extract a country calling
+   *     code from - may begin with '+'
+   * @param defaultRegionMetadata  metadata about the region this number may be from
+   * @param nationalNumber  a string buffer to store the national significant number in, in the case
+   *     that a country calling code was extracted. The number is appended to any existing contents.
+   *     If no country calling code was extracted, this will be left unchanged.
+   * @param keepRawInput  true if the country_code_source and preferred_carrier_code fields of
+   *     phoneNumber should be populated.
+   * @param phoneNumber  the PhoneNumber object where the country_code and country_code_source need
+   *     to be populated. Note the country_code is always populated, whereas country_code_source is
+   *     only populated when keepCountryCodeSource is true.
+   * @return  the country calling code extracted or 0 if none could be extracted
+   */
+  // @VisibleForTesting
+  int maybeExtractCountryCode(CharSequence number, PhoneMetadata defaultRegionMetadata,
+                              StringBuilder nationalNumber, boolean keepRawInput,
+                              PhoneNumber phoneNumber)
+      throws NumberParseException {
+    if (number.length() == 0) {
+      return 0;
+    }
+    StringBuilder fullNumber = new StringBuilder(number);
+    // Set the default prefix to be something that will never match.
+    String possibleCountryIddPrefix = "NonMatch";
+    if (defaultRegionMetadata != null) {
+      possibleCountryIddPrefix = defaultRegionMetadata.getInternationalPrefix();
+    }
+
+    CountryCodeSource countryCodeSource =
+        maybeStripInternationalPrefixAndNormalize(fullNumber, possibleCountryIddPrefix);
+    if (keepRawInput) {
+      phoneNumber.setCountryCodeSource(countryCodeSource);
+    }
+    if (countryCodeSource != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
+      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.");
+      }
+      int potentialCountryCode = extractCountryCode(fullNumber, nationalNumber);
+      if (potentialCountryCode != 0) {
+        phoneNumber.setCountryCode(potentialCountryCode);
+        return potentialCountryCode;
+      }
+
+      // If this fails, they must be using a strange country calling code that we don't recognize,
+      // or that doesn't exist.
+      throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
+                                     "Country calling code supplied was not recognised.");
+    } else if (defaultRegionMetadata != null) {
+      // Check to see if the number starts with the country calling code for the default region. If
+      // so, we remove the country calling code, and do some checks on the validity of the number
+      // before and after.
+      int defaultCountryCode = defaultRegionMetadata.getCountryCode();
+      String defaultCountryCodeString = String.valueOf(defaultCountryCode);
+      String normalizedNumber = fullNumber.toString();
+      if (normalizedNumber.startsWith(defaultCountryCodeString)) {
+        StringBuilder potentialNationalNumber =
+            new StringBuilder(normalizedNumber.substring(defaultCountryCodeString.length()));
+        PhoneNumberDesc generalDesc = defaultRegionMetadata.getGeneralDesc();
+        maybeStripNationalPrefixAndCarrierCode(
+            potentialNationalNumber, defaultRegionMetadata, null /* Don't need the carrier code */);
+        // If the number was not valid before but is valid now, or if it was too long before, we
+        // consider the number with the country calling code stripped to be a better result and
+        // keep that instead.
+        if ((!matcherApi.matchNationalNumber(fullNumber, generalDesc, false)
+                && matcherApi.matchNationalNumber(potentialNationalNumber, generalDesc, false))
+            || testNumberLength(fullNumber, defaultRegionMetadata) == ValidationResult.TOO_LONG) {
+          nationalNumber.append(potentialNationalNumber);
+          if (keepRawInput) {
+            phoneNumber.setCountryCodeSource(CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN);
+          }
+          phoneNumber.setCountryCode(defaultCountryCode);
+          return defaultCountryCode;
+        }
+      }
+    }
+    // No country calling code present.
+    phoneNumber.setCountryCode(0);
+    return 0;
+  }
+
+  /**
+   * Strips the IDD from the start of the number if present. Helper function used by
+   * maybeStripInternationalPrefixAndNormalize.
+   */
+  private boolean parsePrefixAsIdd(Pattern iddPattern, StringBuilder number) {
+    Matcher m = iddPattern.matcher(number);
+    if (m.lookingAt()) {
+      int matchEnd = m.end();
+      // Only strip this if the first digit after the match is not a 0, since country calling codes
+      // cannot begin with 0.
+      Matcher digitMatcher = CAPTURING_DIGIT_PATTERN.matcher(number.substring(matchEnd));
+      if (digitMatcher.find()) {
+        String normalizedGroup = normalizeDigitsOnly(digitMatcher.group(1));
+        if (normalizedGroup.equals("0")) {
+          return false;
+        }
+      }
+      number.delete(0, matchEnd);
+      return true;
+    }
+    return false;
+  }
+
+  /**
+   * Strips any international prefix (such as +, 00, 011) present in the number provided, normalizes
+   * the resulting number, and indicates if an international prefix was present.
+   *
+   * @param number  the non-normalized telephone number that we wish to strip any international
+   *     dialing prefix from
+   * @param possibleIddPrefix  the international direct dialing prefix from the region we
+   *     think this number may be dialed in
+   * @return  the corresponding CountryCodeSource if an international dialing prefix could be
+   *     removed from the number, otherwise CountryCodeSource.FROM_DEFAULT_COUNTRY if the number did
+   *     not seem to be in international format
+   */
+  // @VisibleForTesting
+  CountryCodeSource maybeStripInternationalPrefixAndNormalize(
+      StringBuilder number,
+      String possibleIddPrefix) {
+    if (number.length() == 0) {
+      return CountryCodeSource.FROM_DEFAULT_COUNTRY;
+    }
+    // Check to see if the number begins with one or more plus signs.
+    Matcher m = PLUS_CHARS_PATTERN.matcher(number);
+    if (m.lookingAt()) {
+      number.delete(0, m.end());
+      // Can now normalize the rest of the number since we've consumed the "+" sign at the start.
+      normalize(number);
+      return CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN;
+    }
+    // Attempt to parse the first digits as an international prefix.
+    Pattern iddPattern = regexCache.getPatternForRegex(possibleIddPrefix);
+    normalize(number);
+    return parsePrefixAsIdd(iddPattern, number)
+           ? CountryCodeSource.FROM_NUMBER_WITH_IDD
+           : CountryCodeSource.FROM_DEFAULT_COUNTRY;
+  }
+
+  /**
+   * Strips any national prefix (such as 0, 1) present in the number provided.
+   *
+   * @param number  the normalized telephone number that we wish to strip any national
+   *     dialing prefix from
+   * @param metadata  the metadata for the region that we think this number is from
+   * @param carrierCode  a place to insert the carrier code if one is extracted
+   * @return true if a national prefix or carrier code (or both) could be extracted
+   */
+  // @VisibleForTesting
+  boolean maybeStripNationalPrefixAndCarrierCode(
+      StringBuilder number, PhoneMetadata metadata, StringBuilder carrierCode) {
+    int numberLength = number.length();
+    String possibleNationalPrefix = metadata.getNationalPrefixForParsing();
+    if (numberLength == 0 || possibleNationalPrefix.length() == 0) {
+      // Early return for numbers of zero length.
+      return false;
+    }
+    // Attempt to parse the first digits as a national prefix.
+    Matcher prefixMatcher = regexCache.getPatternForRegex(possibleNationalPrefix).matcher(number);
+    if (prefixMatcher.lookingAt()) {
+      PhoneNumberDesc generalDesc = metadata.getGeneralDesc();
+      // Check if the original number is viable.
+      boolean isViableOriginalNumber = matcherApi.matchNationalNumber(number, generalDesc, false);
+      // prefixMatcher.group(numOfGroups) == null implies nothing was captured by the capturing
+      // groups in possibleNationalPrefix; therefore, no transformation is necessary, and we just
+      // remove the national prefix.
+      int numOfGroups = prefixMatcher.groupCount();
+      String transformRule = metadata.getNationalPrefixTransformRule();
+      if (transformRule == null || transformRule.length() == 0
+          || prefixMatcher.group(numOfGroups) == null) {
+        // If the original number was viable, and the resultant number is not, we return.
+        if (isViableOriginalNumber
+            && !matcherApi.matchNationalNumber(
+                number.substring(prefixMatcher.end()), generalDesc, false)) {
+          return false;
+        }
+        if (carrierCode != null && numOfGroups > 0 && prefixMatcher.group(numOfGroups) != null) {
+          carrierCode.append(prefixMatcher.group(1));
+        }
+        number.delete(0, prefixMatcher.end());
+        return true;
+      } else {
+        // Check that the resultant number is still viable. If not, return. Check this by copying
+        // the string buffer and making the transformation on the copy first.
+        StringBuilder transformedNumber = new StringBuilder(number);
+        transformedNumber.replace(0, numberLength, prefixMatcher.replaceFirst(transformRule));
+        if (isViableOriginalNumber
+            && !matcherApi.matchNationalNumber(transformedNumber.toString(), generalDesc, false)) {
+          return false;
+        }
+        if (carrierCode != null && numOfGroups > 1) {
+          carrierCode.append(prefixMatcher.group(1));
+        }
+        number.replace(0, number.length(), transformedNumber.toString());
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Strips any extension (as in, the part of the number dialled after the call is connected,
+   * usually indicated with extn, ext, x or similar) from the end of the number, and returns it.
+   *
+   * @param number  the non-normalized telephone number that we wish to strip the extension from
+   * @return  the phone extension
+   */
+  // @VisibleForTesting
+  String maybeStripExtension(StringBuilder number) {
+    Matcher m = EXTN_PATTERN.matcher(number);
+    // If we find a potential extension, and the number preceding this is a viable number, we assume
+    // it is an extension.
+    if (m.find() && isViablePhoneNumber(number.substring(0, m.start()))) {
+      // The numbers are captured into groups in the regular expression.
+      for (int i = 1, length = m.groupCount(); i <= length; i++) {
+        if (m.group(i) != null) {
+          // We go through the capturing groups until we find one that captured some digits. If none
+          // did, then we will return the empty string.
+          String extension = m.group(i);
+          number.delete(m.start(), number.length());
+          return extension;
+        }
+      }
+    }
+    return "";
+  }
+
+  /**
+   * Checks to see that the region code used is valid, or if it is not valid, that the number to
+   * parse starts with a + symbol so that we can attempt to infer the region from the number.
+   * Returns false if it cannot use the region provided and the region cannot be inferred.
+   */
+  private boolean checkRegionForParsing(CharSequence numberToParse, String defaultRegion) {
+    if (!isValidRegionCode(defaultRegion)) {
+      // If the number is null or empty, we can't infer the region.
+      if ((numberToParse == null) || (numberToParse.length() == 0)
+          || !PLUS_CHARS_PATTERN.matcher(numberToParse).lookingAt()) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Parses a string and returns it as a phone number in proto buffer format. The method is quite
+   * lenient and looks for a number in the input text (raw input) and does not check whether the
+   * string is definitely only a phone number. To do this, it ignores punctuation and white-space,
+   * as well as any text before the number (e.g. a leading "Tel: ") and trims the non-number bits.
+   * It will accept a number in any format (E164, national, international etc), assuming it can be
+   * interpreted with the defaultRegion supplied. It also attempts to convert any alpha characters
+   * into digits if it thinks this is a vanity number of the type "1800 MICROSOFT".
+   *
+   * <p> This method will throw a {@link com.android.i18n.phonenumbers.NumberParseException} if the
+   * number is not considered to be a possible number. Note that validation of whether the number
+   * is actually a valid number for a particular region is not performed. This can be done
+   * separately with {@link #isValidNumber}.
+   *
+   * <p> Note this method canonicalizes the phone number such that different representations can be
+   * easily compared, no matter what form it was originally entered in (e.g. national,
+   * international). If you want to record context about the number being parsed, such as the raw
+   * input that was entered, how the country code was derived etc. then call {@link
+   * #parseAndKeepRawInput} instead.
+   *
+   * @param numberToParse  number that we are attempting to parse. This can contain formatting 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 of the default region supplied. If the number
+   *     is guaranteed to start with a '+' followed by the country calling code, then RegionCode.ZZ
+   *     or null can be supplied.
+   * @return  a phone number proto buffer filled with the parsed number
+   * @throws NumberParseException  if the string is not considered to be a viable phone number (e.g.
+   *     too few or too many digits) or if no default region was supplied and the number is not in
+   *     international format (does not start with +)
+   */
+  public PhoneNumber parse(CharSequence numberToParse, String defaultRegion)
+      throws NumberParseException {
+    PhoneNumber phoneNumber = new PhoneNumber();
+    parse(numberToParse, defaultRegion, phoneNumber);
+    return phoneNumber;
+  }
+
+  /**
+   * Same as {@link #parse(CharSequence, String)}, but accepts mutable PhoneNumber as a
+   * parameter to decrease object creation when invoked many times.
+   */
+  public void parse(CharSequence numberToParse, String defaultRegion, PhoneNumber phoneNumber)
+      throws NumberParseException {
+    parseHelper(numberToParse, defaultRegion, false, true, phoneNumber);
+  }
+
+  /**
+   * Parses a string and returns it in proto buffer format. This method differs from {@link #parse}
+   * in that it always populates the raw_input field of the protocol buffer with numberToParse as
+   * well as the country_code_source field.
+   *
+   * @param numberToParse  number that we are attempting to parse. This can contain formatting such
+   *     as +, ( and -, as well as a phone number extension.
+   * @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 calling code
+   *     for the number in this case would be stored as that of the default region supplied.
+   * @return  a phone number proto buffer filled with the parsed number
+   * @throws NumberParseException  if the string is not considered to be a viable phone number or if
+   *     no default region was supplied
+   */
+  public PhoneNumber parseAndKeepRawInput(CharSequence numberToParse, String defaultRegion)
+      throws NumberParseException {
+    PhoneNumber phoneNumber = new PhoneNumber();
+    parseAndKeepRawInput(numberToParse, defaultRegion, phoneNumber);
+    return phoneNumber;
+  }
+
+  /**
+   * Same as{@link #parseAndKeepRawInput(CharSequence, String)}, but accepts a mutable
+   * PhoneNumber as a parameter to decrease object creation when invoked many times.
+   */
+  public void parseAndKeepRawInput(CharSequence numberToParse, String defaultRegion,
+                                   PhoneNumber phoneNumber)
+      throws NumberParseException {
+    parseHelper(numberToParse, defaultRegion, true, true, phoneNumber);
+  }
+
+  /**
+   * Returns an iterable over all {@link PhoneNumberMatch PhoneNumberMatches} in {@code text}. This
+   * is a shortcut for {@link #findNumbers(CharSequence, String, Leniency, long)
+   * getMatcher(text, defaultRegion, Leniency.VALID, Long.MAX_VALUE)}.
+   *
+   * @param text  the text to search for phone numbers, null for no text
+   * @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 of the default region supplied. May be null if
+   *     only international numbers are expected.
+   */
+  public Iterable<PhoneNumberMatch> findNumbers(CharSequence text, String defaultRegion) {
+    return findNumbers(text, defaultRegion, Leniency.VALID, Long.MAX_VALUE);
+  }
+
+  /**
+   * Returns an iterable over all {@link PhoneNumberMatch PhoneNumberMatches} in {@code text}.
+   *
+   * @param text  the text to search for phone numbers, null for no text
+   * @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 of the default region supplied. May be null if
+   *     only international numbers are expected.
+   * @param leniency  the leniency to use when evaluating candidate phone numbers
+   * @param maxTries  the maximum number of invalid numbers to try before giving up on the text.
+   *     This is to cover degenerate cases where the text has a lot of false positives in it. Must
+   *     be {@code >= 0}.
+   */
+  public Iterable<PhoneNumberMatch> findNumbers(
+      final CharSequence text, final String defaultRegion, final Leniency leniency,
+      final long maxTries) {
+
+    return new Iterable<PhoneNumberMatch>() {
+      @Override
+      public Iterator<PhoneNumberMatch> iterator() {
+        return new PhoneNumberMatcher(
+            PhoneNumberUtil.this, text, defaultRegion, leniency, maxTries);
+      }
+    };
+  }
+
+  /**
+   * A helper function to set the values related to leading zeros in a PhoneNumber.
+   */
+  static void setItalianLeadingZerosForPhoneNumber(CharSequence nationalNumber,
+      PhoneNumber phoneNumber) {
+    if (nationalNumber.length() > 1 && nationalNumber.charAt(0) == '0') {
+      phoneNumber.setItalianLeadingZero(true);
+      int numberOfLeadingZeros = 1;
+      // Note that if the national number is all "0"s, the last "0" is not counted as a leading
+      // zero.
+      while (numberOfLeadingZeros < nationalNumber.length() - 1
+          && nationalNumber.charAt(numberOfLeadingZeros) == '0') {
+        numberOfLeadingZeros++;
+      }
+      if (numberOfLeadingZeros != 1) {
+        phoneNumber.setNumberOfLeadingZeros(numberOfLeadingZeros);
+      }
+    }
+  }
+
+  /**
+   * Parses a string and fills up the phoneNumber. This method is the same as the public
+   * parse() method, with the exception that it allows the default region to be null, for use by
+   * isNumberMatch(). checkRegion should be set to false if it is permitted for the default region
+   * to be null or unknown ("ZZ").
+   *
+   * Note if any new field is added to this method that should always be filled in, even when
+   * keepRawInput is false, it should also be handled in the copyCoreFieldsOnly() method.
+   */
+  private void parseHelper(CharSequence numberToParse, String defaultRegion,
+      boolean keepRawInput, boolean checkRegion, PhoneNumber phoneNumber)
+      throws NumberParseException {
+    if (numberToParse == null) {
+      throw new NumberParseException(NumberParseException.ErrorType.NOT_A_NUMBER,
+                                     "The phone number supplied was null.");
+    } else if (numberToParse.length() > MAX_INPUT_STRING_LENGTH) {
+      throw new NumberParseException(NumberParseException.ErrorType.TOO_LONG,
+                                     "The string supplied was too long to parse.");
+    }
+
+    StringBuilder nationalNumber = new StringBuilder();
+    String numberBeingParsed = numberToParse.toString();
+    buildNationalNumberForParsing(numberBeingParsed, nationalNumber);
+
+    if (!isViablePhoneNumber(nationalNumber)) {
+      throw new NumberParseException(NumberParseException.ErrorType.NOT_A_NUMBER,
+                                     "The string supplied did not seem to be a phone number.");
+    }
+
+    // Check the region supplied is valid, or that the extracted number starts with some sort of +
+    // sign so the number's region can be determined.
+    if (checkRegion && !checkRegionForParsing(nationalNumber, defaultRegion)) {
+      throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
+                                     "Missing or invalid default region.");
+    }
+
+    if (keepRawInput) {
+      phoneNumber.setRawInput(numberBeingParsed);
+    }
+    // Attempt to parse extension first, since it doesn't require region-specific data and we want
+    // to have the non-normalised number here.
+    String extension = maybeStripExtension(nationalNumber);
+    if (extension.length() > 0) {
+      phoneNumber.setExtension(extension);
+    }
+
+    PhoneMetadata regionMetadata = getMetadataForRegion(defaultRegion);
+    // Check to see if the number is given in international format so we know whether this number is
+    // from the default region or not.
+    StringBuilder normalizedNationalNumber = new StringBuilder();
+    int countryCode = 0;
+    try {
+      // TODO: This method should really just take in the string buffer that has already
+      // been created, and just remove the prefix, rather than taking in a string and then
+      // outputting a string buffer.
+      countryCode = maybeExtractCountryCode(nationalNumber, regionMetadata,
+                                            normalizedNationalNumber, keepRawInput, phoneNumber);
+    } catch (NumberParseException e) {
+      Matcher matcher = PLUS_CHARS_PATTERN.matcher(nationalNumber);
+      if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE
+          && matcher.lookingAt()) {
+        // Strip the plus-char, and try again.
+        countryCode = maybeExtractCountryCode(nationalNumber.substring(matcher.end()),
+                                              regionMetadata, normalizedNationalNumber,
+                                              keepRawInput, phoneNumber);
+        if (countryCode == 0) {
+          throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
+                                         "Could not interpret numbers after plus-sign.");
+        }
+      } else {
+        throw new NumberParseException(e.getErrorType(), e.getMessage());
+      }
+    }
+    if (countryCode != 0) {
+      String phoneNumberRegion = getRegionCodeForCountryCode(countryCode);
+      if (!phoneNumberRegion.equals(defaultRegion)) {
+        // Metadata cannot be null because the country calling code is valid.
+        regionMetadata = getMetadataForRegionOrCallingCode(countryCode, phoneNumberRegion);
+      }
+    } else {
+      // If no extracted country calling code, use the region supplied instead. The national number
+      // is just the normalized version of the number we were given to parse.
+      normalizedNationalNumber.append(normalize(nationalNumber));
+      if (defaultRegion != null) {
+        countryCode = regionMetadata.getCountryCode();
+        phoneNumber.setCountryCode(countryCode);
+      } else if (keepRawInput) {
+        phoneNumber.clearCountryCodeSource();
+      }
+    }
+    if (normalizedNationalNumber.length() < MIN_LENGTH_FOR_NSN) {
+      throw new NumberParseException(NumberParseException.ErrorType.TOO_SHORT_NSN,
+                                     "The string supplied is too short to be a phone number.");
+    }
+    if (regionMetadata != null) {
+      StringBuilder carrierCode = new StringBuilder();
+      StringBuilder potentialNationalNumber = new StringBuilder(normalizedNationalNumber);
+      maybeStripNationalPrefixAndCarrierCode(potentialNationalNumber, regionMetadata, carrierCode);
+      // We require that the NSN remaining after stripping the national prefix and carrier code be
+      // long enough to be a possible length for the region. Otherwise, we don't do the stripping,
+      // since the original number could be a valid short number.
+      ValidationResult validationResult = testNumberLength(potentialNationalNumber, regionMetadata);
+      if (validationResult != ValidationResult.TOO_SHORT
+          && validationResult != ValidationResult.IS_POSSIBLE_LOCAL_ONLY
+          && validationResult != ValidationResult.INVALID_LENGTH) {
+        normalizedNationalNumber = potentialNationalNumber;
+        if (keepRawInput && carrierCode.length() > 0) {
+          phoneNumber.setPreferredDomesticCarrierCode(carrierCode.toString());
+        }
+      }
+    }
+    int lengthOfNationalNumber = normalizedNationalNumber.length();
+    if (lengthOfNationalNumber < MIN_LENGTH_FOR_NSN) {
+      throw new NumberParseException(NumberParseException.ErrorType.TOO_SHORT_NSN,
+                                     "The string supplied is too short to be a phone number.");
+    }
+    if (lengthOfNationalNumber > MAX_LENGTH_FOR_NSN) {
+      throw new NumberParseException(NumberParseException.ErrorType.TOO_LONG,
+                                     "The string supplied is too long to be a phone number.");
+    }
+    setItalianLeadingZerosForPhoneNumber(normalizedNationalNumber, phoneNumber);
+    phoneNumber.setNationalNumber(Long.parseLong(normalizedNationalNumber.toString()));
+  }
+
+  /**
+   * 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 (phoneContextStart < (numberToParse.length() - 1)
+          && 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. Note we also
+      // handle the case when "tel:" is missing, as we have seen in some of the phone number inputs.
+      // In that case, we append everything from the beginning.
+      int indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX);
+      int indexOfNationalNumber = (indexOfRfc3966Prefix >= 0)
+          ? indexOfRfc3966Prefix + RFC3966_PREFIX.length() : 0;
+      nationalNumber.append(numberToParse.substring(indexOfNationalNumber, 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.
+  }
+
+  /**
+   * Returns a new phone number containing only the fields needed to uniquely identify a phone
+   * number, rather than any fields that capture the context in which the phone number was created.
+   * These fields correspond to those set in parse() rather than parseAndKeepRawInput().
+   */
+  private static PhoneNumber copyCoreFieldsOnly(PhoneNumber phoneNumberIn) {
+    PhoneNumber phoneNumber = new PhoneNumber();
+    phoneNumber.setCountryCode(phoneNumberIn.getCountryCode());
+    phoneNumber.setNationalNumber(phoneNumberIn.getNationalNumber());
+    if (phoneNumberIn.getExtension().length() > 0) {
+      phoneNumber.setExtension(phoneNumberIn.getExtension());
+    }
+    if (phoneNumberIn.isItalianLeadingZero()) {
+      phoneNumber.setItalianLeadingZero(true);
+      // This field is only relevant if there are leading zeros at all.
+      phoneNumber.setNumberOfLeadingZeros(phoneNumberIn.getNumberOfLeadingZeros());
+    }
+    return phoneNumber;
+  }
+
+  /**
+   * 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
+   * and any extension present are the same.
+   * Returns NSN_MATCH if either or both has no region specified, and the NSNs and extensions are
+   * the same.
+   * Returns SHORT_NSN_MATCH if either or both has no region specified, or the region specified is
+   * the same, and one NSN could be a shorter version of the other number. This includes the case
+   * where one has an extension specified, and the other does not.
+   * Returns NO_MATCH otherwise.
+   * For example, the numbers +1 345 657 1234 and 657 1234 are a SHORT_NSN_MATCH.
+   * The numbers +1 345 657 1234 and 345 657 are a NO_MATCH.
+   *
+   * @param firstNumberIn  first number to compare
+   * @param secondNumberIn  second number to compare
+   *
+   * @return  NO_MATCH, SHORT_NSN_MATCH, NSN_MATCH or EXACT_MATCH depending on the level of equality
+   *     of the two numbers, described in the method definition.
+   */
+  public MatchType isNumberMatch(PhoneNumber firstNumberIn, PhoneNumber secondNumberIn) {
+    // We only care about the fields that uniquely define a number, so we copy these across
+    // explicitly.
+    PhoneNumber firstNumber = copyCoreFieldsOnly(firstNumberIn);
+    PhoneNumber secondNumber = copyCoreFieldsOnly(secondNumberIn);
+    // Early exit if both had extensions and these are different.
+    if (firstNumber.hasExtension() && secondNumber.hasExtension()
+        && !firstNumber.getExtension().equals(secondNumber.getExtension())) {
+      return MatchType.NO_MATCH;
+    }
+    int firstNumberCountryCode = firstNumber.getCountryCode();
+    int secondNumberCountryCode = secondNumber.getCountryCode();
+    // Both had country_code specified.
+    if (firstNumberCountryCode != 0 && secondNumberCountryCode != 0) {
+      if (firstNumber.exactlySameAs(secondNumber)) {
+        return MatchType.EXACT_MATCH;
+      } else if (firstNumberCountryCode == secondNumberCountryCode
+          && isNationalNumberSuffixOfTheOther(firstNumber, secondNumber)) {
+        // A SHORT_NSN_MATCH occurs if there is a difference because of the presence or absence of
+        // an 'Italian leading zero', the presence or absence of an extension, or one NSN being a
+        // shorter variant of the other.
+        return MatchType.SHORT_NSN_MATCH;
+      }
+      // This is not a match.
+      return MatchType.NO_MATCH;
+    }
+    // Checks cases where one or both country_code fields were not specified. To make equality
+    // checks easier, we first set the country_code fields to be equal.
+    firstNumber.setCountryCode(secondNumberCountryCode);
+    // If all else was the same, then this is an NSN_MATCH.
+    if (firstNumber.exactlySameAs(secondNumber)) {
+      return MatchType.NSN_MATCH;
+    }
+    if (isNationalNumberSuffixOfTheOther(firstNumber, secondNumber)) {
+      return MatchType.SHORT_NSN_MATCH;
+    }
+    return MatchType.NO_MATCH;
+  }
+
+  // Returns true when one national number is the suffix of the other or both are the same.
+  private boolean isNationalNumberSuffixOfTheOther(PhoneNumber firstNumber,
+                                                   PhoneNumber secondNumber) {
+    String firstNumberNationalNumber = String.valueOf(firstNumber.getNationalNumber());
+    String secondNumberNationalNumber = String.valueOf(secondNumber.getNationalNumber());
+    // Note that endsWith returns true if the numbers are equal.
+    return firstNumberNationalNumber.endsWith(secondNumberNationalNumber)
+        || secondNumberNationalNumber.endsWith(firstNumberNationalNumber);
+  }
+
+  /**
+   * Takes two phone numbers as strings and compares them for equality. This is a convenience
+   * wrapper for {@link #isNumberMatch(PhoneNumber, PhoneNumber)}. No default region is known.
+   *
+   * @param firstNumber  first number to compare. Can contain formatting, and can have country
+   *     calling code specified with + at the start.
+   * @param secondNumber  second number to compare. Can contain formatting, and can have country
+   *     calling code specified with + at the start.
+   * @return  NOT_A_NUMBER, NO_MATCH, SHORT_NSN_MATCH, NSN_MATCH, EXACT_MATCH. See
+   *     {@link #isNumberMatch(PhoneNumber, PhoneNumber)} for more details.
+   */
+  public MatchType isNumberMatch(CharSequence firstNumber, CharSequence secondNumber) {
+    try {
+      PhoneNumber firstNumberAsProto = parse(firstNumber, UNKNOWN_REGION);
+      return isNumberMatch(firstNumberAsProto, secondNumber);
+    } catch (NumberParseException e) {
+      if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE) {
+        try {
+          PhoneNumber secondNumberAsProto = parse(secondNumber, UNKNOWN_REGION);
+          return isNumberMatch(secondNumberAsProto, firstNumber);
+        } catch (NumberParseException e2) {
+          if (e2.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE) {
+            try {
+              PhoneNumber firstNumberProto = new PhoneNumber();
+              PhoneNumber secondNumberProto = new PhoneNumber();
+              parseHelper(firstNumber, null, false, false, firstNumberProto);
+              parseHelper(secondNumber, null, false, false, secondNumberProto);
+              return isNumberMatch(firstNumberProto, secondNumberProto);
+            } catch (NumberParseException e3) {
+              // Fall through and return MatchType.NOT_A_NUMBER.
+            }
+          }
+        }
+      }
+    }
+    // One or more of the phone numbers we are trying to match is not a viable phone number.
+    return MatchType.NOT_A_NUMBER;
+  }
+
+  /**
+   * Takes two phone numbers and compares them for equality. This is a convenience wrapper for
+   * {@link #isNumberMatch(PhoneNumber, PhoneNumber)}. No default region is known.
+   *
+   * @param firstNumber  first number to compare in proto buffer format
+   * @param secondNumber  second number to compare. Can contain formatting, and can have country
+   *     calling code specified with + at the start.
+   * @return  NOT_A_NUMBER, NO_MATCH, SHORT_NSN_MATCH, NSN_MATCH, EXACT_MATCH. See
+   *     {@link #isNumberMatch(PhoneNumber, PhoneNumber)} for more details.
+   */
+  public MatchType isNumberMatch(PhoneNumber firstNumber, CharSequence secondNumber) {
+    // First see if the second number has an implicit country calling code, by attempting to parse
+    // it.
+    try {
+      PhoneNumber secondNumberAsProto = parse(secondNumber, UNKNOWN_REGION);
+      return isNumberMatch(firstNumber, secondNumberAsProto);
+    } catch (NumberParseException e) {
+      if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE) {
+        // The second number has no country calling code. EXACT_MATCH is no longer possible.
+        // We parse it as if the region was the same as that for the first number, and if
+        // EXACT_MATCH is returned, we replace this with NSN_MATCH.
+        String firstNumberRegion = getRegionCodeForCountryCode(firstNumber.getCountryCode());
+        try {
+          if (!firstNumberRegion.equals(UNKNOWN_REGION)) {
+            PhoneNumber secondNumberWithFirstNumberRegion = parse(secondNumber, firstNumberRegion);
+            MatchType match = isNumberMatch(firstNumber, secondNumberWithFirstNumberRegion);
+            if (match == MatchType.EXACT_MATCH) {
+              return MatchType.NSN_MATCH;
+            }
+            return match;
+          } else {
+            // If the first number didn't have a valid country calling code, then we parse the
+            // second number without one as well.
+            PhoneNumber secondNumberProto = new PhoneNumber();
+            parseHelper(secondNumber, null, false, false, secondNumberProto);
+            return isNumberMatch(firstNumber, secondNumberProto);
+          }
+        } catch (NumberParseException e2) {
+          // Fall-through to return NOT_A_NUMBER.
+        }
+      }
+    }
+    // One or more of the phone numbers we are trying to match is not a viable phone number.
+    return MatchType.NOT_A_NUMBER;
+  }
+
+  /**
+   * Returns true if the number can be dialled from outside the region, or unknown. If the number
+   * can only be dialled from within the region, returns false. Does not check the number is a valid
+   * number. Note that, at the moment, this method does not handle short numbers (which are
+   * currently all presumed to not be diallable from outside their country).
+   *
+   * @param number  the phone-number for which we want to know whether it is diallable from
+   *     outside the region
+   */
+  public boolean canBeInternationallyDialled(PhoneNumber number) {
+    PhoneMetadata metadata = getMetadataForRegion(getRegionCodeForNumber(number));
+    if (metadata == null) {
+      // Note numbers belonging to non-geographical entities (e.g. +800 numbers) are always
+      // internationally diallable, and will be caught here.
+      return true;
+    }
+    String nationalSignificantNumber = getNationalSignificantNumber(number);
+    return !isNumberMatchingDesc(nationalSignificantNumber, metadata.getNoInternationalDialling());
+  }
+
+  /**
+   * Returns true if the supplied region supports mobile number portability. Returns false for
+   * invalid, unknown or regions that don't support mobile number portability.
+   *
+   * @param regionCode  the region for which we want to know whether it supports mobile number
+   *     portability or not
+   */
+  public boolean isMobileNumberPortableRegion(String regionCode) {
+    PhoneMetadata metadata = getMetadataForRegion(regionCode);
+    if (metadata == null) {
+      logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
+      return false;
+    }
+    return metadata.isMobileNumberPortableRegion();
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/Phonemetadata.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/Phonemetadata.java
new file mode 100644
index 0000000..a4a70d9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/Phonemetadata.java
@@ -0,0 +1,1196 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2010 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Definition of the class representing metadata for international telephone numbers. This class is
+ * hand created based on the class file compiled from phonemetadata.proto. Please refer to that file
+ * for detailed descriptions of the meaning of each field.
+ *
+ * <p>WARNING: This API isn't stable. It is considered libphonenumber-internal and can change at any
+ * time. We only declare it as public for easy inclusion in our build tools not in this package.
+ * Clients should not refer to this file, we do not commit to support backwards-compatibility or to
+ * warn about breaking changes.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+/**
+ * @hide This class is not part of the Android public SDK API
+ */
+public final class Phonemetadata {
+  private Phonemetadata() {}
+  /**
+ * @hide This class is not part of the Android public SDK API
+ */
+public static class NumberFormat implements Externalizable {
+    private static final long serialVersionUID = 1;
+    public NumberFormat() {}
+
+    /**
+     * Provides a dummy builder to 'emulate' the API of the code generated by the latest version of
+     * Protocol Buffers. This lets BuildMetadataFromXml class to build with both this hand created
+     * class and the one generated by the latest version of Protocol Buffers.
+     * @hide This class is not part of the Android public SDK API
+     */
+    public static final class Builder extends NumberFormat {
+      public NumberFormat build() {
+        return this;
+      }
+
+      public Builder mergeFrom(NumberFormat other) {
+        if (other.hasPattern()) {
+          setPattern(other.getPattern());
+        }
+        if (other.hasFormat()) {
+          setFormat(other.getFormat());
+        }
+        for (int i = 0; i < other.leadingDigitsPatternSize(); i++) {
+          addLeadingDigitsPattern(other.getLeadingDigitsPattern(i));
+        }
+        if (other.hasNationalPrefixFormattingRule()) {
+          setNationalPrefixFormattingRule(other.getNationalPrefixFormattingRule());
+        }
+        if (other.hasDomesticCarrierCodeFormattingRule()) {
+          setDomesticCarrierCodeFormattingRule(other.getDomesticCarrierCodeFormattingRule());
+        }
+        if (other.hasNationalPrefixOptionalWhenFormatting()) {
+          setNationalPrefixOptionalWhenFormatting(other.getNationalPrefixOptionalWhenFormatting());
+        }
+        return this;
+      }
+    }
+
+    public static Builder newBuilder() {
+      return new Builder();
+    }
+
+    // required string pattern = 1;
+    private boolean hasPattern;
+    private String pattern_ = "";
+    public boolean hasPattern() { return hasPattern; }
+    public String getPattern() { return pattern_; }
+    public NumberFormat setPattern(String value) {
+      hasPattern = true;
+      pattern_ = value;
+      return this;
+    }
+
+    // required string format = 2;
+    private boolean hasFormat;
+    private String format_ = "";
+    public boolean hasFormat() { return hasFormat; }
+    public String getFormat() { return format_; }
+    public NumberFormat setFormat(String value) {
+      hasFormat = true;
+      format_ = value;
+      return this;
+    }
+
+    // repeated string leading_digits_pattern = 3;
+    private java.util.List<String> leadingDigitsPattern_ = new java.util.ArrayList<String>();
+    public java.util.List<String> leadingDigitPatterns() {
+      return leadingDigitsPattern_;
+    }
+    public int leadingDigitsPatternSize() { return leadingDigitsPattern_.size(); }
+    public String getLeadingDigitsPattern(int index) {
+      return leadingDigitsPattern_.get(index);
+    }
+    public NumberFormat addLeadingDigitsPattern(String value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      leadingDigitsPattern_.add(value);
+      return this;
+    }
+
+    // optional string national_prefix_formatting_rule = 4;
+    private boolean hasNationalPrefixFormattingRule;
+    private String nationalPrefixFormattingRule_ = "";
+    public boolean hasNationalPrefixFormattingRule() { return hasNationalPrefixFormattingRule; }
+    public String getNationalPrefixFormattingRule() { return nationalPrefixFormattingRule_; }
+    public NumberFormat setNationalPrefixFormattingRule(String value) {
+      hasNationalPrefixFormattingRule = true;
+      nationalPrefixFormattingRule_ = value;
+      return this;
+    }
+    public NumberFormat clearNationalPrefixFormattingRule() {
+      hasNationalPrefixFormattingRule = false;
+      nationalPrefixFormattingRule_ = "";
+      return this;
+    }
+
+    // optional bool national_prefix_optional_when_formatting = 6 [default = false];
+    private boolean hasNationalPrefixOptionalWhenFormatting;
+    private boolean nationalPrefixOptionalWhenFormatting_ = false;
+    public boolean hasNationalPrefixOptionalWhenFormatting() {
+      return hasNationalPrefixOptionalWhenFormatting; }
+    public boolean getNationalPrefixOptionalWhenFormatting() {
+      return nationalPrefixOptionalWhenFormatting_; }
+    public NumberFormat setNationalPrefixOptionalWhenFormatting(boolean value) {
+      hasNationalPrefixOptionalWhenFormatting = true;
+      nationalPrefixOptionalWhenFormatting_ = value;
+      return this;
+    }
+
+    // optional string domestic_carrier_code_formatting_rule = 5;
+    private boolean hasDomesticCarrierCodeFormattingRule;
+    private String domesticCarrierCodeFormattingRule_ = "";
+    public boolean hasDomesticCarrierCodeFormattingRule() {
+      return hasDomesticCarrierCodeFormattingRule; }
+    public String getDomesticCarrierCodeFormattingRule() {
+      return domesticCarrierCodeFormattingRule_; }
+    public NumberFormat setDomesticCarrierCodeFormattingRule(String value) {
+      hasDomesticCarrierCodeFormattingRule = true;
+      domesticCarrierCodeFormattingRule_ = value;
+      return this;
+    }
+
+    public void writeExternal(ObjectOutput objectOutput) throws IOException {
+      objectOutput.writeUTF(pattern_);
+      objectOutput.writeUTF(format_);
+      int leadingDigitsPatternSize = leadingDigitsPatternSize();
+      objectOutput.writeInt(leadingDigitsPatternSize);
+      for (int i = 0; i < leadingDigitsPatternSize; i++) {
+        objectOutput.writeUTF(leadingDigitsPattern_.get(i));
+      }
+
+      objectOutput.writeBoolean(hasNationalPrefixFormattingRule);
+      if (hasNationalPrefixFormattingRule) {
+        objectOutput.writeUTF(nationalPrefixFormattingRule_);
+      }
+      objectOutput.writeBoolean(hasDomesticCarrierCodeFormattingRule);
+      if (hasDomesticCarrierCodeFormattingRule) {
+        objectOutput.writeUTF(domesticCarrierCodeFormattingRule_);
+      }
+      objectOutput.writeBoolean(nationalPrefixOptionalWhenFormatting_);
+    }
+
+    public void readExternal(ObjectInput objectInput) throws IOException {
+      setPattern(objectInput.readUTF());
+      setFormat(objectInput.readUTF());
+      int leadingDigitsPatternSize = objectInput.readInt();
+      for (int i = 0; i < leadingDigitsPatternSize; i++) {
+        leadingDigitsPattern_.add(objectInput.readUTF());
+      }
+      if (objectInput.readBoolean()) {
+        setNationalPrefixFormattingRule(objectInput.readUTF());
+      }
+      if (objectInput.readBoolean()) {
+        setDomesticCarrierCodeFormattingRule(objectInput.readUTF());
+      }
+      setNationalPrefixOptionalWhenFormatting(objectInput.readBoolean());
+    }
+  }
+
+  /**
+ * @hide This class is not part of the Android public SDK API
+ */
+public static class PhoneNumberDesc implements Externalizable {
+    private static final long serialVersionUID = 1;
+    public PhoneNumberDesc() {}
+
+    /**
+     * Provides a dummy builder.
+     *
+     * @see NumberFormat.Builder
+     * @hide This class is not part of the Android public SDK API
+     */
+    public static final class Builder extends PhoneNumberDesc {
+      public PhoneNumberDesc build() {
+        return this;
+      }
+
+      public Builder mergeFrom(PhoneNumberDesc other) {
+        if (other.hasNationalNumberPattern()) {
+          setNationalNumberPattern(other.getNationalNumberPattern());
+        }
+        for (int i = 0; i < other.getPossibleLengthCount(); i++) {
+          addPossibleLength(other.getPossibleLength(i));
+        }
+        for (int i = 0; i < other.getPossibleLengthLocalOnlyCount(); i++) {
+          addPossibleLengthLocalOnly(other.getPossibleLengthLocalOnly(i));
+        }
+        if (other.hasExampleNumber()) {
+          setExampleNumber(other.getExampleNumber());
+        }
+        return this;
+      }
+    }
+
+    public static Builder newBuilder() {
+      return new Builder();
+    }
+
+    // optional string national_number_pattern = 2;
+    private boolean hasNationalNumberPattern;
+    private String nationalNumberPattern_ = "";
+    public boolean hasNationalNumberPattern() { return hasNationalNumberPattern; }
+    public String getNationalNumberPattern() { return nationalNumberPattern_; }
+    public PhoneNumberDesc setNationalNumberPattern(String value) {
+      hasNationalNumberPattern = true;
+      nationalNumberPattern_ = value;
+      return this;
+    }
+    public PhoneNumberDesc clearNationalNumberPattern() {
+      hasNationalNumberPattern = false;
+      nationalNumberPattern_ = "";
+      return this;
+    }
+
+    // repeated int32 possible_length = 9;
+    private java.util.List<Integer> possibleLength_ = new java.util.ArrayList<Integer>();
+    public java.util.List<Integer> getPossibleLengthList() {
+      return possibleLength_;
+    }
+    public int getPossibleLengthCount() { return possibleLength_.size(); }
+    public int getPossibleLength(int index) {
+      return possibleLength_.get(index);
+    }
+    public PhoneNumberDesc addPossibleLength(int value) {
+      possibleLength_.add(value);
+      return this;
+    }
+    public PhoneNumberDesc clearPossibleLength() {
+      possibleLength_.clear();
+      return this;
+    }
+
+    // repeated int32 possible_length_local_only = 10;
+    private java.util.List<Integer> possibleLengthLocalOnly_ = new java.util.ArrayList<Integer>();
+    public java.util.List<Integer> getPossibleLengthLocalOnlyList() {
+      return possibleLengthLocalOnly_;
+    }
+    public int getPossibleLengthLocalOnlyCount() { return possibleLengthLocalOnly_.size(); }
+    public int getPossibleLengthLocalOnly(int index) {
+      return possibleLengthLocalOnly_.get(index);
+    }
+    public PhoneNumberDesc addPossibleLengthLocalOnly(int value) {
+      possibleLengthLocalOnly_.add(value);
+      return this;
+    }
+    public PhoneNumberDesc clearPossibleLengthLocalOnly() {
+      possibleLengthLocalOnly_.clear();
+      return this;
+    }
+
+    // optional string example_number = 6;
+    private boolean hasExampleNumber;
+    private String exampleNumber_ = "";
+    public boolean hasExampleNumber() { return hasExampleNumber; }
+    public String getExampleNumber() { return exampleNumber_; }
+    public PhoneNumberDesc setExampleNumber(String value) {
+      hasExampleNumber = true;
+      exampleNumber_ = value;
+      return this;
+    }
+    public PhoneNumberDesc clearExampleNumber() {
+      hasExampleNumber = false;
+      exampleNumber_ = "";
+      return this;
+    }
+
+    public boolean exactlySameAs(PhoneNumberDesc other) {
+      return nationalNumberPattern_.equals(other.nationalNumberPattern_) &&
+          possibleLength_.equals(other.possibleLength_) &&
+          possibleLengthLocalOnly_.equals(other.possibleLengthLocalOnly_) &&
+          exampleNumber_.equals(other.exampleNumber_);
+    }
+
+    public void writeExternal(ObjectOutput objectOutput) throws IOException {
+      objectOutput.writeBoolean(hasNationalNumberPattern);
+      if (hasNationalNumberPattern) {
+        objectOutput.writeUTF(nationalNumberPattern_);
+      }
+
+      int possibleLengthSize = getPossibleLengthCount();
+      objectOutput.writeInt(possibleLengthSize);
+      for (int i = 0; i < possibleLengthSize; i++) {
+        objectOutput.writeInt(possibleLength_.get(i));
+      }
+
+      int possibleLengthLocalOnlySize = getPossibleLengthLocalOnlyCount();
+      objectOutput.writeInt(possibleLengthLocalOnlySize);
+      for (int i = 0; i < possibleLengthLocalOnlySize; i++) {
+        objectOutput.writeInt(possibleLengthLocalOnly_.get(i));
+      }
+
+      objectOutput.writeBoolean(hasExampleNumber);
+      if (hasExampleNumber) {
+        objectOutput.writeUTF(exampleNumber_);
+      }
+    }
+
+    public void readExternal(ObjectInput objectInput) throws IOException {
+      if (objectInput.readBoolean()) {
+        setNationalNumberPattern(objectInput.readUTF());
+      }
+
+      int possibleLengthSize = objectInput.readInt();
+      for (int i = 0; i < possibleLengthSize; i++) {
+        possibleLength_.add(objectInput.readInt());
+      }
+
+      int possibleLengthLocalOnlySize = objectInput.readInt();
+      for (int i = 0; i < possibleLengthLocalOnlySize; i++) {
+        possibleLengthLocalOnly_.add(objectInput.readInt());
+      }
+
+      if (objectInput.readBoolean()) {
+        setExampleNumber(objectInput.readUTF());
+      }
+    }
+  }
+
+  /**
+ * @hide This class is not part of the Android public SDK API
+ */
+public static class PhoneMetadata implements Externalizable {
+    private static final long serialVersionUID = 1;
+    public PhoneMetadata() {}
+
+    /**
+     * Provides a dummy builder.
+     *
+     * @see NumberFormat.Builder
+     * @hide This class is not part of the Android public SDK API
+     */
+    public static final class Builder extends PhoneMetadata {
+      public PhoneMetadata build() {
+        return this;
+      }
+    }
+    public static Builder newBuilder() {
+      return new Builder();
+    }
+
+    // optional PhoneNumberDesc general_desc = 1;
+    private boolean hasGeneralDesc;
+    private PhoneNumberDesc generalDesc_ = null;
+    public boolean hasGeneralDesc() { return hasGeneralDesc; }
+    public PhoneNumberDesc getGeneralDesc() { return generalDesc_; }
+    public PhoneMetadata setGeneralDesc(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasGeneralDesc = true;
+      generalDesc_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc fixed_line = 2;
+    private boolean hasFixedLine;
+    private PhoneNumberDesc fixedLine_ = null;
+    public boolean hasFixedLine() { return hasFixedLine; }
+    public PhoneNumberDesc getFixedLine() { return fixedLine_; }
+    public PhoneMetadata setFixedLine(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasFixedLine = true;
+      fixedLine_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc mobile = 3;
+    private boolean hasMobile;
+    private PhoneNumberDesc mobile_ = null;
+    public boolean hasMobile() { return hasMobile; }
+    public PhoneNumberDesc getMobile() { return mobile_; }
+    public PhoneMetadata setMobile(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasMobile = true;
+      mobile_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc toll_free = 4;
+    private boolean hasTollFree;
+    private PhoneNumberDesc tollFree_ = null;
+    public boolean hasTollFree() { return hasTollFree; }
+    public PhoneNumberDesc getTollFree() { return tollFree_; }
+    public PhoneMetadata setTollFree(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasTollFree = true;
+      tollFree_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc premium_rate = 5;
+    private boolean hasPremiumRate;
+    private PhoneNumberDesc premiumRate_ = null;
+    public boolean hasPremiumRate() { return hasPremiumRate; }
+    public PhoneNumberDesc getPremiumRate() { return premiumRate_; }
+    public PhoneMetadata setPremiumRate(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasPremiumRate = true;
+      premiumRate_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc shared_cost = 6;
+    private boolean hasSharedCost;
+    private PhoneNumberDesc sharedCost_ = null;
+    public boolean hasSharedCost() { return hasSharedCost; }
+    public PhoneNumberDesc getSharedCost() { return sharedCost_; }
+    public PhoneMetadata setSharedCost(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasSharedCost = true;
+      sharedCost_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc personal_number = 7;
+    private boolean hasPersonalNumber;
+    private PhoneNumberDesc personalNumber_ = null;
+    public boolean hasPersonalNumber() { return hasPersonalNumber; }
+    public PhoneNumberDesc getPersonalNumber() { return personalNumber_; }
+    public PhoneMetadata setPersonalNumber(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasPersonalNumber = true;
+      personalNumber_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc voip = 8;
+    private boolean hasVoip;
+    private PhoneNumberDesc voip_ = null;
+    public boolean hasVoip() { return hasVoip; }
+    public PhoneNumberDesc getVoip() { return voip_; }
+    public PhoneMetadata setVoip(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasVoip = true;
+      voip_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc pager = 21;
+    private boolean hasPager;
+    private PhoneNumberDesc pager_ = null;
+    public boolean hasPager() { return hasPager; }
+    public PhoneNumberDesc getPager() { return pager_; }
+    public PhoneMetadata setPager(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasPager = true;
+      pager_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc uan = 25;
+    private boolean hasUan;
+    private PhoneNumberDesc uan_ = null;
+    public boolean hasUan() { return hasUan; }
+    public PhoneNumberDesc getUan() { return uan_; }
+    public PhoneMetadata setUan(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasUan = true;
+      uan_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc emergency = 27;
+    private boolean hasEmergency;
+    private PhoneNumberDesc emergency_ = null;
+    public boolean hasEmergency() { return hasEmergency; }
+    public PhoneNumberDesc getEmergency() { return emergency_; }
+    public PhoneMetadata setEmergency(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasEmergency = true;
+      emergency_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc voicemail = 28;
+    private boolean hasVoicemail;
+    private PhoneNumberDesc voicemail_ = null;
+    public boolean hasVoicemail() { return hasVoicemail; }
+    public PhoneNumberDesc getVoicemail() { return voicemail_; }
+    public PhoneMetadata setVoicemail(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasVoicemail = true;
+      voicemail_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc short_code = 29;
+    private boolean hasShortCode;
+    private PhoneNumberDesc shortCode_ = null;
+    public boolean hasShortCode() { return hasShortCode; }
+    public PhoneNumberDesc getShortCode() { return shortCode_; }
+    public PhoneMetadata setShortCode(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasShortCode = true;
+      shortCode_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc standard_rate = 30;
+    private boolean hasStandardRate;
+    private PhoneNumberDesc standardRate_ = null;
+    public boolean hasStandardRate() { return hasStandardRate; }
+    public PhoneNumberDesc getStandardRate() { return standardRate_; }
+    public PhoneMetadata setStandardRate(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasStandardRate = true;
+      standardRate_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc carrier_specific = 31;
+    private boolean hasCarrierSpecific;
+    private PhoneNumberDesc carrierSpecific_ = null;
+    public boolean hasCarrierSpecific() { return hasCarrierSpecific; }
+    public PhoneNumberDesc getCarrierSpecific() { return carrierSpecific_; }
+    public PhoneMetadata setCarrierSpecific(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasCarrierSpecific = true;
+      carrierSpecific_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc sms_services = 33;
+    private boolean hasSmsServices;
+    private PhoneNumberDesc smsServices_ = null;
+    public boolean hasSmsServices() { return hasSmsServices; }
+    public PhoneNumberDesc getSmsServices() { return smsServices_; }
+    public PhoneMetadata setSmsServices(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasSmsServices = true;
+      smsServices_ = value;
+      return this;
+    }
+
+    // optional PhoneNumberDesc noInternationalDialling = 24;
+    private boolean hasNoInternationalDialling;
+    private PhoneNumberDesc noInternationalDialling_ = null;
+    public boolean hasNoInternationalDialling() { return hasNoInternationalDialling; }
+    public PhoneNumberDesc getNoInternationalDialling() { return noInternationalDialling_; }
+    public PhoneMetadata setNoInternationalDialling(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasNoInternationalDialling = true;
+      noInternationalDialling_ = value;
+      return this;
+    }
+
+    // required string id = 9;
+    private boolean hasId;
+    private String id_ = "";
+    public boolean hasId() { return hasId; }
+    public String getId() { return id_; }
+    public PhoneMetadata setId(String value) {
+      hasId = true;
+      id_ = value;
+      return this;
+    }
+
+    // optional int32 country_code = 10;
+    private boolean hasCountryCode;
+    private int countryCode_ = 0;
+    public boolean hasCountryCode() { return hasCountryCode; }
+    public int getCountryCode() { return countryCode_; }
+    public PhoneMetadata setCountryCode(int value) {
+      hasCountryCode = true;
+      countryCode_ = value;
+      return this;
+    }
+
+    // optional string international_prefix = 11;
+    private boolean hasInternationalPrefix;
+    private String internationalPrefix_ = "";
+    public boolean hasInternationalPrefix() { return hasInternationalPrefix; }
+    public String getInternationalPrefix() { return internationalPrefix_; }
+    public PhoneMetadata setInternationalPrefix(String value) {
+      hasInternationalPrefix = true;
+      internationalPrefix_ = value;
+      return this;
+    }
+
+    // optional string preferred_international_prefix = 17;
+    private boolean hasPreferredInternationalPrefix;
+    private String preferredInternationalPrefix_ = "";
+    public boolean hasPreferredInternationalPrefix() { return hasPreferredInternationalPrefix; }
+    public String getPreferredInternationalPrefix() { return preferredInternationalPrefix_; }
+    public PhoneMetadata setPreferredInternationalPrefix(String value) {
+      hasPreferredInternationalPrefix = true;
+      preferredInternationalPrefix_ = value;
+      return this;
+    }
+    public PhoneMetadata clearPreferredInternationalPrefix() {
+      hasPreferredInternationalPrefix = false;
+      preferredInternationalPrefix_ = "";
+      return this;
+    }
+
+    // optional string national_prefix = 12;
+    private boolean hasNationalPrefix;
+    private String nationalPrefix_ = "";
+    public boolean hasNationalPrefix() { return hasNationalPrefix; }
+    public String getNationalPrefix() { return nationalPrefix_; }
+    public PhoneMetadata setNationalPrefix(String value) {
+      hasNationalPrefix = true;
+      nationalPrefix_ = value;
+      return this;
+    }
+    public PhoneMetadata clearNationalPrefix() {
+      hasNationalPrefix = false;
+      nationalPrefix_ = "";
+      return this;
+    }
+
+    // optional string preferred_extn_prefix = 13;
+    private boolean hasPreferredExtnPrefix;
+    private String preferredExtnPrefix_ = "";
+    public boolean hasPreferredExtnPrefix() { return hasPreferredExtnPrefix; }
+    public String getPreferredExtnPrefix() { return preferredExtnPrefix_; }
+    public PhoneMetadata setPreferredExtnPrefix(String value) {
+      hasPreferredExtnPrefix = true;
+      preferredExtnPrefix_ = value;
+      return this;
+    }
+    public PhoneMetadata clearPreferredExtnPrefix() {
+      hasPreferredExtnPrefix = false;
+      preferredExtnPrefix_ = "";
+      return this;
+    }
+
+    // optional string national_prefix_for_parsing = 15;
+    private boolean hasNationalPrefixForParsing;
+    private String nationalPrefixForParsing_ = "";
+    public boolean hasNationalPrefixForParsing() { return hasNationalPrefixForParsing; }
+    public String getNationalPrefixForParsing() { return nationalPrefixForParsing_; }
+    public PhoneMetadata setNationalPrefixForParsing(String value) {
+      hasNationalPrefixForParsing = true;
+      nationalPrefixForParsing_ = value;
+      return this;
+    }
+
+    // optional string national_prefix_transform_rule = 16;
+    private boolean hasNationalPrefixTransformRule;
+    private String nationalPrefixTransformRule_ = "";
+    public boolean hasNationalPrefixTransformRule() { return hasNationalPrefixTransformRule; }
+    public String getNationalPrefixTransformRule() { return nationalPrefixTransformRule_; }
+    public PhoneMetadata setNationalPrefixTransformRule(String value) {
+      hasNationalPrefixTransformRule = true;
+      nationalPrefixTransformRule_ = value;
+      return this;
+    }
+    public PhoneMetadata clearNationalPrefixTransformRule() {
+      hasNationalPrefixTransformRule = false;
+      nationalPrefixTransformRule_ = "";
+      return this;
+    }
+
+    // optional bool same_mobile_and_fixed_line_pattern = 18 [default = false];
+    private boolean hasSameMobileAndFixedLinePattern;
+    private boolean sameMobileAndFixedLinePattern_ = false;
+    public boolean hasSameMobileAndFixedLinePattern() { return hasSameMobileAndFixedLinePattern; }
+    public boolean getSameMobileAndFixedLinePattern() { return sameMobileAndFixedLinePattern_; }
+    public PhoneMetadata setSameMobileAndFixedLinePattern(boolean value) {
+      hasSameMobileAndFixedLinePattern = true;
+      sameMobileAndFixedLinePattern_ = value;
+      return this;
+    }
+    public PhoneMetadata clearSameMobileAndFixedLinePattern() {
+      hasSameMobileAndFixedLinePattern = false;
+      sameMobileAndFixedLinePattern_ = false;
+      return this;
+    }
+
+    // repeated NumberFormat number_format = 19;
+    private java.util.List<NumberFormat> numberFormat_ = new java.util.ArrayList<NumberFormat>();
+    public java.util.List<NumberFormat> numberFormats() {
+      return numberFormat_;
+    }
+    public int numberFormatSize() { return numberFormat_.size(); }
+    public NumberFormat getNumberFormat(int index) {
+      return numberFormat_.get(index);
+    }
+    public PhoneMetadata addNumberFormat(NumberFormat value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      numberFormat_.add(value);
+      return this;
+    }
+
+    // repeated NumberFormat intl_number_format = 20;
+    private java.util.List<NumberFormat> intlNumberFormat_ =
+        new java.util.ArrayList<NumberFormat>();
+    public java.util.List<NumberFormat> intlNumberFormats() {
+      return intlNumberFormat_;
+    }
+    public int intlNumberFormatSize() { return intlNumberFormat_.size(); }
+    public NumberFormat getIntlNumberFormat(int index) {
+      return intlNumberFormat_.get(index);
+    }
+
+    public PhoneMetadata addIntlNumberFormat(NumberFormat value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      intlNumberFormat_.add(value);
+      return this;
+    }
+    public PhoneMetadata clearIntlNumberFormat() {
+      intlNumberFormat_.clear();
+      return this;
+    }
+
+    // optional bool main_country_for_code = 22 [default = false];
+    private boolean hasMainCountryForCode;
+    private boolean mainCountryForCode_ = false;
+    public boolean hasMainCountryForCode() { return hasMainCountryForCode; }
+    public boolean isMainCountryForCode() { return mainCountryForCode_; }
+    // Method that lets this class have the same interface as the one generated by Protocol Buffers
+    // which is used by C++ build tools.
+    public boolean getMainCountryForCode() { return mainCountryForCode_; }
+    public PhoneMetadata setMainCountryForCode(boolean value) {
+      hasMainCountryForCode = true;
+      mainCountryForCode_ = value;
+      return this;
+    }
+    public PhoneMetadata clearMainCountryForCode() {
+      hasMainCountryForCode = false;
+      mainCountryForCode_ = false;
+      return this;
+    }
+
+    // optional string leading_digits = 23;
+    private boolean hasLeadingDigits;
+    private String leadingDigits_ = "";
+    public boolean hasLeadingDigits() { return hasLeadingDigits; }
+    public String getLeadingDigits() { return leadingDigits_; }
+    public PhoneMetadata setLeadingDigits(String value) {
+      hasLeadingDigits = true;
+      leadingDigits_ = value;
+      return this;
+    }
+
+    // optional bool leading_zero_possible = 26 [default = false];
+    private boolean hasLeadingZeroPossible;
+    private boolean leadingZeroPossible_ = false;
+    public boolean hasLeadingZeroPossible() { return hasLeadingZeroPossible; }
+    public boolean isLeadingZeroPossible() { return leadingZeroPossible_; }
+    public PhoneMetadata setLeadingZeroPossible(boolean value) {
+      hasLeadingZeroPossible = true;
+      leadingZeroPossible_ = value;
+      return this;
+    }
+    public PhoneMetadata clearLeadingZeroPossible() {
+      hasLeadingZeroPossible = false;
+      leadingZeroPossible_ = false;
+      return this;
+    }
+
+    // optional bool mobile_number_portable_region = 32 [default = false];
+    private boolean hasMobileNumberPortableRegion;
+    private boolean mobileNumberPortableRegion_ = false;
+    public boolean hasMobileNumberPortableRegion() { return hasMobileNumberPortableRegion; }
+    public boolean isMobileNumberPortableRegion() { return mobileNumberPortableRegion_; }
+    public PhoneMetadata setMobileNumberPortableRegion(boolean value) {
+      hasMobileNumberPortableRegion = true;
+      mobileNumberPortableRegion_ = value;
+      return this;
+    }
+    public PhoneMetadata clearMobileNumberPortableRegion() {
+      hasMobileNumberPortableRegion = false;
+      mobileNumberPortableRegion_ = false;
+      return this;
+    }
+
+    public void writeExternal(ObjectOutput objectOutput) throws IOException {
+      objectOutput.writeBoolean(hasGeneralDesc);
+      if (hasGeneralDesc) {
+        generalDesc_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasFixedLine);
+      if (hasFixedLine) {
+        fixedLine_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasMobile);
+      if (hasMobile) {
+        mobile_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasTollFree);
+      if (hasTollFree) {
+        tollFree_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasPremiumRate);
+      if (hasPremiumRate) {
+        premiumRate_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasSharedCost);
+      if (hasSharedCost) {
+        sharedCost_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasPersonalNumber);
+      if (hasPersonalNumber) {
+        personalNumber_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasVoip);
+      if (hasVoip) {
+        voip_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasPager);
+      if (hasPager) {
+        pager_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasUan);
+      if (hasUan) {
+        uan_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasEmergency);
+      if (hasEmergency) {
+        emergency_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasVoicemail);
+      if (hasVoicemail) {
+        voicemail_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasShortCode);
+      if (hasShortCode) {
+        shortCode_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasStandardRate);
+      if (hasStandardRate) {
+        standardRate_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasCarrierSpecific);
+      if (hasCarrierSpecific) {
+        carrierSpecific_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasSmsServices);
+      if (hasSmsServices) {
+        smsServices_.writeExternal(objectOutput);
+      }
+      objectOutput.writeBoolean(hasNoInternationalDialling);
+      if (hasNoInternationalDialling) {
+        noInternationalDialling_.writeExternal(objectOutput);
+      }
+
+      objectOutput.writeUTF(id_);
+      objectOutput.writeInt(countryCode_);
+      objectOutput.writeUTF(internationalPrefix_);
+
+      objectOutput.writeBoolean(hasPreferredInternationalPrefix);
+      if (hasPreferredInternationalPrefix) {
+        objectOutput.writeUTF(preferredInternationalPrefix_);
+      }
+
+      objectOutput.writeBoolean(hasNationalPrefix);
+      if (hasNationalPrefix) {
+        objectOutput.writeUTF(nationalPrefix_);
+      }
+
+      objectOutput.writeBoolean(hasPreferredExtnPrefix);
+      if (hasPreferredExtnPrefix) {
+        objectOutput.writeUTF(preferredExtnPrefix_);
+      }
+
+      objectOutput.writeBoolean(hasNationalPrefixForParsing);
+      if (hasNationalPrefixForParsing) {
+        objectOutput.writeUTF(nationalPrefixForParsing_);
+      }
+
+      objectOutput.writeBoolean(hasNationalPrefixTransformRule);
+      if (hasNationalPrefixTransformRule) {
+        objectOutput.writeUTF(nationalPrefixTransformRule_);
+      }
+
+      objectOutput.writeBoolean(sameMobileAndFixedLinePattern_);
+
+      int numberFormatSize = numberFormatSize();
+      objectOutput.writeInt(numberFormatSize);
+      for (int i = 0; i < numberFormatSize; i++) {
+        numberFormat_.get(i).writeExternal(objectOutput);
+      }
+
+      int intlNumberFormatSize = intlNumberFormatSize();
+      objectOutput.writeInt(intlNumberFormatSize);
+      for (int i = 0; i < intlNumberFormatSize; i++) {
+        intlNumberFormat_.get(i).writeExternal(objectOutput);
+      }
+
+      objectOutput.writeBoolean(mainCountryForCode_);
+
+      objectOutput.writeBoolean(hasLeadingDigits);
+      if (hasLeadingDigits) {
+        objectOutput.writeUTF(leadingDigits_);
+      }
+
+      objectOutput.writeBoolean(leadingZeroPossible_);
+
+      objectOutput.writeBoolean(mobileNumberPortableRegion_);
+    }
+
+    public void readExternal(ObjectInput objectInput) throws IOException {
+      boolean hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setGeneralDesc(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setFixedLine(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setMobile(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setTollFree(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setPremiumRate(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setSharedCost(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setPersonalNumber(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setVoip(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setPager(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setUan(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setEmergency(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setVoicemail(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setShortCode(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setStandardRate(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setCarrierSpecific(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setSmsServices(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
+        setNoInternationalDialling(desc);
+      }
+
+      setId(objectInput.readUTF());
+      setCountryCode(objectInput.readInt());
+      setInternationalPrefix(objectInput.readUTF());
+
+      boolean hasString = objectInput.readBoolean();
+      if (hasString) {
+        setPreferredInternationalPrefix(objectInput.readUTF());
+      }
+
+      hasString = objectInput.readBoolean();
+      if (hasString) {
+        setNationalPrefix(objectInput.readUTF());
+      }
+
+      hasString = objectInput.readBoolean();
+      if (hasString) {
+        setPreferredExtnPrefix(objectInput.readUTF());
+      }
+
+      hasString = objectInput.readBoolean();
+      if (hasString) {
+        setNationalPrefixForParsing(objectInput.readUTF());
+      }
+
+      hasString = objectInput.readBoolean();
+      if (hasString) {
+        setNationalPrefixTransformRule(objectInput.readUTF());
+      }
+
+      setSameMobileAndFixedLinePattern(objectInput.readBoolean());
+
+      int nationalFormatSize = objectInput.readInt();
+      for (int i = 0; i < nationalFormatSize; i++) {
+        NumberFormat numFormat = new NumberFormat();
+        numFormat.readExternal(objectInput);
+        numberFormat_.add(numFormat);
+      }
+
+      int intlNumberFormatSize = objectInput.readInt();
+      for (int i = 0; i < intlNumberFormatSize; i++) {
+        NumberFormat numFormat = new NumberFormat();
+        numFormat.readExternal(objectInput);
+        intlNumberFormat_.add(numFormat);
+      }
+
+      setMainCountryForCode(objectInput.readBoolean());
+
+      hasString = objectInput.readBoolean();
+      if (hasString) {
+        setLeadingDigits(objectInput.readUTF());
+      }
+
+      setLeadingZeroPossible(objectInput.readBoolean());
+
+      setMobileNumberPortableRegion(objectInput.readBoolean());
+    }
+  }
+
+  /**
+ * @hide This class is not part of the Android public SDK API
+ */
+public static class PhoneMetadataCollection implements Externalizable {
+    private static final long serialVersionUID = 1;
+    public PhoneMetadataCollection() {}
+
+    /**
+     * Provides a dummy builder.
+     *
+     * @see NumberFormat.Builder
+     * @hide This class is not part of the Android public SDK API
+     */
+    public static final class Builder extends PhoneMetadataCollection {
+      public PhoneMetadataCollection build() {
+        return this;
+      }
+    }
+    public static Builder newBuilder() {
+      return new Builder();
+    }
+
+    // repeated PhoneMetadata metadata = 1;
+    private java.util.List<PhoneMetadata> metadata_ = new java.util.ArrayList<PhoneMetadata>();
+
+    public java.util.List<PhoneMetadata> getMetadataList() {
+      return metadata_;
+    }
+    public int getMetadataCount() { return metadata_.size(); }
+
+    public PhoneMetadataCollection addMetadata(PhoneMetadata value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      metadata_.add(value);
+      return this;
+    }
+
+    public void writeExternal(ObjectOutput objectOutput) throws IOException {
+      int size = getMetadataCount();
+      objectOutput.writeInt(size);
+      for (int i = 0; i < size; i++) {
+        metadata_.get(i).writeExternal(objectOutput);
+      }
+    }
+
+    public void readExternal(ObjectInput objectInput) throws IOException {
+      int size = objectInput.readInt();
+      for (int i = 0; i < size; i++) {
+        PhoneMetadata metadata = new PhoneMetadata();
+        metadata.readExternal(objectInput);
+        metadata_.add(metadata);
+      }
+    }
+
+    public PhoneMetadataCollection clear() {
+      metadata_.clear();
+      return this;
+    }
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/Phonenumber.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/Phonenumber.java
new file mode 100644
index 0000000..b69af99
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/Phonenumber.java
@@ -0,0 +1,296 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2010 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Definition of the class representing international telephone numbers. This class is hand-created
+ * based on the class file compiled from phonenumber.proto. Please refer to that file for detailed
+ * descriptions of the meaning of each field.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import java.io.Serializable;
+
+/**
+ * @hide This class is not part of the Android public SDK API
+ */
+public final class Phonenumber {
+  private Phonenumber() {}
+  /**
+ * @hide This class is not part of the Android public SDK API
+ */
+public static class PhoneNumber implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * @hide This class is not part of the Android public SDK API
+     */
+    public enum CountryCodeSource {
+      FROM_NUMBER_WITH_PLUS_SIGN,
+      FROM_NUMBER_WITH_IDD,
+      FROM_NUMBER_WITHOUT_PLUS_SIGN,
+      FROM_DEFAULT_COUNTRY,
+      UNSPECIFIED
+    }
+
+    public PhoneNumber() {
+      countryCodeSource_ = CountryCodeSource.UNSPECIFIED;
+    }
+
+    // required int32 country_code = 1;
+    private boolean hasCountryCode;
+    private int countryCode_ = 0;
+    public boolean hasCountryCode() { return hasCountryCode; }
+    public int getCountryCode() { return countryCode_; }
+    public PhoneNumber setCountryCode(int value) {
+      hasCountryCode = true;
+      countryCode_ = value;
+      return this;
+    }
+    public PhoneNumber clearCountryCode() {
+      hasCountryCode = false;
+      countryCode_ = 0;
+      return this;
+    }
+
+    // required uint64 national_number = 2;
+    private boolean hasNationalNumber;
+    private long nationalNumber_ = 0L;
+    public boolean hasNationalNumber() { return hasNationalNumber; }
+    public long getNationalNumber() { return nationalNumber_; }
+    public PhoneNumber setNationalNumber(long value) {
+      hasNationalNumber = true;
+      nationalNumber_ = value;
+      return this;
+    }
+    public PhoneNumber clearNationalNumber() {
+      hasNationalNumber = false;
+      nationalNumber_ = 0L;
+      return this;
+    }
+
+    // optional string extension = 3;
+    private boolean hasExtension;
+    private java.lang.String extension_ = "";
+    public boolean hasExtension() { return hasExtension; }
+    public String getExtension() { return extension_; }
+    public PhoneNumber setExtension(String value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasExtension = true;
+      extension_ = value;
+      return this;
+    }
+    public PhoneNumber clearExtension() {
+      hasExtension = false;
+      extension_ = "";
+      return this;
+    }
+
+    // optional bool italian_leading_zero = 4;
+    private boolean hasItalianLeadingZero;
+    private boolean italianLeadingZero_ = false;
+    public boolean hasItalianLeadingZero() { return hasItalianLeadingZero; }
+    public boolean isItalianLeadingZero() { return italianLeadingZero_; }
+    public PhoneNumber setItalianLeadingZero(boolean value) {
+      hasItalianLeadingZero = true;
+      italianLeadingZero_ = value;
+      return this;
+    }
+    public PhoneNumber clearItalianLeadingZero() {
+      hasItalianLeadingZero = false;
+      italianLeadingZero_ = false;
+      return this;
+    }
+
+    // optional int32 number_of_leading_zeros = 8 [default = 1];
+    private boolean hasNumberOfLeadingZeros;
+    private int numberOfLeadingZeros_ = 1;
+    public boolean hasNumberOfLeadingZeros() { return hasNumberOfLeadingZeros; }
+    public int getNumberOfLeadingZeros() { return numberOfLeadingZeros_; }
+    public PhoneNumber setNumberOfLeadingZeros(int value) {
+      hasNumberOfLeadingZeros = true;
+      numberOfLeadingZeros_ = value;
+      return this;
+    }
+    public PhoneNumber clearNumberOfLeadingZeros() {
+      hasNumberOfLeadingZeros = false;
+      numberOfLeadingZeros_ = 1;
+      return this;
+    }
+
+    // optional string raw_input = 5;
+    private boolean hasRawInput;
+    private String rawInput_ = "";
+    public boolean hasRawInput() { return hasRawInput; }
+    public String getRawInput() { return rawInput_; }
+    public PhoneNumber setRawInput(String value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasRawInput = true;
+      rawInput_ = value;
+      return this;
+    }
+    public PhoneNumber clearRawInput() {
+      hasRawInput = false;
+      rawInput_ = "";
+      return this;
+    }
+
+    // optional CountryCodeSource country_code_source = 6;
+    private boolean hasCountryCodeSource;
+    private CountryCodeSource countryCodeSource_;
+    public boolean hasCountryCodeSource() { return hasCountryCodeSource; }
+    public CountryCodeSource getCountryCodeSource() { return countryCodeSource_; }
+    public PhoneNumber setCountryCodeSource(CountryCodeSource value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasCountryCodeSource = true;
+      countryCodeSource_ = value;
+      return this;
+    }
+    public PhoneNumber clearCountryCodeSource() {
+      hasCountryCodeSource = false;
+      countryCodeSource_ = CountryCodeSource.UNSPECIFIED;
+      return this;
+    }
+
+    // optional string preferred_domestic_carrier_code = 7;
+    private boolean hasPreferredDomesticCarrierCode;
+    private java.lang.String preferredDomesticCarrierCode_ = "";
+    public boolean hasPreferredDomesticCarrierCode() { return hasPreferredDomesticCarrierCode; }
+    public String getPreferredDomesticCarrierCode() { return preferredDomesticCarrierCode_; }
+    public PhoneNumber setPreferredDomesticCarrierCode(String value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasPreferredDomesticCarrierCode = true;
+      preferredDomesticCarrierCode_ = value;
+      return this;
+    }
+    public PhoneNumber clearPreferredDomesticCarrierCode() {
+      hasPreferredDomesticCarrierCode = false;
+      preferredDomesticCarrierCode_ = "";
+      return this;
+    }
+
+    public final PhoneNumber clear() {
+      clearCountryCode();
+      clearNationalNumber();
+      clearExtension();
+      clearItalianLeadingZero();
+      clearNumberOfLeadingZeros();
+      clearRawInput();
+      clearCountryCodeSource();
+      clearPreferredDomesticCarrierCode();
+      return this;
+    }
+
+    public PhoneNumber mergeFrom(PhoneNumber other) {
+      if (other.hasCountryCode()) {
+        setCountryCode(other.getCountryCode());
+      }
+      if (other.hasNationalNumber()) {
+        setNationalNumber(other.getNationalNumber());
+      }
+      if (other.hasExtension()) {
+        setExtension(other.getExtension());
+      }
+      if (other.hasItalianLeadingZero()) {
+        setItalianLeadingZero(other.isItalianLeadingZero());
+      }
+      if (other.hasNumberOfLeadingZeros()) {
+        setNumberOfLeadingZeros(other.getNumberOfLeadingZeros());
+      }
+      if (other.hasRawInput()) {
+        setRawInput(other.getRawInput());
+      }
+      if (other.hasCountryCodeSource()) {
+        setCountryCodeSource(other.getCountryCodeSource());
+      }
+      if (other.hasPreferredDomesticCarrierCode()) {
+        setPreferredDomesticCarrierCode(other.getPreferredDomesticCarrierCode());
+      }
+      return this;
+    }
+
+    public boolean exactlySameAs(PhoneNumber other) {
+      if (other == null) {
+        return false;
+      }
+      if (this == other) {
+        return true;
+      }
+      return (countryCode_ == other.countryCode_ && nationalNumber_ == other.nationalNumber_ &&
+          extension_.equals(other.extension_) && italianLeadingZero_ == other.italianLeadingZero_ &&
+          numberOfLeadingZeros_ == other.numberOfLeadingZeros_ &&
+          rawInput_.equals(other.rawInput_) && countryCodeSource_ == other.countryCodeSource_ &&
+          preferredDomesticCarrierCode_.equals(other.preferredDomesticCarrierCode_) &&
+          hasPreferredDomesticCarrierCode() == other.hasPreferredDomesticCarrierCode());
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      return (that instanceof PhoneNumber) && exactlySameAs((PhoneNumber) that);
+    }
+
+    @Override
+    public int hashCode() {
+      // Simplified rendition of the hashCode function automatically generated from the proto
+      // compiler with java_generate_equals_and_hash set to true. We are happy with unset values to
+      // be considered equal to their explicitly-set equivalents, so don't check if any value is
+      // unknown. The only exception to this is the preferred domestic carrier code.
+      int hash = 41;
+      hash = (53 * hash) + getCountryCode();
+      hash = (53 * hash) + Long.valueOf(getNationalNumber()).hashCode();
+      hash = (53 * hash) + getExtension().hashCode();
+      hash = (53 * hash) + (isItalianLeadingZero() ? 1231 : 1237);
+      hash = (53 * hash) + getNumberOfLeadingZeros();
+      hash = (53 * hash) + getRawInput().hashCode();
+      hash = (53 * hash) + getCountryCodeSource().hashCode();
+      hash = (53 * hash) + getPreferredDomesticCarrierCode().hashCode();
+      hash = (53 * hash) + (hasPreferredDomesticCarrierCode() ? 1231 : 1237);
+      return hash;
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder outputString = new StringBuilder();
+      outputString.append("Country Code: ").append(countryCode_);
+      outputString.append(" National Number: ").append(nationalNumber_);
+      if (hasItalianLeadingZero() && isItalianLeadingZero()) {
+        outputString.append(" Leading Zero(s): true");
+      }
+      if (hasNumberOfLeadingZeros()) {
+        outputString.append(" Number of leading zeros: ").append(numberOfLeadingZeros_);
+      }
+      if (hasExtension()) {
+        outputString.append(" Extension: ").append(extension_);
+      }
+      if (hasCountryCodeSource()) {
+        outputString.append(" Country Code Source: ").append(countryCodeSource_);
+      }
+      if (hasPreferredDomesticCarrierCode()) {
+        outputString.append(" Preferred Domestic Carrier Code: ").
+            append(preferredDomesticCarrierCode_);
+      }
+      return outputString.toString();
+    }
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java
new file mode 100644
index 0000000..ea2f29c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java
@@ -0,0 +1,562 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2013 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.internal.MatcherApi;
+import com.android.i18n.phonenumbers.internal.RegexBasedMatcher;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneNumberDesc;
+import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Methods for getting information about short phone numbers, such as short codes and emergency
+ * numbers. Note that most commercial short numbers are not handled here, but by the
+ * {@link PhoneNumberUtil}.
+ *
+ * @author Shaopeng Jia
+ * @author David Yonge-Mallo
+ * @hide This class is not part of the Android public SDK API
+ */
+public class ShortNumberInfo {
+  private static final Logger logger = Logger.getLogger(ShortNumberInfo.class.getName());
+
+  private static final ShortNumberInfo INSTANCE =
+      new ShortNumberInfo(RegexBasedMatcher.create());
+
+  // In these countries, if extra digits are added to an emergency number, it no longer connects
+  // to the emergency service.
+  private static final Set<String> REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT =
+      new HashSet<String>();
+  static {
+    REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT.add("BR");
+    REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT.add("CL");
+    REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT.add("NI");
+  }
+
+  /** Cost categories of short numbers. 
+ * @hide This class is not part of the Android public SDK API*/
+  public enum ShortNumberCost {
+    TOLL_FREE,
+    STANDARD_RATE,
+    PREMIUM_RATE,
+    UNKNOWN_COST;
+  }
+
+  /** Returns the singleton instance of the ShortNumberInfo. */
+  public static ShortNumberInfo getInstance() {
+    return INSTANCE;
+  }
+
+  // MatcherApi supports the basic matching method for checking if a given national number matches
+  // a national number pattern defined in the given {@code PhoneNumberDesc}.
+  private final MatcherApi matcherApi;
+
+  // A mapping from a country calling code to the region codes which denote the region represented
+  // by that country calling code. In the case of multiple regions sharing a calling code, such as
+  // the NANPA regions, the one indicated with "isMainCountryForCode" in the metadata should be
+  // first.
+  private final Map<Integer, List<String>> countryCallingCodeToRegionCodeMap;
+
+  // @VisibleForTesting
+  ShortNumberInfo(MatcherApi matcherApi) {
+    this.matcherApi = matcherApi;
+    // TODO: Create ShortNumberInfo for a given map
+    this.countryCallingCodeToRegionCodeMap =
+        CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap();
+  }
+
+  /**
+   * Returns a list with the region codes that match the specific country calling code. For
+   * non-geographical country calling codes, the region code 001 is returned. Also, in the case
+   * of no region code being found, an empty list is returned.
+   */
+  private List<String> getRegionCodesForCountryCode(int countryCallingCode) {
+    List<String> regionCodes = countryCallingCodeToRegionCodeMap.get(countryCallingCode);
+    return Collections.unmodifiableList(regionCodes == null ? new ArrayList<String>(0)
+                                                            : regionCodes);
+  }
+
+  /**
+   * Helper method to check that the country calling code of the number matches the region it's
+   * being dialed from.
+   */
+  private boolean regionDialingFromMatchesNumber(PhoneNumber number,
+      String regionDialingFrom) {
+    List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode());
+    return regionCodes.contains(regionDialingFrom);
+  }
+
+  /**
+   * Check whether a short number is a possible number when dialed from the given region. This
+   * provides a more lenient check than {@link #isValidShortNumberForRegion}.
+   *
+   * @param number the short number to check
+   * @param regionDialingFrom the region from which the number is dialed
+   * @return whether the number is a possible short number
+   */
+  public boolean isPossibleShortNumberForRegion(PhoneNumber number, String regionDialingFrom) {
+    if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) {
+      return false;
+    }
+    PhoneMetadata phoneMetadata =
+        MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom);
+    if (phoneMetadata == null) {
+      return false;
+    }
+    int numberLength = getNationalSignificantNumber(number).length();
+    return phoneMetadata.getGeneralDesc().getPossibleLengthList().contains(numberLength);
+  }
+
+  /**
+   * Check whether a short number is a possible number. If a country calling code is shared by
+   * multiple regions, this returns true if it's possible in any of them. This provides a more
+   * lenient check than {@link #isValidShortNumber}. See {@link
+   * #isPossibleShortNumberForRegion(PhoneNumber, String)} for details.
+   *
+   * @param number the short number to check
+   * @return whether the number is a possible short number
+   */
+  public boolean isPossibleShortNumber(PhoneNumber number) {
+    List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode());
+    int shortNumberLength = getNationalSignificantNumber(number).length();
+    for (String region : regionCodes) {
+      PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(region);
+      if (phoneMetadata == null) {
+        continue;
+      }
+      if (phoneMetadata.getGeneralDesc().getPossibleLengthList().contains(shortNumberLength)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Tests whether a short number matches a valid pattern in a region. Note that this doesn't verify
+   * the number is actually in use, which is impossible to tell by just looking at the number
+   * itself.
+   *
+   * @param number the short number for which we want to test the validity
+   * @param regionDialingFrom the region from which the number is dialed
+   * @return whether the short number matches a valid pattern
+   */
+  public boolean isValidShortNumberForRegion(PhoneNumber number, String regionDialingFrom) {
+    if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) {
+      return false;
+    }
+    PhoneMetadata phoneMetadata =
+        MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom);
+    if (phoneMetadata == null) {
+      return false;
+    }
+    String shortNumber = getNationalSignificantNumber(number);
+    PhoneNumberDesc generalDesc = phoneMetadata.getGeneralDesc();
+    if (!matchesPossibleNumberAndNationalNumber(shortNumber, generalDesc)) {
+      return false;
+    }
+    PhoneNumberDesc shortNumberDesc = phoneMetadata.getShortCode();
+    return matchesPossibleNumberAndNationalNumber(shortNumber, shortNumberDesc);
+  }
+
+  /**
+   * Tests whether a short number matches a valid pattern. If a country calling code is shared by
+   * multiple regions, this returns true if it's valid in any of them. Note that this doesn't verify
+   * the number is actually in use, which is impossible to tell by just looking at the number
+   * itself. See {@link #isValidShortNumberForRegion(PhoneNumber, String)} for details.
+   *
+   * @param number the short number for which we want to test the validity
+   * @return whether the short number matches a valid pattern
+   */
+  public boolean isValidShortNumber(PhoneNumber number) {
+    List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode());
+    String regionCode = getRegionCodeForShortNumberFromRegionList(number, regionCodes);
+    if (regionCodes.size() > 1 && regionCode != null) {
+      // If a matching region had been found for the phone number from among two or more regions,
+      // then we have already implicitly verified its validity for that region.
+      return true;
+    }
+    return isValidShortNumberForRegion(number, regionCode);
+  }
+
+  /**
+   * Gets the expected cost category of a short number when dialed from a region (however, nothing
+   * is implied about its validity). If it is important that the number is valid, then its validity
+   * must first be checked using {@link #isValidShortNumberForRegion}. Note that emergency numbers
+   * are always considered toll-free. Example usage:
+   * <pre>{@code
+   * // The region for which the number was parsed and the region we subsequently check against
+   * // need not be the same. Here we parse the number in the US and check it for Canada.
+   * PhoneNumber number = phoneUtil.parse("110", "US");
+   * ...
+   * String regionCode = "CA";
+   * ShortNumberInfo shortInfo = ShortNumberInfo.getInstance();
+   * if (shortInfo.isValidShortNumberForRegion(shortNumber, regionCode)) {
+   *   ShortNumberCost cost = shortInfo.getExpectedCostForRegion(number, regionCode);
+   *   // Do something with the cost information here.
+   * }}</pre>
+   *
+   * @param number the short number for which we want to know the expected cost category
+   * @param regionDialingFrom the region from which the number is dialed
+   * @return the expected cost category for that region of the short number. Returns UNKNOWN_COST if
+   *     the number does not match a cost category. Note that an invalid number may match any cost
+   *     category.
+   */
+  public ShortNumberCost getExpectedCostForRegion(PhoneNumber number, String regionDialingFrom) {
+    if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) {
+      return ShortNumberCost.UNKNOWN_COST;
+    }
+    // Note that regionDialingFrom may be null, in which case phoneMetadata will also be null.
+    PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(
+        regionDialingFrom);
+    if (phoneMetadata == null) {
+      return ShortNumberCost.UNKNOWN_COST;
+    }
+
+    String shortNumber = getNationalSignificantNumber(number);
+
+    // The possible lengths are not present for a particular sub-type if they match the general
+    // description; for this reason, we check the possible lengths against the general description
+    // first to allow an early exit if possible.
+    if (!phoneMetadata.getGeneralDesc().getPossibleLengthList().contains(shortNumber.length())) {
+      return ShortNumberCost.UNKNOWN_COST;
+    }
+
+    // The cost categories are tested in order of decreasing expense, since if for some reason the
+    // patterns overlap the most expensive matching cost category should be returned.
+    if (matchesPossibleNumberAndNationalNumber(shortNumber, phoneMetadata.getPremiumRate())) {
+      return ShortNumberCost.PREMIUM_RATE;
+    }
+    if (matchesPossibleNumberAndNationalNumber(shortNumber, phoneMetadata.getStandardRate())) {
+      return ShortNumberCost.STANDARD_RATE;
+    }
+    if (matchesPossibleNumberAndNationalNumber(shortNumber, phoneMetadata.getTollFree())) {
+      return ShortNumberCost.TOLL_FREE;
+    }
+    if (isEmergencyNumber(shortNumber, regionDialingFrom)) {
+      // Emergency numbers are implicitly toll-free.
+      return ShortNumberCost.TOLL_FREE;
+    }
+    return ShortNumberCost.UNKNOWN_COST;
+  }
+
+  /**
+   * Gets the expected cost category of a short number (however, nothing is implied about its
+   * validity). If the country calling code is unique to a region, this method behaves exactly the
+   * same as {@link #getExpectedCostForRegion(PhoneNumber, String)}. However, if the country
+   * calling code is shared by multiple regions, then it returns the highest cost in the sequence
+   * PREMIUM_RATE, UNKNOWN_COST, STANDARD_RATE, TOLL_FREE. The reason for the position of
+   * UNKNOWN_COST in this order is that if a number is UNKNOWN_COST in one region but STANDARD_RATE
+   * or TOLL_FREE in another, its expected cost cannot be estimated as one of the latter since it
+   * might be a PREMIUM_RATE number.
+   * <p>
+   * For example, if a number is STANDARD_RATE in the US, but TOLL_FREE in Canada, the expected
+   * cost returned by this method will be STANDARD_RATE, since the NANPA countries share the same
+   * country calling code.
+   * <p>
+   * Note: If the region from which the number is dialed is known, it is highly preferable to call
+   * {@link #getExpectedCostForRegion(PhoneNumber, String)} instead.
+   *
+   * @param number the short number for which we want to know the expected cost category
+   * @return the highest expected cost category of the short number in the region(s) with the given
+   *     country calling code
+   */
+  public ShortNumberCost getExpectedCost(PhoneNumber number) {
+    List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode());
+    if (regionCodes.size() == 0) {
+      return ShortNumberCost.UNKNOWN_COST;
+    }
+    if (regionCodes.size() == 1) {
+      return getExpectedCostForRegion(number, regionCodes.get(0));
+    }
+    ShortNumberCost cost = ShortNumberCost.TOLL_FREE;
+    for (String regionCode : regionCodes) {
+      ShortNumberCost costForRegion = getExpectedCostForRegion(number, regionCode);
+      switch (costForRegion) {
+        case PREMIUM_RATE:
+          return ShortNumberCost.PREMIUM_RATE;
+        case UNKNOWN_COST:
+          cost = ShortNumberCost.UNKNOWN_COST;
+          break;
+        case STANDARD_RATE:
+          if (cost != ShortNumberCost.UNKNOWN_COST) {
+            cost = ShortNumberCost.STANDARD_RATE;
+          }
+          break;
+        case TOLL_FREE:
+          // Do nothing.
+          break;
+        default:
+          logger.log(Level.SEVERE, "Unrecognised cost for region: " + costForRegion);
+      }
+    }
+    return cost;
+  }
+
+  // Helper method to get the region code for a given phone number, from a list of possible region
+  // codes. If the list contains more than one region, the first region for which the number is
+  // valid is returned.
+  private String getRegionCodeForShortNumberFromRegionList(PhoneNumber number,
+                                                           List<String> regionCodes) {
+    if (regionCodes.size() == 0) {
+      return null;
+    } else if (regionCodes.size() == 1) {
+      return regionCodes.get(0);
+    }
+    String nationalNumber = getNationalSignificantNumber(number);
+    for (String regionCode : regionCodes) {
+      PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);
+      if (phoneMetadata != null
+          && matchesPossibleNumberAndNationalNumber(nationalNumber, phoneMetadata.getShortCode())) {
+        // The number is valid for this region.
+        return regionCode;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Convenience method to get a list of what regions the library has metadata for.
+   */
+  Set<String> getSupportedRegions() {
+    return MetadataManager.getSupportedShortNumberRegions();
+  }
+
+  /**
+   * Gets a valid short number for the specified region.
+   *
+   * @param regionCode the region for which an example short number is needed
+   * @return a valid short number for the specified region. Returns an empty string when the
+   *     metadata does not contain such information.
+   */
+  // @VisibleForTesting
+  String getExampleShortNumber(String regionCode) {
+    PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);
+    if (phoneMetadata == null) {
+      return "";
+    }
+    PhoneNumberDesc desc = phoneMetadata.getShortCode();
+    if (desc.hasExampleNumber()) {
+      return desc.getExampleNumber();
+    }
+    return "";
+  }
+
+  /**
+   * Gets a valid short number for the specified cost category.
+   *
+   * @param regionCode the region for which an example short number is needed
+   * @param cost the cost category of number that is needed
+   * @return a valid short number for the specified region and cost category. Returns an empty
+   *     string when the metadata does not contain such information, or the cost is UNKNOWN_COST.
+   */
+  // @VisibleForTesting
+  String getExampleShortNumberForCost(String regionCode, ShortNumberCost cost) {
+    PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);
+    if (phoneMetadata == null) {
+      return "";
+    }
+    PhoneNumberDesc desc = null;
+    switch (cost) {
+      case TOLL_FREE:
+        desc = phoneMetadata.getTollFree();
+        break;
+      case STANDARD_RATE:
+        desc = phoneMetadata.getStandardRate();
+        break;
+      case PREMIUM_RATE:
+        desc = phoneMetadata.getPremiumRate();
+        break;
+      default:
+        // UNKNOWN_COST numbers are computed by the process of elimination from the other cost
+        // categories.
+    }
+    if (desc != null && desc.hasExampleNumber()) {
+      return desc.getExampleNumber();
+    }
+    return "";
+  }
+
+  /**
+   * Returns true if the given number, exactly as dialed, might be used to connect to an emergency
+   * service in the given region.
+   * <p>
+   * This method accepts a string, rather than a PhoneNumber, because it needs to distinguish
+   * cases such as "+1 911" and "911", where the former may not connect to an emergency service in
+   * all cases but the latter would. This method takes into account cases where the number might
+   * contain formatting, or might have additional digits appended (when it is okay to do that in
+   * the specified region).
+   *
+   * @param number the phone number to test
+   * @param regionCode the region where the phone number is being dialed
+   * @return whether the number might be used to connect to an emergency service in the given region
+   */
+  public boolean connectsToEmergencyNumber(String number, String regionCode) {
+    return matchesEmergencyNumberHelper(number, regionCode, true /* allows prefix match */);
+  }
+
+  /**
+   * Returns true if the given number exactly matches an emergency service number in the given
+   * region.
+   * <p>
+   * This method takes into account cases where the number might contain formatting, but doesn't
+   * allow additional digits to be appended. Note that {@code isEmergencyNumber(number, region)}
+   * implies {@code connectsToEmergencyNumber(number, region)}.
+   *
+   * @param number the phone number to test
+   * @param regionCode the region where the phone number is being dialed
+   * @return whether the number exactly matches an emergency services number in the given region
+   */
+  public boolean isEmergencyNumber(CharSequence number, String regionCode) {
+    return matchesEmergencyNumberHelper(number, regionCode, false /* doesn't allow prefix match */);
+  }
+
+  private boolean matchesEmergencyNumberHelper(CharSequence number, String regionCode,
+      boolean allowPrefixMatch) {
+    CharSequence possibleNumber = PhoneNumberUtil.extractPossibleNumber(number);
+    if (PhoneNumberUtil.PLUS_CHARS_PATTERN.matcher(possibleNumber).lookingAt()) {
+      // Returns false if the number starts with a plus sign. We don't believe dialing the country
+      // code before emergency numbers (e.g. +1911) works, but later, if that proves to work, we can
+      // add additional logic here to handle it.
+      return false;
+    }
+    PhoneMetadata metadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);
+    if (metadata == null || !metadata.hasEmergency()) {
+      return false;
+    }
+
+    String normalizedNumber = PhoneNumberUtil.normalizeDigitsOnly(possibleNumber);
+    boolean allowPrefixMatchForRegion =
+        allowPrefixMatch && !REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT.contains(regionCode);
+    return matcherApi.matchNationalNumber(normalizedNumber, metadata.getEmergency(),
+        allowPrefixMatchForRegion);
+  }
+
+  /**
+   * Given a valid short number, determines whether it is carrier-specific (however, nothing is
+   * implied about its validity). Carrier-specific numbers may connect to a different end-point, or
+   * not connect at all, depending on the user's carrier. If it is important that the number is
+   * valid, then its validity must first be checked using {@link #isValidShortNumber} or
+   * {@link #isValidShortNumberForRegion}.
+   *
+   * @param number  the valid short number to check
+   * @return whether the short number is carrier-specific, assuming the input was a valid short
+   *     number
+   */
+  public boolean isCarrierSpecific(PhoneNumber number) {
+    List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode());
+    String regionCode = getRegionCodeForShortNumberFromRegionList(number, regionCodes);
+    String nationalNumber = getNationalSignificantNumber(number);
+    PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);
+    return (phoneMetadata != null)
+        && (matchesPossibleNumberAndNationalNumber(nationalNumber,
+                phoneMetadata.getCarrierSpecific()));
+  }
+
+  /**
+   * Given a valid short number, determines whether it is carrier-specific when dialed from the
+   * given region (however, nothing is implied about its validity). Carrier-specific numbers may
+   * connect to a different end-point, or not connect at all, depending on the user's carrier. If
+   * it is important that the number is valid, then its validity must first be checked using
+   * {@link #isValidShortNumber} or {@link #isValidShortNumberForRegion}. Returns false if the
+   * number doesn't match the region provided.
+   *
+   * @param number  the valid short number to check
+   * @param regionDialingFrom  the region from which the number is dialed
+   * @return  whether the short number is carrier-specific in the provided region, assuming the
+   *     input was a valid short number
+   */
+  public boolean isCarrierSpecificForRegion(PhoneNumber number, String regionDialingFrom) {
+    if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) {
+      return false;
+    }
+    String nationalNumber = getNationalSignificantNumber(number);
+    PhoneMetadata phoneMetadata =
+        MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom);
+    return (phoneMetadata != null)
+        && (matchesPossibleNumberAndNationalNumber(nationalNumber,
+                phoneMetadata.getCarrierSpecific()));
+  }
+
+  /**
+   * Given a valid short number, determines whether it is an SMS service (however, nothing is
+   * implied about its validity). An SMS service is where the primary or only intended usage is to
+   * receive and/or send text messages (SMSs). This includes MMS as MMS numbers downgrade to SMS if
+   * the other party isn't MMS-capable. If it is important that the number is valid, then its
+   * validity must first be checked using {@link #isValidShortNumber} or {@link
+   * #isValidShortNumberForRegion}. Returns false if the number doesn't match the region provided.
+   *
+   * @param number  the valid short number to check
+   * @param regionDialingFrom  the region from which the number is dialed
+   * @return  whether the short number is an SMS service in the provided region, assuming the input
+   *     was a valid short number
+   */
+  public boolean isSmsServiceForRegion(PhoneNumber number, String regionDialingFrom) {
+    if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) {
+      return false;
+    }
+    PhoneMetadata phoneMetadata =
+        MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom);
+    return phoneMetadata != null
+        && matchesPossibleNumberAndNationalNumber(getNationalSignificantNumber(number),
+            phoneMetadata.getSmsServices());
+  }
+
+  /**
+   * Gets the national significant number of the a phone number. Note a national significant number
+   * doesn't contain a national prefix or any formatting.
+   * <p>
+   * This is a temporary duplicate of the {@code getNationalSignificantNumber} method from
+   * {@code PhoneNumberUtil}. Ultimately a canonical static version should exist in a separate
+   * utility class (to prevent {@code ShortNumberInfo} needing to depend on PhoneNumberUtil).
+   *
+   * @param number  the phone number for which the national significant number is needed
+   * @return  the national significant number of the PhoneNumber object passed in
+   */
+  private static String getNationalSignificantNumber(PhoneNumber number) {
+    // If leading zero(s) have been set, we prefix this now. Note this is not a national prefix.
+    StringBuilder nationalNumber = new StringBuilder();
+    if (number.isItalianLeadingZero()) {
+      char[] zeros = new char[number.getNumberOfLeadingZeros()];
+      Arrays.fill(zeros, '0');
+      nationalNumber.append(new String(zeros));
+    }
+    nationalNumber.append(number.getNationalNumber());
+    return nationalNumber.toString();
+  }
+
+  // TODO: Once we have benchmarked ShortNumberInfo, consider if it is worth keeping
+  // this performance optimization.
+  private boolean matchesPossibleNumberAndNationalNumber(String number,
+      PhoneNumberDesc numberDesc) {
+    if (numberDesc.getPossibleLengthCount() > 0
+        && !numberDesc.getPossibleLengthList().contains(number.length())) {
+      return false;
+    }
+    return matcherApi.matchNationalNumber(number, numberDesc, false);
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java
new file mode 100644
index 0000000..05b94d6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java
@@ -0,0 +1,280 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2013 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This file is automatically generated by {@link BuildMetadataProtoFromXml}.
+ * Please don't modify it directly.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @hide This class is not part of the Android public SDK API
+ */
+public class ShortNumbersRegionCodeSet {
+  // A set of all region codes for which data is available.
+  static Set<String> getRegionCodeSet() {
+    // The capacity is set to 320 as there are 240 different entries,
+    // and this offers a load factor of roughly 0.75.
+    Set<String> regionCodeSet = new HashSet<String>(320);
+
+    regionCodeSet.add("AC");
+    regionCodeSet.add("AD");
+    regionCodeSet.add("AE");
+    regionCodeSet.add("AF");
+    regionCodeSet.add("AG");
+    regionCodeSet.add("AI");
+    regionCodeSet.add("AL");
+    regionCodeSet.add("AM");
+    regionCodeSet.add("AO");
+    regionCodeSet.add("AR");
+    regionCodeSet.add("AS");
+    regionCodeSet.add("AT");
+    regionCodeSet.add("AU");
+    regionCodeSet.add("AW");
+    regionCodeSet.add("AX");
+    regionCodeSet.add("AZ");
+    regionCodeSet.add("BA");
+    regionCodeSet.add("BB");
+    regionCodeSet.add("BD");
+    regionCodeSet.add("BE");
+    regionCodeSet.add("BF");
+    regionCodeSet.add("BG");
+    regionCodeSet.add("BH");
+    regionCodeSet.add("BI");
+    regionCodeSet.add("BJ");
+    regionCodeSet.add("BL");
+    regionCodeSet.add("BM");
+    regionCodeSet.add("BN");
+    regionCodeSet.add("BO");
+    regionCodeSet.add("BQ");
+    regionCodeSet.add("BR");
+    regionCodeSet.add("BS");
+    regionCodeSet.add("BT");
+    regionCodeSet.add("BW");
+    regionCodeSet.add("BY");
+    regionCodeSet.add("BZ");
+    regionCodeSet.add("CA");
+    regionCodeSet.add("CC");
+    regionCodeSet.add("CD");
+    regionCodeSet.add("CF");
+    regionCodeSet.add("CG");
+    regionCodeSet.add("CH");
+    regionCodeSet.add("CI");
+    regionCodeSet.add("CK");
+    regionCodeSet.add("CL");
+    regionCodeSet.add("CM");
+    regionCodeSet.add("CN");
+    regionCodeSet.add("CO");
+    regionCodeSet.add("CR");
+    regionCodeSet.add("CU");
+    regionCodeSet.add("CV");
+    regionCodeSet.add("CW");
+    regionCodeSet.add("CX");
+    regionCodeSet.add("CY");
+    regionCodeSet.add("CZ");
+    regionCodeSet.add("DE");
+    regionCodeSet.add("DJ");
+    regionCodeSet.add("DK");
+    regionCodeSet.add("DM");
+    regionCodeSet.add("DO");
+    regionCodeSet.add("DZ");
+    regionCodeSet.add("EC");
+    regionCodeSet.add("EE");
+    regionCodeSet.add("EG");
+    regionCodeSet.add("EH");
+    regionCodeSet.add("ER");
+    regionCodeSet.add("ES");
+    regionCodeSet.add("ET");
+    regionCodeSet.add("FI");
+    regionCodeSet.add("FJ");
+    regionCodeSet.add("FK");
+    regionCodeSet.add("FM");
+    regionCodeSet.add("FO");
+    regionCodeSet.add("FR");
+    regionCodeSet.add("GA");
+    regionCodeSet.add("GB");
+    regionCodeSet.add("GD");
+    regionCodeSet.add("GE");
+    regionCodeSet.add("GF");
+    regionCodeSet.add("GG");
+    regionCodeSet.add("GH");
+    regionCodeSet.add("GI");
+    regionCodeSet.add("GL");
+    regionCodeSet.add("GM");
+    regionCodeSet.add("GN");
+    regionCodeSet.add("GP");
+    regionCodeSet.add("GR");
+    regionCodeSet.add("GT");
+    regionCodeSet.add("GU");
+    regionCodeSet.add("GW");
+    regionCodeSet.add("GY");
+    regionCodeSet.add("HK");
+    regionCodeSet.add("HN");
+    regionCodeSet.add("HR");
+    regionCodeSet.add("HT");
+    regionCodeSet.add("HU");
+    regionCodeSet.add("ID");
+    regionCodeSet.add("IE");
+    regionCodeSet.add("IL");
+    regionCodeSet.add("IM");
+    regionCodeSet.add("IN");
+    regionCodeSet.add("IQ");
+    regionCodeSet.add("IR");
+    regionCodeSet.add("IS");
+    regionCodeSet.add("IT");
+    regionCodeSet.add("JE");
+    regionCodeSet.add("JM");
+    regionCodeSet.add("JO");
+    regionCodeSet.add("JP");
+    regionCodeSet.add("KE");
+    regionCodeSet.add("KG");
+    regionCodeSet.add("KH");
+    regionCodeSet.add("KI");
+    regionCodeSet.add("KM");
+    regionCodeSet.add("KN");
+    regionCodeSet.add("KP");
+    regionCodeSet.add("KR");
+    regionCodeSet.add("KW");
+    regionCodeSet.add("KY");
+    regionCodeSet.add("KZ");
+    regionCodeSet.add("LA");
+    regionCodeSet.add("LB");
+    regionCodeSet.add("LC");
+    regionCodeSet.add("LI");
+    regionCodeSet.add("LK");
+    regionCodeSet.add("LR");
+    regionCodeSet.add("LS");
+    regionCodeSet.add("LT");
+    regionCodeSet.add("LU");
+    regionCodeSet.add("LV");
+    regionCodeSet.add("LY");
+    regionCodeSet.add("MA");
+    regionCodeSet.add("MC");
+    regionCodeSet.add("MD");
+    regionCodeSet.add("ME");
+    regionCodeSet.add("MF");
+    regionCodeSet.add("MG");
+    regionCodeSet.add("MH");
+    regionCodeSet.add("MK");
+    regionCodeSet.add("ML");
+    regionCodeSet.add("MM");
+    regionCodeSet.add("MN");
+    regionCodeSet.add("MO");
+    regionCodeSet.add("MP");
+    regionCodeSet.add("MQ");
+    regionCodeSet.add("MR");
+    regionCodeSet.add("MS");
+    regionCodeSet.add("MT");
+    regionCodeSet.add("MU");
+    regionCodeSet.add("MV");
+    regionCodeSet.add("MW");
+    regionCodeSet.add("MX");
+    regionCodeSet.add("MY");
+    regionCodeSet.add("MZ");
+    regionCodeSet.add("NA");
+    regionCodeSet.add("NC");
+    regionCodeSet.add("NE");
+    regionCodeSet.add("NF");
+    regionCodeSet.add("NG");
+    regionCodeSet.add("NI");
+    regionCodeSet.add("NL");
+    regionCodeSet.add("NO");
+    regionCodeSet.add("NP");
+    regionCodeSet.add("NR");
+    regionCodeSet.add("NU");
+    regionCodeSet.add("NZ");
+    regionCodeSet.add("OM");
+    regionCodeSet.add("PA");
+    regionCodeSet.add("PE");
+    regionCodeSet.add("PF");
+    regionCodeSet.add("PG");
+    regionCodeSet.add("PH");
+    regionCodeSet.add("PK");
+    regionCodeSet.add("PL");
+    regionCodeSet.add("PM");
+    regionCodeSet.add("PR");
+    regionCodeSet.add("PS");
+    regionCodeSet.add("PT");
+    regionCodeSet.add("PW");
+    regionCodeSet.add("PY");
+    regionCodeSet.add("QA");
+    regionCodeSet.add("RE");
+    regionCodeSet.add("RO");
+    regionCodeSet.add("RS");
+    regionCodeSet.add("RU");
+    regionCodeSet.add("RW");
+    regionCodeSet.add("SA");
+    regionCodeSet.add("SB");
+    regionCodeSet.add("SC");
+    regionCodeSet.add("SD");
+    regionCodeSet.add("SE");
+    regionCodeSet.add("SG");
+    regionCodeSet.add("SH");
+    regionCodeSet.add("SI");
+    regionCodeSet.add("SJ");
+    regionCodeSet.add("SK");
+    regionCodeSet.add("SL");
+    regionCodeSet.add("SM");
+    regionCodeSet.add("SN");
+    regionCodeSet.add("SO");
+    regionCodeSet.add("SR");
+    regionCodeSet.add("ST");
+    regionCodeSet.add("SV");
+    regionCodeSet.add("SX");
+    regionCodeSet.add("SY");
+    regionCodeSet.add("SZ");
+    regionCodeSet.add("TC");
+    regionCodeSet.add("TD");
+    regionCodeSet.add("TG");
+    regionCodeSet.add("TH");
+    regionCodeSet.add("TJ");
+    regionCodeSet.add("TL");
+    regionCodeSet.add("TM");
+    regionCodeSet.add("TN");
+    regionCodeSet.add("TO");
+    regionCodeSet.add("TR");
+    regionCodeSet.add("TT");
+    regionCodeSet.add("TV");
+    regionCodeSet.add("TW");
+    regionCodeSet.add("TZ");
+    regionCodeSet.add("UA");
+    regionCodeSet.add("UG");
+    regionCodeSet.add("US");
+    regionCodeSet.add("UY");
+    regionCodeSet.add("UZ");
+    regionCodeSet.add("VA");
+    regionCodeSet.add("VC");
+    regionCodeSet.add("VE");
+    regionCodeSet.add("VG");
+    regionCodeSet.add("VI");
+    regionCodeSet.add("VN");
+    regionCodeSet.add("VU");
+    regionCodeSet.add("WF");
+    regionCodeSet.add("WS");
+    regionCodeSet.add("XK");
+    regionCodeSet.add("YE");
+    regionCodeSet.add("YT");
+    regionCodeSet.add("ZA");
+    regionCodeSet.add("ZM");
+    regionCodeSet.add("ZW");
+
+    return regionCodeSet;
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/SingleFileMetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/SingleFileMetadataSourceImpl.java
new file mode 100644
index 0000000..8b15cbb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/SingleFileMetadataSourceImpl.java
@@ -0,0 +1,66 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2015 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Implementation of {@link MetadataSource} that reads from a single resource file.
+ */
+final class SingleFileMetadataSourceImpl implements MetadataSource {
+  // The name of the binary file containing phone number metadata for different regions.
+  // This enables us to set up with different metadata, such as for testing.
+  private final String phoneNumberMetadataFileName;
+
+  // The {@link MetadataLoader} used to inject alternative metadata sources.
+  private final MetadataLoader metadataLoader;
+
+  private final AtomicReference<MetadataManager.SingleFileMetadataMaps> phoneNumberMetadataRef =
+      new AtomicReference<MetadataManager.SingleFileMetadataMaps>();
+
+  // It is assumed that metadataLoader is not null. Checks should happen before passing it in here.
+  // @VisibleForTesting
+  SingleFileMetadataSourceImpl(String phoneNumberMetadataFileName, MetadataLoader metadataLoader) {
+    this.phoneNumberMetadataFileName = phoneNumberMetadataFileName;
+    this.metadataLoader = metadataLoader;
+  }
+
+  // It is assumed that metadataLoader is not null. Checks should happen before passing it in here.
+  SingleFileMetadataSourceImpl(MetadataLoader metadataLoader) {
+    this(MetadataManager.SINGLE_FILE_PHONE_NUMBER_METADATA_FILE_NAME, metadataLoader);
+  }
+
+  @Override
+  public PhoneMetadata getMetadataForRegion(String regionCode) {
+    return MetadataManager.getSingleFileMetadataMaps(phoneNumberMetadataRef,
+        phoneNumberMetadataFileName, metadataLoader).get(regionCode);
+  }
+
+  @Override
+  public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
+    // A country calling code is non-geographical if it only maps to the non-geographical region
+    // code, i.e. "001". If this is not true of the given country calling code, then we will return
+    // null here. If not for the atomic reference, such as if we were loading in multiple stages, we
+    // would check that the passed in country calling code was indeed non-geographical to avoid
+    // loading costs for a null result. Here though we do not check this since the entire data must
+    // be loaded anyway if any of it is needed at some point in the life cycle of this class.
+    return MetadataManager.getSingleFileMetadataMaps(phoneNumberMetadataRef,
+        phoneNumberMetadataFileName, metadataLoader).get(countryCallingCode);
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_255 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_255
new file mode 100644
index 0000000..cb0926c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_255
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_27 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_27
new file mode 100644
index 0000000..b6d3f38
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_27
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_30 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_30
new file mode 100644
index 0000000..3c242b3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_30
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_31 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_31
new file mode 100644
index 0000000..3e0d6a5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_31
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_34 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_34
new file mode 100644
index 0000000..13c1e44
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_34
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_350 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_350
new file mode 100644
index 0000000..8ffdf66
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_350
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_351 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_351
new file mode 100644
index 0000000..18475e2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_351
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_352 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_352
new file mode 100644
index 0000000..bb4c77e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_352
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_358 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_358
new file mode 100644
index 0000000..4c89825
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_358
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_359 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_359
new file mode 100644
index 0000000..3d297e8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_359
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_36 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_36
new file mode 100644
index 0000000..7b7c3f5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_36
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_372 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_372
new file mode 100644
index 0000000..f84c80c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_372
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_373 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_373
new file mode 100644
index 0000000..0131025
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_373
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375
new file mode 100644
index 0000000..b7d8cac
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380
new file mode 100644
index 0000000..ab83908
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_381 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_381
new file mode 100644
index 0000000..92788cf
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_381
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_385 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_385
new file mode 100644
index 0000000..e9e58df
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_385
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_39 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_39
new file mode 100644
index 0000000..20bef2e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_39
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_43 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_43
new file mode 100644
index 0000000..68b71e4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_43
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_44 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_44
new file mode 100644
index 0000000..e334be5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_44
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49
new file mode 100644
index 0000000..172c71d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_505 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_505
new file mode 100644
index 0000000..86036ab
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_505
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_506 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_506
new file mode 100644
index 0000000..819fe06
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_506
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_52 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_52
new file mode 100644
index 0000000..fd034b5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_52
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_54 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_54
new file mode 100644
index 0000000..4af5818
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_54
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_55 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_55
new file mode 100644
index 0000000..862f18b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_55
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_58 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_58
new file mode 100644
index 0000000..65ce1d7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_58
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595
new file mode 100644
index 0000000..6fd5adf
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_61 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_61
new file mode 100644
index 0000000..755d983
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_61
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_62 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_62
new file mode 100644
index 0000000..78f0956
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_62
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63
new file mode 100644
index 0000000..e6f03ad
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_64 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_64
new file mode 100644
index 0000000..e8d2c26
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_64
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_66 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_66
new file mode 100644
index 0000000..c838b5e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_66
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_675 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_675
new file mode 100644
index 0000000..2e718b8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_675
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_676 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_676
new file mode 100644
index 0000000..16f1695
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_676
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_679 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_679
new file mode 100644
index 0000000..fad8479
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_679
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_7 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_7
new file mode 100644
index 0000000..bd812c7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_7
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_81 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_81
new file mode 100644
index 0000000..e628071
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_81
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_84 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_84
new file mode 100644
index 0000000..4af1a54
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_84
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_855 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_855
new file mode 100644
index 0000000..de1920d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_855
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_856 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_856
new file mode 100644
index 0000000..06ba25e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_856
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_90 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_90
new file mode 100644
index 0000000..dc91c08
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_90
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_91 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_91
new file mode 100644
index 0000000..283077e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_91
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_94 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_94
new file mode 100644
index 0000000..dbd390f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_94
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_95 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_95
new file mode 100644
index 0000000..a853451
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_95
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_971 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_971
new file mode 100644
index 0000000..c009af0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_971
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_972 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_972
new file mode 100644
index 0000000..5d75b29
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_972
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_995 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_995
new file mode 100644
index 0000000..7f5041d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_995
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800
new file mode 100644
index 0000000..ac762db
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808
new file mode 100644
index 0000000..ef8f6b9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_808
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870
new file mode 100644
index 0000000..c96d4e4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_870
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878
new file mode 100644
index 0000000..921545a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_878
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881
new file mode 100644
index 0000000..89d4f92
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_881
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882
new file mode 100644
index 0000000..f07382e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_882
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_883
new file mode 100644
index 0000000..a524721
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_883
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888
new file mode 100644
index 0000000..30221f8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_888
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979
new file mode 100644
index 0000000..24f6ff3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_979
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
new file mode 100644
index 0000000..0b4b11f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD
new file mode 100644
index 0000000..d48d714
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
new file mode 100644
index 0000000..f3c361a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF
new file mode 100644
index 0000000..9bbc2fb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
new file mode 100644
index 0000000..ed98f44
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
new file mode 100644
index 0000000..7ac8cbf
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL
new file mode 100644
index 0000000..1c267fd
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
new file mode 100644
index 0000000..57e20d9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO
new file mode 100644
index 0000000..1f26e1b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
new file mode 100644
index 0000000..a7d9d57
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
new file mode 100644
index 0000000..e65c391
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
new file mode 100644
index 0000000..82d6e1a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
new file mode 100644
index 0000000..adf945d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW
new file mode 100644
index 0000000..368a2a9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX
new file mode 100644
index 0000000..40286e4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ
new file mode 100644
index 0000000..2c03300
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA
new file mode 100644
index 0000000..0e8fea1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
new file mode 100644
index 0000000..8cb639d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD
new file mode 100644
index 0000000..a447c7e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE
new file mode 100644
index 0000000..efbb149
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
new file mode 100644
index 0000000..9eca3ce
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
new file mode 100644
index 0000000..5bfd258
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
new file mode 100644
index 0000000..4f7503b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI
new file mode 100644
index 0000000..68ab81d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ
new file mode 100644
index 0000000..da90b70
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL
new file mode 100644
index 0000000..dbd9843
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
new file mode 100644
index 0000000..347062b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN
new file mode 100644
index 0000000..1f21e6e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO
new file mode 100644
index 0000000..c7f58ff
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ
new file mode 100644
index 0000000..de7399d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR
new file mode 100644
index 0000000..1ed5ca8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
new file mode 100644
index 0000000..4ff8058
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT
new file mode 100644
index 0000000..20c8b6b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW
new file mode 100644
index 0000000..612dd19
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY
new file mode 100644
index 0000000..b35234f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ
new file mode 100644
index 0000000..8385200
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
new file mode 100644
index 0000000..66e7ffb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC
new file mode 100644
index 0000000..a0733ea
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD
new file mode 100644
index 0000000..2d3553d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF
new file mode 100644
index 0000000..c4beb43
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG
new file mode 100644
index 0000000..5fbb32d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH
new file mode 100644
index 0000000..3017ff7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
new file mode 100644
index 0000000..11f7f43
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK
new file mode 100644
index 0000000..284dff1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
new file mode 100644
index 0000000..0ec4087
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM
new file mode 100644
index 0000000..e89eb9b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
new file mode 100644
index 0000000..97684a6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
new file mode 100644
index 0000000..4827f8b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
new file mode 100644
index 0000000..e3b4954
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU
new file mode 100644
index 0000000..e7ba4a8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV
new file mode 100644
index 0000000..97fdc2f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW
new file mode 100644
index 0000000..b599fb9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX
new file mode 100644
index 0000000..1dcde33
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY
new file mode 100644
index 0000000..bc6dc48
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
new file mode 100644
index 0000000..7a37121
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
new file mode 100644
index 0000000..e54c63f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
new file mode 100644
index 0000000..c474b7e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
new file mode 100644
index 0000000..50cdd8d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
new file mode 100644
index 0000000..efcd0fb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
new file mode 100644
index 0000000..f8bb4a5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
new file mode 100644
index 0000000..836a05c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
new file mode 100644
index 0000000..c9c2fe0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
new file mode 100644
index 0000000..0a79a85
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
new file mode 100644
index 0000000..b4a1d90
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH
new file mode 100644
index 0000000..ceb01f1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER
new file mode 100644
index 0000000..ad6c098
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
new file mode 100644
index 0000000..c75f606
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
new file mode 100644
index 0000000..c3333a4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI
new file mode 100644
index 0000000..0d65004
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ
new file mode 100644
index 0000000..e614f3d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK
new file mode 100644
index 0000000..835fd26
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM
new file mode 100644
index 0000000..94b05eb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO
new file mode 100644
index 0000000..2aa72cd
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
new file mode 100644
index 0000000..4efa456
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
new file mode 100644
index 0000000..fc67bad
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
new file mode 100644
index 0000000..ba60f18
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
new file mode 100644
index 0000000..90b125e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE
new file mode 100644
index 0000000..99a495d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF
new file mode 100644
index 0000000..e794fb1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG
new file mode 100644
index 0000000..145e9d0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH
new file mode 100644
index 0000000..4e2e95b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI
new file mode 100644
index 0000000..f6932d3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL
new file mode 100644
index 0000000..b533dd2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM
new file mode 100644
index 0000000..c4fefde
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN
new file mode 100644
index 0000000..6df9cc9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP
new file mode 100644
index 0000000..e46b266
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ
new file mode 100644
index 0000000..c65ce2c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
new file mode 100644
index 0000000..82ccafb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT
new file mode 100644
index 0000000..6c2451f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
new file mode 100644
index 0000000..2bdbc68
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW
new file mode 100644
index 0000000..d478fa1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY
new file mode 100644
index 0000000..17f843d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
new file mode 100644
index 0000000..4b3cc6c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN
new file mode 100644
index 0000000..e618c51
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
new file mode 100644
index 0000000..2f6f0d3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT
new file mode 100644
index 0000000..1e786a2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU
new file mode 100644
index 0000000..a7bd50e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID
new file mode 100644
index 0000000..ab64ffa
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE
new file mode 100644
index 0000000..f9409ae
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
new file mode 100644
index 0000000..902dc5f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM
new file mode 100644
index 0000000..c63e0c3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
new file mode 100644
index 0000000..00db96d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO
new file mode 100644
index 0000000..304f801
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ
new file mode 100644
index 0000000..7eae57f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
new file mode 100644
index 0000000..3993757
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
new file mode 100644
index 0000000..bd723c3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
new file mode 100644
index 0000000..ac9583d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE
new file mode 100644
index 0000000..62f4163
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
new file mode 100644
index 0000000..6eb78ae
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
new file mode 100644
index 0000000..87fcd1a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
new file mode 100644
index 0000000..0196652
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE
new file mode 100644
index 0000000..df9c34e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG
new file mode 100644
index 0000000..a9a5671
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
new file mode 100644
index 0000000..fd86030
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI
new file mode 100644
index 0000000..36ee510
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM
new file mode 100644
index 0000000..ea1a6c2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
new file mode 100644
index 0000000..8d06cdc
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP
new file mode 100644
index 0000000..88f9382
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
new file mode 100644
index 0000000..aecdda9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
new file mode 100644
index 0000000..2736165
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
new file mode 100644
index 0000000..4207a61
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
new file mode 100644
index 0000000..d87e96c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
new file mode 100644
index 0000000..1f0c219
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
new file mode 100644
index 0000000..a981b72
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
new file mode 100644
index 0000000..0b74b8f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
new file mode 100644
index 0000000..2fefa42
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK
new file mode 100644
index 0000000..16f1ed9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
new file mode 100644
index 0000000..5eb3132
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS
new file mode 100644
index 0000000..d63e611
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT
new file mode 100644
index 0000000..88582f5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU
new file mode 100644
index 0000000..9f47486
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV
new file mode 100644
index 0000000..5fd2e1c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY
new file mode 100644
index 0000000..2c0e65d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
new file mode 100644
index 0000000..a12981d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC
new file mode 100644
index 0000000..42ba29d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
new file mode 100644
index 0000000..a3c8fb8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
new file mode 100644
index 0000000..2febfc5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF
new file mode 100644
index 0000000..874ec67
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG
new file mode 100644
index 0000000..7f36c11
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH
new file mode 100644
index 0000000..1f11da0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
new file mode 100644
index 0000000..a8e55a6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML
new file mode 100644
index 0000000..0c8ecaa
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
new file mode 100644
index 0000000..b8b7794
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
new file mode 100644
index 0000000..250c78c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO
new file mode 100644
index 0000000..b78689f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
new file mode 100644
index 0000000..1c1029d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ
new file mode 100644
index 0000000..b1f75f3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR
new file mode 100644
index 0000000..0487e38
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
new file mode 100644
index 0000000..3a6018f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
new file mode 100644
index 0000000..2ad7c36
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU
new file mode 100644
index 0000000..820fea1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
new file mode 100644
index 0000000..6ba9ea9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW
new file mode 100644
index 0000000..ec6c82c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
new file mode 100644
index 0000000..1d873dc
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
new file mode 100644
index 0000000..c1a457f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ
new file mode 100644
index 0000000..89ca88a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA
new file mode 100644
index 0000000..bd6a520
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
new file mode 100644
index 0000000..e8c38fd
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE
new file mode 100644
index 0000000..93eb62d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF
new file mode 100644
index 0000000..dd9e54b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
new file mode 100644
index 0000000..adcb915
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI
new file mode 100644
index 0000000..1aa1fc6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL
new file mode 100644
index 0000000..d58e546
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO
new file mode 100644
index 0000000..a238844
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP
new file mode 100644
index 0000000..d156242
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR
new file mode 100644
index 0000000..97e84db
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU
new file mode 100644
index 0000000..834f109
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ
new file mode 100644
index 0000000..305c4e7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
new file mode 100644
index 0000000..b822403
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
new file mode 100644
index 0000000..2c24335
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE
new file mode 100644
index 0000000..7d474a1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
new file mode 100644
index 0000000..eb159b4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG
new file mode 100644
index 0000000..aed016a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH
new file mode 100644
index 0000000..71e3ad3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK
new file mode 100644
index 0000000..100b238
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL
new file mode 100644
index 0000000..2942a23
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM
new file mode 100644
index 0000000..9fb12d7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
new file mode 100644
index 0000000..9ff7960
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS
new file mode 100644
index 0000000..c0a550d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT
new file mode 100644
index 0000000..77979ab
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW
new file mode 100644
index 0000000..5575d16
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
new file mode 100644
index 0000000..f6bbe80
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
new file mode 100644
index 0000000..3c162fc
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE
new file mode 100644
index 0000000..c821aaa
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
new file mode 100644
index 0000000..674a717
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS
new file mode 100644
index 0000000..d69402b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
new file mode 100644
index 0000000..15c6302
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW
new file mode 100644
index 0000000..9df69f5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
new file mode 100644
index 0000000..13e420c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
new file mode 100644
index 0000000..19af071
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC
new file mode 100644
index 0000000..b5f4ae1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
new file mode 100644
index 0000000..1cebfc7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE
new file mode 100644
index 0000000..dad8356
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
new file mode 100644
index 0000000..ef37b60
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH
new file mode 100644
index 0000000..24cb0fb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
new file mode 100644
index 0000000..b77f8fe
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ
new file mode 100644
index 0000000..f924c4e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
new file mode 100644
index 0000000..da502b0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
new file mode 100644
index 0000000..8951f7b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
new file mode 100644
index 0000000..6f66951
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
new file mode 100644
index 0000000..e1d7709
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO
new file mode 100644
index 0000000..e168cb1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR
new file mode 100644
index 0000000..7ed0148
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS
new file mode 100644
index 0000000..388b287
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST
new file mode 100644
index 0000000..56840ee
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV
new file mode 100644
index 0000000..aaabb90
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
new file mode 100644
index 0000000..52cd802
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY
new file mode 100644
index 0000000..d808394
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ
new file mode 100644
index 0000000..6b5b798
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA
new file mode 100644
index 0000000..d96a876
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
new file mode 100644
index 0000000..680b949
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD
new file mode 100644
index 0000000..9b7d578
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG
new file mode 100644
index 0000000..c7be9b7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
new file mode 100644
index 0000000..98bc672
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ
new file mode 100644
index 0000000..e8c679e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK
new file mode 100644
index 0000000..8b05b0e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
new file mode 100644
index 0000000..c566ea8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM
new file mode 100644
index 0000000..de493f4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
new file mode 100644
index 0000000..e6e90e4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO
new file mode 100644
index 0000000..33595f9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR
new file mode 100644
index 0000000..15553d5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
new file mode 100644
index 0000000..b062784
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV
new file mode 100644
index 0000000..ada7c7e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW
new file mode 100644
index 0000000..acb99e2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ
new file mode 100644
index 0000000..47e571c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA
new file mode 100644
index 0000000..c97a508
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG
new file mode 100644
index 0000000..f235b69
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
new file mode 100644
index 0000000..5321ca1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY
new file mode 100644
index 0000000..a9b448e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
new file mode 100644
index 0000000..babc343
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA
new file mode 100644
index 0000000..046ff0c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC
new file mode 100644
index 0000000..ba5421d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE
new file mode 100644
index 0000000..e7802fb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG
new file mode 100644
index 0000000..4e750c5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI
new file mode 100644
index 0000000..4e05408
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN
new file mode 100644
index 0000000..42bc986
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU
new file mode 100644
index 0000000..3c76873
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF
new file mode 100644
index 0000000..3024396
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS
new file mode 100644
index 0000000..f8cdca5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_XK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_XK
new file mode 100644
index 0000000..cc7f79a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_XK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE
new file mode 100644
index 0000000..ec35683
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT
new file mode 100644
index 0000000..22ae3f9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
new file mode 100644
index 0000000..0eb218b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM
new file mode 100644
index 0000000..5a53c8d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW
new file mode 100644
index 0000000..b0f61ff
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AC
new file mode 100644
index 0000000..fe5eb21
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AD
new file mode 100644
index 0000000..6a68ad5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AE
new file mode 100644
index 0000000..56dc06f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AF
new file mode 100644
index 0000000..1856bc3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AG
new file mode 100644
index 0000000..07789ef
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AI
new file mode 100644
index 0000000..466a5f8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AL
new file mode 100644
index 0000000..1ea5665
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AM
new file mode 100644
index 0000000..8680c3b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AO
new file mode 100644
index 0000000..8176bac
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AR
new file mode 100644
index 0000000..14087e4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AS
new file mode 100644
index 0000000..6ac5d5b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT
new file mode 100644
index 0000000..c5d0a05
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AU
new file mode 100644
index 0000000..4da832f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AW
new file mode 100644
index 0000000..8b9f710
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AX
new file mode 100644
index 0000000..0410aad
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ
new file mode 100644
index 0000000..b688c29
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BA
new file mode 100644
index 0000000..6b4ded3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BB
new file mode 100644
index 0000000..e1d374d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BD
new file mode 100644
index 0000000..dd58a22
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BE
new file mode 100644
index 0000000..23b0334
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BF
new file mode 100644
index 0000000..50d48d8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BG
new file mode 100644
index 0000000..b1eb7e9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BH
new file mode 100644
index 0000000..2c948af
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BI
new file mode 100644
index 0000000..e5522b5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ
new file mode 100644
index 0000000..426ee00
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BL
new file mode 100644
index 0000000..4114aef
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BM
new file mode 100644
index 0000000..b86fef4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BN
new file mode 100644
index 0000000..a6fa53e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BO
new file mode 100644
index 0000000..84a618b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ
new file mode 100644
index 0000000..5c3d30f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BR
new file mode 100644
index 0000000..e897b75
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BS
new file mode 100644
index 0000000..0b52e7d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BT
new file mode 100644
index 0000000..26d3846
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BW
new file mode 100644
index 0000000..cc99540
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BY
new file mode 100644
index 0000000..846cdf9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ
new file mode 100644
index 0000000..34630e1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CA
new file mode 100644
index 0000000..32840c8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CC
new file mode 100644
index 0000000..ebf0c0a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CD
new file mode 100644
index 0000000..b07d4e3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CF
new file mode 100644
index 0000000..f377215
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CG
new file mode 100644
index 0000000..d7db751
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CH
new file mode 100644
index 0000000..4447fe8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CI
new file mode 100644
index 0000000..6b6bf1f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CK
new file mode 100644
index 0000000..865033f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CL
new file mode 100644
index 0000000..0f0fe6d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CM
new file mode 100644
index 0000000..7390d3b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CN
new file mode 100644
index 0000000..8d18c0e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CO
new file mode 100644
index 0000000..0552ef4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CR
new file mode 100644
index 0000000..1f44a5d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CU
new file mode 100644
index 0000000..d4a7498
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CV
new file mode 100644
index 0000000..3a07f44
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CW
new file mode 100644
index 0000000..aa00d77
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CX
new file mode 100644
index 0000000..becf80f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CY
new file mode 100644
index 0000000..6cef41d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ
new file mode 100644
index 0000000..7ad1f52
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DE
new file mode 100644
index 0000000..dde4d83
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ
new file mode 100644
index 0000000..0a2e2b3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DK
new file mode 100644
index 0000000..33a6f6f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DM
new file mode 100644
index 0000000..e664b60
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DO
new file mode 100644
index 0000000..50a43e8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ
new file mode 100644
index 0000000..b347d92
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EC
new file mode 100644
index 0000000..63b1aa5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EE
new file mode 100644
index 0000000..b3fe5a4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EG
new file mode 100644
index 0000000..ae94249
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EH
new file mode 100644
index 0000000..6695c1b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_EH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ER b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ER
new file mode 100644
index 0000000..f61c916
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ER
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ES b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ES
new file mode 100644
index 0000000..ed4fff3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ES
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ET b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ET
new file mode 100644
index 0000000..91549ec
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ET
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FI
new file mode 100644
index 0000000..b2e3260
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ
new file mode 100644
index 0000000..e3daf67
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FK
new file mode 100644
index 0000000..dd628e4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FM
new file mode 100644
index 0000000..22df01d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FO
new file mode 100644
index 0000000..7016ae7
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FR
new file mode 100644
index 0000000..ab1661f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_FR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GA
new file mode 100644
index 0000000..fff8d2d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GB
new file mode 100644
index 0000000..d1c293b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GD
new file mode 100644
index 0000000..218be70
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GE
new file mode 100644
index 0000000..cb11c45
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GF
new file mode 100644
index 0000000..4da32c8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GG
new file mode 100644
index 0000000..bd88928
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GH
new file mode 100644
index 0000000..818bc8c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GI
new file mode 100644
index 0000000..65059a6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GL
new file mode 100644
index 0000000..51816ce
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GM
new file mode 100644
index 0000000..13660e3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GN
new file mode 100644
index 0000000..28ca371
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GP
new file mode 100644
index 0000000..c128c41
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GR
new file mode 100644
index 0000000..0c9ef56
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GT
new file mode 100644
index 0000000..85ad18f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GU
new file mode 100644
index 0000000..d9af9f5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GW
new file mode 100644
index 0000000..9441f71
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GY
new file mode 100644
index 0000000..4b53c89
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_GY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HK
new file mode 100644
index 0000000..6c0848e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HN
new file mode 100644
index 0000000..048d397
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HR
new file mode 100644
index 0000000..ff22840
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HT
new file mode 100644
index 0000000..20e31d5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HU
new file mode 100644
index 0000000..3c83546
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_HU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ID b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ID
new file mode 100644
index 0000000..2b5d6a3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ID
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IE
new file mode 100644
index 0000000..bbb030a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IL
new file mode 100644
index 0000000..16f4189
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IM
new file mode 100644
index 0000000..bdeadc3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IN
new file mode 100644
index 0000000..bb6f706
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ
new file mode 100644
index 0000000..de6a53b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IR
new file mode 100644
index 0000000..8db0ecc
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IS
new file mode 100644
index 0000000..3bba034
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IT
new file mode 100644
index 0000000..33ac8d4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_IT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JE
new file mode 100644
index 0000000..8a8b4a8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JM
new file mode 100644
index 0000000..f9a130e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JO
new file mode 100644
index 0000000..3e5f204
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JP
new file mode 100644
index 0000000..b6bab14
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_JP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KE
new file mode 100644
index 0000000..e214f2e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KG
new file mode 100644
index 0000000..6ca199d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KH
new file mode 100644
index 0000000..e8b5567
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KI
new file mode 100644
index 0000000..3b941ef
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KM
new file mode 100644
index 0000000..143dd9d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KN
new file mode 100644
index 0000000..c47fd49
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KP
new file mode 100644
index 0000000..863a472
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KR
new file mode 100644
index 0000000..b30b7d0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KW
new file mode 100644
index 0000000..6cd23c9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KY
new file mode 100644
index 0000000..9232eb5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ
new file mode 100644
index 0000000..b13b27c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LA
new file mode 100644
index 0000000..e7c7e8e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LB
new file mode 100644
index 0000000..5686278
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LC
new file mode 100644
index 0000000..1ac9261
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LI
new file mode 100644
index 0000000..33e10ec
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LK
new file mode 100644
index 0000000..9999e4e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LR
new file mode 100644
index 0000000..ed66c76
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LS
new file mode 100644
index 0000000..aabd8d3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LT
new file mode 100644
index 0000000..35387da
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LU
new file mode 100644
index 0000000..3a95e22
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LV
new file mode 100644
index 0000000..f8d9ee6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LY
new file mode 100644
index 0000000..1fa09ff
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_LY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MA
new file mode 100644
index 0000000..4344b10
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MC
new file mode 100644
index 0000000..be45805
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MD
new file mode 100644
index 0000000..7173ce0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ME b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ME
new file mode 100644
index 0000000..8a9a358
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ME
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MF
new file mode 100644
index 0000000..d07ecde
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MG
new file mode 100644
index 0000000..f5156ff
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MH
new file mode 100644
index 0000000..8fc0683
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MK
new file mode 100644
index 0000000..d11302e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ML b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ML
new file mode 100644
index 0000000..4dfc616
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ML
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MM
new file mode 100644
index 0000000..59d2b6c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MN
new file mode 100644
index 0000000..764a58e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MO
new file mode 100644
index 0000000..5ea3165
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MP
new file mode 100644
index 0000000..d9deb6a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ
new file mode 100644
index 0000000..c57cb45
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MR
new file mode 100644
index 0000000..7f6dd92
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MS
new file mode 100644
index 0000000..473ca25
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MT
new file mode 100644
index 0000000..52d8332
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MU
new file mode 100644
index 0000000..fa43aed
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MV
new file mode 100644
index 0000000..5ca99ac
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MW
new file mode 100644
index 0000000..d90dc99
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MX
new file mode 100644
index 0000000..8d03533
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MY
new file mode 100644
index 0000000..68e6f97
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ
new file mode 100644
index 0000000..410b9b2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NA
new file mode 100644
index 0000000..cf9d377
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NC
new file mode 100644
index 0000000..bbcffbc
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NE
new file mode 100644
index 0000000..8029ad5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NF
new file mode 100644
index 0000000..d21ea03
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NG
new file mode 100644
index 0000000..dcd94a8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NI
new file mode 100644
index 0000000..28131f3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NL
new file mode 100644
index 0000000..b85ef82
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NO
new file mode 100644
index 0000000..eb2041c
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NP
new file mode 100644
index 0000000..0e65036
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NP
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NR
new file mode 100644
index 0000000..a8ab4e5
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NU
new file mode 100644
index 0000000..beeb5f3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ
new file mode 100644
index 0000000..f553805
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_OM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_OM
new file mode 100644
index 0000000..2a2c5d4
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_OM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PA
new file mode 100644
index 0000000..3ab0b6b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PE
new file mode 100644
index 0000000..1cd8771
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PF
new file mode 100644
index 0000000..9b3cc28
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PG
new file mode 100644
index 0000000..825f7bb
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PH
new file mode 100644
index 0000000..5fad24e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PK
new file mode 100644
index 0000000..ddf88bc
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PL
new file mode 100644
index 0000000..c683366
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PM
new file mode 100644
index 0000000..a45dbe9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PR
new file mode 100644
index 0000000..7a07c94
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PS
new file mode 100644
index 0000000..119b162
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PT
new file mode 100644
index 0000000..99ea7c9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PW
new file mode 100644
index 0000000..eaf6402
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PY
new file mode 100644
index 0000000..cbf3cf1
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_PY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_QA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_QA
new file mode 100644
index 0000000..06bf57d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_QA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RE
new file mode 100644
index 0000000..3fef784
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RO
new file mode 100644
index 0000000..7bc8b81
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RS
new file mode 100644
index 0000000..4a5d88d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RU
new file mode 100644
index 0000000..37cf725
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RW
new file mode 100644
index 0000000..5b685b8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_RW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SA
new file mode 100644
index 0000000..062194e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SB
new file mode 100644
index 0000000..ad46a76
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SB
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SC
new file mode 100644
index 0000000..ec1c50e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SD
new file mode 100644
index 0000000..e9f7a59
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SE
new file mode 100644
index 0000000..0a8a07a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SG
new file mode 100644
index 0000000..c9284b2
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SH
new file mode 100644
index 0000000..822a814
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SI
new file mode 100644
index 0000000..c07cd50
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ
new file mode 100644
index 0000000..b83a0e6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SK
new file mode 100644
index 0000000..30c4462
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SL
new file mode 100644
index 0000000..a9d4a84
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SM
new file mode 100644
index 0000000..f937d13
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SN
new file mode 100644
index 0000000..5cf4d53
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SO
new file mode 100644
index 0000000..b1fabbf
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SR
new file mode 100644
index 0000000..9960891
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ST b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ST
new file mode 100644
index 0000000..670bd22
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ST
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SV
new file mode 100644
index 0000000..6c86442
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SX
new file mode 100644
index 0000000..d15b02e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SX
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SY
new file mode 100644
index 0000000..4a0e95e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ
new file mode 100644
index 0000000..02bcb20
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TC
new file mode 100644
index 0000000..b1600af
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TD
new file mode 100644
index 0000000..aa5e9a3
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TD
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TG
new file mode 100644
index 0000000..be3dca8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TH
new file mode 100644
index 0000000..a571213
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TH
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ
new file mode 100644
index 0000000..fc75564
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TL
new file mode 100644
index 0000000..1f99edd
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TL
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TM
new file mode 100644
index 0000000..8118718
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TN
new file mode 100644
index 0000000..7a1ec3d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TO
new file mode 100644
index 0000000..ba482de
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TO
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TR
new file mode 100644
index 0000000..d29aa60
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TR
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TT
new file mode 100644
index 0000000..ea3fc86
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TV
new file mode 100644
index 0000000..c617324
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TV
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TW
new file mode 100644
index 0000000..212774d
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ
new file mode 100644
index 0000000..269345a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UA
new file mode 100644
index 0000000..2d73675
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UG
new file mode 100644
index 0000000..b6a747e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_US b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_US
new file mode 100644
index 0000000..e642b4b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_US
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UY
new file mode 100644
index 0000000..2a76d8f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UY
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ
new file mode 100644
index 0000000..d598ec0
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VA
new file mode 100644
index 0000000..c332894
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VC
new file mode 100644
index 0000000..104196b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VC
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VE
new file mode 100644
index 0000000..f2e9a57
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VG
new file mode 100644
index 0000000..9e332e9
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VG
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VI
new file mode 100644
index 0000000..91c78b8
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VI
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VN
new file mode 100644
index 0000000..bf8e164
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VN
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VU
new file mode 100644
index 0000000..b457891
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_VU
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_WF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_WF
new file mode 100644
index 0000000..c17be87
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_WF
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_WS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_WS
new file mode 100644
index 0000000..a4f6e4b
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_WS
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_XK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_XK
new file mode 100644
index 0000000..977af36
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_XK
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_YE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_YE
new file mode 100644
index 0000000..2901255
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_YE
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_YT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_YT
new file mode 100644
index 0000000..101ae9a
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_YT
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA
new file mode 100644
index 0000000..071bab6
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM
new file mode 100644
index 0000000..3ec1bae
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW
new file mode 100644
index 0000000..307335e
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW
Binary files differ
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/MatcherApi.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/MatcherApi.java
new file mode 100644
index 0000000..f820356
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/MatcherApi.java
@@ -0,0 +1,34 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2014 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.internal;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneNumberDesc;
+
+/**
+ * Internal phonenumber matching API used to isolate the underlying implementation of the
+ * matcher and allow different implementations to be swapped in easily.
+ * @hide This class is not part of the Android public SDK API
+ */
+public interface MatcherApi {
+  /**
+   * Returns whether the given national number (a string containing only decimal digits) matches
+   * the national number pattern defined in the given {@code PhoneNumberDesc} message.
+   */
+  boolean matchNationalNumber(CharSequence number, PhoneNumberDesc numberDesc,
+      boolean allowPrefixMatch);
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/RegexBasedMatcher.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/RegexBasedMatcher.java
new file mode 100644
index 0000000..c847c48
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/RegexBasedMatcher.java
@@ -0,0 +1,59 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2014 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.internal;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneNumberDesc;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Implementation of the matcher API using the regular expressions in the PhoneNumberDesc
+ * proto message to match numbers.
+ * @hide This class is not part of the Android public SDK API
+ */
+public final class RegexBasedMatcher implements MatcherApi {
+  public static MatcherApi create() {
+    return new RegexBasedMatcher();
+  }
+
+  private final RegexCache regexCache = new RegexCache(100);
+
+  private RegexBasedMatcher() {}
+
+  // @Override
+  public boolean matchNationalNumber(CharSequence number, PhoneNumberDesc numberDesc,
+      boolean allowPrefixMatch) {
+    String nationalNumberPattern = numberDesc.getNationalNumberPattern();
+    // We don't want to consider it a prefix match when matching non-empty input against an empty
+    // pattern.
+    if (nationalNumberPattern.length() == 0) {
+      return false;
+    }
+    return match(number, regexCache.getPatternForRegex(nationalNumberPattern), allowPrefixMatch);
+  }
+
+  private static boolean match(CharSequence number, Pattern pattern, boolean allowPrefixMatch) {
+    Matcher matcher = pattern.matcher(number);
+    if (!matcher.lookingAt()) {
+      return false;
+    } else {
+      return (matcher.matches()) ? true : allowPrefixMatch;
+    }
+  }
+}
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/RegexCache.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/RegexCache.java
new file mode 100644
index 0000000..1664b8f
--- /dev/null
+++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/RegexCache.java
@@ -0,0 +1,80 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+/*
+ * Copyright (C) 2010 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers.internal;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * LRU Cache for compiled regular expressions used by the libphonenumbers libary.
+ *
+ * @author Shaopeng Jia
+ * @hide This class is not part of the Android public SDK API
+ */
+public class RegexCache {
+  private LRUCache<String, Pattern> cache;
+
+  public RegexCache(int size) {
+    cache = new LRUCache<String, Pattern>(size);
+  }
+
+  public Pattern getPatternForRegex(String regex) {
+    Pattern pattern = cache.get(regex);
+    if (pattern == null) {
+      pattern = Pattern.compile(regex);
+      cache.put(regex, pattern);
+    }
+    return pattern;
+  }
+
+  // @VisibleForTesting
+  boolean containsRegex(String regex) {
+    return cache.containsKey(regex);
+  }
+
+  private static class LRUCache<K, V> {
+    // LinkedHashMap offers a straightforward implementation of LRU cache.
+    private LinkedHashMap<K, V> map;
+    private int size;
+
+    @SuppressWarnings("serial")
+    public LRUCache(int size) {
+      this.size = size;
+      // Using access-order instead of insertion-order.
+      map = new LinkedHashMap<K, V>(size * 4 / 3 + 1, 0.75f, true) {
+        @Override
+        protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
+          return size() > LRUCache.this.size;
+        }
+      };
+    }
+
+    public synchronized V get(K key) {
+      return map.get(key);
+    }
+
+    public synchronized void put(K key, V value) {
+      map.put(key, value);
+    }
+
+    public synchronized boolean containsKey(K key) {
+      return map.containsKey(key);
+    }
+  }
+}
diff --git a/srcgen/generate_android_src.sh b/srcgen/generate_android_src.sh
new file mode 100755
index 0000000..c5589ea
--- /dev/null
+++ b/srcgen/generate_android_src.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+if [ -z "$ANDROID_BUILD_TOP" ]; then
+    echo "Missing environment variables. Did you run build/envsetup.sh and lunch?" 1>&2
+    exit 1
+fi
+
+CLASSPATH=${ANDROID_HOST_OUT}/framework/currysrc.jar
+PROJECT_DIR=${ANDROID_BUILD_TOP}/external/libphonenumber
+
+cd ${ANDROID_BUILD_TOP}
+make -j15 currysrc
+
+function do_transform() {
+  local SRC_IN_DIR=$1
+  local SRC_OUT_DIR=$2
+
+  if [ ! -d $SRC_OUT_DIR ]; then
+    echo ${SRC_OUT_DIR} does not exist >&2
+    exit 1
+  fi
+  rm -rf ${SRC_OUT_DIR}
+  mkdir -p ${SRC_OUT_DIR}
+
+  java -cp ${CLASSPATH} com.google.currysrc.aosp.RepackagingTransform \
+       --source-dir ${SRC_IN_DIR} \
+       --target-dir ${SRC_OUT_DIR} \
+       --package-transformation "com.google:com.android"
+}
+
+REPACKAGED_DIR=${PROJECT_DIR}/repackaged
+for i in libphonenumber geocoder internal/prefixmapper
+do
+  for s in src
+  do
+    IN=${PROJECT_DIR}/$i/$s
+    if [ -d $IN ]; then
+      OUT=${REPACKAGED_DIR}/$i/$s
+      do_transform ${IN} ${OUT}
+
+      # Copy any resources
+      echo Copying resources from ${IN} to ${OUT}
+      RESOURCES=$(find ${IN} -type f | egrep -v '(\.java|\/package\.html)' || true)
+      for RESOURCE in ${RESOURCES}; do
+        SOURCE_DIR=$(dirname ${RESOURCE})
+        RELATIVE_SOURCE_DIR=$(echo ${SOURCE_DIR} | sed "s,${IN}/,,")
+        RELATIVE_DEST_DIR=$(echo ${RELATIVE_SOURCE_DIR} | sed 's,com/google,com/android,')
+        DEST_DIR=${OUT}/${RELATIVE_DEST_DIR}
+        mkdir -p ${DEST_DIR}
+        cp $RESOURCE ${DEST_DIR}
+      done
+    fi
+  done
+done
diff --git a/update-from-external.sh b/update-from-external.sh
index 18ada95..a505e5b 100755
--- a/update-from-external.sh
+++ b/update-from-external.sh
@@ -44,3 +44,5 @@
     sed "s|Version: .*$|Version: $VERSION|" < $tmp/$i > $DIR/$i
     (cd $DIR; git add $i)
 done
+
+${DIR}/srcgen/generate_android_src.sh