#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Authoritative source for Chromium OS region/locale configuration.

Run this module to display all known regions (use --help to see options).
"""

from __future__ import print_function

import argparse
import collections
import json
import re
import sys

import yaml


# The regular expression to check values in Region.keyboards and Region.locales.
# Keyboards should come with xkb: protocol, or the input methods (ime:, m17n:).
# Examples: xkb:us:intl:eng, ime:ime:zh-t:cangjie, xkb:us:altgr-intl:eng
KEYBOARD_PATTERN = re.compile(r'^xkb:\w+:[\w-]*:\w+$|'
                              r'^(ime|m17n|t13n):[\w:-]+$')
# Locale should be a combination of language and location.
# Examples: en-US, ja.
LOCALE_PATTERN = re.compile(r'^(\w+)(-[A-Z0-9]+)?$')


class Enum(frozenset):
  """An enumeration type.

  Usage:
    To create a enum object:
      dummy_enum = Enum(['A', 'B', 'C'])

    To access a enum object, use:
      dummy_enum.A
      dummy_enum.B
  """

  def __getattr__(self, name):
    if name in self:
      return name
    raise AttributeError


class RegionException(Exception):
  """Exception in Region handling."""
  pass


def MakeList(value):
  """Converts the given value to a list.

  Returns:
    A list of elements from "value" if it is iterable (except string);
    otherwise, a list contains only one element.
  """
  if (isinstance(value, collections.Iterable) and
      not isinstance(value, basestring)):
    return list(value)
  return [value]


class Region(object):
  """Comprehensive, standard locale configuration per country/region.

  See :ref:`regions-values` for detailed information on how to set these values.
  """
  # pylint gets confused by some of the docstrings.
  # pylint: disable=C0322

  # ANSI = US-like
  # ISO = UK-like
  # JIS = Japanese
  # KS = Korean (see http://crosbug.com/p/50753 for why this is not used yet)
  # ABNT2 = Brazilian (like ISO but with an extra key to the left of the
  #   right shift key)
  KeyboardMechanicalLayout = Enum(['ANSI', 'ISO', 'JIS', 'KS', 'ABNT2'])

  region_code = None
  """A unique identifier for the region.  This may be a lower-case
  `ISO 3166-1 alpha-2 code
  <http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>`_ (e.g., ``us``),
  a variant within an alpha-2 entity (e.g., ``ca.fr``), or an
  identifier for a collection of countries or entities (e.g.,
  ``latam-es-419`` or ``nordic``).  See :ref:`region-codes`.

  Note that ``uk`` is not a valid identifier; ``gb`` is used as it is
  the real alpha-2 code for the UK."""

  keyboards = None
  """A list of keyboard layout identifiers (e.g., ``xkb:us:intl:eng``
  or ``m17n:ar``). This field was designed to be the physical keyboard layout
  in the beginning, and then becomes a list of OOBE keyboard selection, which
  then includes non-physical layout elements like input methods (``ime:``).
  To avoid confusion, physical layout is now defined by
  :py:attr:`keyboard_mechanical_layout`, and this is reserved for logical
  layouts.

  This is identical to the legacy VPD ``keyboard_layout`` value."""

  time_zones = None
  """A list of default `tz database time zone
  <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>`_
  identifiers (e.g., ``America/Los_Angeles``). See
  `timezone_settings.cc <http://goo.gl/WSVUeE>`_ for supported time
  zones.

  This is identical to the legacy VPD ``initial_timezone`` value."""

  locales = None
  """A list of default locale codes (e.g., ``en-US``); see
  `l10n_util.cc <http://goo.gl/kVkht>`_ for supported locales.

  This is identital to the legacy VPD ``initial_locale`` field."""

  keyboard_mechanical_layout = None
  """The keyboard's mechanical layout (``ANSI`` [US-like], ``ISO``
  [UK-like], ``JIS`` [Japanese], ``ABNT2`` [Brazilian] or ``KS`` [Korean])."""

  description = None
  """A human-readable description of the region.
  This defaults to :py:attr:`region_code` if not set."""

  notes = None
  """Implementation notes about the region.  This may be None."""

  regulatory_domain = None
  """An ISO 3166-1 alpha 2 upper-cased two-letter region code for setting
  Wireless regulatory. See crosbug.com/p/38745 for more details.

  When omitted, this will derive from region_code."""

  confirmed = None
  """An optional boolean flag to indicate if the region data is confirmed."""

  FIELDS = ['region_code', 'description', 'keyboards',
            'time_zones', 'locales', 'keyboard_mechanical_layout',
            'regulatory_domain']
  """Names of fields that define the region."""

  def __init__(self, region_code, keyboards, time_zones, locales,
               keyboard_mechanical_layout, description=None, notes=None,
               regdomain=None):
    """Constructor.

    Args:
      region_code: See :py:attr:`region_code`.
      keyboards: See :py:attr:`keyboards`.  A single string is accepted for
        backward compatibility.
      time_zones: See :py:attr:`time_zones`.
      locales: See :py:attr:`locales`.  A single string is accepted
        for backward compatibility.
      keyboard_mechanical_layout: See :py:attr:`keyboard_mechanical_layout`.
      description: See :py:attr:`description`.
      notes: See :py:attr:`notes`.
      regdomain: See :py:attr:`regulatory_domain`.
    """

    def regdomain_from_region(region):
      if region.find('.') >= 0:
        region = region[:region.index('.')]
      if len(region) == 2:
        return region.upper()
      return None

    # Quick check: should be 'gb', not 'uk'
    if region_code == 'uk':
      raise RegionException("'uk' is not a valid region code (use 'gb')")

    self.region_code = region_code
    self.keyboards = MakeList(keyboards)
    self.time_zones = MakeList(time_zones)
    self.locales = MakeList(locales)
    self.keyboard_mechanical_layout = keyboard_mechanical_layout
    self.description = description or region_code
    self.notes = notes
    self.regulatory_domain = (regdomain or regdomain_from_region(region_code))
    self.confirmed = None

    for f in (self.keyboards, self.locales):
      assert all(isinstance(x, str) for x in f), (
          'Expected a list of strings, not %r' % f)
    for f in self.keyboards:
      assert KEYBOARD_PATTERN.match(f), (
          'Keyboard pattern %r does not match %r' % (
              f, KEYBOARD_PATTERN.pattern))
    for f in self.locales:
      assert LOCALE_PATTERN.match(f), (
          'Locale %r does not match %r' % (
              f, LOCALE_PATTERN.pattern))
    assert (self.regulatory_domain and
            len(self.regulatory_domain) == 2 and
            self.regulatory_domain.upper() == self.regulatory_domain), (
                'Regulatory domain settings error for region %s' % region_code)

  def __repr__(self):
    return 'Region(%s)' % (', '.join([getattr(self, x) for x in self.FIELDS]))

  def GetFieldsDict(self):
    """Returns a dict of all substantive fields.

    notes and description are excluded.
    """
    return dict((k, getattr(self, k)) for k in self.FIELDS)

KML = Region.KeyboardMechanicalLayout
REGIONS_LIST = [
    Region(
        'au', 'xkb:us::eng', 'Australia/Sydney', 'en-AU', KML.ANSI,
        'Australia'),
    Region(
        'be', 'xkb:be::nld', 'Europe/Brussels', 'en-GB', KML.ISO,
        'Belgium', (
            'Flemish (Belgian Dutch) keyboard; British English language for '
            'neutrality')),
    Region(
        'br', 'xkb:br::por', 'America/Sao_Paulo', 'pt-BR', KML.ABNT2,
        'Brazil (ABNT2)', (
            'ABNT2 = ABNT NBR 10346 variant 2. This is the preferred layout '
            'for Brazil. ABNT2 is mostly an ISO layout, but it 12 keys between '
            'the shift keys; see http://goo.gl/twA5tq')),
    Region(
        'br.abnt', 'xkb:br::por', 'America/Sao_Paulo', 'pt-BR', KML.ISO,
        'Brazil (ABNT)', (
            'Like ABNT2, but lacking the extra key to the left of the right '
            'shift key found in that layout. ABNT2 (the "br" region) is '
            'preferred to this layout')),
    Region(
        'br.usintl', 'xkb:us:intl:eng', 'America/Sao_Paulo', 'pt-BR', KML.ANSI,
        'Brazil (US Intl)', (
            'Brazil with US International keyboard layout. ABNT2 ("br") and '
            'ABNT1 ("br.abnt1 ") are both preferred to this.')),
    Region(
        'ca.ansi', 'xkb:us::eng', 'America/Toronto', 'en-CA', KML.ANSI,
        'Canada (US keyboard)', (
            'Canada with US (ANSI) keyboard. Only allowed if there are '
            'separate US English, Canadian English, and French SKUs. '
            'Not for en/fr hybrid ANSI keyboards; for that you would want '
            'ca.hybridansi. See http://goto/cros-canada')),
    Region(
        'ca.fr', 'xkb:ca::fra', 'America/Toronto', 'fr-CA', KML.ISO,
        'Canada (French keyboard)', (
            'Canadian French (ISO) keyboard. The most common configuration for '
            'Canadian French SKUs.  See http://goto/cros-canada')),
    Region(
        'ca.hybrid', 'xkb:ca:eng:eng', 'America/Toronto', 'en-CA', KML.ISO,
        'Canada (hybrid ISO)', (
            'Canada with hybrid (ISO) xkb:ca:eng:eng + xkb:ca::fra keyboard, '
            'defaulting to English language and keyboard.  Used only if there '
            'needs to be a single SKU for all of Canada.  See '
            'http://goto/cros-canada')),
    Region(
        'ca.hybridansi', 'xkb:ca:eng:eng', 'America/Toronto', 'en-CA', KML.ANSI,
        'Canada (hybrid ANSI)', (
            'Canada with hybrid (ANSI) xkb:ca:eng:eng + xkb:ca::fra keyboard, '
            'defaulting to English language and keyboard.  Used only if there '
            'needs to be a single SKU for all of Canada.  See '
            'http://goto/cros-canada')),
    Region(
        'ca.multix', 'xkb:ca:multix:fra', 'America/Toronto', 'fr-CA', KML.ISO,
        'Canada (multilingual)', (
            "Canadian Multilingual keyboard; you probably don't want this. See "
            'http://goto/cros-canada')),
    Region(
        'ch', 'xkb:ch::ger', 'Europe/Zurich', 'de-CH', KML.ISO,
        'Switzerland', (
            'German keyboard')),
    Region(
        'de', 'xkb:de::ger', 'Europe/Berlin', 'de', KML.ISO,
        'Germany'),
    Region(
        'es', 'xkb:es::spa', 'Europe/Madrid', 'es', KML.ISO,
        'Spain'),
    Region(
        'fi', 'xkb:fi::fin', 'Europe/Helsinki', 'fi', KML.ISO,
        'Finland'),
    Region(
        'fr', 'xkb:fr::fra', 'Europe/Paris', 'fr', KML.ISO,
        'France'),
    Region(
        'gb', 'xkb:gb:extd:eng', 'Europe/London', 'en-GB', KML.ISO,
        'UK'),
    Region(
        'ie', 'xkb:gb:extd:eng', 'Europe/Dublin', 'en-GB', KML.ISO,
        'Ireland'),
    Region(
        'in', 'xkb:us::eng', 'Asia/Calcutta', 'en-US', KML.ANSI,
        'India'),
    Region(
        'it', 'xkb:it::ita', 'Europe/Rome', 'it', KML.ISO,
        'Italy'),
    Region(
        'latam-es-419', 'xkb:es::spa', 'America/Mexico_City', 'es-419', KML.ISO,
        'Hispanophone Latin America', (
            'Spanish-speaking countries in Latin America, using the Iberian '
            '(Spain) Spanish keyboard, which is increasingly dominant in '
            'Latin America. Known to be correct for '
            'Chile, Colombia, Mexico, Peru; '
            'still unconfirmed for other es-419 countries. The old Latin '
            'American layout (xkb:latam::spa) has not been approved; before '
            'using that you must seek review through http://goto/vpdsettings. '
            'See also http://goo.gl/Iffuqh. Note that 419 is the UN M.49 '
            'region code for Latin America'), 'MX'),
    Region(
        'my', 'xkb:us::eng', 'Asia/Kuala_Lumpur', 'ms', KML.ANSI,
        'Malaysia'),
    Region(
        'nl', 'xkb:us:intl:eng', 'Europe/Amsterdam', 'nl', KML.ANSI,
        'Netherlands'),
    Region(
        'nordic', 'xkb:se::swe', 'Europe/Stockholm', 'en-US', KML.ISO,
        'Nordics', (
            'Unified SKU for Sweden, Norway, and Denmark.  This defaults '
            'to Swedish keyboard layout, but starts with US English language '
            'for neutrality.  Use if there is a single combined SKU for Nordic '
            'countries.'), 'SE'),
    Region(
        'nz', 'xkb:us::eng', 'Pacific/Auckland', 'en-NZ', KML.ANSI,
        'New Zealand'),
    Region(
        'ph', 'xkb:us::eng', 'Asia/Manila', 'en-US', KML.ANSI,
        'Philippines'),
    Region(
        'ru', ['xkb:us::eng', 'xkb:ru::rus'], 'Europe/Moscow', 'ru', KML.ANSI,
        'Russia', (
            'For R31+ only; R30 and earlier must use US keyboard for login')),
    Region(
        'se', 'xkb:se::swe', 'Europe/Stockholm', 'sv', KML.ISO,
        'Sweden', (
            'Use this if there separate SKUs for Nordic countries (Sweden, '
            'Norway, and Denmark), or the device is only shipping to Sweden. '
            "If there is a single unified SKU, use 'nordic' instead.")),
    Region(
        'sg', 'xkb:us::eng', 'Asia/Singapore', 'en-GB', KML.ANSI,
        'Singapore'),
    Region(
        'us', 'xkb:us::eng', 'America/Los_Angeles', 'en-US', KML.ANSI,
        'United States'),
    Region(
        'jp', ['xkb:jp::jpn', 'ime:jp:mozc_jp'], 'Asia/Tokyo', 'ja', KML.JIS,
        'Japan'),
    Region(
        'za', 'xkb:gb:extd:eng', 'Africa/Johannesburg', 'en-ZA', KML.ISO,
        'South Africa'),
    Region(
        'ng', 'xkb:us:intl:eng', 'Africa/Lagos', 'en-GB', KML.ANSI,
        'Nigeria'),
    Region(
        'hk', ['xkb:us::eng', 'ime:zh-t:cangjie', 'ime:zh-t:quick',
               'ime:zh-t:array', 'ime:zh-t:dayi', 'ime:zh-t:zhuyin',
               'ime:zh-t:pinyin'], 'Asia/Hong_Kong', ['zh-TW', 'en-GB',
                                                      'zh-CN'], KML.ANSI,
        'Hong Kong'),
    Region(
        'gcc', ['xkb:us::eng', 'm17n:ar', 't13n:ar'], 'Asia/Riyadh', [
            'ar', 'en-GB'],
        KML.ANSI,
        'Gulf Cooperation Council (GCC)', (
            'GCC is a regional intergovernmental political and economic '
            'union consisting of all Arab states of the Persian Gulf except '
            'for Iraq. Its member states are the Islamic monarchies of '
            'Bahrain, Kuwait, Oman, Qatar, Saudi Arabia, and the United Arab '
            'Emirates.'), 'SA'),
    Region(
        'cz', ['xkb:cz::cze', 'xkb:cz:qwerty:cze'], 'Europe/Prague', [
            'cs', 'en-GB'], KML.ISO,
        'Czech Republic'),
    Region(
        'th', ['xkb:us::eng', 'm17n:th', 'm17n:th_pattajoti',
               'm17n:th_tis'], 'Asia/Bangkok', ['th', 'en-GB'], KML.ANSI,
        'Thailand'),
    Region(
        'id', 'xkb:us::ind', 'Asia/Jakarta', ['id', 'en-GB'], KML.ANSI,
        'Indonesia'),
    Region(
        'tw', ['xkb:us::eng', 'ime:zh-t:zhuyin', 'ime:zh-t:array',
               'ime:zh-t:dayi', 'ime:zh-t:cangjie', 'ime:zh-t:quick',
               'ime:zh-t:pinyin'], 'Asia/Taipei', ['zh-TW', 'en-US'], KML.ANSI,
        'Taiwan'),
    Region(
        'pl', 'xkb:pl::pol', 'Europe/Warsaw', ['pl', 'en-GB'], KML.ANSI,
        'Poland'),
    Region(
        'gr', ['xkb:us::eng', 'xkb:gr::gre', 't13n:el'], 'Europe/Athens', [
            'el', 'en-GB'], KML.ANSI,
        'Greece'),
    Region(
        'il', ['xkb:us::eng', 'xkb:il::heb', 't13n:he'], 'Asia/Jerusalem', [
            'he', 'en-US', 'ar'], KML.ANSI,
        'Israel'),
    Region(
        'pt', 'xkb:pt::por', 'Europe/Lisbon', ['pt-PT', 'en-GB'], KML.ISO,
        'Portugal'),
    Region(
        'ro', ['xkb:us::eng', 'xkb:ro::rum'], 'Europe/Bucharest', [
            'ro', 'hu', 'de', 'en-GB'], KML.ISO,
        'Romania'),
    Region(
        'kr', ['xkb:us::eng', 'ime:ko:hangul'], 'Asia/Seoul', [
            'ko', 'en-US'], KML.ANSI,
        'South Korea'),
    Region(
        'ae', 'xkb:us::eng', 'Asia/Dubai', 'ar', KML.ANSI,
        'UAE'),
    Region(
        'za.us', 'xkb:us::eng', 'Africa/Johannesburg', 'en-ZA', KML.ANSI,
        'South Africa'),
    Region(
        'vn', ['xkb:us::eng', 'm17n:vi_telex', 'm17n:vi_vni', 'm17n:vi_viqr',
               'm17n:vi_tcvn'], 'Asia/Ho_Chi_Minh', ['vi', 'en-GB', 'en-US',
                                                     'fr', 'zh-TW'], KML.ANSI,
        'Vietnam'),
    Region(
        'at', ['xkb:de::ger', 'xkb:de:neo:ger'], 'Europe/Vienna', [
            'de', 'en-GB'], KML.ISO,
        'Austria'),
    Region(
        'sk', ['xkb:us::eng', 'xkb:sk::slo'], 'Europe/Bratislava', [
            'sk', 'hu', 'cs', 'en-GB'], KML.ISO,
        'Slovakia'),
    Region(
        'ch.usintl', 'xkb:us:intl:eng', 'Europe/Zurich', 'en-US', KML.ANSI,
        'Switzerland (US Intl)', (
            'Switzerland with US International keyboard layout.')),
    Region(
        'pe', 'xkb:latam::spa', 'America/Lima', 'es-419', KML.ANSI,
        'Peru'),
    Region(
        'sa', 'xkb:us::eng', 'Asia/Riyadh', ['ar', 'en'], KML.ANSI,
        'Saudi Arabia'),
    Region(
        'mx', 'xkb:latam::spa', 'America/Mexico_City', 'es-MX', KML.ANSI,
        'Mexico'),
    Region(
        'cl', 'xkb:latam::spa', 'America/Santiago', 'es-419', KML.ANSI,
        'Chile'),
    Region(
        'kw', ['xkb:us::eng', 'm17n:ar', 't13n:ar'], 'Asia/Kuwait', [
            'ar', 'en'], KML.ANSI,
        'Kuwait'),
    Region(
        'uy', 'xkb:latam::spa', 'America/Montevideo', 'es-419', KML.ANSI,
        'Uruguay'),
    Region(
        'tr', ['xkb:tr::tur', 'xkb:tr:f:tur'], 'Europe/Istanbul', [
            'tr', 'en-GB'], KML.ISO,
        'Turkey'),
    Region(
        'ar', 'xkb:latam::spa', 'America/Argentina/Buenos_Aires', [
            'es-AR', ], KML.ISO,
        'Argentina'),
    Region(
        'gb.usext', 'xkb:us:altgr-intl:eng', 'Europe/London', 'en-GB', KML.ISO,
        'UK (US extended keyboard)', (
            'GB with US extended keyboard')),
    Region(
        'bg', ['xkb:bg::bul', 'xkb:bg:phonetic:bul'], 'Europe/Sofia', [
            'bg', 'tr', 'en-US'], KML.ANSI,
        'Bulgaria'),
    Region(
        'jp.us', ['xkb:us::eng', 'ime:jp:mozc_us'], 'Asia/Tokyo', 'ja',
        KML.ANSI, 'Japan with US keyboard'),
    Region(
        'is', 'xkb:is::ice', 'Atlantic/Reykjavik', ['is', 'en-GB'], KML.ISO,
        'Iceland'),
    Region(
        'us.intl', 'xkb:us:intl:eng', 'America/Los_Angeles', 'en-US', KML.ANSI,
        'US (English Intl)'),
    Region(
        'co', 'xkb:latam::spa', 'America/Bogota', 'es-CO', KML.ANSI,
        'Colombia'),
    ]

"""A list of :py:class:`regions.Region` objects for
all **confirmed** regions.  A confirmed region is a region whose
properties are known to be correct and valid: all contents (locale / timezone /
keyboards) are supported by Chrome."""


UNCONFIRMED_REGIONS_LIST = [
    Region(
        'bd', 'xkb:bd::ben', 'Asia/Dhaka', ['bn-BD', 'en'], KML.ANSI,
        'Bangladesh'),
    Region(
        'bf', 'xkb:bf::fra', 'Africa/Ouagadougou', 'fr-BF', KML.ANSI,
        'Burkina Faso'),
    Region(
        'ba', 'xkb:ba::bos', 'Europe/Sarajevo', 'bs', KML.ANSI,
        'Bosnia and Herzegovina'),
    Region(
        'bb', 'xkb:bb::eng', 'America/Barbados', 'en-BB', KML.ANSI,
        'Barbados'),
    Region(
        'wf', 'xkb:us::eng', 'Pacific/Wallis', ['wls', 'fud'], KML.ANSI,
        'Wallis and Futuna'),
    Region(
        'bl', 'xkb:bl::fra', 'America/St_Barthelemy', 'fr', KML.ANSI,
        'Saint Barthelemy'),
    Region(
        'bm', 'xkb:bm::eng', 'Atlantic/Bermuda', ['en-BM', 'pt'], KML.ANSI,
        'Bermuda'),
    Region(
        'bn', 'xkb:bn::msa', 'Asia/Brunei', ['ms-BN', 'en-BN'], KML.ANSI,
        'Brunei'),
    Region(
        'bo', 'xkb:latam::spa', 'America/La_Paz', ['es-419', 'qu'], KML.ANSI,
        'Bolivia'),
    Region(
        'bh', 'xkb:bh::ara', 'Asia/Bahrain', ['ar', 'en', 'fa', 'ru'], KML.ANSI,
        'Bahrain'),
    Region(
        'bi', 'xkb:bi::fra', 'Africa/Bujumbura', ['fr-BI', 'rn'], KML.ANSI,
        'Burundi'),
    Region(
        'bj', 'xkb:bj::fra', 'Africa/Porto-Novo', 'fr-BJ', KML.ANSI,
        'Benin'),
    Region(
        'bt', 'xkb:bt::dzo', 'Asia/Thimphu', 'dz', KML.ANSI,
        'Bhutan'),
    Region(
        'jm', 'xkb:jm::eng', 'America/Jamaica', 'en-JM', KML.ANSI,
        'Jamaica'),
    Region(
        'bw', 'xkb:bw::eng', 'Africa/Gaborone', ['en-BW', 'tn-BW'], KML.ANSI,
        'Botswana'),
    Region(
        'ws', 'xkb:ws::smo', 'Pacific/Apia', ['sm', 'en-WS'], KML.ANSI,
        'Samoa'),
    Region(
        'bq', 'xkb:bq::nld', 'America/Kralendijk', ['nl', 'en'], KML.ANSI,
        'Bonaire, Saint Eustatius and Saba '),
    Region(
        'bs', 'xkb:bs::eng', 'America/Nassau', 'en-BS', KML.ANSI,
        'Bahamas'),
    Region(
        'je', 'xkb:je::eng', 'Europe/Jersey', ['en', 'pt'], KML.ANSI,
        'Jersey'),
    Region(
        'by', 'xkb:by::bel', 'Europe/Minsk', ['be', 'ru'], KML.ANSI,
        'Belarus'),
    Region(
        'bz', 'xkb:bz::eng', 'America/Belize', ['en-BZ', 'es'], KML.ANSI,
        'Belize'),
    Region(
        'rw', 'xkb:rw::kin', 'Africa/Kigali', ['rw', 'en-RW'], KML.ANSI,
        'Rwanda'),
    Region(
        'rs', 'xkb:rs::srp', 'Europe/Belgrade', ['sr', 'hu', 'bs'], KML.ANSI,
        'Serbia'),
    Region(
        'tl', 'xkb:us::eng', 'Asia/Dili', ['tet', 'pt-TL', 'en'], KML.ANSI,
        'East Timor'),
    Region(
        're', 'xkb:re::fra', 'Indian/Reunion', 'fr-RE', KML.ANSI,
        'Reunion'),
    Region(
        'tm', 'xkb:tm::tuk', 'Asia/Ashgabat', ['tk', 'ru', 'uz'], KML.ANSI,
        'Turkmenistan'),
    Region(
        'tj', 'xkb:tj::tgk', 'Asia/Dushanbe', ['tg', 'ru'], KML.ANSI,
        'Tajikistan'),
    Region(
        'tk', 'xkb:us::eng', 'Pacific/Fakaofo', ['tkl', 'en-TK'], KML.ANSI,
        'Tokelau'),
    Region(
        'gw', 'xkb:gw::por', 'Africa/Bissau', ['pt-GW', 'pov'], KML.ANSI,
        'Guinea-Bissau'),
    Region(
        'gu', 'xkb:gu::eng', 'Pacific/Guam', ['en-GU', 'ch-GU'], KML.ANSI,
        'Guam'),
    Region(
        'gt', 'xkb:latam::spa', 'America/Guatemala', 'es-419', KML.ANSI,
        'Guatemala'),
    Region(
        'gs', 'xkb:gs::eng', 'Atlantic/South_Georgia', 'en', KML.ANSI,
        'South Georgia and the South Sandwich Islands'),
    Region(
        'gq', 'xkb:gq::spa', 'Africa/Malabo', ['es-419', 'fr'], KML.ANSI,
        'Equatorial Guinea'),
    Region(
        'gp', 'xkb:gp::fra', 'America/Guadeloupe', 'fr-GP', KML.ANSI,
        'Guadeloupe'),
    Region(
        'gy', 'xkb:gy::eng', 'America/Guyana', 'en-GY', KML.ANSI,
        'Guyana'),
    Region(
        'gg', 'xkb:gg::eng', 'Europe/Guernsey', ['en', 'fr'], KML.ANSI,
        'Guernsey'),
    Region(
        'gf', 'xkb:gf::fra', 'America/Cayenne', 'fr-GF', KML.ANSI,
        'French Guiana'),
    Region(
        'ge', 'xkb:ge::geo', 'Asia/Tbilisi', 'ka', KML.ANSI,
        'Georgia'),
    Region(
        'gd', 'xkb:gd::eng', 'America/Grenada', 'en-GD', KML.ANSI,
        'Grenada'),
    Region(
        'ga', 'xkb:ga::fra', 'Africa/Libreville', 'fr-GA', KML.ANSI,
        'Gabon'),
    Region(
        'sv', 'xkb:latam::spa', 'America/El_Salvador', 'es-419', KML.ANSI,
        'El Salvador'),
    Region(
        'gn', 'xkb:gn::fra', 'Africa/Conakry', 'fr-GN', KML.ANSI,
        'Guinea'),
    Region(
        'gm', 'xkb:gm::eng', 'Africa/Banjul', ['en-GM', 'mnk', 'wof'], KML.ANSI,
        'Gambia'),
    Region(
        'gl', 'xkb:gl::kal', ['America/Godthab', 'America/Danmarkshavn',
                              'America/Scoresbysund', 'America/Thule'], [
                                  'kl', 'da-GL', 'en'], KML.ANSI,
        'Greenland'),
    Region(
        'gi', 'xkb:gi::eng', 'Europe/Gibraltar', ['en-GI', 'es'], KML.ANSI,
        'Gibraltar'),
    Region(
        'gh', 'xkb:gh::eng', 'Africa/Accra', ['en-GH', 'ak', 'ee'], KML.ANSI,
        'Ghana'),
    Region(
        'om', 'xkb:om::ara', 'Asia/Muscat', ['ar', 'en', 'bal'], KML.ANSI,
        'Oman'),
    Region(
        'tn', 'xkb:tn::ara', 'Africa/Tunis', ['ar', 'fr'], KML.ANSI,
        'Tunisia'),
    Region(
        'jo', 'xkb:jo::ara', 'Asia/Amman', ['ar', 'en'], KML.ANSI,
        'Jordan'),
    Region(
        'hn', 'xkb:latam::spa', 'America/Tegucigalpa', 'es-HN', KML.ANSI,
        'Honduras'),
    Region(
        'hr', 'xkb:hr::scr', 'Europe/Zagreb', ['hr', 'en-GB'], KML.ISO,
        'Croatia'),
    Region(
        'ht', 'xkb:ht::hat', 'America/Port-au-Prince', ['ht'], KML.ANSI,
        'Haiti'),
    Region(
        'hu', ['xkb:us::eng', 'xkb:hu::hun'], 'Europe/Budapest', [
            'hu', 'en-GB'], KML.ISO,
        'Hungary'),
    Region(
        've', 'xkb:latam::spa', 'America/Caracas', 'es-419', KML.ANSI,
        'Venezuela'),
    Region(
        'pr', 'xkb:pr::eng', 'America/Puerto_Rico', ['en-PR'], KML.ANSI,
        'Puerto Rico'),
    Region(
        'ps', 'xkb:ps::ara', ['Asia/Gaza', 'Asia/Hebron'], 'ar', KML.ANSI,
        'Palestinian Territory'),
    Region(
        'pw', 'xkb:us::eng', 'Pacific/Palau', ['pau', 'sov', 'en-PW', 'tox',
                                               'ja', 'fil', 'zh'], KML.ANSI,
        'Palau'),
    Region(
        'sj', 'xkb:sj::nor', 'Arctic/Longyearbyen', ['no', 'ru'], KML.ANSI,
        'Svalbard and Jan Mayen'),
    Region(
        'py', 'xkb:latam::spa', 'America/Asuncion', ['es-419', 'gn'], KML.ANSI,
        'Paraguay'),
    Region(
        'iq', 'xkb:iq::ara', 'Asia/Baghdad', ['ar', 'ku', 'hy'], KML.ANSI,
        'Iraq'),
    Region(
        'pa', 'xkb:latam::spa', 'America/Panama', ['es-419', 'en'], KML.ANSI,
        'Panama'),
    Region(
        'pf', 'xkb:pf::fra', ['Pacific/Tahiti', 'Pacific/Marquesas',
                              'Pacific/Gambier'], ['fr-PF', 'ty'], KML.ANSI,
        'French Polynesia'),
    Region(
        'pg', 'xkb:pg::eng', ['Pacific/Port_Moresby',
                              'Pacific/Bougainville'], ['en-PG', 'ho', 'meu',
                                                        'tpi'], KML.ANSI,
        'Papua New Guinea'),
    Region(
        'pk', 'xkb:pk::urd', 'Asia/Karachi', ['ur-PK', 'en-PK', 'pa', 'sd',
                                              'ps', 'brh'], KML.ANSI,
        'Pakistan'),
    Region(
        'pn', 'xkb:pn::eng', 'Pacific/Pitcairn', 'en-PN', KML.ANSI,
        'Pitcairn'),
    Region(
        'pm', 'xkb:pm::fra', 'America/Miquelon', 'fr-PM', KML.ANSI,
        'Saint Pierre and Miquelon'),
    Region(
        'zm', 'xkb:zm::eng', 'Africa/Lusaka', ['en-ZM', 'bem', 'loz', 'lun',
                                               'lue', 'ny', 'toi'], KML.ANSI,
        'Zambia'),
    Region(
        'eh', 'xkb:eh::ara', 'Africa/El_Aaiun', ['ar', 'mey'], KML.ANSI,
        'Western Sahara'),
    Region(
        'ee', 'xkb:ee::est', 'Europe/Tallinn', ['et', 'ru', 'en-GB'], KML.ISO,
        'Estonia'),
    Region(
        'eg', 'xkb:eg::ara', 'Africa/Cairo', ['ar', 'en', 'fr'],
        KML.ANSI, 'Egypt'),
    Region(
        'ec', 'xkb:latam::spa', ['America/Guayaquil'], 'es-419', KML.ANSI,
        'Ecuador'),
    Region(
        'sb', 'xkb:sb::eng', 'Pacific/Guadalcanal', ['en-SB', 'tpi'], KML.ANSI,
        'Solomon Islands'),
    Region(
        'et', 'xkb:et::amh', 'Africa/Addis_Ababa', ['am', 'en-ET', 'om-ET',
                                                    'ti-ET'], KML.ANSI,
        'Ethiopia'),
    Region(
        'so', 'xkb:so::som', 'Africa/Mogadishu', ['so-SO', 'ar'], KML.ANSI,
        'Somalia'),
    Region(
        'zw', 'xkb:zw::eng', 'Africa/Harare', ['en-ZW', 'sn', 'nr'], KML.ANSI,
        'Zimbabwe'),
    Region(
        'er', 'xkb:er::aar', 'Africa/Asmara', ['aa-ER', 'ar', 'tig', 'kun',
                                               'ti-ER'], KML.ANSI,
        'Eritrea'),
    Region(
        'me', 'xkb:me::srp', 'Europe/Podgorica', ['sr', 'hu', 'bs', 'sq', 'hr',
                                                  'rom'], KML.ANSI,
        'Montenegro'),
    Region(
        'md', 'xkb:md::ron', 'Europe/Chisinau', ['ro', 'ru', 'gag'], KML.ANSI,
        'Moldova'),
    Region(
        'mg', 'xkb:mg::fra', 'Indian/Antananarivo', ['fr-MG', 'mg'], KML.ANSI,
        'Madagascar'),
    Region(
        'mf', 'xkb:mf::fra', 'America/Marigot', 'fr', KML.ANSI, 'Saint Martin'),
    Region(
        'ma', 'xkb:ma::ara', 'Africa/Casablanca', ['ar', 'fr'], KML.ANSI,
        'Morocco'),
    Region(
        'mc', 'xkb:mc::fra', 'Europe/Monaco', ['fr-MC', 'en', 'it'], KML.ANSI,
        'Monaco'),
    Region(
        'uz', 'xkb:uz::uzb', ['Asia/Samarkand', 'Asia/Tashkent'],
        ['uz', 'ru', 'tg'], KML.ANSI, 'Uzbekistan'),
    Region(
        'mm', 'xkb:mm::mya', 'Asia/Rangoon', 'my', KML.ANSI, 'Myanmar',
        None),
    Region(
        'ml', 'xkb:ml::fra', 'Africa/Bamako', ['fr-ML', 'bm'], KML.ANSI,
        'Mali'),
    Region(
        'mo', 'xkb:mo::zho', 'Asia/Macau', ['zh', 'zh-MO', 'pt'], KML.ANSI,
        'Macao'),
    Region(
        'mn', 'xkb:mn::mon', ['Asia/Ulaanbaatar', 'Asia/Hovd',
                              'Asia/Choibalsan'], ['mn', 'ru'], KML.ANSI,
        'Mongolia'),
    Region(
        'mh', 'xkb:mh::mah', ['Pacific/Majuro'], ['mh' 'en-MH'], KML.ANSI,
        'Marshall Islands'),
    Region(
        'mk', 'xkb:mk::mkd', 'Europe/Skopje', ['mk', 'sq', 'tr'], KML.ANSI,
        'Macedonia'),
    Region(
        'mu', 'xkb:mu::eng', 'Indian/Mauritius', ['en-MU', 'bho'], KML.ANSI,
        'Mauritius'),
    Region(
        'mt', ['xkb:us::eng'], 'Europe/Malta', ['mt', 'en-GB'], KML.ISO,
        'Malta'),
    Region(
        'mw', 'xkb:mw::nya', 'Africa/Blantyre', ['ny', 'yao', 'tum'], KML.ANSI,
        'Malawi'),
    Region(
        'mv', 'xkb:mv::div', 'Indian/Maldives', ['dv', 'en'], KML.ANSI,
        'Maldives'),
    Region(
        'mq', 'xkb:mq::fra', 'America/Martinique', 'fr-MQ', KML.ANSI,
        'Martinique'),
    Region(
        'mp', 'xkb:us::eng', 'Pacific/Saipan', ['fil', 'tl', 'zh', 'ch-MP',
                                                'en-MP'], KML.ANSI,
        'Northern Mariana Islands'),
    Region(
        'ms', 'xkb:ms::eng', 'America/Montserrat', 'en-MS', KML.ANSI,
        'Montserrat'),
    Region(
        'mr', 'xkb:mr::ara', 'Africa/Nouakchott', ['ar', 'fuc', 'snk', 'fr',
                                                   'mey', 'wo'], KML.ANSI,
        'Mauritania'),
    Region(
        'im', 'xkb:im::eng', 'Europe/Isle_of_Man', ['en', 'gv'], KML.ANSI,
        'Isle of Man'),
    Region(
        'ug', 'xkb:ug::eng', 'Africa/Kampala', ['en-UG', 'lg', 'ar'], KML.ANSI,
        'Uganda'),
    Region(
        'tz', 'xkb:tz::swa', 'Africa/Dar_es_Salaam', ['sw-TZ', 'en'], KML.ANSI,
        'Tanzania'),
    Region(
        'io', 'xkb:io::eng', 'Indian/Chagos', 'en-IO', KML.ANSI,
        'British Indian Ocean Territory'),
    Region(
        'sh', 'xkb:sh::eng', 'Atlantic/St_Helena', 'en-SH', KML.ANSI,
        'Saint Helena'),
    Region(
        'fj', 'xkb:fj::eng', 'Pacific/Fiji', ['en-FJ', 'fj'], KML.ANSI,
        'Fiji'),
    Region(
        'fk', 'xkb:fk::eng', 'Atlantic/Stanley', 'en-FK', KML.ANSI,
        'Falkland Islands'),
    Region(
        'fm', 'xkb:fm::eng', [
            'Pacific/Chuuk', 'Pacific/Pohnpei', 'Pacific/Kosrae'], [
                'en-FM', 'chk', 'pon', 'yap', 'kos', 'uli', 'woe', 'nkr',
                'kpg'], KML.ANSI,
        'Micronesia'),
    Region(
        'fo', 'xkb:fo::fao', 'Atlantic/Faroe', ['fo', 'da-FO'], KML.ANSI,
        'Faroe Islands'),
    Region(
        'ni', 'xkb:latam::spa', 'America/Managua', ['es-419', 'en'], KML.ANSI,
        'Nicaragua'),
    Region(
        'no', 'xkb:no::nor', 'Europe/Oslo', ['no', 'nb', 'nn', 'se'], KML.ISO,
        'Norway'),
    Region(
        'na', 'xkb:na::eng', 'Africa/Windhoek', ['en-NA', 'af', 'de', 'hz',
                                                 'naq'], KML.ANSI,
        'Namibia'),
    Region(
        'vu', 'xkb:vu::bis', 'Pacific/Efate', ['bi', 'en-VU'], KML.ANSI,
        'Vanuatu'),
    Region(
        'nc', 'xkb:nc::fra', 'Pacific/Noumea', 'fr-NC', KML.ANSI,
        'New Caledonia'),
    Region(
        'ne', 'xkb:ne::fra', 'Africa/Niamey', ['fr-NE', 'ha', 'kr'], KML.ANSI,
        'Niger'),
    Region(
        'nf', 'xkb:nf::eng', 'Pacific/Norfolk', 'en-NF', KML.ANSI,
        'Norfolk Island'),
    Region(
        'np', 'xkb:np::nep', 'Asia/Kathmandu', ['ne', 'en'], KML.ANSI,
        'Nepal'),
    Region(
        'nr', 'xkb:nr::nau', 'Pacific/Nauru', ['na', 'en-NR'], KML.ANSI,
        'Nauru'),
    Region(
        'nu', 'xkb:us::eng', 'Pacific/Niue', ['niu', 'en-NU'], KML.ANSI,
        'Niue'),
    Region(
        'ck', 'xkb:ck::eng', 'Pacific/Rarotonga', ['en-CK', 'mi'], KML.ANSI,
        'Cook Islands'),
    Region(
        'ci', 'xkb:ci::fra', 'Africa/Abidjan', 'fr-CI', KML.ANSI,
        'Ivory Coast'),
    Region(
        'cn', 'xkb:us::eng', 'Asia/Shanghai', 'zh-CN', KML.ANSI,
        'China'),
    Region(
        'cm', 'xkb:cm::eng', 'Africa/Douala', ['en-CM', 'fr-CM'], KML.ANSI,
        'Cameroon'),
    Region(
        'cc', 'xkb:cc::msa', 'Indian/Cocos', ['ms-CC', 'en'], KML.ANSI,
        'Cocos Islands'),
    Region(
        'cg', 'xkb:cg::fra', 'Africa/Brazzaville', ['fr-CG', 'kg'], KML.ANSI,
        'Republic of the Congo'),
    Region(
        'cf', 'xkb:cf::fra', 'Africa/Bangui', ['fr-CF', 'sg', 'ln'], KML.ANSI,
        'Central African Republic'),
    Region(
        'cd', 'xkb:cd::fra', ['Africa/Kinshasa', 'Africa/Lubumbashi'], [
            'fr-CD', 'ln', 'kg'], KML.ANSI,
        'Democratic Republic of the Congo'),
    Region(
        'cy', 'xkb:cy::ell', 'Asia/Nicosia', ['el-CY', 'tr-CY'], KML.ANSI,
        'Cyprus'),
    Region(
        'cx', 'xkb:cx::eng', 'Indian/Christmas', ['en', 'zh'], KML.ANSI,
        'Christmas Island'),
    Region(
        'cr', 'xkb:latam::spa', 'America/Costa_Rica', ['es-419'], KML.ANSI,
        'Costa Rica'),
    Region(
        'cw', 'xkb:cw::nld', 'America/Curacao', ['nl'], KML.ANSI, 'Curacao'),
    Region(
        'cv', 'xkb:cv::por', 'Atlantic/Cape_Verde', 'pt-CV', KML.ANSI,
        'Cape Verde'),
    Region(
        'cu', 'xkb:latam::spa', 'America/Havana', 'es-419', KML.ANSI,
        'Cuba'),
    Region(
        'sz', 'xkb:sz::eng', 'Africa/Mbabane', ['en-SZ', 'ss-SZ'], KML.ANSI,
        'Swaziland'),
    Region(
        'sy', 'xkb:sy::ara', 'Asia/Damascus', ['ar', 'ku', 'hy', 'arc', 'fr',
                                               'en'], KML.ANSI,
        'Syria'),
    Region(
        'sx', 'xkb:sx::nld', 'America/Lower_Princes', ['nl', 'en'], KML.ANSI,
        'Sint Maarten'),
    Region(
        'kg', 'xkb:kg::kir', 'Asia/Bishkek', ['ky', 'uz', 'ru'], KML.ANSI,
        'Kyrgyzstan'),
    Region(
        'ke', 'xkb:ke::eng', 'Africa/Nairobi', ['en-KE', 'sw-KE'], KML.ANSI,
        'Kenya'),
    Region(
        'ss', 'xkb:ss::eng', 'Africa/Juba', 'en', KML.ANSI,
        'South Sudan'),
    Region(
        'sr', 'xkb:sr::nld', 'America/Paramaribo', ['nl-SR', 'en', 'srn', 'hns',
                                                    'jv'], KML.ANSI,
        'Suriname'),
    Region(
        'ki', 'xkb:ki::eng', ['Pacific/Tarawa', 'Pacific/Enderbury',
                              'Pacific/Kiritimati'], ['en-KI', 'gil'], KML.ANSI,
        'Kiribati'),
    Region(
        'kh', 'xkb:kh::khm', 'Asia/Phnom_Penh', ['km', 'fr', 'en'], KML.ANSI,
        'Cambodia'),
    Region(
        'kn', 'xkb:kn::eng', 'America/St_Kitts', 'en-KN', KML.ANSI,
        'Saint Kitts and Nevis'),
    Region(
        'km', 'xkb:km::ara', 'Indian/Comoro', ['ar', 'fr-KM'], KML.ANSI,
        'Comoros'),
    Region(
        'st', 'xkb:st::por', 'Africa/Sao_Tome', 'pt-ST', KML.ANSI,
        'Sao Tome and Principe'),
    Region(
        'si', 'xkb:si::slv', 'Europe/Ljubljana', ['sl', 'hu', 'it', 'sr', 'de',
                                                  'hr', 'en-GB'], KML.ISO,
        'Slovenia'),
    Region(
        'kp', 'xkb:kp::kor', 'Asia/Pyongyang', 'ko-KP', KML.ANSI,
        'North Korea'),
    Region(
        'sn', 'xkb:sn::fra', 'Africa/Dakar', ['fr-SN', 'wo', 'fuc'], KML.ANSI,
        'Senegal'),
    Region(
        'sm', 'xkb:sm::ita', 'Europe/San_Marino', 'it-SM', KML.ANSI,
        'San Marino'),
    Region(
        'sl', 'xkb:sl::eng', 'Africa/Freetown', ['en-SL', 'men'], KML.ANSI,
        'Sierra Leone'),
    Region(
        'sc', 'xkb:sc::eng', 'Indian/Mahe', ['en-SC', 'fr-SC'], KML.ANSI,
        'Seychelles'),
    Region(
        'kz', 'xkb:kz::kaz', ['Asia/Almaty', 'Asia/Qyzylorda', 'Asia/Aqtobe',
                              'Asia/Aqtau'], ['kk', 'ru'], KML.ANSI,
        'Kazakhstan'),
    Region(
        'ky', 'xkb:ky::eng', 'America/Cayman', 'en-KY', KML.ANSI,
        'Cayman Islands'),
    Region(
        'sd', 'xkb:sd::ara', 'Africa/Khartoum', ['ar', 'en', 'fia'], KML.ANSI,
        'Sudan'),
    Region(
        'do', 'xkb:latam::spa', 'America/Santo_Domingo', 'es-419', KML.ANSI,
        'Dominican Republic'),
    Region(
        'dm', 'xkb:dm::eng', 'America/Dominica', 'en-DM', KML.ANSI,
        'Dominica'),
    Region(
        'dj', 'xkb:dj::fra', 'Africa/Djibouti', ['fr-DJ', 'ar'], KML.ANSI,
        'Djibouti'),
    Region(
        'dk', 'xkb:dk::dan', 'Europe/Copenhagen', ['da-DK', 'en', 'fo',
                                                   'de-DK'], KML.ISO,
        'Denmark'),
    Region(
        'vg', 'xkb:vg::eng', 'America/Tortola', 'en-VG', KML.ANSI,
        'British Virgin Islands'),
    Region(
        'ye', 'xkb:ye::ara', 'Asia/Aden', 'ar', KML.ANSI,
        'Yemen'),
    Region(
        'dz', 'xkb:dz::ara', 'Africa/Algiers', 'ar', KML.ANSI,
        'Algeria'),
    Region(
        'yt', 'xkb:yt::fra', 'Indian/Mayotte', 'fr-YT', KML.ANSI,
        'Mayotte'),
    Region(
        'um', 'xkb:um::eng', ['Pacific/Johnston', 'Pacific/Midway',
                              'Pacific/Wake'], 'en-UM', KML.ANSI,
        'United States Minor Outlying Islands'),
    Region(
        'lb', 'xkb:lb::ara', 'Asia/Beirut', ['ar', 'fr-LB', 'en'], KML.ANSI,
        'Lebanon'),
    Region(
        'lc', 'xkb:lc::eng', 'America/St_Lucia', 'en-LC', KML.ANSI,
        'Saint Lucia'),
    Region(
        'la', 'xkb:la::lao', 'Asia/Vientiane', ['lo', 'fr', 'en'], KML.ANSI,
        'Laos'),
    Region(
        'tv', 'xkb:us::eng', 'Pacific/Funafuti', ['tvl', 'en', 'sm'], KML.ANSI,
        'Tuvalu'),
    Region(
        'tt', 'xkb:tt::eng', 'America/Port_of_Spain', ['en-TT', 'hns', 'fr',
                                                       'es', 'zh'], KML.ANSI,
        'Trinidad and Tobago'),
    Region(
        'lk', 'xkb:lk::sin', 'Asia/Colombo', ['si', 'ta', 'en'], KML.ANSI,
        'Sri Lanka'),
    Region(
        'li', 'xkb:ch::ger', 'Europe/Vaduz', ['de', 'en-GB'], KML.ISO,
        'Liechtenstein'),
    Region(
        'lv', 'xkb:lv:apostrophe:lav', 'Europe/Riga', ['lv', 'lt', 'ru',
                                                       'en-GB'], KML.ISO,
        'Latvia'),
    Region(
        'to', 'xkb:to::ton', 'Pacific/Tongatapu', ['to', 'en-TO'], KML.ANSI,
        'Tonga'),
    Region(
        'lt', 'xkb:lt::lit', 'Europe/Vilnius', ['lt', 'ru', 'pl'], KML.ISO,
        'Lithuania'),
    Region(
        'lu', 'xkb:lu::ltz', 'Europe/Luxembourg', ['lb', 'de-LU'], KML.ANSI,
        'Luxembourg'),
    Region(
        'lr', 'xkb:lr::eng', 'Africa/Monrovia', 'en-LR', KML.ANSI,
        'Liberia'),
    Region(
        'ls', 'xkb:ls::eng', 'Africa/Maseru', ['en-LS', 'st', 'zu'], KML.ANSI,
        'Lesotho'),
    Region(
        'tf', 'xkb:tf::fra', 'Indian/Kerguelen', 'fr', KML.ANSI,
        'French Southern Territories'),
    Region(
        'tg', 'xkb:tg::fra', 'Africa/Lome', ['fr-TG', 'ee', 'hna'], KML.ANSI,
        'Togo'),
    Region(
        'td', 'xkb:td::fra', 'Africa/Ndjamena', ['fr-TD', 'ar'], KML.ANSI,
        'Chad'),
    Region(
        'tc', 'xkb:tc::eng', 'America/Grand_Turk', 'en-TC', KML.ANSI,
        'Turks and Caicos Islands'),
    Region(
        'ly', 'xkb:ly::ara', 'Africa/Tripoli', ['ar', 'it', 'en'], KML.ANSI,
        'Libya'),
    Region(
        'va', 'xkb:va::lat', 'Europe/Vatican', ['la', 'it', 'fr'], KML.ANSI,
        'Vatican'),
    Region(
        'vc', 'xkb:vc::eng', 'America/St_Vincent', ['en-VC', 'fr'], KML.ANSI,
        'Saint Vincent and the Grenadines'),
    Region(
        'ad', 'xkb:ad::cat', 'Europe/Andorra', 'ca', KML.ANSI,
        'Andorra'),
    Region(
        'ag', 'xkb:ag::eng', 'America/Antigua', 'en-AG', KML.ANSI,
        'Antigua and Barbuda'),
    Region(
        'af', 'xkb:af::fas', 'Asia/Kabul', ['fa-AF', 'ps'], KML.ANSI,
        'Afghanistan'),
    Region(
        'ai', 'xkb:ai::eng', 'America/Anguilla', 'en-AI', KML.ANSI,
        'Anguilla'),
    Region(
        'vi', 'xkb:vi::eng', 'America/St_Thomas', 'en-VI', KML.ANSI,
        'U.S. Virgin Islands'),
    Region(
        'ir', 'xkb:ir::fas', 'Asia/Tehran', ['fa-IR', 'ku'], KML.ANSI,
        'Iran'),
    Region(
        'am', 'xkb:am::hye', 'Asia/Yerevan', 'hy', KML.ANSI,
        'Armenia'),
    Region(
        'al', 'xkb:al::sqi', 'Europe/Tirane', ['sq', 'el'], KML.ANSI,
        'Albania'),
    Region(
        'ao', 'xkb:ao::por', 'Africa/Luanda', 'pt-AO', KML.ANSI,
        'Angola'),
    Region(
        'as', 'xkb:as::eng', 'Pacific/Pago_Pago', ['en-AS', 'sm'], KML.ANSI,
        'American Samoa'),
    Region(
        'aw', 'xkb:aw::nld', 'America/Aruba', ['nl-AW', 'es', 'en'], KML.ANSI,
        'Aruba'),
    Region(
        'ax', 'xkb:ax::swe', 'Europe/Mariehamn', 'sv-AX', KML.ANSI,
        'Aland Islands'),
    Region(
        'az', 'xkb:az::aze', 'Asia/Baku', ['az', 'ru', 'hy'], KML.ANSI,
        'Azerbaijan'),
    Region(
        'ua', 'xkb:ua::ukr', [
            'Europe/Kiev', 'Europe/Uzhgorod', 'Europe/Zaporozhye'], [
                'uk', 'ru-UA', 'rom', 'pl', 'hu'], KML.ANSI,
        'Ukraine'),
    Region(
        'qa', 'xkb:qa::ara', 'Asia/Bahrain', ['ar', 'en'], KML.ANSI,
        'Qatar'),
    Region(
        'mz', 'xkb:mz::por', 'Africa/Maputo', ['pt-MZ', 'vmw'], KML.ANSI,
        'Mozambique'),
    ]
"""A list of :py:class:`regions.Region` objects for
**unconfirmed** regions. These may contain incorrect information (or not
supported by Chrome browser yet), and all fields must be reviewed before launch.
See http://goto/vpdsettings.

