1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/autofill_country.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <stddef.h>
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <stdint.h>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <utility>
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/singleton.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/stl_util.h"
16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h"
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "grit/component_strings.h"
19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/locid.h"
20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/uloc.h"
21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/unistr.h"
22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/urename.h"
23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/utypes.h"
24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/i18n/unicode/coll.h"
25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/i18n/unicode/ucol.h"
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace autofill {
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace {
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The maximum capacity needed to store a locale up to the country code.
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const size_t kLocaleCapacity =
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ULOC_LANG_CAPACITY + ULOC_SCRIPT_CAPACITY + ULOC_COUNTRY_CAPACITY + 1;
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct CountryData {
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int postal_code_label_id;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int state_label_id;
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  AddressRequiredFields address_required_fields;
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct StaticCountryData {
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  char country_code[3];
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CountryData country_data;
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Maps country codes to localized label string identifiers.
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const StaticCountryData kCountryData[] = {
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AD", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PARISH,
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_STATE } },
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_EMIRATE,
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_STATE } },
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_ADDRESS_LINE_1_ONLY } },
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AQ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AS", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AX", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BB", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PARISH,
104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BD", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BJ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BV", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "BZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CD", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  { "CS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CV", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CX", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "CZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "DE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "DJ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "DK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "DM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "DO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "DZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "EC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "EE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "EG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "EH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ER", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ES", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ET", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "FI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "FJ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "FK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "FM", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "FO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
265c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
266c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "FR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GB", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
274c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_COUNTY,
275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GD", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
278c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
280c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
281c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
290c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_ADDRESS_LINE_1_ONLY } },
2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GP", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GQ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GU", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "GY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "HK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_AREA,
329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_STATE } },
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "HM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "HN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "HR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "HT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "HU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ID", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
346c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_COUNTY,
350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
3632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IQ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
368c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "IT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
371c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "JE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "JM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
376c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PARISH,
377c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "JO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "JP", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PREFECTURE,
383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
395c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
397c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
398c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
400c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
401c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KP", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
403c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
404c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
407c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_STATE } },
4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "KZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
415c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
416c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
418c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
419c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LB", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
425c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
427c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
428c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
4292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
430c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
431c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
433c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LV", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "LY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
451c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
452c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
454c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
455c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MD", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
457c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
458c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ME", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
460c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
461c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
463c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
464c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
466c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
467c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MH", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
469c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
4712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
472c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
473c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ML", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
475c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
476c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
478c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
479c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
481c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
482c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_ADDRESS_LINE_1_ONLY } },
4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MP", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
484c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
485c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MQ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
487c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
488c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
490c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
491c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
493c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
494c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
496c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
497c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
499c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
500c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MV", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
502c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
503c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
505c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
506c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MX", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
508c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
509c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
511c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
512c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "MZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
514c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
515c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
517c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
518c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
520c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
521c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
523c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
524c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
526c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
527c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
529c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
532c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_DEPARTMENT,
533c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
535c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
536c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
538c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
539c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NP", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
541c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
542c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
544c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_DISTRICT,
545c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_STATE } },
5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
547c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
548c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
550c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
551c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "OM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
553c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
554c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
556c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
557c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
559c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
560c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
562c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
563c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
565c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
566c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
568c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
569c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY } },
5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
571c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
572c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
574c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
575c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
577c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
578c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
580c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
581c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PR", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
583c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
584c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
586c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
587c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
589c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
590c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
5912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PW", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
592c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
593c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
5942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
595c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
596c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
5972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "QA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
598c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
599c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "RE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
601c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
602c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "RO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
604c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
605c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "RS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
607c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
608c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "RU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
610c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
611c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "RW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
613c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
614c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
616c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
617c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SB", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
619c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
620c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
622c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
623c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
625c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
626c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
6272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
628c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
629c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_ZIP } },
6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
631c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
632c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
6332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SI", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
634c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
635c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SJ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
637c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
638c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
640c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
641c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
643c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
644c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
646c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
647c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_ZIP } },
6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
649c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
650c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
652c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
653c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
655c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
656c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ST", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
658c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
659c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SV", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
661c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
662c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
6632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "SZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
664c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
665c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
667c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
668c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
6692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TD", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
670c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
671c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
673c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
674c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
676c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
677c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TH", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
679c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
680c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TJ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
682c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
683c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TK", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
685c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
686c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TL", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
688c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
689c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
691c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
692c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
694c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
695c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TO", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
697c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
698c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
6992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TR", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
700c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
701c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
7022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
703c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
704c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TV", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
706c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_ISLAND,
707c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
709c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_COUNTY,
710c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
7112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
712c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
713c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "UA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
715c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
716c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "UG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
718c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
719c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "UM", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
721c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
722c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
7232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "US", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
724c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
725c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "UY", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
727c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
728c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "UZ", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
730c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
731c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
733c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
734c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VC", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
736c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
737c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
739c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
740c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE } },
7412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VG", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
742c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
743c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_ADDRESS_LINE_1_ONLY } },
7442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VI", { IDS_AUTOFILL_FIELD_LABEL_ZIP_CODE,
745c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_STATE,
746c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_STATE_ZIP } },
7472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VN", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
748c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
749c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY } },
7502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "VU", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
751c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
752c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "WF", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
754c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
755c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
7562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "WS", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
757c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
758c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "YE", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
760c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
761c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY } },
7622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "YT", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
763c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
764c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
7652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ZA", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
766c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
767c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY_ZIP } },
7682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ZM", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
769c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
770c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIRES_CITY } },
7712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ZW", { IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
772c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            IDS_AUTOFILL_FIELD_LABEL_PROVINCE,
773c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)            ADDRESS_REQUIREMENTS_UNKNOWN } },
7742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
7752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A singleton class that encapsulates a map from country codes to country data.
7772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CountryDataMap {
7782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
7792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // A const iterator over the wrapped map data.
7802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef std::map<std::string, CountryData>::const_iterator Iterator;
7812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static CountryDataMap* GetInstance();
7832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static const Iterator Begin();
7842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static const Iterator End();
7852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static const Iterator Find(const std::string& country_code);
7862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
7882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CountryDataMap();
7892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  friend struct DefaultSingletonTraits<CountryDataMap>;
7902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, CountryData> country_data_;
7922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(CountryDataMap);
7942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
7952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
7972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)CountryDataMap* CountryDataMap::GetInstance() {
7982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return Singleton<CountryDataMap>::get();
7992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)CountryDataMap::CountryDataMap() {
8022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Add all the countries we have explicit data for.
8032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (size_t i = 0; i < arraysize(kCountryData); ++i) {
8042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const StaticCountryData& static_data = kCountryData[i];
8052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    country_data_.insert(std::make_pair(static_data.country_code,
8062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                        static_data.country_data));
8072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
8082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Add any other countries that ICU knows about, falling back to default data
8102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // values.
8112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (const char* const* country_pointer = icu::Locale::getISOCountries();
8122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       *country_pointer;
8132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       ++country_pointer) {
8142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    std::string country_code = *country_pointer;
8152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (!country_data_.count(country_code)) {
8162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      CountryData data = {
8172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        IDS_AUTOFILL_FIELD_LABEL_POSTAL_CODE,
8182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        IDS_AUTOFILL_FIELD_LABEL_PROVINCE
8192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      };
8202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      country_data_.insert(std::make_pair(country_code, data));
8212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
8222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
8232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const CountryDataMap::Iterator CountryDataMap::Begin() {
8262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return GetInstance()->country_data_.begin();
8272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const CountryDataMap::Iterator CountryDataMap::End() {
8302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return GetInstance()->country_data_.end();
8312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const CountryDataMap::Iterator CountryDataMap::Find(
8342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& country_code) {
8352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return GetInstance()->country_data_.find(country_code);
8362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
8372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A singleton class that encapsulates mappings from country names to their
8392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// corresponding country codes.
8402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CountryNames {
8412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
8422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static CountryNames* GetInstance();
8432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the country code corresponding to |country|, which should be a
8452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // country code or country name localized to |locale|.
846c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  const std::string GetCountryCode(const base::string16& country,
8472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   const std::string& locale);
8482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
8502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CountryNames();
8512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ~CountryNames();
8522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  friend struct DefaultSingletonTraits<CountryNames>;
8532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Populates |locales_to_localized_names_| with the mapping of country names
8552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // localized to |locale| to their corresponding country codes.
8562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void AddLocalizedNamesForLocale(const std::string& locale);
8572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Interprets |country_name| as a full country name localized to the given
8592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |locale| and returns the corresponding country code stored in
8602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |locales_to_localized_names_|, or an empty string if there is none.
861c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  const std::string GetCountryCodeForLocalizedName(
862c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::string16& country_name,
863c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const std::string& locale);
8642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns an ICU collator -- i.e. string comparator -- appropriate for the
8662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // given |locale|.
8672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  icu::Collator* GetCollatorForLocale(const std::string& locale);
8682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the ICU sort key corresponding to |str| for the given |collator|.
8702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Uses |buffer| as temporary storage, and might resize |buffer| as a side-
8712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // effect. |buffer_size| should specify the |buffer|'s size, and is updated if
8722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // the |buffer| is resized.
8732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const std::string GetSortKey(const icu::Collator& collator,
874c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                               const base::string16& str,
875c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                               scoped_ptr<uint8_t[]>* buffer,
8762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               int32_t* buffer_size) const;
8772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Maps from common country names, including 2- and 3-letter country codes,
8792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // to the corresponding 2-letter country codes. The keys are uppercase ASCII
8802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // strings.
8812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, std::string> common_names_;
8822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The outer map keys are ICU locale identifiers.
8842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The inner maps map from localized country names to their corresponding
8852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // country codes. The inner map keys are ICU collation sort keys corresponding
8862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // to the target localized country name.
8872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, std::map<std::string, std::string> >
8882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      locales_to_localized_names_;
8892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Maps ICU locale names to their corresponding collators.
8912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, icu::Collator*> collators_;
8922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(CountryNames);
8942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
8952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
8962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
8972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)CountryNames* CountryNames::GetInstance() {
8982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return Singleton<CountryNames>::get();
8992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)CountryNames::CountryNames() {
9022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Add 2- and 3-letter ISO country codes.
9032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (CountryDataMap::Iterator it = CountryDataMap::Begin();
9042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       it != CountryDataMap::End();
9052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       ++it) {
9062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& country_code = it->first;
9072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    std::string iso3_country_code =
9082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        icu::Locale(NULL, country_code.c_str()).getISO3Country();
9092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    common_names_.insert(std::make_pair(country_code, country_code));
9112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    common_names_.insert(std::make_pair(iso3_country_code, country_code));
9122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
9132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Add a few other common synonyms.
9152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  common_names_.insert(std::make_pair("UNITED STATES OF AMERICA", "US"));
9162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  common_names_.insert(std::make_pair("U.S.A.", "US"));
9172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  common_names_.insert(std::make_pair("GREAT BRITAIN", "GB"));
9182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  common_names_.insert(std::make_pair("UK", "GB"));
9192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  common_names_.insert(std::make_pair("BRASIL", "BR"));
9202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  common_names_.insert(std::make_pair("DEUTSCHLAND", "DE"));
9212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)CountryNames::~CountryNames() {
9242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  STLDeleteContainerPairSecondPointers(collators_.begin(),
9252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                       collators_.end());
9262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
928c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const std::string CountryNames::GetCountryCode(const base::string16& country,
9292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                               const std::string& locale) {
9302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // First, check common country names, including 2- and 3-letter country codes.
9312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string country_utf8 = UTF16ToUTF8(StringToUpperASCII(country));
9322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, std::string>::const_iterator result =
9332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      common_names_.find(country_utf8);
9342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (result != common_names_.end())
9352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return result->second;
9362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Next, check country names localized to |locale|.
9382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string country_code = GetCountryCodeForLocalizedName(country, locale);
9392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!country_code.empty())
9402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return country_code;
9412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Finally, check country names localized to US English.
9432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return GetCountryCodeForLocalizedName(country, "en_US");
9442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void CountryNames::AddLocalizedNamesForLocale(const std::string& locale) {
9472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Nothing to do if we've previously added the localized names for the given
9482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |locale|.
9492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (locales_to_localized_names_.count(locale))
9502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
9512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, std::string> localized_names;
9532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const icu::Collator* collator = GetCollatorForLocale(locale);
9542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int32_t buffer_size = 1000;
955c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<uint8_t[]> buffer(new uint8_t[buffer_size]);
9562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (CountryDataMap::Iterator it = CountryDataMap::Begin();
9582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       it != CountryDataMap::End();
9592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       ++it) {
9602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& country_code = it->first;
961c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    base::string16 country_name = l10n_util::GetDisplayNameForCountry(
962c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        country_code, locale);
9632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    std::string sort_key = GetSortKey(*collator,
9642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                      country_name,
9652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                      &buffer,
9662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                      &buffer_size);
9672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    localized_names.insert(std::make_pair(sort_key, country_code));
9692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  locales_to_localized_names_.insert(std::make_pair(locale, localized_names));
9722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
9732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const std::string CountryNames::GetCountryCodeForLocalizedName(
975c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const base::string16& country_name,
9762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& locale) {
9772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  AddLocalizedNamesForLocale(locale);
9782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  icu::Collator* collator = GetCollatorForLocale(locale);
9802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // As recommended[1] by ICU, initialize the buffer size to four times the
9822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // source string length.
9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // [1] http://userguide.icu-project.org/collation/api#TOC-Examples
9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int32_t buffer_size = country_name.size() * 4;
985c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  scoped_ptr<uint8_t[]> buffer(new uint8_t[buffer_size]);
9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string sort_key = GetSortKey(*collator,
9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    country_name,
9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    &buffer,
9892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    &buffer_size);
9902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const std::map<std::string, std::string>& localized_names =
9922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      locales_to_localized_names_[locale];
9932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::map<std::string, std::string>::const_iterator result =
9942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      localized_names.find(sort_key);
9952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (result != localized_names.end())
9972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return result->second;
9982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return std::string();
10002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)icu::Collator* CountryNames::GetCollatorForLocale(const std::string& locale) {
10032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!collators_.count(locale)) {
10042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    icu::Locale icu_locale(locale.c_str());
10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    UErrorCode ignored = U_ZERO_ERROR;
10062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    icu::Collator* collator(icu::Collator::createInstance(icu_locale, ignored));
10072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Compare case-insensitively and ignoring punctuation.
10092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ignored = U_ZERO_ERROR;
10102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    collator->setAttribute(UCOL_STRENGTH, UCOL_SECONDARY, ignored);
10112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ignored = U_ZERO_ERROR;
10122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    collator->setAttribute(UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, ignored);
10132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    collators_.insert(std::make_pair(locale, collator));
10152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
10162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return collators_[locale];
10182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const std::string CountryNames::GetSortKey(const icu::Collator& collator,
1021c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                           const base::string16& str,
1022c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                           scoped_ptr<uint8_t[]>* buffer,
10232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           int32_t* buffer_size) const {
10242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(buffer);
10252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(buffer_size);
10262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  icu::UnicodeString icu_str(str.c_str(), str.length());
10282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int32_t expected_size = collator.getSortKey(icu_str, buffer->get(),
10292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                              *buffer_size);
10302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (expected_size > *buffer_size) {
10312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // If there wasn't enough space, grow the buffer and try again.
10322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    *buffer_size = expected_size;
10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    buffer->reset(new uint8_t[*buffer_size]);
10342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    DCHECK(buffer->get());
10352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    expected_size = collator.getSortKey(icu_str, buffer->get(), *buffer_size);
10372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    DCHECK_EQ(*buffer_size, expected_size);
10382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
10392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return std::string(reinterpret_cast<const char*>(buffer->get()));
10412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace
10442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AutofillCountry::AutofillCountry(const std::string& country_code,
10462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 const std::string& locale) {
10472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const CountryDataMap::Iterator result = CountryDataMap::Find(country_code);
10482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(result != CountryDataMap::End());
10492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const CountryData& data = result->second;
10502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  country_code_ = country_code;
10522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  name_ = l10n_util::GetDisplayNameForCountry(country_code, locale);
10532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  postal_code_label_ = l10n_util::GetStringUTF16(data.postal_code_label_id);
10542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  state_label_ = l10n_util::GetStringUTF16(data.state_label_id);
1055c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  address_required_fields_ = data.address_required_fields;
10562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AutofillCountry::~AutofillCountry() {
10592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
10622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AutofillCountry::GetAvailableCountries(
10632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    std::vector<std::string>* country_codes) {
10642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(country_codes);
10652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (CountryDataMap::Iterator it = CountryDataMap::Begin();
10672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       it != CountryDataMap::End();
10682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)       ++it) {
10692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    country_codes->push_back(it->first);
10702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
10712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
10742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const std::string AutofillCountry::CountryCodeForLocale(
10752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const std::string& locale) {
10762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Add likely subtags to the locale. In particular, add any likely country
10772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // subtags -- e.g. for locales like "ru" that only include the language.
10782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string likely_locale;
10792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  UErrorCode error_ignored = U_ZERO_ERROR;
10802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  uloc_addLikelySubtags(locale.c_str(),
10812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        WriteInto(&likely_locale, kLocaleCapacity),
10822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        kLocaleCapacity,
10832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        &error_ignored);
10842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Extract the country code.
10862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string country_code = icu::Locale(likely_locale.c_str()).getCountry();
10872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Default to the United States if we have no better guess.
10892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (CountryDataMap::Find(country_code) == CountryDataMap::End())
10902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return "US";
10912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return country_code;
10932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
10942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
1096c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)const std::string AutofillCountry::GetCountryCode(const base::string16& country,
10972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                  const std::string& locale) {
10982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return CountryNames::GetInstance()->GetCountryCode(country, locale);
10992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
11002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AutofillCountry::AutofillCountry(const std::string& country_code,
1102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const base::string16& name,
1103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const base::string16& postal_code_label,
1104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const base::string16& state_label)
11052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : country_code_(country_code),
11062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      name_(name),
11072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      postal_code_label_(postal_code_label),
11082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      state_label_(state_label) {
11092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace autofill
1112