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#
