Jan 08, 2013: libphonenumber-5.3
* Code changes:
 - Handling UAN numbers in Argentina better when dialling them locally from a
   mobile
* Metadata changes:
 - Updated metadata for region code(s):
   BE, BW, CL, CN, CO, EH, KW, MA, ML, NG, PL, SY, ZA, ZM
 - New geocoding data for country calling code(s): 32 (en, fr, nl)
 - Updated geocoding data for country calling code(s): 27 (en), 86 (en, zh)

Dec 06, 2012: libphonenumber-5.2.2
* Metadata changes:
 - New metadata for region code(s): EH
 - Updated metadata for region code(s): BR, CL, CR, IN, MA, PG, PK, RO
 - New geocoding data for country calling code(s): 241 (en)

Nov 26, 2012: libphonenumber-5.2.1
* Metadata changes:
 - Updated metadata for region code(s):
   AE, AW, BF, CN, DE, JO, KE, KH, LT, MM, MU, NG, RW, SR, TR, VU
 - New geocoding data for country calling code(s): 359 (bg, en)

Oct 10, 2012: libphonenumber-5.2
* Code changes:
 - Adds isNumberGeographical() method.
 - Adds getRegionCodesForCountryCode() method.
 - Fixing issue with getSupportedGlobalNetworkCallingCodes()
   [http://code.google.com/p/libphonenumber/issues/detail?id=202]
 - Ensures that returned collections are unmodifiable where necessary
   [there is a very slight risk that this may break existing users who were relying on being able
   to modify these collections, but doing so would be breaking lots of other assumptions that this
   library makes - if you need to modify any affected collections you must copy them first]
* Metadata changes:
 - Updated metadata for region code(s): DE, GR, HR, OM, SB, ZA
 - Removed metadata for region code: AN (Netherlands Antilles)
 - Updated geocoding data for country calling code(s): 30 (el, en)

Sep 27, 2012: libphonenumber-5.1.4
* Metadata changes:
 - Updated metadata for region code(s): AU, EC, KH, LB, TN, US

Sep 17, 2012: libphonenumber-5.1.3
* Metadata changes:
 - Updated metadata for region code(s): EG, LA, LB, LI, PY
 - Updated metadata for non-geographical calling codes: 800, 808, 888, 979
 - Updated geocoding data for country calling code(s): 98 (en), 1 (en)

Sep 11, 2010: libphonenumber-5.1.2
* Bug fix:
 - Fixing regression in AsYouTypeFormatter where it no longer worked for numbers entered in national
   format for countries with no national prefix, e.g. Spain.

Sep 5, 2010: libphonenumber-5.1.1
* Code changes:
  - Added better logging/exception handling for catching cases where metadata is invalid/missing.

Sep 3, 2012: libphonenumber-5.1
* Code changes:
 - Inserting a space after the national prefix in the AsYouTypeFormatter when formatting numbers in
   national format, if the formatting rules for that country dictate that a space is appropriate.
 - Format emergency numbers and short-codes as a block in the AsYouTypeFormatter.
* Metadata changes:
 - Updated metadata for region code(s): BF, BG, DZ, GA, IT, JP, KW, PF

Aug 20, 2012: libphonenumber-5.0.3
* Metadata changes:
 - New alternate formatting data for country calling code(s): 43
 - Updated metadata for region code(s): AT, BF, JO, NG, RU, SL
 - New geocoding data for country calling code(s): 62 (en, id), 98 (fa)

Aug 07, 2012: libphonenumber-5.0.2
* Metadata changes:
 - Updated metadata for region code(s):
   BF, CN, DJ, IL, JO, KH, KZ, MA, MT, MV, MY, NC, NG, SD, SK, SN, TL, UZ
 - New geocoding data for country calling code(s): 7 (ru), 98 (en)
 - Updated geocoding data for country calling code(s): 7 (en)

July 26th, 2012: libphonenumber-5.0.1
* Metadata changes
 - CL, DE ,IN, KR, US
 - New geocoding data for country calling codes 40, 57, 66, 82, 91.
 - Fixed comments for 353 (IE).

July 12th, 2012: libphonenumber-5.0
* Code changes:
 - Support for alternate formats when finding phone numbers.
 - Allowing two-digit numbers to be parsed if they are entered in national-format with no
   punctuation
* Metadata changes
 - IL, GA
* Other
 - Reflowed this file to 100 char width to make it unambiguous as to what the standard should be.

July 6th, 2012: libphonenumber-4.9.1
* Metadata changes
 - AR, BA, BF, CR, DE, EC, ES, KZ, MK, NC, NG, PF, SB, UZ, non-geo entity 882
 - Geocoding data updates for country calling codes 54 (AR) and 81 (JP), new data for 234 (NG)

June 21st, 2012: libphonenumber-4.9
* Bug fix
 - formatInOriginalFormat fixed not to add a star sign if it was not present originally.
* Metadata changes
 - BF, CZ, ES, KW
 - Non-geographical entities with calling code 882 (BebbiCell, Maritime Communications, Oration
   Technologies, Telespazio and Thuraya)
 - Geocoding data updates for country calling codes 221, 224, 226, 242, 244, 245
* Functionality changes:
 - Minimum allowed length for a national significant number (NSN) when parsing changed from 3 to 2.
 - Support parsing of RFC3966-formatted strings with an isdn-subaddress or extra parameters
   specified.
 - Allow soft hyphen to appear in phone numbers (\u00AD)
* Testing changes:
 - Add extra unit tests for non-geographical phone number entities
 - ExampleNumbersTest testEmergency tests now uses ShortNumberUtil

June 14th, 2012: libphonenumber-4.8.5
* Metadata update only:
 - AC, CR, DE, DK, IL, IN, IS, KH, LI, LR, MA, MD, MK, PA, SA, SG, SS

June 6th, 2012: libphonenumber-4.8.4
* Metadata update only:
 - AE, RO
 - Non-geographical entity with calling code 881 (Iridium)

May 30th, 2012: libphonenumber-4.8.3
* Metadata update only:
 - AN, ET, KW, MN, SX, TC, TL

May 16th, 2012: libphonenumber-4.8.2
* Metadata update only:
 - BH, CR, EE, JO, KW, LA, QA, SI, TH
 - Non-geographical entity with calling code 878 (VISIONng)

May 8th, 2012: libphonenumber-4.8.1
* Metadata update only:
 - CA, CI, EG, HK, IN, IR, LB, MA, ME, MM
 - Non-geographical entity with calling code 870 (Inmarsat)
 - Geocoding updates for country calling codes 1 for new area codes

April 24th, 2012: libphonenumber-4.8
* Functionality changes
 - RFC format now outputs a number starting with "tel:"
 - Parsing support for numbers in RFC format that contain the country info in the "phone-context"
   part
 - Support for obtaining area codes for Italy, Vatican City, San Marino
* Metadata changes
 - AM, AO, AR, BE, BF, CD, EG, GH, GM, GN, IN, IR, IT, JO, LA, LC, MD, MS, NO, PA, PK, SI, SJ, SO,
   SY, TC, TN, UZ, VN, ZW
 - Geocoding updates for country calling codes 1, 20, 233, 31, 33, 352, 374, 54, 56, 86
* Refactoring of matching functions, including moving them to PhoneNumberMatcher.

March 16th, 2012: libphonenumber-4.7
* Bug fixes
 - Now return "too long" for input that is longer than 250 chars when parsing
* Metadata changes
 - AC,AM,AT,AZ,BF,BR,BY,BZ,CR,CU,DE,DJ,EE,EG,ET,GA,GH,HK,HN,ID,IN,JP,KE,KG,KH,KR,KW,KY,LB,LU,MA,MD,
   MK,NA,NE,NZ,SA,SB,SC,SE,SL,SN,UZ
* Refactoring of test classes so that tests requiring the test metadata to be loaded have a common
  base class which handles this.

February 9th, 2012: libphonenumber-4.6
* Bug fixes
 - Fix for formatByPattern to enable RFC formatting to work
 - Fix for RFC formatting to work even when the international formatting rule starts with
   punctuation
 - Logging consistency changes - some warnings are no longer printed, others have become only
   WARNINGS
 - Fix for isValidNumberForRegion potentially throwing a NPE
 - Parsing Israeli * numbers written in international format now works
 - PhoneNumberMatcher doesn't match timestamps as phone-numbers
* Metadata changes
 - Updates for AN, AX, BF, BJ, BR, BS, DJ, FI, IN, LV, MW, RS, SC, VN
 - New countries supported: SS (South Sudan), CW (Curaçao) and BQ (Bonaire, Sint Eustatius and Saba)
* Refactoring of the private formatting functions in PhoneNumberUtil to ensure names are more
  descriptive and to reduce code duplication.

January 19th, 2012: libphonenumber-4.5
* Code changes
 - Support for non-geographical country calling codes (e.g. +800).
 - Modify formatInOriginalFormat to not insert/remove/modify digits in the original number passed
   in.
 - Fix formatOutOfCountryKeepingAlphaChars to not throw a NPE.

* Metadata changes
 - Updates for AR, BH, CI, CN, CR, DE, GA, IL, JO, JP, KE, KZ, LB, LK, LT, MV, MW, MZ, NA, NL, NZ,
   PL, RO, SA, SV, TM, UG, US
 - New country calling codes: 800, 808, 883, 888, 979
 - Geocoding data updates: AR, US

December 9th, 2011: libphonenumber-4.4
* Code changes
 - Support for Voicemail numbers
 - Support prefixes "xt" and "xtn" to indicate extensions of phone numbers
 - Change formatInOriginalFormat to use raw_input for numbers with incorrect leading zeroes, instead
   of all invalid numbers.

* Metadata changes
 - Updates for AR, BD, CH, CI, IL, IR, IS, IT, JP, KW, LR, MM, NG, SA, SC, UZ

November 24th, 2011: libphonenumber-4.3
* Code changes
 - Fix the problems with AYTF crashing for longer numbers entered with +CountryCode, and incorrectly
   removing national prefix for some numbers.
 - Improve PhoneNumberMatcher to not match numbers ending with '%'.
 - Fix formatNumberForMobileDialing to handle Israeli star numbers, Peruvian and Colombian numbers.
 - Modify formatInOriginalFormat to use the raw input if we don't have a formatting pattern for a
   number.
 - Simple offline geocoding function which takes into account the user's region.

* Metadata changes
 - Updates for CR, GN, JP, KE, PL, SG, SR, SX, TH, TK

November 10th, 2011: libphonenumber-4.2
* Code changes
 - Providing an "exact match" isEmergencyNumber method
 - Improvement to PhoneNumberMatcher: requires national prefix to be present when matching
   national-format numbers, unless matching for a region where it is explicitly marked in the
   metadata that they may be omitted. Applies to leniency level VALID and higher.
 - Change formatNumberForMobileDialing not to modify the phoneNumber passed in.

* Metadata changes
 - Emergency numbers added for all remaining countries
 - Collected data on which numbers we format with a national prefix are commonly written without one
   and added this
 - Updates for AR, AT, BH, CZ, GR, IR, KM, LT, MX, PT, SE, SO, UG
 - Addition of SX (Sint Maarten)

October 19th, 2011: libphonenumber-4.1
* Code changes
 - Update code and metadata for countries with IDD "8~10" to accept phone numbers where the "~" is
   omitted.
 - Modify formatInOriginalFormat to use raw_input (when present) when the number is considered as
   invalid by the library.
 - Add ShortNumberUtil to deal with international short phone numbers, such as short codes and
   emergency numbers.
 - Increase the maximum phone-number length accepted when parsing (now set to
   16).

* Metadata changes
 - Updates: BF, BN, CN, DE, DK, DO, FR, IN, KI, KW, MC, MD, ML, PA, QA, SB, UK, WS
 - Emergency number information also added to: AE, AF, AL, AM, AR, AT, AU, BA,
   BB, BD, BE, BG, BH, BO, BR, BY, CA, CH, CL, CN, CO, CR, CY, CZ, DE, DJ, DK,
   DO, DZ, EC, EE, EG, ES, FI, FJ, FO, FR, GB, GE, GF, GH, GI, GL, GR, GT, GY,
   HK, HN, HR, HU, ID, IE, IL, IN, IR, IS, IT, JM, JO, JP, KR, KW, KY, KZ, LB,
   LK, LT, LU, LV, MA, MC, MD, ME, MK, ML, MM, MN, MO, MT, MU, MV, MX, MY, NG,
   NI, NL, NO, NP, OM, PA, PE, PH, PK, PL, PM, PT, PY, QA, RO, RS, RU, RW, SA,
   SB, SD, SE, SG, SI, SK, SL, SM, SR, SV, SY, TD, TH, TJ, TM, TN, TR, TT, TW,
   UA, UG, US, UY, UZ, VA, VE, VN, VU, ZA, ZM, ZW

October 6th, 2011: libphonenumber-4.0
* Code changes
 - New function formatNumberForMobileDialing, which attempts to format a number in such a way that
   the call can be connected from a mobile phone. If this is impossible, for example for numbers
   that cannot be internationally dialled, then an empty string is returned.
 - Fallback functionality to English for non-CJK languages for geocoding

* Metadata changes
 - Collecting data for emergency numbers
 - Updates: AR, AU, BR, CN, CZ, EG, GD, IE, IL, JM, KW, KH, SD, SO, TR, UG, UZ
 - Geocoding data changes: AO, AR, AT, BJ, BR, CD, CG, CI, CL, CN, CV, DE, ES,
   FR, GR, GW, HU, KM, MR, MZ, NL, PL, PT, SE, ST, SZ

September 13th, 2011: libphonenumber-3.9
* Code changes
 - Enable AsYouTypeFormatter to handle long IDD and NDD.
 - Allow the presence of an IDD following a +.
 - Fix formatting of phone numbers which contain only 0s in the national number.
 - Refactored some code in geocoding including AreaCodeMap and the storage strategies.

* Metadata changes
 - Updates: AM, BE, BH, BJ, BR, BT, BZ, CI, CL, CN, DE, DK, DM, DZ, EC, EG, FJ,
   GR, HR, HT, IN, IQ, IS, JM, KE, KG, KH, KR, LA, LB, LR, MA, MD, ML, MO, MX,
   MY, NE, NG, PG, PH, PK, PY, QA, SA, SD, SG, SN, TD, TG, TH, TN, TT, UG, YE,
   ZA, ZM
 - New geocoding data for: AC, CG, CU, CV, EG, ET, FI, FI, FI, GL, JP, KM, MA,
   MA, MU, MU, MU, MZ, RS, SH, SH, SL, SO, ST, TG, TG, TG, UG, ZM
 - Updated geocoding data for: AR, DE

August 11th, 2011: libphonenumber-3.8
* Code changes
 - Fix to demo to not throw null-ptr exceptions for invalid NANPA numbers
 - Fixed AYTF to not accept plus signs in the middle of input
 - PhoneNumberMatcher improvements - added STRICT_GROUPING and EXACT_GROUPING levels, numbers
   followed/preceded by a currency symbol will not match, multiple numbers separated by phone-number
   punctuation will now match. ", " is no longer accepted as an extension symbol when matching, only
   when parsing. "x" is only accepted as a carrier code or extension marker, not otherwise.
 - Changes to handling of leading zeroes - these will not be silently ignored anymore, but will be
   stored as part of the number.
 - PhoneNumberOfflineGeocoder - new method to get the description of a number that assumes the
   validity of the number has already been checked and will not re-verify it.
 - Split geocoding US binary data into multiple files.

* Metadata changes
 - Updates: AR, AT, AU, AZ, BE, BF, BH, BY, CA, CN, CO, CR, HT, HU, IT, KG, KH,
   LB, LI, ME, NC, RS, SE, TT, US, VG, ZA
 - New geocoding data for: AL, AM, AO, BF, BJ, BW, CD, CI, CZ, DZ, EE, GH, GM,
   GN, GR, GW, HU, IS, KE, LK, LS, LT, LU, LV, MD, MG, MR, NA, PE, QN, SD, SK,
   SN, SZ, TN, VE, VN, ZA, ZW
 - Updated geocoding data for: GB, PT, US
 - Revised sorting of geocoding data

July 5th, 2011
* Code changes
 - Refactored AreaCodeMap to minimize binary and memory footprint by using 2 different strategies.
 - Refactored BuildMetadataFromXml.java and added unittests.

* Metadata changes
 - Regenerate binaries for all existing area code mapping data with smaller sizes.
 - Added city-level area code data mapping for US and Canada.

June 29th, 2011
* Code changes
 - Fixed issue 38, issue 39, issue 41 and issue 43

* Metadata changes
 - Added phone number area mapping files for
   - JP in Japanese
   - FR in French
   - TW in English, Simplified and Traditional Chinese
   - RU in English
   - IT in English and Italian
   - PT in Portuguese
   - TR in English and Turkish
   - CH in English, German, French and Italian
 - Updates: CR, GE, IT, JP, KW, MH, MP, MU, PE, PM, RW, TG, TJ, TK

June 14th, 2011
* Code changes
 - Added PhoneNumberOfflineGeocoder, supporting classes and their unittests.
 - Added GenerateAreaCodeData to transform phone number area mapping files from text files to binary
   files.
 - Modified PhoneNumberParserServlet.java and phonenumberparser.jsp to incorporate
   PhoneNumberOfflineGeocoding in the appengine demo.

* Metadata changes
 - Added phone number area mapping files for NANPA countries and GB in English, NL in Dutch, AR, CL
   and ES in Spanish, AT and DE in German, SE in Swedish, BR in Portuguese, KR in English, Korean,
   Simplified and Traditional Chinese, and CN in Simplified Chinese.

June 10th, 2011
* Code changes:
 - Fixes for PhoneNumberMatcher to be more restrictive in valid mode and not match numbers
   surrounded by Latin characters. This ensures, for example, the string abc123456789acg will not be
   marked as a phone numbers.
 - Enable PhoneNumberUtil to handle all digits, rather than a subset
 - Fix for AYTF issue36 and improvement for US AYTF behaviour.
* Metadata changes:
 - Updates: BG, EG, ES, GH, PF, SC, SY, VA

May 24th, 2011
* Code changes:
 - Phonenumber now implements Serializable.
 - findNumbers doesn't accept numbers with mis-matched brackets as phone-numbers
 - An offline phone number geocoder has been added. The current implementation just returns the
   region name for the phone number; more detailed geocoding will be added later.
* Metadata changes:
 - New countries: GF, KP, NC, PA, PF, PW, PY, SB, SR, TO, UY, VU
 - Updates: CY, CZ, ES, GB, GQ, JM, MQ, TN, VI

May 9th, 2011
* Code changes:
 - Fixed potential for a null-ptr exception in getExampleNumber
 - Potential speed improvement with replacement of StringBuffer with StringBuilder
* Metadata changes
 - Changed way that international formats are specified to make it easier to do so
 - New countries: AX, CC, CX, WF
 - Updates: AM, AR, AU, AW, CN, CO, CR, DM, EC, ET, FI, FJ, GH, IN, JP, KE, KM,
   KN, LR, MD, MQ, MX, NP, PH, SC, SE, SM, SN, SY, UG, US, VC, VI, ZM

Apr 26th, 2011
* Code changes:
 - Improved PhoneNumberMatcher for cases with other numbers before or after the phone number.
 - Improved AsYouTypeFormatter not to use formatting rules containing non-formatting characters
   (e.g. '*' in Israeli star numbers).
* Metadata changes:
 - New countries: FJ, FM, GY, NF, NI, NR, TV.
 - Updates: AM, AZ, BF, BW, BZ, CI, CR, GB, GP, HK, JM, KH, LB, LY, MV, PE, PK, SZ, TJ, US.
* Minor documentation updates

Apr 11th, 2011
* Bug fixes:
 - Adding date exclusion pattern in PhoneNumberMatcher.
 - Fixing bug with selecting a suitable region for numbers with leading zeros where mutiple regions
   for that country code are possible.
* Metadata changes:
 - Updates: AG, AI, AS, BB, BM, BS, CA, DM, DO, ET, FO, GD, GE, GU, IN, JM, KN, KY, LC, MN, MP, MR,
   MS, NO, PR, TC, TR, TT, US, VC, VG, VI
 - New countries: CK, FK, GT, IO, KI, SJ, SV
* Documentation updates and some small refactoring to AsYouTypeFormatter

Mar 31st, 2011
* New functionality:
 - Can parse and format numbers in RFC-3966 format.
 - Added isAlphaNumber to check to see if a number is a "vanity" or "alpha" number
 - Can format a number made up of alpha-characters in an "out-of-country" format (e.g. 0011 1
   800-SIX-FLAG to dial an American alpha-number from Australia).
* Code changes:
 - Renamed private vars, private methods and fixed comments to try and differentiate between country
   (calling) codes and region codes.
 == Non-backwards-compatible API changes: ==
 - Renamed getSupportedCountries to getSupportedRegions, as this more accurately reflects that the
   library is based around region codes.
 - getNationalSignificantNumber is no longer a static method, but is instead an instance method.
* Metadata changes:
 - Bug-fixes and updates for AU, AZ, EE, FI, IN, JO, KW, KZ, MV, RU, RR, VA
 - New country: ME

Mar 22nd, 2011
* Metadata changes:
 - New mobile-number pattern for AU

Mar 10th, 2011
* New functionality:
 - New function to format a number with the preferred domestic carrier code used when parsing,
   falling back to a default calling code otherwise (formatNationalNumberWithPreferredCarrierCode).
 - We now store the preferred domestic carrier code used when the user calls parseAndKeepRawInput
 - New functionality to extract phone-numbers from text (findNumbers). This is just the first
   version - it does not extract ALPHA numbers such as 0800 CALL ME, or numbers where alternate
   endings are specified (such as 03-331 6005/6006).
* Code changes:
 - Tidying up the test file to use several pre-defined phone number constants
 - Fixing several lint errors
 - Added javadoc to formatNationalNumberWithCarrierCode
 - Fixed bug where a null pointer exception was thrown when getAsYouTypeFormatter was called with an
   invalid region code
 - Improved AsYouTypeFormatter to deal with countries with variable-length patterns such as LU
* Metadata changes:
 - Bug-fixes and updates for the following countries: BF, BO, BR, CL, CO, CR, DK, FO, GE, KR, KW,
   LA, LU, MU, SC, SH, TR, VE
 - New country: SH

Mar 10th, 2011
* Code changes:
  - releasing the code to run the demo on localhost or appengine.

Mar 7th, 2011
* Metadata changes:
 - Adding support for AC

Feb 11th, 2011
* Metadata changes:
 - Update UAN number ranges for IM and JE.

Feb 9th, 2011
* Code changes:
  - Better isNumberMatch method. This will now recognise numbers starting with a national prefix as
    an NSN_MATCH, instead of SHORT_NSN_MATCH.
    == Note Non-backwards-compatible API change here! ==
      This will no longer throw a NumberParseException - instead we will return NOT_A_NUMBER if one
      or other of the numbers provided do not match.
  - New number-type UAN now supported in the code. This represents Company Numbers or Universally
    Accessible Numbers.
* Metadata changes:
  - Bug-fixes and updates for the following countries: AG, AZ, BA, BE, CA, CU, ES, FI, GB, GD, GG,
    IE, IL, IM, IN, IR, IT, JE, JP, KR, KW, NG, NZ, PK, PS, PT, RU, SE, SG, SY, US
  - New countries: CO, LU, LY, MC, SM
  - Addition of "Personal Number" ranges to all NANPA countries

Jan 31st, 2011
* Code changes:
  - Introducing equals() and hashCode() methods for the Phonenumber.PhoneNumber class

Jan 28th, 2011
* Code changes:
  - Fixing critical bug with non-Android-compatible code. isEmpty() was being used and CANON_EQ in
    reg-ex matches.

Jan 20th, 2011
* Code improvements:
  - Handle null phone-numbers when parsing by throwing a NumberParseException.
  - Handle extension written with an accented "o", as per Spanish, when parsing.
  - Handle U+30FC dashes as phone-number punctuation.
  - Allow "ZZ" or null regions to be specified for numbers starting with a full-width "+" symbol, or
    with other characters (such as whitespace) before the leading +.
  - new getLengthOfNationalDestinationCode function
* Metadata changes:
  - New types of numbers introduced: UAN (universal or "company" numbers) and short codes. Note that
    "generalDesc" patterns do not encompass short-codes.  No code-support for these has been
    introduced as of yet. We are also now enabling the collection of data for information such as
    area-code-optional, and no-international-dialling ranges.
  - Data updates as per ITU notifications/bug fixes for the following countries: AM, BH, CD, CG, CR,
    DE, DJ, EE, GB, GN, HU, IE, JO, JP, LB, LR, MA, MK, MN, MR, NA, PG, SC, SG, SO, SZ, VN, ZA, ZW
  - Data added for the following countries: BZ, CU, EC, FO, GI, HN, HT, LK, MT, MV, NU, PS, SD
  - Indentation fixes in reg-exes for the following countries: BG, GB
  - Allow nationalPrefixForParsing to be specified for countries with no national prefix, to handle
    possible carrier prefixes

Jan 3rd, 2011
* Metadata changes:
  - Updates to JE
  - Updated comments for GB/GG/IM/JE

November 25th, 2010
* Metadata changes:
  - Updates to existing countries: AD, AG, AI, AN, AS, BB, BG, BM, BS, BW, CA, DM, DO, GD, GH, GM,
    GU, IN, JM, KN, KY, KZ, LB, LC, MP, MS, PR, SY, TC, TT, TZ, US, VC, VG, VI.
  - Reorganize reg-exes for better readability.
  - Updated comments.

October 22nd, 2010
* Metadata changes:
  - Updates to existing countries: AE, GB, GG, IM, JE

October 15th, 2010
* Code improvements:
  - Allowed parsing of numbers that start with "++" or a full-width "+" symbol
  - Allowed reg-exes for national and possible number patterns to have white space in them in the
    source XML file
  - Added a more useful toString method for the phone number proto class
* Metadata changes:
  - Updates to existing countries: AF, BF, BO, ES, GB, GG, IM, IS, JE, JE, JP, KR, PE, PT, RU, SE,
    TT, ZW
* Bug fixes:
  - Parsing empty strings with invalid region codes no longer throws a null pointer exception

September 4th, 2010
* Code improvement:
  - Added new phone number type: pager
* Metadata change:
  - update to existing country: GG, IM, JE, RS, RU
* Bug fixes:
  - ArrayOutOfBoundException in AsYouTypeFormatter.getRememberedPosition()
  - AsYouTypeFormatter for UK childline number

September 1st, 2010
* Bug fix on KZ metadata.

August 17th, 2010
* Code improvement:
  - Refactored BuildMetadataProtoFromXml.java into BuildMetadataFromXml.java and
    BuildMetadataProtoFromXml.java
  - Added BuildMetadataProtoFromXml.java and JSArrayBuilder.java
  - Refactored CountryCodeToRegionCodeMap and CountryCodeToRegionCodeMapForTesting into separate
    files.

August 16th, 2010
* Bug fixes
  - AsYouTypeFormatter for formatting Chinese geographical numbers entered in national format.
  - AsYouTypeFormatter for formatting Chinese 400/800 numbers entered in national format.
* Metadata change:
  - new countries: AM, AN, BH, GL, IS
  - adding national prefix 1 to all NANPA countries.
  - update to existing countries: BF, FR, UK, PK, RE

August 4th, 2010
* Further improve startup performance
  - Preload no country specific metadata at startup.
  - Stop creating the file containing mapping from country calling code to region code and loading
    it at startup; instead, do the initialization in PhoneNumberUtil.

July 31th, 2010

* Improve startup performance
  - Separate generated metadata binary file to one file per region
  - Preload US at start up, and load other region at the time when needed
  - Create a file containing mapping from country calling code to region code, and load it at
    startup
  - Same change also applied to unittests

July 30th, 2010
* Metadata change:
  - new country: TL
  - update to existing country: AZ, CN, FR, GH, JO, LA, PG, PK, QA, SZ, UA, VN

* Code improvement
  - China local number formatting for AsYouTypeFormatter
  - improve extension parsing to handle number in the form of +1 (645) 123 1234 ext. 910#
