Browse Source

Merge branch 'master' into hash_as_diallable_char

reviewable/pr1312/r3
Tiago Salem Herrmann 9 years ago
committed by GitHub
parent
commit
d5136339b4
383 changed files with 30370 additions and 27624 deletions
  1. +16
    -2
      FALSEHOODS.md
  2. +17
    -0
      FAQ.md
  3. +1
    -2
      README.md
  4. +10947
    -10914
      cpp/src/phonenumbers/lite_metadata.cc
  5. +11433
    -11400
      cpp/src/phonenumbers/metadata.cc
  6. +13
    -5
      cpp/src/phonenumbers/phonenumberutil.cc
  7. +3357
    -3243
      cpp/src/phonenumbers/short_metadata.cc
  8. +46
    -19
      cpp/src/phonenumbers/shortnumberinfo.cc
  9. +1004
    -980
      cpp/src/phonenumbers/test_metadata.cc
  10. +9
    -7
      cpp/test/phonenumbers/phonenumberutil_test.cc
  11. +4
    -4
      java/carrier/pom.xml
  12. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1876_en
  13. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/226_en
  14. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en
  15. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/231_en
  16. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/234_en
  17. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/254_en
  18. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/256_en
  19. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/373_en
  20. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/49_en
  21. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/56_en
  22. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/593_en
  23. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/66_en
  24. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_zh_Hant
  25. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/90_en
  26. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en
  27. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config
  28. +5
    -5
      java/demo/pom.xml
  29. +4
    -4
      java/geocoder/pom.xml
  30. BIN
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1463_en
  31. +0
    -0
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_sv
  32. BIN
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_en
  33. BIN
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_es
  34. BIN
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_en
  35. BIN
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_ru
  36. BIN
      java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config
  37. +3
    -3
      java/internal/prefixmapper/pom.xml
  38. +2
    -2
      java/libphonenumber/pom.xml
  39. +15
    -8
      java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
  40. +95
    -38
      java/libphonenumber/src/com/google/i18n/phonenumbers/Phonemetadata.java
  41. +26
    -10
      java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java
  42. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800
  43. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808
  44. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870
  45. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878
  46. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881
  47. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882
  48. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883
  49. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888
  50. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979
  51. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
  52. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
  53. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
  54. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
  55. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
  56. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD
  57. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
  58. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
  59. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR
  60. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
  61. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
  62. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
  63. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
  64. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
  65. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
  66. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
  67. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
  68. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
  69. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
  70. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
  71. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG
  72. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH
  73. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
  74. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU
  75. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
  76. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
  77. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE
  78. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
  79. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
  80. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
  81. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
  82. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
  83. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
  84. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
  85. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ
  86. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
  87. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU
  88. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
  89. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
  90. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH
  91. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
  92. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
  93. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA
  94. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
  95. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
  96. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR
  97. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
  98. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG
  99. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
  100. BIN
      java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC

+ 16
- 2
FALSEHOODS.md View File