Currently, non-Latin keyboards must use an underlying Latin keyboard
for VPD. (This assumption should be revisited when moving items to
:py:data:`regions.Region.REGIONS_LIST`.)  This is
currently being discussed on <http://crbug.com/325389>.

Some timezones or locales may be missing from ``timezone_settings.cc`` (see
http://crosbug.com/p/23902).  This must be rectified before moving
items to :py:data:`regions.Region.REGIONS_LIST`.
"""


def ConsolidateRegions(regions):
  """Consolidates a list of regions into a dict.

  Args:
    regions: A list of Region objects.  All objects for any given
      region code must be identical or we will throw an exception.
      (We allow duplicates in case identical region objects are
      defined in both regions.py and the overlay, e.g., when moving
      items to the public overlay.)

  Returns:
    A dict from region code to Region.

  Raises:
    RegionException: If there are multiple regions defined for a given
      region, and the values for those regions differ.
  """
  # Build a dict from region_code to the first Region with that code.
  region_dict = {}
  for r in regions:
    existing_region = region_dict.get(r.region_code)
    if existing_region:
      if existing_region.GetFieldsDict() != r.GetFieldsDict():
        raise RegionException(
            'Conflicting definitions for region %r: %r, %r' %
            (r.region_code, existing_region.GetFieldsDict(),
             r.GetFieldsDict()))
    else:
      region_dict[r.region_code] = r

  return region_dict


def BuildRegionsDict(include_all=False):
  """Builds a dictionary mapping from code to :py:class:`regions.Region` object.

  The regions include:

  * :py:data:`regions.REGIONS_LIST`
  * :py:data:`regions_overlay.REGIONS_LIST`
  * Only if ``include_all`` is true:

    * :py:data:`regions.UNCONFIRMED_REGIONS_LIST`
    * :py:data:`regions.INCOMPLETE_REGIONS_LIST`

  A region may only appear in one of the above lists, or this function
  will (deliberately) fail.
  """
  regions = list(REGIONS_LIST)
  if include_all:
    known_codes = [r.region_code for r in regions]
    regions += [r for r in UNCONFIRMED_REGIONS_LIST if r.region_code not in
                known_codes]

  # Build dictionary of region code to list of regions with that
  # region code.  Check manually for duplicates, since the region may
  # be present both in the overlay and the public repo.
  return ConsolidateRegions(regions)


REGIONS = BuildRegionsDict()


def main(args=sys.argv[1:], out=None):
  parser = argparse.ArgumentParser(description=(
      'Display all known regions and their parameters. '))
  parser.add_argument('--format',
                      choices=('human-readable', 'csv', 'json', 'yaml'),
                      default='human-readable',
                      help='Output format (default=%(default)s)')
  parser.add_argument('--all', action='store_true',
                      help='Include unconfirmed and incomplete regions')
  parser.add_argument('--notes', action='store_true',
                      help='Include notes in output')
  parser.add_argument('--output', default=None,
                      help='Specify output file')
  parser.add_argument('--overlay', default=None,
                      help='Specify a Python file to overlay extra data')
  args = parser.parse_args(args)

  if args.overlay is not None:
    execfile(args.overlay)

  if args.all:
    # Add an additional 'confirmed' property to help identifying region status,
    # for autotests, unit tests and factory module.
    Region.FIELDS.insert(1, 'confirmed')
    for r in REGIONS_LIST:
      r.confirmed = True
    for r in UNCONFIRMED_REGIONS_LIST:
      r.confirmed = False

  regions_dict = BuildRegionsDict(args.all)

  if out is None:
    if args.output is None:
      out = sys.stdout
    else:
      out = open(args.output, 'w')

  if args.notes or args.format == 'csv':
    Region.FIELDS += ['notes']

  # Handle YAML and JSON output.
  if args.format == 'yaml' or args.format == 'json':
    data = {}
    for region in regions_dict.values():
      item = {}
      for field in Region.FIELDS:
        item[field] = getattr(region, field)
      data[region.region_code] = item
    if args.format == 'yaml':
      yaml.dump(data, out)
    else:
      json.dump(data, out)
    return

  # Handle CSV or plain-text output: build a list of lines to print.
  lines = [Region.FIELDS]

  def CoerceToString(value):
    """Returns the arguments in simple string type.

    If value is a list, concatenate its values with commas.  Otherwise, just
    return value.
    """
    if isinstance(value, list):
      return ','.join(value)
    else:
      return str(value)

  for region in sorted(regions_dict.values(), key=lambda v: v.region_code):
    lines.append([CoerceToString(getattr(region, field))
                  for field in Region.FIELDS])

  if args.format == 'csv':
    # Just print the lines in CSV format. Note the values may include ',' so the
    # separator must be tab.
    for l in lines:
      print('\t'.join(l))
  elif args.format == 'human-readable':
    num_columns = len(lines[0])

    # Calculate maximum length of each column.
    max_lengths = []
    for column_no in xrange(num_columns):
      max_lengths.append(max(len(line[column_no]) for line in lines))

    # Print each line, padding as necessary to the max column length.
    for line in lines:
      for column_no in xrange(num_columns):
        out.write(line[column_no].ljust(max_lengths[column_no] + 2))
      out.write('\n')
  else:
    sys.exit('Sorry, unknown format specified: %s' % args.format)


if __name__ == '__main__':
  main()