@ -182,8 +182,8 @@ surprising how many false assumptions programmers continue to make about them.
These include, but are not limited to:
* *Moving within a country*: In countries with phone number portability,
you may retain your number when moving, even in some cases if it is a
fixed-line number and even if it has an area code. (See
[xkcd](https://xkcd.com/1129/) for a US example.)
fixed-line number and even if it has an area code (see
*[xkcd](https://xkcd.com/1129/)* for a US example.)
* *Moving to another country*: Some people keep their mobile phones when
they move to another country.
* *Geopolitical turmoil*: Sometimes countries change their borders, cease
@ -226,6 +226,20 @@ surprising how many false assumptions programmers continue to make about them.
information. Unless a piece of user-supplied data has actually been verified
to be a phone number, it should be stored as-is as entered by the user.
1. **Phone numbers are numbers**
Never try to store phone numbers as an int or any other kind of numeric
data type. You can't do arithmetic on them, and while 007, 07 and 7 are the
same number they are not necessarily the same phone number - in some
countries a leading 0 is significant and forms part of the number itself
(see *A leading zero in numbers formatted for domestic usage can always be
discarded when dialing from abroad*). Moreover, a phone number may contain
other diallable characters (see *Phone numbers contain only digits*) or an
extension portion, dialled after waiting for a tone.
**Tip:** Use the library to parse and format numbers to handle this
correctly for every country.
1. **Phone numbering plans published by governments or telecoms represent
reality**


+ 17
- 0
FAQ.md View File

@ -1,5 +1,22 @@
# Frequently Asked Questions (FAQ)
## Parsing
### Why wasn't the country code removed when parsing?
In some cases, the library cannot tell if the leading digits of a phone number
are intended to be the country calling code, or the start of the national
significant number.
This affects primarily German phone numbers, where 49 is both a country calling
code and an area code, and numbers of variable lengths are valid. The leading
digits will only be interpreted as a country calling code if the number is not
already considered a possible number for the region provided when parsing.
If you know that your numbers are always in the form <country calling
code><national significant number>, it is safe to put a "+" in front to
indicate this to the library.
## Validation and types of numbers
### What is the difference between isPossibleNumber and isValidNumber?


+ 1
- 2
README.md View File

@ -20,7 +20,7 @@ If you want to report an issue, or to contribute to the project, please read the
* ` PhoneNumberOfflineGeocoder ` - provides geographical information related to a phone number.
* ` PhoneNumberToCarrierMapper ` - provides carrier information related to a phone number.
# Demo (v7.7.0)
# Demo (v7.7.3)
[Java](http://libphonenumber.appspot.com/)
[JavaScript](https://rawgit.com/googlei18n/libphonenumber/master/javascript/i18n/phonenumbers/demo-compiled.html)
@ -112,7 +112,6 @@ More examples on how to use the library can be found in the unittests at https:/
# Known Ports
Several people are porting the phone number library to other languages. Here are some we know about. Note that they are done on voluntary basis by developers outside our project, so we cannot guarantee their quality.
* C#: https://github.com/erezak/libphonenumber-csharp
* objective-c: https://github.com/iziz/libPhoneNumber-iOS
* Python: https://github.com/daviddrysdale/python-phonenumbers
* Ruby: https://github.com/sstephenson/global_phone


+ 10947
- 10914
cpp/src/phonenumbers/lite_metadata.cc
File diff suppressed because it is too large
View File


+ 11433
- 11400
cpp/src/phonenumbers/metadata.cc
File diff suppressed because it is too large
View File


+ 13
- 5
cpp/src/phonenumbers/phonenumberutil.cc View File

@ -992,7 +992,11 @@ void PhoneNumberUtil::FormatNationalNumberWithPreferredCarrierCode(
string* formatted_number) const {
FormatNationalNumberWithCarrierCode(
number,
number.has_preferred_domestic_carrier_code()
// 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.preferred_domestic_carrier_code().empty()
? number.preferred_domestic_carrier_code()
: fallback_carrier_code,
formatted_number);
@ -1028,9 +1032,13 @@ void PhoneNumberUtil::FormatNumberForMobileDialing(
number_no_extension, kColombiaMobileToFixedLinePrefix,
formatted_number);
} else if ((region_code == "BR") && (is_fixed_line_or_mobile)) {
if (number_no_extension.has_preferred_domestic_carrier_code()) {
FormatNationalNumberWithPreferredCarrierCode(number_no_extension, "",
formatted_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.
if (!number_no_extension.preferred_domestic_carrier_code().empty()) {
FormatNationalNumberWithPreferredCarrierCode(number_no_extension, "",
formatted_number);
} else {
// Brazilian fixed line and mobile numbers need to be dialed with a
// carrier code when called within Brazil. Without that, most of the
@ -2018,7 +2026,7 @@ PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseHelper(
if (TestNumberLength(potential_national_number,
country_metadata->general_desc()) != TOO_SHORT) {
normalized_national_number.assign(potential_national_number);
if (keep_raw_input) {
if (keep_raw_input && !carrier_code.empty()) {
temp_number.set_preferred_domestic_carrier_code(carrier_code);
}
}


+ 3357
- 3243
cpp/src/phonenumbers/short_metadata.cc
File diff suppressed because it is too large
View File


+ 46
- 19
cpp/src/phonenumbers/shortnumberinfo.cc View File

@ -12,8 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
// Author: David Yonge-Mallo
#include "phonenumbers/shortnumberinfo.h"
#include <algorithm>
@ -33,6 +31,7 @@
namespace i18n {
namespace phonenumbers {
using google::protobuf::RepeatedField;
using std::map;
using std::string;
@ -81,16 +80,19 @@ const PhoneMetadata* ShortNumberInfo::GetMetadataForRegion(
}
namespace {
// Same as the matchesPossibleNumberAndNationalNumber method in
// java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java
// TODO: Once we have benchmarked ShortNumberInfo, consider if it is
// worth keeping this performance optimization, and if so move this into the
// matcher implementation.
// worth keeping this performance optimization.
bool MatchesPossibleNumberAndNationalNumber(
const MatcherApi& matcher_api, const string& number,
const PhoneNumberDesc& number_desc) {
return matcher_api.MatchesPossibleNumber(number, number_desc) &&
matcher_api.MatchesNationalNumber(number, number_desc, false);
const MatcherApi& matcher_api,
const string& number,
const PhoneNumberDesc& desc) {
const RepeatedField<int>& lengths = desc.possible_length();
if (desc.possible_length_size() > 0 &&
std::find(lengths.begin(), lengths.end(), number.length()) ==
lengths.end()) {
return false;
}
return matcher_api.MatchesNationalNumber(number, desc, false);
}
} // namespace
@ -113,8 +115,10 @@ bool ShortNumberInfo::IsPossibleShortNumberForRegion(
if (!phone_metadata) {
return false;
}
const PhoneNumberDesc& general_desc = phone_metadata->general_desc();
return matcher_api_->MatchesPossibleNumber(short_number, general_desc);
const RepeatedField<int>& lengths =
phone_metadata->general_desc().possible_length();
return std::find(lengths.begin(), lengths.end(), short_number.length()) !=
lengths.end();
}
bool ShortNumberInfo::IsPossibleShortNumberForRegion(const PhoneNumber& number,
@ -129,8 +133,10 @@ bool ShortNumberInfo::IsPossibleShortNumberForRegion(const PhoneNumber& number,
}
string short_number;
phone_util_.GetNationalSignificantNumber(number, &short_number);
const PhoneNumberDesc& general_desc = phone_metadata->general_desc();
return matcher_api_->MatchesPossibleNumber(short_number, general_desc);
const RepeatedField<int>& lengths =
phone_metadata->general_desc().possible_length();
return (std::find(lengths.begin(), lengths.end(), short_number.length()) !=
lengths.end());
}
bool ShortNumberInfo::IsPossibleShortNumber(const PhoneNumber& number) const {
@ -145,8 +151,10 @@ bool ShortNumberInfo::IsPossibleShortNumber(const PhoneNumber& number) const {
if (!phone_metadata) {
continue;
}
if (matcher_api_->MatchesPossibleNumber(short_number,
phone_metadata->general_desc())) {
const RepeatedField<int>& lengths =
phone_metadata->general_desc().possible_length();
if (std::find(lengths.begin(), lengths.end(), short_number.length()) !=
lengths.end()) {
return true;
}
}
@ -212,9 +220,17 @@ ShortNumberInfo::ShortNumberCost ShortNumberInfo::GetExpectedCostForRegion(
return ShortNumberInfo::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.
// 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.
const RepeatedField<int>& lengths =
phone_metadata->general_desc().possible_length();
if (std::find(lengths.begin(), lengths.end(), short_number.length()) ==
lengths.end()) {
return ShortNumberInfo::UNKNOWN_COST;
}
if (MatchesPossibleNumberAndNationalNumber(*matcher_api_, short_number,
phone_metadata->premium_rate())) {
return ShortNumberInfo::PREMIUM_RATE;
@ -247,6 +263,17 @@ ShortNumberInfo::ShortNumberCost ShortNumberInfo::GetExpectedCostForRegion(
string short_number;
phone_util_.GetNationalSignificantNumber(number, &short_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.
const RepeatedField<int>& lengths =
phone_metadata->general_desc().possible_length();
if (std::find(lengths.begin(), lengths.end(), short_number.length()) ==
lengths.end()) {
return ShortNumberInfo::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.


+ 1004
- 980
cpp/src/phonenumbers/test_metadata.cc
File diff suppressed because it is too large
View File


+ 9
- 7
cpp/test/phonenumbers/phonenumberutil_test.cc View File

@ -999,12 +999,18 @@ TEST_F(PhoneNumberUtilTest, FormatWithPreferredCarrierCode) {
phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "",
&formatted_number);
EXPECT_EQ("01234 19 12-5678", formatted_number);
// When the preferred_domestic_carrier_code is present (even when it contains
// an empty string), use it instead of the default carrier code passed in.
// When the preferred_domestic_carrier_code is present (even when it is just a
// space), use it instead of the default carrier code passed in.
ar_number.set_preferred_domestic_carrier_code(" ");
phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15",
&formatted_number);
EXPECT_EQ("01234 12-5678", formatted_number);
// When the preferred_domestic_carrier_code is present but empty, treat is as
// unset and use instead the default carrier code passed in.
ar_number.set_preferred_domestic_carrier_code("");
phone_util_.FormatNationalNumberWithPreferredCarrierCode(ar_number, "15",
&formatted_number);
EXPECT_EQ("01234 12-5678", formatted_number);
EXPECT_EQ("01234 15 12-5678", formatted_number);
// We don't support this for the US so there should be no change.
PhoneNumber us_number;
us_number.set_country_code(1);
@ -3620,9 +3626,6 @@ TEST_F(PhoneNumberUtilTest, ParseNumbersWithPlusWithNoRegion) {
nz_number.set_raw_input("+64 3 331 6005");
nz_number.set_country_code_source(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN);
// It is important that we set this to an empty string, since we used
// ParseAndKeepRawInput and no carrrier code was found.
nz_number.set_preferred_domestic_carrier_code("");
result_proto.Clear();
EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,
phone_util_.ParseAndKeepRawInput("+64 3 331 6005",
@ -3863,7 +3866,6 @@ TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) {
alpha_numeric_number.set_raw_input("800 six-flags");
alpha_numeric_number.set_country_code_source(
PhoneNumber::FROM_DEFAULT_COUNTRY);
alpha_numeric_number.set_preferred_domestic_carrier_code("");
PhoneNumber test_number;
EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR,


+ 4
- 4
java/carrier/pom.xml View File

@ -3,14 +3,14 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>carrier</artifactId>
<version>1.44-SNAPSHOT</version>
<version>1.47-SNAPSHOT</version>
<packaging>jar</packaging>
<url>https://github.com/googlei18n/libphonenumber/</url>
<parent>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber-parent</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</parent>
<build>
@ -56,12 +56,12 @@
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>prefixmapper</artifactId>
<version>2.54-SNAPSHOT</version>
<version>2.57-SNAPSHOT</version>
</dependency>
</dependencies>


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1876_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/226_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/231_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/234_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/254_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/256_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/373_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/49_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/56_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/593_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/66_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_zh_Hant View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/90_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config View File


+ 5
- 5
java/demo/pom.xml View File

@ -4,11 +4,11 @@
<parent>
<artifactId>libphonenumber-parent</artifactId>
<groupId>com.googlecode.libphonenumber</groupId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</parent>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>demo</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
<properties>
<gae.version>1.9.32</gae.version>
@ -48,17 +48,17 @@
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>geocoder</artifactId>
<version>2.54-SNAPSHOT</version>
<version>2.57-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>carrier</artifactId>
<version>1.44-SNAPSHOT</version>
<version>1.47-SNAPSHOT</version>
</dependency>
</dependencies>


+ 4
- 4
java/geocoder/pom.xml View File

@ -3,14 +3,14 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>geocoder</artifactId>
<version>2.54-SNAPSHOT</version>
<version>2.57-SNAPSHOT</version>
<packaging>jar</packaging>
<url>https://github.com/googlei18n/libphonenumber/</url>
<parent>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber-parent</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</parent>
<build>
@ -64,12 +64,12 @@
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>prefixmapper</artifactId>
<version>2.54-SNAPSHOT</version>
<version>2.57-SNAPSHOT</version>
</dependency>
</dependencies>


BIN
java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1463_en View File


java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_se → java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_sv View File


BIN
java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_en View File


BIN
java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_es View File


BIN
java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_en View File


BIN
java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_ru View File


BIN
java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config View File


+ 3
- 3
java/internal/prefixmapper/pom.xml View File

@ -3,14 +3,14 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>prefixmapper</artifactId>
<version>2.54-SNAPSHOT</version>
<version>2.57-SNAPSHOT</version>
<packaging>jar</packaging>
<url>https://github.com/googlei18n/libphonenumber/</url>
<parent>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber-parent</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@ -51,7 +51,7 @@
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</dependency>
</dependencies>


+ 2
- 2
java/libphonenumber/pom.xml View File

@ -3,14 +3,14 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
<packaging>jar</packaging>
<url>https://github.com/googlei18n/libphonenumber/</url>
<parent>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber-parent</artifactId>
<version>7.7.1-SNAPSHOT</version>
<version>7.7.4-SNAPSHOT</version>
</parent>
<build>


+ 15
- 8
java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java View File

@ -1159,7 +1159,7 @@ public class PhoneNumberUtil {
// If no pattern above is matched, we format the number as a whole.
formattedNumber.append(nationalSignificantNumber);
} else {
NumberFormat numFormatCopy = new NumberFormat();
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.
@ -1247,9 +1247,13 @@ public class PhoneNumberUtil {
*/
public String formatNationalNumberWithPreferredCarrierCode(PhoneNumber number,
String fallbackCarrierCode) {
return formatNationalNumberWithCarrierCode(number, number.hasPreferredDomesticCarrierCode()
? number.getPreferredDomesticCarrierCode()
: 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);
}
/**
@ -1286,7 +1290,10 @@ public class PhoneNumberUtil {
formattedNumber =
formatNationalNumberWithCarrierCode(numberNoExt, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX);
} else if (regionCode.equals("BR") && isFixedLineOrMobile) {
formattedNumber = numberNoExt.hasPreferredDomesticCarrierCode()
// 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.
@ -1515,7 +1522,7 @@ public class PhoneNumberUtil {
break;
}
// Otherwise, we need to remove the national prefix from our output.
NumberFormat numFormatCopy = new NumberFormat();
NumberFormat.Builder numFormatCopy = NumberFormat.newBuilder();
numFormatCopy.mergeFrom(formatRule);
numFormatCopy.clearNationalPrefixFormattingRule();
List<NumberFormat> numberFormats = new ArrayList<NumberFormat>(1);
@ -1644,7 +1651,7 @@ public class PhoneNumberUtil {
// If no pattern above is matched, we format the original input.
return rawInput;
}
NumberFormat newFormat = new NumberFormat();
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+)(.*)");
@ -3014,7 +3021,7 @@ public class PhoneNumberUtil {
if (testNumberLength(potentialNationalNumber.toString(), regionMetadata.getGeneralDesc())
!= ValidationResult.TOO_SHORT) {
normalizedNationalNumber = potentialNationalNumber;
if (keepRawInput) {
if (keepRawInput && carrierCode.length() > 0) {
phoneNumber.setPreferredDomesticCarrierCode(carrierCode.toString());
}
}


+ 95
- 38
java/libphonenumber/src/com/google/i18n/phonenumbers/Phonemetadata.java View File

@ -47,6 +47,28 @@ public final class Phonemetadata {
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.isNationalPrefixOptionalWhenFormatting());
}
return this;
}
}
public static Builder newBuilder() {
@ -134,27 +156,6 @@ public final class Phonemetadata {
return this;
}
public NumberFormat mergeFrom(NumberFormat other) {
if (other.hasPattern()) {
setPattern(other.getPattern());
}
if (other.hasFormat()) {
setFormat(other.getFormat());
}
int leadingDigitsPatternSize = other.leadingDigitsPatternSize();
for (int i = 0; i < leadingDigitsPatternSize; i++) {
addLeadingDigitsPattern(other.getLeadingDigitsPattern(i));
}
if (other.hasNationalPrefixFormattingRule()) {
setNationalPrefixFormattingRule(other.getNationalPrefixFormattingRule());
}
if (other.hasDomesticCarrierCodeFormattingRule()) {
setDomesticCarrierCodeFormattingRule(other.getDomesticCarrierCodeFormattingRule());
}
setNationalPrefixOptionalWhenFormatting(other.isNationalPrefixOptionalWhenFormatting());
return this;
}
public void writeExternal(ObjectOutput objectOutput) throws IOException {
objectOutput.writeUTF(pattern_);
objectOutput.writeUTF(format_);
@ -205,7 +206,27 @@ public final class Phonemetadata {
public PhoneNumberDesc build() {
return this;
}
public Builder mergeFrom(PhoneNumberDesc other) {
if (other.hasNationalNumberPattern()) {
setNationalNumberPattern(other.getNationalNumberPattern());
}
if (other.hasPossibleNumberPattern()) {
setPossibleNumberPattern(other.getPossibleNumberPattern());
}
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();
}
@ -220,6 +241,11 @@ public final class Phonemetadata {
nationalNumberPattern_ = value;
return this;
}
public PhoneNumberDesc clearNationalNumberPattern() {
hasNationalNumberPattern = false;
nationalNumberPattern_ = "";
return this;
}
// optional string possible_number_pattern = 3;
private boolean hasPossibleNumberPattern;
@ -231,6 +257,11 @@ public final class Phonemetadata {
possibleNumberPattern_ = value;
return this;
}
public PhoneNumberDesc clearPossibleNumberPattern() {
hasPossibleNumberPattern = false;
possibleNumberPattern_ = "";
return this;
}
// repeated int32 possible_length = 9;
private java.util.List<Integer> possibleLength_ = new java.util.ArrayList<Integer>();
@ -278,23 +309,9 @@ public final class Phonemetadata {
exampleNumber_ = value;
return this;
}
public PhoneNumberDesc mergeFrom(PhoneNumberDesc other) {
if (other.hasNationalNumberPattern()) {
setNationalNumberPattern(other.getNationalNumberPattern());
}
if (other.hasPossibleNumberPattern()) {
setPossibleNumberPattern(other.getPossibleNumberPattern());
}
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());
}
public PhoneNumberDesc clearExampleNumber() {
hasExampleNumber = false;
exampleNumber_ = "";
return this;
}
@ -645,6 +662,11 @@ public final class Phonemetadata {
preferredInternationalPrefix_ = value;
return this;
}
public PhoneMetadata clearPreferredInternationalPrefix() {
hasPreferredInternationalPrefix = false;
preferredInternationalPrefix_ = "";
return this;
}
// optional string national_prefix = 12;
private boolean hasNationalPrefix;
@ -656,6 +678,11 @@ public final class Phonemetadata {
nationalPrefix_ = value;
return this;
}
public PhoneMetadata clearNationalPrefix() {
hasNationalPrefix = false;
nationalPrefix_ = "";
return this;
}
// optional string preferred_extn_prefix = 13;
private boolean hasPreferredExtnPrefix;
@ -667,6 +694,11 @@ public final class Phonemetadata {
preferredExtnPrefix_ = value;
return this;
}
public PhoneMetadata clearPreferredExtnPrefix() {
hasPreferredExtnPrefix = false;
preferredExtnPrefix_ = "";
return this;
}
// optional string national_prefix_for_parsing = 15;
private boolean hasNationalPrefixForParsing;
@ -689,6 +721,11 @@ public final class Phonemetadata {
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;
@ -700,6 +737,11 @@ public final class Phonemetadata {
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>();
@ -754,6 +796,11 @@ public final class Phonemetadata {
mainCountryForCode_ = value;
return this;
}
public PhoneMetadata clearMainCountryForCode() {
hasMainCountryForCode = false;
mainCountryForCode_ = false;
return this;
}
// optional string leading_digits = 23;
private boolean hasLeadingDigits;
@ -776,6 +823,11 @@ public final class Phonemetadata {
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;
@ -787,6 +839,11 @@ public final class Phonemetadata {
mobileNumberPortableRegion_ = value;
return this;
}
public PhoneMetadata clearMobileNumberPortableRegion() {
hasMobileNumberPortableRegion = false;
mobileNumberPortableRegion_ = false;
return this;
}
public void writeExternal(ObjectOutput objectOutput) throws IOException {
objectOutput.writeBoolean(hasGeneralDesc);


+ 26
- 10
java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java View File

@ -70,8 +70,7 @@ public class ShortNumberInfo {
}
// MatcherApi supports the basic matching method for checking if a given national number matches
// a national number patten or a possible number patten defined in the given
// {@code PhoneNumberDesc}.
// 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
@ -130,7 +129,7 @@ public class ShortNumberInfo {
if (phoneMetadata == null) {
return false;
}
return matcherApi.matchesPossibleNumber(shortNumber, phoneMetadata.getGeneralDesc());
return phoneMetadata.getGeneralDesc().getPossibleLengthList().contains(shortNumber.length());
}
/**
@ -150,8 +149,8 @@ public class ShortNumberInfo {
if (phoneMetadata == null) {
return false;
}
return matcherApi.matchesPossibleNumber(getNationalSignificantNumber(number),
phoneMetadata.getGeneralDesc());
int numberLength = getNationalSignificantNumber(number).length();
return phoneMetadata.getGeneralDesc().getPossibleLengthList().contains(numberLength);
}
/**
@ -165,13 +164,13 @@ public class ShortNumberInfo {
*/
public boolean isPossibleShortNumber(PhoneNumber number) {
List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode());
String shortNumber = getNationalSignificantNumber(number);
int shortNumberLength = getNationalSignificantNumber(number).length();
for (String region : regionCodes) {
PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(region);
if (phoneMetadata == null) {
continue;
}
if (matcherApi.matchesPossibleNumber(shortNumber, phoneMetadata.getGeneralDesc())) {
if (phoneMetadata.getGeneralDesc().getPossibleLengthList().contains(shortNumberLength)) {
return true;
}
}
@ -290,6 +289,13 @@ public class ShortNumberInfo {
return ShortNumberCost.UNKNOWN_COST;
}
// 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())) {
@ -344,6 +350,13 @@ public class ShortNumberInfo {
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())) {
@ -599,10 +612,13 @@ public class ShortNumberInfo {
}
// TODO: Once we have benchmarked ShortNumberInfo, consider if it is worth keeping
// this performance optimization, and if so move this into the matcher implementation.
// this performance optimization.
private boolean matchesPossibleNumberAndNationalNumber(String number,
PhoneNumberDesc numberDesc) {
return matcherApi.matchesPossibleNumber(number, numberDesc)
&& matcherApi.matchesNationalNumber(number, numberDesc, false);
if (numberDesc.getPossibleLengthCount() > 0
&& !numberDesc.getPossibleLengthList().contains(number.length())) {
return false;
}
return matcherApi.matchesNationalNumber(number, numberDesc, false);
}
}

BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US View File


BIN
java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save