From 60fd1006280c6fcc9edd7fd99e436f49c79050dc Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Fri, 17 Jul 2026 23:53:40 +0000 Subject: [PATCH 01/11] docs: add phased roadmap for missing features Tracks the audit of missing data fields (capital, population, currency name/symbol, etc.) and functionality (search, filters, geo utils, pagination) against comparable libraries, plus the phased plan to close the gaps incrementally on this branch. --- ROADMAP.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 ROADMAP.md diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..74ce6e9 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,81 @@ +# Roadmap: missing features + +Audit of this library against comparable libraries (`country-state-city`, `world-countries`, +`countries-states-cities-database`) and a phased plan to close the gaps, tracked here so +progress persists across sessions/branches. Work happens on `feature/data-roadmap`, one +commit (and one changeset) per phase, checked off below as each phase merges. + +## Current state (for reference) + +- 250 countries: name, ISO code, phone code, flag emoji, currency **code**, lat/long, + timezones, regions +- 4,963 states/provinces: name, ISO code, country code, lat/long +- ~148,000 cities (lazy-loaded): name, country code, state code, lat/long +- Sync, Map-indexed O(1) lookups by code; ESM + CJS; full TypeScript types + +## Missing data fields + +| Field | Notes | Possible source | +|---|---|---| +| Capital city | Not present on country object | REST Countries API (`capital`), or `mledoze/countries` | +| Population | — | REST Countries API (`population`), World Bank Open Data API | +| Area (km²) | — | REST Countries API (`area`), `mledoze/countries` | +| Currency name / symbol | Only currency **code** exists (e.g. `USD`, not `$` / "US Dollar") | REST Countries API (`currencies`), or `currency-codes` npm package | +| Native/official name | — | REST Countries API (`name.nativeName`, `name.official`) | +| Demonym (nationality) | — | REST Countries API (`demonyms`) | +| Continent (clean enum) | Only region/subregion strings exist | REST Countries API (`continents`), `mledoze/countries` | +| Languages spoken | — | REST Countries API (`languages`) | +| Bordering countries | — | REST Countries API (`borders`) | +| TLD (`.us`, `.de`) | — | REST Countries API (`tld`) | +| UN membership / independence flag | — | REST Countries API (`unMember`, `independent`) | + +> REST Countries (`restcountries.com`) covers nearly all of the above — country-level only +> (won't add capital/population/currency to individual *states* or *cities*). The v3.1 +> free/no-key endpoint is discontinued; v5 requires an API key. This is still fine here since +> it's only called **once**, at build/dev time, inside a data-generation script to produce the +> static JSON shipped in the package — end users of this library never call the API, so it +> stays fully offline at runtime. + +## Data source options & licensing (checked) + +| Source | Good for | License | Caveat | +|---|---|---|---| +| REST Countries API (v5) | Capital, population, area, currency name/symbol, languages, borders, TLD, demonyms, continents | No copyleft/attribution burden found | Country-level only; requires an API key (v3.1 free/no-key tier discontinued) | +| `dr5hn/countries-states-cities-database` | Broadest per-city/state coverage (postcodes, native names, 19 languages), also boundary polygons | **ODbL v1.0** | Share-alike: redistributing as part of an MIT package may obligate keeping that data under ODbL + attribution | +| `harpreetkhalsagtbit/country-state-city` (source of the `country-state-city` npm package) | — | **GPL-3.0** | Its data schema is functionally identical to this library's current dataset — worth double-checking provenance/licensing of our existing data, but do **not** pull *additional* fields from here: GPL-3.0 is copyleft and would conflict with MIT distribution | + +**Decision:** use REST Countries (v5) for the new country-level fields via a one-time build +script; avoid pulling additional data from the ODbL/GPL sources without a closer license +review first. + +## Missing functionality + +- **Search** — no fuzzy/partial name matching anywhere; all lookups are exact-code-only. +- **Cross-entity filters** — by currency, region, language, continent. +- **Validation helpers** — `isValidCountryCode`, `isValidPhoneCode`, `isValidStateCode`. +- **Geo utilities** — Haversine distance, nearest city/country to a coordinate. +- **Pagination/streaming** for the 148k-city dataset — currently all-or-nothing lazy load. + +## Missing DX / tooling + +- **i18n** — country/state names are English-only. +- **Browser/CDN build** — slimmer bundle with cities on-demand. +- **CLI / data export** — CSV/SQL dump for non-JS consumers. + +## Phase plan + +- [ ] **Phase 1** — Capital, population, area, currency name/symbol, native/official name, + demonym, continent, languages, borders, TLD, unMember/independent. New optional + `ICountry` fields + `scripts/fetch-restcountries.cjs` build-time fetch (reads + `RESTCOUNTRIES_API_KEY` from env, never committed). +- [ ] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. +- [ ] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, + `getCountriesByLanguage`, `getCountriesByContinent`. Depends on Phase 1. +- [ ] **Phase 4** — Validation helpers: `isValidCountryCode`, `isValidPhoneCode`, + `isValidStateCode`. +- [ ] **Phase 5** — Geo utilities: Haversine distance, `getNearestCountry`, `getNearestCity`. +- [ ] **Phase 6** — Pagination for the cities dataset (`getCitiesPaginated`). +- [ ] **Phase 7** (backlog, lower priority) — i18n locale names, slimmer browser/CDN bundle, + CLI data export. + +Phases 2, 4, 5, 6 don't depend on Phase 1 or each other and can ship in any order. From b4fd7d9444ad17b87fdc7aebf778593c9546e29d Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 00:02:25 +0000 Subject: [PATCH 02/11] docs: switch Phase 1 data source to Wikidata (CC0, free) REST Countries v5 dropped its free tier (paid-only now). mledoze/countries and dr5hn's database are both ODbL (share-alike), same conflict already flagged for dr5hn. Wikidata's structured data is CC0 (public domain, no attribution, no copyleft, no key) and covers the same fields; currency name/symbol comes from a hardcoded ISO 4217 table instead of any fetch. --- ROADMAP.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 74ce6e9..f34a89c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -29,24 +29,24 @@ commit (and one changeset) per phase, checked off below as each phase merges. | TLD (`.us`, `.de`) | — | REST Countries API (`tld`) | | UN membership / independence flag | — | REST Countries API (`unMember`, `independent`) | -> REST Countries (`restcountries.com`) covers nearly all of the above — country-level only -> (won't add capital/population/currency to individual *states* or *cities*). The v3.1 -> free/no-key endpoint is discontinued; v5 requires an API key. This is still fine here since -> it's only called **once**, at build/dev time, inside a data-generation script to produce the -> static JSON shipped in the package — end users of this library never call the API, so it -> stays fully offline at runtime. +> Any external call happens only **once**, at build/dev time, inside a data-generation script +> to produce the static JSON shipped in the package — end users of this library never call +> any API, so it stays fully offline at runtime. ## Data source options & licensing (checked) | Source | Good for | License | Caveat | |---|---|---|---| -| REST Countries API (v5) | Capital, population, area, currency name/symbol, languages, borders, TLD, demonyms, continents | No copyleft/attribution burden found | Country-level only; requires an API key (v3.1 free/no-key tier discontinued) | +| **Wikidata (SPARQL query service)** | Capital, population, area, TLD, continent, UN membership, independence, borders, languages, demonyms, native/official name | **CC0** (public domain) — no attribution, no copyleft, no key, no cost | Free-text/query complexity; some fields sparse for micro-states, need fallback handling | +| ISO 4217 standard (hardcoded table) | Currency name + symbol | Not copyrightable (a standard's factual code list) | Small (~180 rows), maintained by hand, no fetch needed | +| REST Countries API (v5) | Same fields as Wikidata, simpler REST shape | No copyleft found | **Rejected** — no free tier as of 2026; cheapest plan is $15/mo, not worth it when Wikidata covers the same ground for free | | `dr5hn/countries-states-cities-database` | Broadest per-city/state coverage (postcodes, native names, 19 languages), also boundary polygons | **ODbL v1.0** | Share-alike: redistributing as part of an MIT package may obligate keeping that data under ODbL + attribution | +| `mledoze/countries` | Capital, area, currencies, languages, borders, tld, demonyms, native name, unMember, independent (no population, no continent enum) | **ODbL v1.0** | Same share-alike issue as `dr5hn` — rejected for the same reason | | `harpreetkhalsagtbit/country-state-city` (source of the `country-state-city` npm package) | — | **GPL-3.0** | Its data schema is functionally identical to this library's current dataset — worth double-checking provenance/licensing of our existing data, but do **not** pull *additional* fields from here: GPL-3.0 is copyleft and would conflict with MIT distribution | -**Decision:** use REST Countries (v5) for the new country-level fields via a one-time build -script; avoid pulling additional data from the ODbL/GPL sources without a closer license -review first. +**Decision:** Wikidata (CC0) + a hand-maintained ISO 4217 currency table for the new +country-level fields, fetched via a one-time build script. No payment, no copyleft risk — +both `dr5hn` and `mledoze` are ODbL (share-alike) and REST Countries dropped its free tier. ## Missing functionality @@ -66,8 +66,9 @@ review first. - [ ] **Phase 1** — Capital, population, area, currency name/symbol, native/official name, demonym, continent, languages, borders, TLD, unMember/independent. New optional - `ICountry` fields + `scripts/fetch-restcountries.cjs` build-time fetch (reads - `RESTCOUNTRIES_API_KEY` from env, never committed). + `ICountry` fields + `scripts/fetch-wikidata.cjs` build-time fetch (SPARQL query against + `query.wikidata.org`, CC0, no key needed) merged with a hardcoded ISO 4217 currency + name/symbol table. - [ ] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. - [ ] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, `getCountriesByLanguage`, `getCountriesByContinent`. Depends on Phase 1. From 83bf8f9a7476c4067e81586db71921e59e591089 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 00:28:23 +0000 Subject: [PATCH 03/11] Update country data and helper scripts --- .changeset/enrich-country-data.md | 5 + README.md | 28 +- Test/country.test.ts | 61 + data/countries.json | 32556 ++++++++++++++++++++++------ package.json | 1 + scripts/build-data.cjs | 25 +- scripts/fetch-wikidata.cjs | 239 + src/CountryHelper.ts | 8 +- src/modules/country.ts | 3 + src/shared/currencies.json | 157 + src/shared/currencies.ts | 13 + src/shared/interface.ts | 14 + 12 files changed, 25947 insertions(+), 7163 deletions(-) create mode 100644 .changeset/enrich-country-data.md create mode 100644 scripts/fetch-wikidata.cjs create mode 100644 src/shared/currencies.json create mode 100644 src/shared/currencies.ts diff --git a/.changeset/enrich-country-data.md b/.changeset/enrich-country-data.md new file mode 100644 index 0000000..c680ac5 --- /dev/null +++ b/.changeset/enrich-country-data.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add capital, population, area, continent, official/native name, demonym, languages, borders, TLDs, UN membership/independence flags, and currency name/symbol to every country record. Sourced from Wikidata (CC0) and a hand-maintained ISO 4217 currency table via a new one-time build script (`npm run build:data:fetch`) — no runtime dependency added, the library stays fully offline. diff --git a/README.md b/README.md index 0ee1ad2..326d1dd 100644 --- a/README.md +++ b/README.md @@ -156,10 +156,24 @@ interface ICountry { phoneCode: string; countryFlag: string; currencyCode?: string; + currencyName?: string; + currencySymbol?: string; latitude?: string; longitude?: string; timezones?: ITimezone[]; regions: IRegion[]; + capital?: string; + population?: number; + area?: number; + continent?: string; + officialName?: string; + nativeName?: string; + demonym?: string; + languages?: string[]; + borders?: string[]; + tld?: string[]; + unMember?: boolean; + independent?: boolean; getStates?(): IState[]; getCities?(): ICity[]; } @@ -207,10 +221,22 @@ const gh = Country.getCountryByCode('GH'); // phoneCode: '+233', // countryFlag: '🇬🇭', // currencyCode: 'GHS', +// currencyName: 'Ghanaian Cedi', +// currencySymbol: '₵', // latitude: '8.00000000', // longitude: '-2.00000000', // timezones: [{ zoneName: 'Africa/Accra', gmtOffset: 0, ... }], -// regions: [...] +// regions: [...], +// capital: 'Accra', +// population: 32833031, +// area: 238535, +// continent: 'Africa', +// demonym: 'Ghanaian', +// languages: ['English'], +// borders: ['TG', 'BF', 'CI'], +// tld: ['.gh'], +// unMember: true, +// independent: true // } ``` diff --git a/Test/country.test.ts b/Test/country.test.ts index 8385b1e..9962119 100644 --- a/Test/country.test.ts +++ b/Test/country.test.ts @@ -16,6 +16,14 @@ const MOCK_COUNTRIES = [ { name: 'Brändö', shortCode: 'BR' }, { name: 'Eckerö', shortCode: 'EC' }, ], + capital: 'Mariehamn', + population: 30836, + area: 1582.93, + nativeName: 'Åland', + languages: ['Swedish'], + tld: ['.ax'], + unMember: false, + independent: false, }, { countryName: 'Ghana', @@ -28,6 +36,16 @@ const MOCK_COUNTRIES = [ { zoneName: 'Africa/Accra', gmtOffset: 0, gmtOffsetName: 'UTC+00:00', abbreviation: 'GMT', tzName: 'Greenwich Mean Time' }, ], regions: [{ name: 'Ashanti', shortCode: 'AH' }], + capital: 'Accra', + population: 32833031, + area: 238535, + continent: 'Africa', + demonym: 'Ghanaian', + languages: ['English'], + borders: ['TG', 'BF', 'CI'], + tld: ['.gh'], + unMember: true, + independent: true, }, ]; @@ -98,6 +116,49 @@ describe('Country.getCountryByCode', () => { }); }); +// ─── enriched country fields ────────────────────────────────────────────────── + +describe('Country.getCountryByCode enriched fields', () => { + test('exposes currency name/symbol', () => { + const gh = Country.getCountryByCode('GH')!; + expect(gh.currencyName).toBe('Ghanaian Cedi'); + expect(gh.currencySymbol).toBe('₵'); + }); + + test('exposes capital, population, area, continent', () => { + const gh = Country.getCountryByCode('GH')!; + expect(gh.capital).toBe('Accra'); + expect(gh.population).toBe(32833031); + expect(gh.area).toBe(238535); + expect(gh.continent).toBe('Africa'); + }); + + test('exposes demonym, languages, borders, tld', () => { + const gh = Country.getCountryByCode('GH')!; + expect(gh.demonym).toBe('Ghanaian'); + expect(gh.languages).toEqual(['English']); + expect(gh.borders).toEqual(['TG', 'BF', 'CI']); + expect(gh.tld).toEqual(['.gh']); + }); + + test('exposes unMember and independent flags', () => { + const gh = Country.getCountryByCode('GH')!; + expect(gh.unMember).toBe(true); + expect(gh.independent).toBe(true); + + const ax = Country.getCountryByCode('AX')!; + expect(ax.unMember).toBe(false); + expect(ax.independent).toBe(false); + }); + + test('leaves sparse fields undefined rather than null/empty', () => { + const ax = Country.getCountryByCode('AX')!; + expect(ax.continent).toBeUndefined(); + expect(ax.demonym).toBeUndefined(); + expect(ax.borders).toBeUndefined(); + }); +}); + // ─── getCountryByPhoneCode ──────────────────────────────────────────────────── describe('Country.getCountryByPhoneCode', () => { diff --git a/data/countries.json b/data/countries.json index ec9bb34..fa6b1da 100644 --- a/data/countries.json +++ b/data/countries.json @@ -16,41 +16,174 @@ } ], "regions": [ - { "name": "Badakhshan", "shortCode": "BDS" }, - { "name": "Badghis", "shortCode": "BDG" }, - { "name": "Baghlan", "shortCode": "BGL" }, - { "name": "Balkh", "shortCode": "BAL" }, - { "name": "Bamyan", "shortCode": "BAM" }, - { "name": "Daykundi", "shortCode": "DAY" }, - { "name": "Farah", "shortCode": "FRA" }, - { "name": "Faryab", "shortCode": "FYB" }, - { "name": "Ghazni", "shortCode": "GHA" }, - { "name": "Ghor", "shortCode": "GHO" }, - { "name": "Helmand", "shortCode": "HEL" }, - { "name": "Herat", "shortCode": "HER" }, - { "name": "Jowzjan", "shortCode": "JOW" }, - { "name": "Kabul", "shortCode": "KAB" }, - { "name": "Kandahar", "shortCode": "KAN" }, - { "name": "Kapisa", "shortCode": "KAP" }, - { "name": "Khost", "shortCode": "KHO" }, - { "name": "Kunar", "shortCode": "KNR" }, - { "name": "Kunduz", "shortCode": "KDZ" }, - { "name": "Laghman", "shortCode": "LAG" }, - { "name": "Logar", "shortCode": "LOW" }, - { "name": "Maidan Wardak", "shortCode": "WAR" }, - { "name": "Nangarhar", "shortCode": "NAN" }, - { "name": "Nimruz", "shortCode": "NIM" }, - { "name": "Nuristan", "shortCode": "NUR" }, - { "name": "Paktia", "shortCode": "PIA" }, - { "name": "Paktika", "shortCode": "PKA" }, - { "name": "Panjshir", "shortCode": "PAN" }, - { "name": "Parwan", "shortCode": "PAR" }, - { "name": "Samangan", "shortCode": "SAM" }, - { "name": "Sar-e Pol", "shortCode": "SAR" }, - { "name": "Takhar", "shortCode": "TAK" }, - { "name": "Urozgan", "shortCode": "ORU" }, - { "name": "Zabul", "shortCode": "ZAB" } - ] + { + "name": "Badakhshan", + "shortCode": "BDS" + }, + { + "name": "Badghis", + "shortCode": "BDG" + }, + { + "name": "Baghlan", + "shortCode": "BGL" + }, + { + "name": "Balkh", + "shortCode": "BAL" + }, + { + "name": "Bamyan", + "shortCode": "BAM" + }, + { + "name": "Daykundi", + "shortCode": "DAY" + }, + { + "name": "Farah", + "shortCode": "FRA" + }, + { + "name": "Faryab", + "shortCode": "FYB" + }, + { + "name": "Ghazni", + "shortCode": "GHA" + }, + { + "name": "Ghor", + "shortCode": "GHO" + }, + { + "name": "Helmand", + "shortCode": "HEL" + }, + { + "name": "Herat", + "shortCode": "HER" + }, + { + "name": "Jowzjan", + "shortCode": "JOW" + }, + { + "name": "Kabul", + "shortCode": "KAB" + }, + { + "name": "Kandahar", + "shortCode": "KAN" + }, + { + "name": "Kapisa", + "shortCode": "KAP" + }, + { + "name": "Khost", + "shortCode": "KHO" + }, + { + "name": "Kunar", + "shortCode": "KNR" + }, + { + "name": "Kunduz", + "shortCode": "KDZ" + }, + { + "name": "Laghman", + "shortCode": "LAG" + }, + { + "name": "Logar", + "shortCode": "LOW" + }, + { + "name": "Maidan Wardak", + "shortCode": "WAR" + }, + { + "name": "Nangarhar", + "shortCode": "NAN" + }, + { + "name": "Nimruz", + "shortCode": "NIM" + }, + { + "name": "Nuristan", + "shortCode": "NUR" + }, + { + "name": "Paktia", + "shortCode": "PIA" + }, + { + "name": "Paktika", + "shortCode": "PKA" + }, + { + "name": "Panjshir", + "shortCode": "PAN" + }, + { + "name": "Parwan", + "shortCode": "PAR" + }, + { + "name": "Samangan", + "shortCode": "SAM" + }, + { + "name": "Sar-e Pol", + "shortCode": "SAR" + }, + { + "name": "Takhar", + "shortCode": "TAK" + }, + { + "name": "Urozgan", + "shortCode": "ORU" + }, + { + "name": "Zabul", + "shortCode": "ZAB" + } + ], + "capital": "Kabul", + "population": 41454761, + "area": 652230, + "continent": "Asia", + "officialName": "Islamic Emirate of Afghanistan", + "nativeName": "افغانستان", + "demonym": "Afghan", + "languages": [ + "Uzbek", + "Balochi", + "Pamir", + "Turkmen", + "Arabic", + "Pashto", + "Pashayi", + "Nuristani", + "Dari" + ], + "tld": [ + ".af" + ], + "borders": [ + "CN", + "UZ", + "IR", + "PK", + "TJ", + "TM" + ], + "unMember": true, + "independent": true }, { "countryName": "Åland Islands", @@ -69,23 +202,83 @@ } ], "regions": [ - { "name": "Brändö", "shortCode": "BR" }, - { "name": "Eckerö", "shortCode": "EC" }, - { "name": "Finström", "shortCode": "FN" }, - { "name": "Föglö", "shortCode": "FG" }, - { "name": "Geta", "shortCode": "GT" }, - { "name": "Hammarland", "shortCode": "HM" }, - { "name": "Jomala", "shortCode": "JM" }, - { "name": "Kumlinge", "shortCode": "KM" }, - { "name": "Kökar", "shortCode": "KK" }, - { "name": "Lemland", "shortCode": "LE" }, - { "name": "Lumparland", "shortCode": "LU" }, - { "name": "Mariehamn", "shortCode": "MH" }, - { "name": "Saltvik", "shortCode": "SV" }, - { "name": "Sottunga", "shortCode": "ST" }, - { "name": "Sund", "shortCode": "SD" }, - { "name": "Vårdö", "shortCode": "VR" } - ] + { + "name": "Brändö", + "shortCode": "BR" + }, + { + "name": "Eckerö", + "shortCode": "EC" + }, + { + "name": "Finström", + "shortCode": "FN" + }, + { + "name": "Föglö", + "shortCode": "FG" + }, + { + "name": "Geta", + "shortCode": "GT" + }, + { + "name": "Hammarland", + "shortCode": "HM" + }, + { + "name": "Jomala", + "shortCode": "JM" + }, + { + "name": "Kumlinge", + "shortCode": "KM" + }, + { + "name": "Kökar", + "shortCode": "KK" + }, + { + "name": "Lemland", + "shortCode": "LE" + }, + { + "name": "Lumparland", + "shortCode": "LU" + }, + { + "name": "Mariehamn", + "shortCode": "MH" + }, + { + "name": "Saltvik", + "shortCode": "SV" + }, + { + "name": "Sottunga", + "shortCode": "ST" + }, + { + "name": "Sund", + "shortCode": "SD" + }, + { + "name": "Vårdö", + "shortCode": "VR" + } + ], + "capital": "Mariehamn", + "population": 30836, + "area": 1582.93, + "nativeName": "Åland", + "languages": [ + "Swedish" + ], + "tld": [ + ".ax" + ], + "unMember": false, + "independent": false }, { "countryName": "Albania", @@ -104,19 +297,76 @@ } ], "regions": [ - { "name": "Berat", "shortCode": "01" }, - { "name": "Dibër", "shortCode": "09" }, - { "name": "Durrës", "shortCode": "02" }, - { "name": "Elbasan", "shortCode": "03" }, - { "name": "Fier", "shortCode": "04" }, - { "name": "Gjirokastër", "shortCode": "05" }, - { "name": "Korçë", "shortCode": "06" }, - { "name": "Kukës", "shortCode": "07" }, - { "name": "Lezhë", "shortCode": "08" }, - { "name": "Shkodër", "shortCode": "10" }, - { "name": "Tirana", "shortCode": "11" }, - { "name": "Vlorë", "shortCode": "12" } - ] + { + "name": "Berat", + "shortCode": "01" + }, + { + "name": "Dibër", + "shortCode": "09" + }, + { + "name": "Durrës", + "shortCode": "02" + }, + { + "name": "Elbasan", + "shortCode": "03" + }, + { + "name": "Fier", + "shortCode": "04" + }, + { + "name": "Gjirokastër", + "shortCode": "05" + }, + { + "name": "Korçë", + "shortCode": "06" + }, + { + "name": "Kukës", + "shortCode": "07" + }, + { + "name": "Lezhë", + "shortCode": "08" + }, + { + "name": "Shkodër", + "shortCode": "10" + }, + { + "name": "Tirana", + "shortCode": "11" + }, + { + "name": "Vlorë", + "shortCode": "12" + } + ], + "capital": "Tirana", + "population": 2811655, + "area": 28748, + "continent": "Europe", + "nativeName": "Republika e Shqipërisë", + "demonym": "Albanians", + "languages": [ + "Albanian" + ], + "tld": [ + ".al" + ], + "borders": [ + "GR", + "MK", + "ME", + "RS", + "XK" + ], + "unMember": true, + "independent": true }, { "countryName": "Algeria", @@ -135,55 +385,225 @@ } ], "regions": [ - { "name": "Adrar", "shortCode": "01" }, - { "name": "Aïn Defla", "shortCode": "44" }, - { "name": "Aïn Témouchent", "shortCode": "46" }, - { "name": "Algiers", "shortCode": "16" }, - { "name": "Annaba", "shortCode": "23" }, - { "name": "Batna", "shortCode": "05" }, - { "name": "Béchar", "shortCode": "08" }, - { "name": "Béjaïa", "shortCode": "06" }, - { "name": "Biskra", "shortCode": "07" }, - { "name": "Blida", "shortCode": "09" }, - { "name": "Bordj Bou Arréridj", "shortCode": "34" }, - { "name": "Bouïra", "shortCode": "10" }, - { "name": "Boumerdès", "shortCode": "35" }, - { "name": "Chlef", "shortCode": "02" }, - { "name": "Constantine", "shortCode": "25" }, - { "name": "Djelfa", "shortCode": "17" }, - { "name": "El Bayadh", "shortCode": "32" }, - { "name": "El Oued", "shortCode": "39" }, - { "name": "El Tarf", "shortCode": "36" }, - { "name": "Ghardaïa", "shortCode": "47" }, - { "name": "Guelma", "shortCode": "24" }, - { "name": "Illizi", "shortCode": "33" }, - { "name": "Jijel", "shortCode": "18" }, - { "name": "Khenchela", "shortCode": "40" }, - { "name": "Laghouat", "shortCode": "03" }, - { "name": "Mascara", "shortCode": "29" }, - { "name": "Médéa", "shortCode": "26" }, - { "name": "Mila", "shortCode": "43" }, - { "name": "Mostaganem", "shortCode": "27" }, - { "name": "Msila", "shortCode": "28" }, - { "name": "Naâma", "shortCode": "45" }, - { "name": "Oran", "shortCode": "31" }, - { "name": "Ouargla", "shortCode": "30" }, - { "name": "Oum el Bouaghi", "shortCode": "04" }, - { "name": "Relizane", "shortCode": "48" }, - { "name": "Saïda", "shortCode": "20" }, - { "name": "Sétif", "shortCode": "19" }, - { "name": "Sidi Bel Abbès", "shortCode": "22" }, - { "name": "Skikda", "shortCode": "21" }, - { "name": "Souk Ahras", "shortCode": "41" }, - { "name": "Tamanghasset", "shortCode": "11" }, - { "name": "Tébessa", "shortCode": "12" }, - { "name": "Tiaret", "shortCode": "14" }, - { "name": "Tindouf", "shortCode": "37" }, - { "name": "Tipaza", "shortCode": "42" }, - { "name": "Tissemsilt", "shortCode": "38" }, - { "name": "Tizi Ouzou", "shortCode": "15" }, - { "name": "Tlemcen", "shortCode": "13" } - ] + { + "name": "Adrar", + "shortCode": "01" + }, + { + "name": "Aïn Defla", + "shortCode": "44" + }, + { + "name": "Aïn Témouchent", + "shortCode": "46" + }, + { + "name": "Algiers", + "shortCode": "16" + }, + { + "name": "Annaba", + "shortCode": "23" + }, + { + "name": "Batna", + "shortCode": "05" + }, + { + "name": "Béchar", + "shortCode": "08" + }, + { + "name": "Béjaïa", + "shortCode": "06" + }, + { + "name": "Biskra", + "shortCode": "07" + }, + { + "name": "Blida", + "shortCode": "09" + }, + { + "name": "Bordj Bou Arréridj", + "shortCode": "34" + }, + { + "name": "Bouïra", + "shortCode": "10" + }, + { + "name": "Boumerdès", + "shortCode": "35" + }, + { + "name": "Chlef", + "shortCode": "02" + }, + { + "name": "Constantine", + "shortCode": "25" + }, + { + "name": "Djelfa", + "shortCode": "17" + }, + { + "name": "El Bayadh", + "shortCode": "32" + }, + { + "name": "El Oued", + "shortCode": "39" + }, + { + "name": "El Tarf", + "shortCode": "36" + }, + { + "name": "Ghardaïa", + "shortCode": "47" + }, + { + "name": "Guelma", + "shortCode": "24" + }, + { + "name": "Illizi", + "shortCode": "33" + }, + { + "name": "Jijel", + "shortCode": "18" + }, + { + "name": "Khenchela", + "shortCode": "40" + }, + { + "name": "Laghouat", + "shortCode": "03" + }, + { + "name": "Mascara", + "shortCode": "29" + }, + { + "name": "Médéa", + "shortCode": "26" + }, + { + "name": "Mila", + "shortCode": "43" + }, + { + "name": "Mostaganem", + "shortCode": "27" + }, + { + "name": "Msila", + "shortCode": "28" + }, + { + "name": "Naâma", + "shortCode": "45" + }, + { + "name": "Oran", + "shortCode": "31" + }, + { + "name": "Ouargla", + "shortCode": "30" + }, + { + "name": "Oum el Bouaghi", + "shortCode": "04" + }, + { + "name": "Relizane", + "shortCode": "48" + }, + { + "name": "Saïda", + "shortCode": "20" + }, + { + "name": "Sétif", + "shortCode": "19" + }, + { + "name": "Sidi Bel Abbès", + "shortCode": "22" + }, + { + "name": "Skikda", + "shortCode": "21" + }, + { + "name": "Souk Ahras", + "shortCode": "41" + }, + { + "name": "Tamanghasset", + "shortCode": "11" + }, + { + "name": "Tébessa", + "shortCode": "12" + }, + { + "name": "Tiaret", + "shortCode": "14" + }, + { + "name": "Tindouf", + "shortCode": "37" + }, + { + "name": "Tipaza", + "shortCode": "42" + }, + { + "name": "Tissemsilt", + "shortCode": "38" + }, + { + "name": "Tizi Ouzou", + "shortCode": "15" + }, + { + "name": "Tlemcen", + "shortCode": "13" + } + ], + "capital": "Algiers", + "population": 46164219, + "area": 2381741, + "continent": "Africa", + "nativeName": "الجزائر", + "demonym": "Algerian", + "languages": [ + "Standard Algerian Berber", + "Arabic" + ], + "tld": [ + ".dz" + ], + "borders": [ + "ES", + "IT", + "ML", + "TN", + "LY", + "MR", + "MA", + "NE", + "EH" + ], + "unMember": true, + "independent": true }, { "countryName": "American Samoa", @@ -202,13 +622,47 @@ } ], "regions": [ - { "name": "Tutuila", "shortCode": "01" }, - { "name": "Aunu'u", "shortCode": "02" }, - { "name": "Ta'ū", "shortCode": "03" }, - { "name": "Ofu‑Olosega", "shortCode": "04" }, - { "name": "Rose Atoll", "shortCode": "21" }, - { "name": "Swains Island", "shortCode": "22" } - ] + { + "name": "Tutuila", + "shortCode": "01" + }, + { + "name": "Aunu'u", + "shortCode": "02" + }, + { + "name": "Ta'ū", + "shortCode": "03" + }, + { + "name": "Ofu‑Olosega", + "shortCode": "04" + }, + { + "name": "Rose Atoll", + "shortCode": "21" + }, + { + "name": "Swains Island", + "shortCode": "22" + } + ], + "capital": "Pago Pago", + "population": 49710, + "area": 199, + "continent": "Insular Oceania", + "officialName": "American Samoa", + "nativeName": "American Samoa", + "demonym": "American Samoan", + "languages": [ + "English", + "Samoan" + ], + "tld": [ + ".as" + ], + "unMember": false, + "independent": false }, { "countryName": "Andorra", @@ -227,20 +681,59 @@ } ], "regions": [ - { "name": "Andorra la Vella", "shortCode": "07" }, - { "name": "Canillo", "shortCode": "02" }, - { "name": "Encamp", "shortCode": "03" }, - { "name": "Escaldes-Engordany", "shortCode": "08" }, - { "name": "La Massana", "shortCode": "04" }, - { "name": "Ordino", "shortCode": "05" }, - { "name": "Sant Julià de Lòria", "shortCode": "06" } - ] - }, - { - "countryName": "Angola", - "countryShortCode": "AO", - "phoneCode": "+244", - "currencyCode": "AOA", + { + "name": "Andorra la Vella", + "shortCode": "07" + }, + { + "name": "Canillo", + "shortCode": "02" + }, + { + "name": "Encamp", + "shortCode": "03" + }, + { + "name": "Escaldes-Engordany", + "shortCode": "08" + }, + { + "name": "La Massana", + "shortCode": "04" + }, + { + "name": "Ordino", + "shortCode": "05" + }, + { + "name": "Sant Julià de Lòria", + "shortCode": "06" + } + ], + "capital": "Andorra la Vella", + "population": 87486, + "area": 468, + "continent": "Europe", + "nativeName": "Andorra", + "demonym": "Andorran", + "languages": [ + "Catalan" + ], + "tld": [ + ".ad" + ], + "borders": [ + "ES", + "FR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Angola", + "countryShortCode": "AO", + "phoneCode": "+244", + "currencyCode": "AOA", "latitude": "-12.50000000", "longitude": "18.50000000", "timezones": [ @@ -253,25 +746,101 @@ } ], "regions": [ - { "name": "Bengo", "shortCode": "BGO" }, - { "name": "Benguela", "shortCode": "BGU" }, - { "name": "Bié", "shortCode": "BIE" }, - { "name": "Cabinda", "shortCode": "CAB" }, - { "name": "Cuando Cubango", "shortCode": "CCU" }, - { "name": "Cuanza Norte", "shortCode": "CNO" }, - { "name": "Cuanza Sul", "shortCode": "CUS" }, - { "name": "Cunene", "shortCode": "CNN" }, - { "name": "Huambo", "shortCode": "HUA" }, - { "name": "Huíla", "shortCode": "HUI" }, - { "name": "Luanda", "shortCode": "LUA" }, - { "name": "Lunda Norte", "shortCode": "LNO" }, - { "name": "Lunda Sul", "shortCode": "LSU" }, - { "name": "Malanje", "shortCode": "MAL" }, - { "name": "Moxico", "shortCode": "MOX" }, - { "name": "Namibe", "shortCode": "NAM" }, - { "name": "Uíge", "shortCode": "UIG" }, - { "name": "Zaire", "shortCode": "ZAI" } - ] + { + "name": "Bengo", + "shortCode": "BGO" + }, + { + "name": "Benguela", + "shortCode": "BGU" + }, + { + "name": "Bié", + "shortCode": "BIE" + }, + { + "name": "Cabinda", + "shortCode": "CAB" + }, + { + "name": "Cuando Cubango", + "shortCode": "CCU" + }, + { + "name": "Cuanza Norte", + "shortCode": "CNO" + }, + { + "name": "Cuanza Sul", + "shortCode": "CUS" + }, + { + "name": "Cunene", + "shortCode": "CNN" + }, + { + "name": "Huambo", + "shortCode": "HUA" + }, + { + "name": "Huíla", + "shortCode": "HUI" + }, + { + "name": "Luanda", + "shortCode": "LUA" + }, + { + "name": "Lunda Norte", + "shortCode": "LNO" + }, + { + "name": "Lunda Sul", + "shortCode": "LSU" + }, + { + "name": "Malanje", + "shortCode": "MAL" + }, + { + "name": "Moxico", + "shortCode": "MOX" + }, + { + "name": "Namibe", + "shortCode": "NAM" + }, + { + "name": "Uíge", + "shortCode": "UIG" + }, + { + "name": "Zaire", + "shortCode": "ZAI" + } + ], + "capital": "Luanda", + "population": 36749906, + "area": 1246700, + "continent": "Africa", + "officialName": "Republic of Angola", + "nativeName": "Angola", + "demonym": "Angolan", + "languages": [ + "Portuguese" + ], + "tld": [ + ".ao" + ], + "borders": [ + "ZM", + "CG", + "CD", + "GA", + "NA" + ], + "unMember": true, + "independent": true }, { "countryName": "Anguilla", @@ -290,29 +859,110 @@ } ], "regions": [ - { "name": "Anguilla", "shortCode": "01" }, - { "name": "Anguillita Island", "shortCode": "02" }, - { "name": "Blowing Rock", "shortCode": "03" }, - { "name": "Cove Cay", "shortCode": "04" }, - { "name": "Crocus Cay", "shortCode": "05" }, - { "name": "Deadman's Cay", "shortCode": "06" }, - { "name": "Dog Island", "shortCode": "07" }, - { "name": "East Cay", "shortCode": "08" }, - { "name": "Little Island", "shortCode": "09" }, - { "name": "Little Scrub Island", "shortCode": "10" }, - { "name": "Mid Cay", "shortCode": "11" }, - { "name": "North Cay", "shortCode": "12" }, - { "name": "Prickly Pear Cays", "shortCode": "13" }, - { "name": "Rabbit Island", "shortCode": "14" }, - { "name": "Sandy Island/Sand Island", "shortCode": "15" }, - { "name": "Scilly Cay", "shortCode": "16" }, - { "name": "Scrub Island", "shortCode": "17" }, - { "name": "Seal Island", "shortCode": "18" }, - { "name": "Sombrero/Hat Island", "shortCode": "19" }, - { "name": "South Cay", "shortCode": "20" }, - { "name": "South Wager Island", "shortCode": "21" }, - { "name": "West Cay", "shortCode": "22" } - ] + { + "name": "Anguilla", + "shortCode": "01" + }, + { + "name": "Anguillita Island", + "shortCode": "02" + }, + { + "name": "Blowing Rock", + "shortCode": "03" + }, + { + "name": "Cove Cay", + "shortCode": "04" + }, + { + "name": "Crocus Cay", + "shortCode": "05" + }, + { + "name": "Deadman's Cay", + "shortCode": "06" + }, + { + "name": "Dog Island", + "shortCode": "07" + }, + { + "name": "East Cay", + "shortCode": "08" + }, + { + "name": "Little Island", + "shortCode": "09" + }, + { + "name": "Little Scrub Island", + "shortCode": "10" + }, + { + "name": "Mid Cay", + "shortCode": "11" + }, + { + "name": "North Cay", + "shortCode": "12" + }, + { + "name": "Prickly Pear Cays", + "shortCode": "13" + }, + { + "name": "Rabbit Island", + "shortCode": "14" + }, + { + "name": "Sandy Island/Sand Island", + "shortCode": "15" + }, + { + "name": "Scilly Cay", + "shortCode": "16" + }, + { + "name": "Scrub Island", + "shortCode": "17" + }, + { + "name": "Seal Island", + "shortCode": "18" + }, + { + "name": "Sombrero/Hat Island", + "shortCode": "19" + }, + { + "name": "South Cay", + "shortCode": "20" + }, + { + "name": "South Wager Island", + "shortCode": "21" + }, + { + "name": "West Cay", + "shortCode": "22" + } + ], + "capital": "The Valley", + "population": 19079, + "area": 91, + "continent": "North America", + "officialName": "Anguilla", + "nativeName": "Anguilla", + "demonym": "Anguillan", + "languages": [ + "English" + ], + "tld": [ + ".ai" + ], + "unMember": false, + "independent": false }, { "countryName": "Antarctica", @@ -393,7 +1043,20 @@ "tzName": "Vostok Station Time" } ], - "regions": [{ "name": "Antarctica", "shortCode": "AQ" }] + "regions": [ + { + "name": "Antarctica", + "shortCode": "AQ" + } + ], + "area": 14000000, + "continent": "Antarctica", + "demonym": "Antarctican", + "tld": [ + ".aq" + ], + "unMember": false, + "independent": false }, { "countryName": "Antigua and Barbuda", @@ -412,39 +1075,153 @@ } ], "regions": [ - { "name": "Antigua Island", "shortCode": "01" }, - { "name": "Barbuda Island", "shortCode": "02" }, - { "name": "Bird Island", "shortCode": "04" }, - { "name": "Bishop Island", "shortCode": "05" }, - { "name": "Blake Island", "shortCode": "06" }, - { "name": "Crump Island", "shortCode": "09" }, - { "name": "Dulcina Island", "shortCode": "10" }, - { "name": "Exchange Island", "shortCode": "11" }, - { "name": "Five Islands", "shortCode": "12" }, - { "name": "Great Bird Island", "shortCode": "13" }, - { "name": "Green Island", "shortCode": "14" }, - { "name": "Guiana Island", "shortCode": "15" }, - { "name": "Hawes Island", "shortCode": "17" }, - { "name": "Hells Gate Island", "shortCode": "16" }, - { "name": "Henry Island", "shortCode": "18" }, - { "name": "Johnson Island", "shortCode": "19" }, - { "name": "Kid Island", "shortCode": "20" }, - { "name": "Lobster Island", "shortCode": "22" }, - { "name": "Maiden Island", "shortCode": "24" }, - { "name": "Moor Island", "shortCode": "25" }, - { "name": "Nanny Island", "shortCode": "26" }, - { "name": "Pelican Island", "shortCode": "27" }, - { "name": "Prickly Pear Island", "shortCode": "28" }, - { "name": "Rabbit Island", "shortCode": "29" }, - { "name": "Red Head Island", "shortCode": "31" }, - { "name": "Redonda Island", "shortCode": "03" }, - { "name": "Sandy Island", "shortCode": "32" }, - { "name": "Smith Island", "shortCode": "33" }, - { "name": "The Sisters", "shortCode": "34" }, - { "name": "Vernon Island", "shortCode": "35" }, - { "name": "Wicked Will Island", "shortCode": "36" }, - { "name": "York Island", "shortCode": "37" } - ] + { + "name": "Antigua Island", + "shortCode": "01" + }, + { + "name": "Barbuda Island", + "shortCode": "02" + }, + { + "name": "Bird Island", + "shortCode": "04" + }, + { + "name": "Bishop Island", + "shortCode": "05" + }, + { + "name": "Blake Island", + "shortCode": "06" + }, + { + "name": "Crump Island", + "shortCode": "09" + }, + { + "name": "Dulcina Island", + "shortCode": "10" + }, + { + "name": "Exchange Island", + "shortCode": "11" + }, + { + "name": "Five Islands", + "shortCode": "12" + }, + { + "name": "Great Bird Island", + "shortCode": "13" + }, + { + "name": "Green Island", + "shortCode": "14" + }, + { + "name": "Guiana Island", + "shortCode": "15" + }, + { + "name": "Hawes Island", + "shortCode": "17" + }, + { + "name": "Hells Gate Island", + "shortCode": "16" + }, + { + "name": "Henry Island", + "shortCode": "18" + }, + { + "name": "Johnson Island", + "shortCode": "19" + }, + { + "name": "Kid Island", + "shortCode": "20" + }, + { + "name": "Lobster Island", + "shortCode": "22" + }, + { + "name": "Maiden Island", + "shortCode": "24" + }, + { + "name": "Moor Island", + "shortCode": "25" + }, + { + "name": "Nanny Island", + "shortCode": "26" + }, + { + "name": "Pelican Island", + "shortCode": "27" + }, + { + "name": "Prickly Pear Island", + "shortCode": "28" + }, + { + "name": "Rabbit Island", + "shortCode": "29" + }, + { + "name": "Red Head Island", + "shortCode": "31" + }, + { + "name": "Redonda Island", + "shortCode": "03" + }, + { + "name": "Sandy Island", + "shortCode": "32" + }, + { + "name": "Smith Island", + "shortCode": "33" + }, + { + "name": "The Sisters", + "shortCode": "34" + }, + { + "name": "Vernon Island", + "shortCode": "35" + }, + { + "name": "Wicked Will Island", + "shortCode": "36" + }, + { + "name": "York Island", + "shortCode": "37" + } + ], + "capital": "St. John's", + "population": 101489, + "area": 440.29, + "continent": "North America", + "officialName": "Antigua and Barbuda", + "nativeName": "Antigua and Barbuda", + "demonym": "Barbudan", + "languages": [ + "English" + ], + "tld": [ + ".ag" + ], + "borders": [ + "GB" + ], + "unMember": true, + "independent": true }, { "countryName": "Argentina", @@ -540,31 +1317,125 @@ } ], "regions": [ - { "name": "Buenos Aires", "shortCode": "B" }, - { "name": "Capital Federal", "shortCode": "C" }, - { "name": "Catamarca", "shortCode": "K" }, - { "name": "Chaco", "shortCode": "H" }, - { "name": "Chubut", "shortCode": "U" }, - { "name": "Córdoba", "shortCode": "X" }, - { "name": "Corrientes", "shortCode": "W" }, - { "name": "Entre Ríos", "shortCode": "E" }, - { "name": "Formosa", "shortCode": "P" }, - { "name": "Jujuy", "shortCode": "Y" }, - { "name": "La Pampa", "shortCode": "L" }, - { "name": "La Rioja", "shortCode": "F" }, - { "name": "Mendoza", "shortCode": "M" }, - { "name": "Misiones", "shortCode": "N" }, - { "name": "Neuquén", "shortCode": "Q" }, - { "name": "Río Negro", "shortCode": "R" }, - { "name": "Salta", "shortCode": "A" }, - { "name": "San Juan", "shortCode": "J" }, - { "name": "San Luis", "shortCode": "D" }, - { "name": "Santa Cruz", "shortCode": "Z" }, - { "name": "Santa Fe", "shortCode": "S" }, - { "name": "Santiago del Estero", "shortCode": "G" }, - { "name": "Tierra del Fuego", "shortCode": "V" }, - { "name": "Tucumán", "shortCode": "T" } - ] + { + "name": "Buenos Aires", + "shortCode": "B" + }, + { + "name": "Capital Federal", + "shortCode": "C" + }, + { + "name": "Catamarca", + "shortCode": "K" + }, + { + "name": "Chaco", + "shortCode": "H" + }, + { + "name": "Chubut", + "shortCode": "U" + }, + { + "name": "Córdoba", + "shortCode": "X" + }, + { + "name": "Corrientes", + "shortCode": "W" + }, + { + "name": "Entre Ríos", + "shortCode": "E" + }, + { + "name": "Formosa", + "shortCode": "P" + }, + { + "name": "Jujuy", + "shortCode": "Y" + }, + { + "name": "La Pampa", + "shortCode": "L" + }, + { + "name": "La Rioja", + "shortCode": "F" + }, + { + "name": "Mendoza", + "shortCode": "M" + }, + { + "name": "Misiones", + "shortCode": "N" + }, + { + "name": "Neuquén", + "shortCode": "Q" + }, + { + "name": "Río Negro", + "shortCode": "R" + }, + { + "name": "Salta", + "shortCode": "A" + }, + { + "name": "San Juan", + "shortCode": "J" + }, + { + "name": "San Luis", + "shortCode": "D" + }, + { + "name": "Santa Cruz", + "shortCode": "Z" + }, + { + "name": "Santa Fe", + "shortCode": "S" + }, + { + "name": "Santiago del Estero", + "shortCode": "G" + }, + { + "name": "Tierra del Fuego", + "shortCode": "V" + }, + { + "name": "Tucumán", + "shortCode": "T" + } + ], + "capital": "Buenos Aires", + "population": 47327407, + "area": 2780400, + "continent": "South America", + "nativeName": "República Argentina", + "demonym": "Argentinian", + "languages": [ + "Spanish" + ], + "tld": [ + ".ar" + ], + "borders": [ + "UY", + "GB", + "BR", + "CL", + "PY", + "BO" + ], + "unMember": true, + "independent": true }, { "countryName": "Armenia", @@ -583,40 +1454,114 @@ } ], "regions": [ - { "name": "Aragatsotn", "shortCode": "AG" }, - { "name": "Ararat", "shortCode": "AR" }, - { "name": "Armavir", "shortCode": "AV" }, - { "name": "Gegharkunik", "shortCode": "GR" }, - { "name": "Kotayk", "shortCode": "KT" }, - { "name": "Lori", "shortCode": "LO" }, - { "name": "Shirak", "shortCode": "SH" }, - { "name": "Syunik", "shortCode": "SU" }, - { "name": "Tavush", "shortCode": "TV" }, - { "name": "Vayots Dzor", "shortCode": "VD" }, - { "name": "Yerevan", "shortCode": "ER" } - ] - }, - { - "countryName": "Aruba", - "countryShortCode": "AW", - "phoneCode": "+297", - "currencyCode": "AWG", - "latitude": "12.50000000", - "longitude": "-69.96666666", - "timezones": [ { - "zoneName": "America/Aruba", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" - } - ], - "regions": [{ "name": "Aruba", "shortCode": "AW" }] - }, - { - "countryName": "Australia", - "countryShortCode": "AU", + "name": "Aragatsotn", + "shortCode": "AG" + }, + { + "name": "Ararat", + "shortCode": "AR" + }, + { + "name": "Armavir", + "shortCode": "AV" + }, + { + "name": "Gegharkunik", + "shortCode": "GR" + }, + { + "name": "Kotayk", + "shortCode": "KT" + }, + { + "name": "Lori", + "shortCode": "LO" + }, + { + "name": "Shirak", + "shortCode": "SH" + }, + { + "name": "Syunik", + "shortCode": "SU" + }, + { + "name": "Tavush", + "shortCode": "TV" + }, + { + "name": "Vayots Dzor", + "shortCode": "VD" + }, + { + "name": "Yerevan", + "shortCode": "ER" + } + ], + "capital": "Yerevan", + "population": 2930450, + "area": 29743.423459, + "continent": "Asia", + "officialName": "Republic of Armenia", + "nativeName": "Հայաստան", + "demonym": "Armenian", + "languages": [ + "Armenian" + ], + "tld": [ + ".հայ", + ".am" + ], + "borders": [ + "TR", + "AZ", + "GE", + "IR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Aruba", + "countryShortCode": "AW", + "phoneCode": "+297", + "currencyCode": "AWG", + "latitude": "12.50000000", + "longitude": "-69.96666666", + "timezones": [ + { + "zoneName": "America/Aruba", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Aruba", + "shortCode": "AW" + } + ], + "capital": "Oranjestad", + "population": 106739, + "area": 178.916378, + "continent": "North America", + "demonym": "Aruban", + "languages": [ + "Dutch", + "Papiamento" + ], + "tld": [ + ".aw" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Australia", + "countryShortCode": "AU", "phoneCode": "+61", "currencyCode": "AUD", "latitude": "-27.00000000", @@ -715,15 +1660,63 @@ } ], "regions": [ - { "name": "Australian Capital Territory", "shortCode": "ACT" }, - { "name": "New South Wales", "shortCode": "NSW" }, - { "name": "Northern Territory", "shortCode": "NT" }, - { "name": "Queensland", "shortCode": "QLD" }, - { "name": "South Australia", "shortCode": "SA" }, - { "name": "Tasmania", "shortCode": "TAS" }, - { "name": "Victoria", "shortCode": "VIC" }, - { "name": "Western Australia", "shortCode": "WA" } - ] + { + "name": "Australian Capital Territory", + "shortCode": "ACT" + }, + { + "name": "New South Wales", + "shortCode": "NSW" + }, + { + "name": "Northern Territory", + "shortCode": "NT" + }, + { + "name": "Queensland", + "shortCode": "QLD" + }, + { + "name": "South Australia", + "shortCode": "SA" + }, + { + "name": "Tasmania", + "shortCode": "TAS" + }, + { + "name": "Victoria", + "shortCode": "VIC" + }, + { + "name": "Western Australia", + "shortCode": "WA" + } + ], + "capital": "Canberra", + "population": 27614411, + "area": 7692024, + "continent": "Oceania", + "nativeName": "Australia", + "demonym": "Australians", + "languages": [ + "Auslan", + "Australian English" + ], + "tld": [ + ".au" + ], + "borders": [ + "ID", + "TL", + "NZ", + "SB", + "VU", + "PG", + "NC" + ], + "unMember": true, + "independent": true }, { "countryName": "Austria", @@ -742,16 +1735,68 @@ } ], "regions": [ - { "name": "Burgenland", "shortCode": "1" }, - { "name": "Kärnten", "shortCode": "2" }, - { "name": "Niederösterreich", "shortCode": "3" }, - { "name": "Oberösterreich", "shortCode": "4" }, - { "name": "Salzburg", "shortCode": "5" }, - { "name": "Steiermark", "shortCode": "6" }, - { "name": "Tirol", "shortCode": "7" }, - { "name": "Vorarlberg", "shortCode": "8" }, - { "name": "Wien", "shortCode": "9" } - ] + { + "name": "Burgenland", + "shortCode": "1" + }, + { + "name": "Kärnten", + "shortCode": "2" + }, + { + "name": "Niederösterreich", + "shortCode": "3" + }, + { + "name": "Oberösterreich", + "shortCode": "4" + }, + { + "name": "Salzburg", + "shortCode": "5" + }, + { + "name": "Steiermark", + "shortCode": "6" + }, + { + "name": "Tirol", + "shortCode": "7" + }, + { + "name": "Vorarlberg", + "shortCode": "8" + }, + { + "name": "Wien", + "shortCode": "9" + } + ], + "capital": "Vienna", + "population": 8979894, + "area": 83878.99, + "continent": "Europe", + "nativeName": "Österreich", + "demonym": "Austrian", + "languages": [ + "German", + "Austrian Sign Language" + ], + "tld": [ + ".at" + ], + "borders": [ + "HU", + "IT", + "CH", + "DE", + "CZ", + "SK", + "SI", + "LI" + ], + "unMember": true, + "independent": true }, { "countryName": "Azerbaijan", @@ -770,74 +1815,297 @@ } ], "regions": [ - { "name": "Abşeron", "shortCode": "ABS" }, - { "name": "Ağcabədi", "shortCode": "AGC" }, - { "name": "Ağdam", "shortCode": "AGM" }, - { "name": "Ağdaş", "shortCode": "AGS" }, - { "name": "Ağstafa", "shortCode": "AGA" }, - { "name": "Ağsu", "shortCode": "AGU" }, - { "name": "Astara", "shortCode": "AST" }, - { "name": "Bakı", "shortCode": "BAK" }, - { "name": "Babək", "shortCode": "BAB" }, - { "name": "Balakən", "shortCode": "BAL" }, - { "name": "Bərdə", "shortCode": "BAR" }, - { "name": "Beyləqan", "shortCode": "BEY" }, - { "name": "Biləsuvar", "shortCode": "BIL" }, - { "name": "Cəbrayıl", "shortCode": "CAB" }, - { "name": "Cəlilabad", "shortCode": "CAL" }, - { "name": "Culfa", "shortCode": "CUL" }, - { "name": "Daşkəsən", "shortCode": "DAS" }, - { "name": "Füzuli", "shortCode": "FUZ" }, - { "name": "Gədəbəy", "shortCode": "GAD" }, - { "name": "Goranboy", "shortCode": "GOR" }, - { "name": "Göyçay", "shortCode": "GOY" }, - { "name": "Göygöl", "shortCode": "GYG" }, - { "name": "Hacıqabul", "shortCode": "HAC" }, - { "name": "İmişli", "shortCode": "IMI" }, - { "name": "İsmayıllı", "shortCode": "ISM" }, - { "name": "Kəlbəcər", "shortCode": "KAL" }, - { "name": "Kǝngǝrli", "shortCode": "KAN" }, - { "name": "Kürdəmir", "shortCode": "KUR" }, - { "name": "Laçın", "shortCode": "LAC" }, - { "name": "Lənkəran", "shortCode": "LAN" }, - { "name": "Lerik", "shortCode": "LER" }, - { "name": "Masallı", "shortCode": "MAS" }, - { "name": "Neftçala", "shortCode": "NEF" }, - { "name": "Oğuz", "shortCode": "OGU" }, - { "name": "Ordubad", "shortCode": "ORD" }, - { "name": "Qəbələ", "shortCode": "QAB" }, - { "name": "Qax", "shortCode": "QAX" }, - { "name": "Qazax", "shortCode": "QAZ" }, - { "name": "Qobustan", "shortCode": "QOB" }, - { "name": "Quba", "shortCode": "QBA" }, - { "name": "Qubadli", "shortCode": "QBI" }, - { "name": "Qusar", "shortCode": "QUS" }, - { "name": "Saatlı", "shortCode": "SAT" }, - { "name": "Sabirabad", "shortCode": "SAB" }, - { "name": "Şabran", "shortCode": "SBN" }, - { "name": "Sədərək", "shortCode": "SAD" }, - { "name": "Şahbuz", "shortCode": "SAH" }, - { "name": "Şəki", "shortCode": "SAK" }, - { "name": "Salyan", "shortCode": "SAL" }, - { "name": "Şamaxı", "shortCode": "SMI" }, - { "name": "Şəmkir", "shortCode": "SKR" }, - { "name": "Samux", "shortCode": "SMX" }, - { "name": "Şərur", "shortCode": "SAR" }, - { "name": "Siyəzən", "shortCode": "SIY" }, - { "name": "Şuşa", "shortCode": "SUS" }, - { "name": "Tərtər", "shortCode": "TAR" }, - { "name": "Tovuz", "shortCode": "TOV" }, - { "name": "Ucar", "shortCode": "UCA" }, - { "name": "Xaçmaz", "shortCode": "XAC" }, - { "name": "Xızı", "shortCode": "XIZ" }, - { "name": "Xocalı", "shortCode": "XCI" }, - { "name": "Xocavənd", "shortCode": "XVD" }, - { "name": "Yardımlı", "shortCode": "YAR" }, - { "name": "Yevlax", "shortCode": "YEV" }, - { "name": "Zəngilan", "shortCode": "ZAN" }, - { "name": "Zaqatala", "shortCode": "ZAQ" }, - { "name": "Zərdab", "shortCode": "ZAR" } - ] + { + "name": "Abşeron", + "shortCode": "ABS" + }, + { + "name": "Ağcabədi", + "shortCode": "AGC" + }, + { + "name": "Ağdam", + "shortCode": "AGM" + }, + { + "name": "Ağdaş", + "shortCode": "AGS" + }, + { + "name": "Ağstafa", + "shortCode": "AGA" + }, + { + "name": "Ağsu", + "shortCode": "AGU" + }, + { + "name": "Astara", + "shortCode": "AST" + }, + { + "name": "Bakı", + "shortCode": "BAK" + }, + { + "name": "Babək", + "shortCode": "BAB" + }, + { + "name": "Balakən", + "shortCode": "BAL" + }, + { + "name": "Bərdə", + "shortCode": "BAR" + }, + { + "name": "Beyləqan", + "shortCode": "BEY" + }, + { + "name": "Biləsuvar", + "shortCode": "BIL" + }, + { + "name": "Cəbrayıl", + "shortCode": "CAB" + }, + { + "name": "Cəlilabad", + "shortCode": "CAL" + }, + { + "name": "Culfa", + "shortCode": "CUL" + }, + { + "name": "Daşkəsən", + "shortCode": "DAS" + }, + { + "name": "Füzuli", + "shortCode": "FUZ" + }, + { + "name": "Gədəbəy", + "shortCode": "GAD" + }, + { + "name": "Goranboy", + "shortCode": "GOR" + }, + { + "name": "Göyçay", + "shortCode": "GOY" + }, + { + "name": "Göygöl", + "shortCode": "GYG" + }, + { + "name": "Hacıqabul", + "shortCode": "HAC" + }, + { + "name": "İmişli", + "shortCode": "IMI" + }, + { + "name": "İsmayıllı", + "shortCode": "ISM" + }, + { + "name": "Kəlbəcər", + "shortCode": "KAL" + }, + { + "name": "Kǝngǝrli", + "shortCode": "KAN" + }, + { + "name": "Kürdəmir", + "shortCode": "KUR" + }, + { + "name": "Laçın", + "shortCode": "LAC" + }, + { + "name": "Lənkəran", + "shortCode": "LAN" + }, + { + "name": "Lerik", + "shortCode": "LER" + }, + { + "name": "Masallı", + "shortCode": "MAS" + }, + { + "name": "Neftçala", + "shortCode": "NEF" + }, + { + "name": "Oğuz", + "shortCode": "OGU" + }, + { + "name": "Ordubad", + "shortCode": "ORD" + }, + { + "name": "Qəbələ", + "shortCode": "QAB" + }, + { + "name": "Qax", + "shortCode": "QAX" + }, + { + "name": "Qazax", + "shortCode": "QAZ" + }, + { + "name": "Qobustan", + "shortCode": "QOB" + }, + { + "name": "Quba", + "shortCode": "QBA" + }, + { + "name": "Qubadli", + "shortCode": "QBI" + }, + { + "name": "Qusar", + "shortCode": "QUS" + }, + { + "name": "Saatlı", + "shortCode": "SAT" + }, + { + "name": "Sabirabad", + "shortCode": "SAB" + }, + { + "name": "Şabran", + "shortCode": "SBN" + }, + { + "name": "Sədərək", + "shortCode": "SAD" + }, + { + "name": "Şahbuz", + "shortCode": "SAH" + }, + { + "name": "Şəki", + "shortCode": "SAK" + }, + { + "name": "Salyan", + "shortCode": "SAL" + }, + { + "name": "Şamaxı", + "shortCode": "SMI" + }, + { + "name": "Şəmkir", + "shortCode": "SKR" + }, + { + "name": "Samux", + "shortCode": "SMX" + }, + { + "name": "Şərur", + "shortCode": "SAR" + }, + { + "name": "Siyəzən", + "shortCode": "SIY" + }, + { + "name": "Şuşa", + "shortCode": "SUS" + }, + { + "name": "Tərtər", + "shortCode": "TAR" + }, + { + "name": "Tovuz", + "shortCode": "TOV" + }, + { + "name": "Ucar", + "shortCode": "UCA" + }, + { + "name": "Xaçmaz", + "shortCode": "XAC" + }, + { + "name": "Xızı", + "shortCode": "XIZ" + }, + { + "name": "Xocalı", + "shortCode": "XCI" + }, + { + "name": "Xocavənd", + "shortCode": "XVD" + }, + { + "name": "Yardımlı", + "shortCode": "YAR" + }, + { + "name": "Yevlax", + "shortCode": "YEV" + }, + { + "name": "Zəngilan", + "shortCode": "ZAN" + }, + { + "name": "Zaqatala", + "shortCode": "ZAQ" + }, + { + "name": "Zərdab", + "shortCode": "ZAR" + } + ], + "capital": "Baku", + "population": 10180770, + "area": 86600, + "continent": "Asia", + "nativeName": "Azərbaycan", + "demonym": "Azeri", + "languages": [ + "Azerbaijani Sign Language", + "Azerbaijani" + ], + "tld": [ + ".az" + ], + "borders": [ + "TR", + "RU", + "GE", + "AM", + "IR" + ], + "unMember": true, + "independent": true }, { "countryName": "Bahamas", @@ -856,72 +2124,227 @@ } ], "regions": [ - { "name": "Acklins Island", "shortCode": "01" }, - { "name": "Berry Islands", "shortCode": "22" }, - { "name": "Bimini", "shortCode": "02" }, - { "name": "Black Point", "shortCode": "23" }, - { "name": "Cat Island", "shortCode": "03" }, - { "name": "Central Abaco", "shortCode": "24" }, - { "name": "Crooked Island and Long Cay", "shortCode": "28" }, - { "name": "East Grand Bahama", "shortCode": "29" }, - { "name": "Exuma", "shortCode": "04" }, - { "name": "Freeport", "shortCode": "05" }, - { "name": "Fresh Creek", "shortCode": "06" }, - { "name": "Governor's Harbour", "shortCode": "07" }, - { "name": "Green Turtle Cay", "shortCode": "08" }, - { "name": "Harbour Island", "shortCode": "09" }, - { "name": "High Rock", "shortCode": "10" }, - { "name": "Inagua", "shortCode": "11" }, - { "name": "Kemps Bay", "shortCode": "12" }, - { "name": "Long Island", "shortCode": "13" }, - { "name": "Marsh Harbour", "shortCode": "14" }, - { "name": "Mayaguana", "shortCode": "15" }, - { "name": "Moore’s Island", "shortCode": "40" }, - { "name": "New Providence", "shortCode": "16" }, - { "name": "Nichollstown and Berry Islands", "shortCode": "17" }, - { "name": "North Abaco", "shortCode": "42" }, - { "name": "North Andros", "shortCode": "41" }, - { "name": "North Eleuthera", "shortCode": "33" }, - { "name": "Ragged Island", "shortCode": "18" }, - { "name": "Rock Sound", "shortCode": "19" }, - { "name": "San Salvador and Rum Cay", "shortCode": "20" }, - { "name": "Sandy Point", "shortCode": "21" }, - { "name": "South Abaco", "shortCode": "35" }, - { "name": "South Andros", "shortCode": "36" }, - { "name": "South Eleuthera", "shortCode": "37" }, - { "name": "West Grand Bahama", "shortCode": "39" } - ] - }, - { - "countryName": "Bahrain", - "countryShortCode": "BH", - "phoneCode": "+973", - "currencyCode": "BHD", - "latitude": "26.00000000", - "longitude": "50.55000000", - "timezones": [ { - "zoneName": "Asia/Bahrain", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "AST", - "tzName": "Arabia Standard Time" - } - ], - "regions": [ - { "name": "Al Janūbīyah", "shortCode": "14" }, - { "name": "Al Manāmah", "shortCode": "13" }, - { "name": "Al Muḩarraq", "shortCode": "15" }, - { "name": "Al Wusţá", "shortCode": "16" }, - { "name": "Ash Shamālīyah", "shortCode": "17" } - ] - }, - { - "countryName": "Bangladesh", - "countryShortCode": "BD", - "phoneCode": "+880", - "currencyCode": "BDT", - "latitude": "24.00000000", + "name": "Acklins Island", + "shortCode": "01" + }, + { + "name": "Berry Islands", + "shortCode": "22" + }, + { + "name": "Bimini", + "shortCode": "02" + }, + { + "name": "Black Point", + "shortCode": "23" + }, + { + "name": "Cat Island", + "shortCode": "03" + }, + { + "name": "Central Abaco", + "shortCode": "24" + }, + { + "name": "Crooked Island and Long Cay", + "shortCode": "28" + }, + { + "name": "East Grand Bahama", + "shortCode": "29" + }, + { + "name": "Exuma", + "shortCode": "04" + }, + { + "name": "Freeport", + "shortCode": "05" + }, + { + "name": "Fresh Creek", + "shortCode": "06" + }, + { + "name": "Governor's Harbour", + "shortCode": "07" + }, + { + "name": "Green Turtle Cay", + "shortCode": "08" + }, + { + "name": "Harbour Island", + "shortCode": "09" + }, + { + "name": "High Rock", + "shortCode": "10" + }, + { + "name": "Inagua", + "shortCode": "11" + }, + { + "name": "Kemps Bay", + "shortCode": "12" + }, + { + "name": "Long Island", + "shortCode": "13" + }, + { + "name": "Marsh Harbour", + "shortCode": "14" + }, + { + "name": "Mayaguana", + "shortCode": "15" + }, + { + "name": "Moore’s Island", + "shortCode": "40" + }, + { + "name": "New Providence", + "shortCode": "16" + }, + { + "name": "Nichollstown and Berry Islands", + "shortCode": "17" + }, + { + "name": "North Abaco", + "shortCode": "42" + }, + { + "name": "North Andros", + "shortCode": "41" + }, + { + "name": "North Eleuthera", + "shortCode": "33" + }, + { + "name": "Ragged Island", + "shortCode": "18" + }, + { + "name": "Rock Sound", + "shortCode": "19" + }, + { + "name": "San Salvador and Rum Cay", + "shortCode": "20" + }, + { + "name": "Sandy Point", + "shortCode": "21" + }, + { + "name": "South Abaco", + "shortCode": "35" + }, + { + "name": "South Andros", + "shortCode": "36" + }, + { + "name": "South Eleuthera", + "shortCode": "37" + }, + { + "name": "West Grand Bahama", + "shortCode": "39" + } + ], + "capital": "Nassau", + "population": 399440, + "area": 13878, + "continent": "North America", + "officialName": "Commonwealth of the Bahamas", + "nativeName": "Commonwealth of the Bahamas", + "demonym": "Bahamian", + "languages": [ + "English" + ], + "tld": [ + ".bs" + ], + "borders": [ + "US", + "GB", + "TC" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Bahrain", + "countryShortCode": "BH", + "phoneCode": "+973", + "currencyCode": "BHD", + "latitude": "26.00000000", + "longitude": "50.55000000", + "timezones": [ + { + "zoneName": "Asia/Bahrain", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "AST", + "tzName": "Arabia Standard Time" + } + ], + "regions": [ + { + "name": "Al Janūbīyah", + "shortCode": "14" + }, + { + "name": "Al Manāmah", + "shortCode": "13" + }, + { + "name": "Al Muḩarraq", + "shortCode": "15" + }, + { + "name": "Al Wusţá", + "shortCode": "16" + }, + { + "name": "Ash Shamālīyah", + "shortCode": "17" + } + ], + "capital": "Manama", + "population": 1569666, + "area": 786.5, + "continent": "Asia", + "officialName": "Kingdom of Bahrain", + "demonym": "Bahraini", + "languages": [ + "Arabic" + ], + "tld": [ + ".bh" + ], + "borders": [ + "IR", + "SA" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Bangladesh", + "countryShortCode": "BD", + "phoneCode": "+880", + "currencyCode": "BDT", + "latitude": "24.00000000", "longitude": "90.00000000", "timezones": [ { @@ -933,15 +2356,58 @@ } ], "regions": [ - { "name": "Barisal", "shortCode": "A" }, - { "name": "Chittagong", "shortCode": "B" }, - { "name": "Dhaka", "shortCode": "C" }, - { "name": "Khulna", "shortCode": "D" }, - { "name": "Mymensingh", "shortCode": "M" }, - { "name": "Rajshahi", "shortCode": "E" }, - { "name": "Rangpur", "shortCode": "F" }, - { "name": "Sylhet", "shortCode": "G" } - ] + { + "name": "Barisal", + "shortCode": "A" + }, + { + "name": "Chittagong", + "shortCode": "B" + }, + { + "name": "Dhaka", + "shortCode": "C" + }, + { + "name": "Khulna", + "shortCode": "D" + }, + { + "name": "Mymensingh", + "shortCode": "M" + }, + { + "name": "Rajshahi", + "shortCode": "E" + }, + { + "name": "Rangpur", + "shortCode": "F" + }, + { + "name": "Sylhet", + "shortCode": "G" + } + ], + "capital": "Dhaka", + "population": 171466990, + "area": 147570, + "continent": "Asia", + "nativeName": "বাংলাদেশ", + "demonym": "Bangladeshi", + "languages": [ + "Bangla" + ], + "tld": [ + ".বাংলা", + ".bd" + ], + "borders": [ + "IN", + "MM" + ], + "unMember": true, + "independent": true }, { "countryName": "Barbados", @@ -960,18 +2426,67 @@ } ], "regions": [ - { "name": "Christ Church", "shortCode": "01" }, - { "name": "Saint Andrew", "shortCode": "02" }, - { "name": "Saint George", "shortCode": "03" }, - { "name": "Saint James", "shortCode": "04" }, - { "name": "Saint John", "shortCode": "05" }, - { "name": "Saint Joseph", "shortCode": "06" }, - { "name": "Saint Lucy", "shortCode": "07" }, - { "name": "Saint Michael", "shortCode": "08" }, - { "name": "Saint Peter", "shortCode": "09" }, - { "name": "Saint Philip", "shortCode": "10" }, - { "name": "Saint Thomas", "shortCode": "11" } - ] + { + "name": "Christ Church", + "shortCode": "01" + }, + { + "name": "Saint Andrew", + "shortCode": "02" + }, + { + "name": "Saint George", + "shortCode": "03" + }, + { + "name": "Saint James", + "shortCode": "04" + }, + { + "name": "Saint John", + "shortCode": "05" + }, + { + "name": "Saint Joseph", + "shortCode": "06" + }, + { + "name": "Saint Lucy", + "shortCode": "07" + }, + { + "name": "Saint Michael", + "shortCode": "08" + }, + { + "name": "Saint Peter", + "shortCode": "09" + }, + { + "name": "Saint Philip", + "shortCode": "10" + }, + { + "name": "Saint Thomas", + "shortCode": "11" + } + ], + "capital": "Bridgetown", + "population": 303431, + "area": 439, + "continent": "North America", + "officialName": "Barbados", + "nativeName": "Barbados", + "demonym": "Barbadian", + "languages": [ + "English", + "Bajan Creole" + ], + "tld": [ + ".bb" + ], + "unMember": true, + "independent": true }, { "countryName": "Belarus", @@ -990,14 +2505,58 @@ } ], "regions": [ - { "name": "Brest voblast", "shortCode": "BR" }, - { "name": "Gorod Minsk", "shortCode": "HM" }, - { "name": "Homiel voblast", "shortCode": "HO" }, - { "name": "Hrodna voblast", "shortCode": "HR" }, - { "name": "Mahilyow voblast", "shortCode": "MA" }, - { "name": "Minsk voblast", "shortCode": "MI" }, - { "name": "Vitsebsk voblast", "shortCode": "VI" } - ] + { + "name": "Brest voblast", + "shortCode": "BR" + }, + { + "name": "Gorod Minsk", + "shortCode": "HM" + }, + { + "name": "Homiel voblast", + "shortCode": "HO" + }, + { + "name": "Hrodna voblast", + "shortCode": "HR" + }, + { + "name": "Mahilyow voblast", + "shortCode": "MA" + }, + { + "name": "Minsk voblast", + "shortCode": "MI" + }, + { + "name": "Vitsebsk voblast", + "shortCode": "VI" + } + ], + "capital": "Minsk", + "population": 9056080, + "area": 207596.76, + "continent": "Europe", + "nativeName": "Беларусь", + "demonym": "Belarusian", + "languages": [ + "Russian", + "Belarusian" + ], + "tld": [ + ".бел", + ".by" + ], + "borders": [ + "PL", + "LT", + "RU", + "LV", + "UA" + ], + "unMember": true, + "independent": true }, { "countryName": "Belgium", @@ -1016,10 +2575,40 @@ } ], "regions": [ - { "name": "Brussels", "shortCode": "BRU" }, - { "name": "Flanders", "shortCode": "VLG" }, - { "name": "Wallonia", "shortCode": "WAL" } - ] + { + "name": "Brussels", + "shortCode": "BRU" + }, + { + "name": "Flanders", + "shortCode": "VLG" + }, + { + "name": "Wallonia", + "shortCode": "WAL" + } + ], + "capital": "Brussels", + "population": 11825551, + "area": 30688, + "continent": "Europe", + "nativeName": "Königreich Belgien", + "demonym": "Belgian", + "languages": [ + "French", + "German", + "Dutch" + ], + "tld": [ + ".be" + ], + "borders": [ + "LU", + "FR", + "DE" + ], + "unMember": true, + "independent": true }, { "countryName": "Belize", @@ -1038,13 +2627,50 @@ } ], "regions": [ - { "name": "Belize District", "shortCode": "BZ" }, - { "name": "Cayo District", "shortCode": "CY" }, - { "name": "Corozal District", "shortCode": "CZL" }, - { "name": "Orange Walk District", "shortCode": "OW" }, - { "name": "Stann Creek District", "shortCode": "SC" }, - { "name": "Toledo District", "shortCode": "TOL" } - ] + { + "name": "Belize District", + "shortCode": "BZ" + }, + { + "name": "Cayo District", + "shortCode": "CY" + }, + { + "name": "Corozal District", + "shortCode": "CZL" + }, + { + "name": "Orange Walk District", + "shortCode": "OW" + }, + { + "name": "Stann Creek District", + "shortCode": "SC" + }, + { + "name": "Toledo District", + "shortCode": "TOL" + } + ], + "capital": "Belmopan", + "population": 411106, + "area": 22966, + "continent": "North America", + "officialName": "Belize", + "nativeName": "Belize", + "demonym": "Belizean", + "languages": [ + "English" + ], + "tld": [ + ".bz" + ], + "borders": [ + "MX", + "GT" + ], + "unMember": true, + "independent": true }, { "countryName": "Benin", @@ -1063,19 +2689,75 @@ } ], "regions": [ - { "name": "Alibori", "shortCode": "AL" }, - { "name": "Atakora", "shortCode": "AK" }, - { "name": "Atlantique", "shortCode": "AQ" }, - { "name": "Borgou", "shortCode": "BO" }, - { "name": "Collines Department", "shortCode": "CO" }, - { "name": "Donga", "shortCode": "DO" }, - { "name": "Kouffo", "shortCode": "KO" }, - { "name": "Littoral Department", "shortCode": "LI" }, - { "name": "Mono Department", "shortCode": "MO" }, - { "name": "Ouémé", "shortCode": "OU" }, - { "name": "Plateau", "shortCode": "PL" }, - { "name": "Zou", "shortCode": "ZO" } - ] + { + "name": "Alibori", + "shortCode": "AL" + }, + { + "name": "Atakora", + "shortCode": "AK" + }, + { + "name": "Atlantique", + "shortCode": "AQ" + }, + { + "name": "Borgou", + "shortCode": "BO" + }, + { + "name": "Collines Department", + "shortCode": "CO" + }, + { + "name": "Donga", + "shortCode": "DO" + }, + { + "name": "Kouffo", + "shortCode": "KO" + }, + { + "name": "Littoral Department", + "shortCode": "LI" + }, + { + "name": "Mono Department", + "shortCode": "MO" + }, + { + "name": "Ouémé", + "shortCode": "OU" + }, + { + "name": "Plateau", + "shortCode": "PL" + }, + { + "name": "Zou", + "shortCode": "ZO" + } + ], + "capital": "Porto-Novo", + "population": 14111034, + "area": 114763, + "continent": "Africa", + "officialName": "Republic of Benin", + "demonym": "Beninese", + "languages": [ + "French" + ], + "tld": [ + ".bj" + ], + "borders": [ + "TG", + "BF", + "NE", + "NG" + ], + "unMember": true, + "independent": true }, { "countryName": "Bermuda", @@ -1094,18 +2776,66 @@ } ], "regions": [ - { "name": "City of Hamilton", "shortCode": "03" }, - { "name": "Devonshire Parish", "shortCode": "01" }, - { "name": "Hamilton Parish", "shortCode": "02" }, - { "name": "Paget Parish", "shortCode": "04" }, - { "name": "Pembroke Parish", "shortCode": "05" }, - { "name": "Sandys Parish", "shortCode": "08" }, - { "name": "Smith's Parish", "shortCode": "09" }, - { "name": "Southampton Parish", "shortCode": "10" }, - { "name": "St. George's Parish", "shortCode": "07" }, - { "name": "Town of St. George", "shortCode": "06" }, - { "name": "Warwick Parish", "shortCode": "11" } - ] + { + "name": "City of Hamilton", + "shortCode": "03" + }, + { + "name": "Devonshire Parish", + "shortCode": "01" + }, + { + "name": "Hamilton Parish", + "shortCode": "02" + }, + { + "name": "Paget Parish", + "shortCode": "04" + }, + { + "name": "Pembroke Parish", + "shortCode": "05" + }, + { + "name": "Sandys Parish", + "shortCode": "08" + }, + { + "name": "Smith's Parish", + "shortCode": "09" + }, + { + "name": "Southampton Parish", + "shortCode": "10" + }, + { + "name": "St. George's Parish", + "shortCode": "07" + }, + { + "name": "Town of St. George", + "shortCode": "06" + }, + { + "name": "Warwick Parish", + "shortCode": "11" + } + ], + "capital": "Hamilton", + "population": 65024, + "area": 53, + "continent": "North America", + "officialName": "Bermuda", + "nativeName": "Bermuda", + "demonym": "Bermudian", + "languages": [ + "English" + ], + "tld": [ + ".bm" + ], + "unMember": false, + "independent": false }, { "countryName": "Bhutan", @@ -1124,31 +2854,109 @@ } ], "regions": [ - { "name": "Bumthang", "shortCode": "33" }, - { "name": "Chhukha", "shortCode": "12" }, - { "name": "Dagana", "shortCode": "22" }, - { "name": "Gasa", "shortCode": "GA" }, - { "name": "Haa", "shortCode": "13" }, - { "name": "Lhuntse", "shortCode": "44" }, - { "name": "Mongar", "shortCode": "42" }, - { "name": "Paro", "shortCode": "11" }, - { "name": "Pemagatshel", "shortCode": "43" }, - { "name": "Punakha", "shortCode": "23" }, - { "name": "Samdrup Jongkhar", "shortCode": "45" }, - { "name": "Samtse", "shortCode": "14" }, - { "name": "Sarpang", "shortCode": "31" }, - { "name": "Thimphu", "shortCode": "15" }, - { "name": "Trashigang", "shortCode": "41" }, - { "name": "Trashiyangtse", "shortCode": "TY" }, - { "name": "Trongsa", "shortCode": "32" }, - { "name": "Tsirang", "shortCode": "21" }, - { "name": "Wangdue Phodrang", "shortCode": "24" }, - { "name": "Zhemgang", "shortCode": "34" } - ] - }, - { - "countryName": "Bolivia", - "countryShortCode": "BO", + { + "name": "Bumthang", + "shortCode": "33" + }, + { + "name": "Chhukha", + "shortCode": "12" + }, + { + "name": "Dagana", + "shortCode": "22" + }, + { + "name": "Gasa", + "shortCode": "GA" + }, + { + "name": "Haa", + "shortCode": "13" + }, + { + "name": "Lhuntse", + "shortCode": "44" + }, + { + "name": "Mongar", + "shortCode": "42" + }, + { + "name": "Paro", + "shortCode": "11" + }, + { + "name": "Pemagatshel", + "shortCode": "43" + }, + { + "name": "Punakha", + "shortCode": "23" + }, + { + "name": "Samdrup Jongkhar", + "shortCode": "45" + }, + { + "name": "Samtse", + "shortCode": "14" + }, + { + "name": "Sarpang", + "shortCode": "31" + }, + { + "name": "Thimphu", + "shortCode": "15" + }, + { + "name": "Trashigang", + "shortCode": "41" + }, + { + "name": "Trashiyangtse", + "shortCode": "TY" + }, + { + "name": "Trongsa", + "shortCode": "32" + }, + { + "name": "Tsirang", + "shortCode": "21" + }, + { + "name": "Wangdue Phodrang", + "shortCode": "24" + }, + { + "name": "Zhemgang", + "shortCode": "34" + } + ], + "capital": "Thimphu", + "population": 787424, + "area": 38394, + "continent": "Asia", + "officialName": "Kingdom of Bhutan", + "demonym": "Bhutanese", + "languages": [ + "Dzongkha" + ], + "tld": [ + ".bt" + ], + "borders": [ + "CN", + "IN" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Bolivia", + "countryShortCode": "BO", "phoneCode": "+591", "currencyCode": "BOB", "latitude": "-17.00000000", @@ -1163,16 +2971,68 @@ } ], "regions": [ - { "name": "Beni", "shortCode": "B" }, - { "name": "Chuquisaca", "shortCode": "H" }, - { "name": "Cochabamba", "shortCode": "C" }, - { "name": "La Paz", "shortCode": "L" }, - { "name": "Oruro", "shortCode": "O" }, - { "name": "Pando", "shortCode": "N" }, - { "name": "Potosí", "shortCode": "P" }, - { "name": "Santa Cruz", "shortCode": "S" }, - { "name": "Tarija", "shortCode": "T" } - ] + { + "name": "Beni", + "shortCode": "B" + }, + { + "name": "Chuquisaca", + "shortCode": "H" + }, + { + "name": "Cochabamba", + "shortCode": "C" + }, + { + "name": "La Paz", + "shortCode": "L" + }, + { + "name": "Oruro", + "shortCode": "O" + }, + { + "name": "Pando", + "shortCode": "N" + }, + { + "name": "Potosí", + "shortCode": "P" + }, + { + "name": "Santa Cruz", + "shortCode": "S" + }, + { + "name": "Tarija", + "shortCode": "T" + } + ], + "capital": "Sucre", + "population": 12244159, + "area": 1098581, + "continent": "South America", + "officialName": "Plurinational State of Bolivia", + "nativeName": "Wuliwya Suyu", + "demonym": "Bolivian", + "languages": [ + "Spanish", + "Quechua", + "Aymara", + "Guarani" + ], + "tld": [ + ".bo" + ], + "borders": [ + "BR", + "CL", + "AR", + "PE", + "PY" + ], + "unMember": true, + "independent": true }, { "countryName": "Bonaire, Sint Eustatius and Saba", @@ -1191,10 +3051,34 @@ } ], "regions": [ - { "name": "Bonaire", "shortCode": "BO" }, - { "name": "Saba Isand", "shortCode": "SA" }, - { "name": "Sint Eustatius", "shortCode": "SE" } - ] + { + "name": "Bonaire", + "shortCode": "BO" + }, + { + "name": "Saba Isand", + "shortCode": "SA" + }, + { + "name": "Sint Eustatius", + "shortCode": "SE" + } + ], + "population": 29418, + "area": 322, + "continent": "North America", + "nativeName": "Caribisch Nederland", + "languages": [ + "English", + "Dutch", + "Papiamento" + ], + "tld": [ + ".bq", + ".nl" + ], + "unMember": false, + "independent": false }, { "countryName": "Bosnia and Herzegovina", @@ -1213,10 +3097,41 @@ } ], "regions": [ - { "name": "Brčko Distrikt", "shortCode": "BRC" }, - { "name": "Federacija Bosne i Hercegovine", "shortCode": "BIH" }, - { "name": "Republika Srpska", "shortCode": "SRP" } - ] + { + "name": "Brčko Distrikt", + "shortCode": "BRC" + }, + { + "name": "Federacija Bosne i Hercegovine", + "shortCode": "BIH" + }, + { + "name": "Republika Srpska", + "shortCode": "SRP" + } + ], + "capital": "Sarajevo", + "population": 3816459, + "area": 51197, + "continent": "Europe", + "officialName": "Bosnia and Herzegovina", + "nativeName": "Bosna i Hercegovina", + "demonym": "Bosnian", + "languages": [ + "Croatian", + "Serbian", + "Bosnian" + ], + "tld": [ + ".ba" + ], + "borders": [ + "HR", + "ME", + "RS" + ], + "unMember": true, + "independent": true }, { "countryName": "Botswana", @@ -1235,16 +3150,64 @@ } ], "regions": [ - { "name": "Central", "shortCode": "CE" }, - { "name": "Ghanzi", "shortCode": "GH" }, - { "name": "Kgalagadi", "shortCode": "KG" }, - { "name": "Kgatleng", "shortCode": "KL" }, - { "name": "Kweneng", "shortCode": "KW" }, - { "name": "North West", "shortCode": "NW" }, - { "name": "North-East", "shortCode": "NE" }, - { "name": "South East", "shortCode": "SE" }, - { "name": "Southern", "shortCode": "SO" } - ] + { + "name": "Central", + "shortCode": "CE" + }, + { + "name": "Ghanzi", + "shortCode": "GH" + }, + { + "name": "Kgalagadi", + "shortCode": "KG" + }, + { + "name": "Kgatleng", + "shortCode": "KL" + }, + { + "name": "Kweneng", + "shortCode": "KW" + }, + { + "name": "North West", + "shortCode": "NW" + }, + { + "name": "North-East", + "shortCode": "NE" + }, + { + "name": "South East", + "shortCode": "SE" + }, + { + "name": "Southern", + "shortCode": "SO" + } + ], + "capital": "Gaborone", + "population": 2480244, + "area": 581737, + "continent": "Africa", + "officialName": "Republic of Botswana", + "nativeName": "Botswana", + "demonym": "Motswana", + "languages": [ + "English" + ], + "tld": [ + ".bw" + ], + "borders": [ + "ZA", + "ZM", + "ZW", + "NA" + ], + "unMember": true, + "independent": true }, { "countryName": "Bouvet Island", @@ -1262,7 +3225,20 @@ "tzName": "Central European Time" } ], - "regions": [{ "name": "Bouvet Island", "shortCode": "BV" }] + "regions": [ + { + "name": "Bouvet Island", + "shortCode": "BV" + } + ], + "area": 49, + "continent": "Antarctica", + "nativeName": "Bouvetøya", + "tld": [ + ".bv" + ], + "unMember": false, + "independent": false }, { "countryName": "Brazil", @@ -1386,34 +3362,142 @@ } ], "regions": [ - { "name": "Acre", "shortCode": "AC" }, - { "name": "Alagoas", "shortCode": "AL" }, - { "name": "Amapá", "shortCode": "AP" }, - { "name": "Amazonas", "shortCode": "AM" }, - { "name": "Bahia", "shortCode": "BA" }, - { "name": "Ceará", "shortCode": "CE" }, - { "name": "Distrito Federal", "shortCode": "DF" }, - { "name": "Espírito Santo", "shortCode": "ES" }, - { "name": "Goiás", "shortCode": "GO" }, - { "name": "Maranhão", "shortCode": "MA" }, - { "name": "Mato Grosso", "shortCode": "MT" }, - { "name": "Mato Grosso do Sul", "shortCode": "MS" }, - { "name": "Minas Gerais", "shortCode": "MG" }, - { "name": "Pará", "shortCode": "PA" }, - { "name": "Paraíba", "shortCode": "PB" }, - { "name": "Paraná", "shortCode": "PR" }, - { "name": "Pernambuco", "shortCode": "PE" }, - { "name": "Piauí", "shortCode": "PI" }, - { "name": "Rio de Janeiro", "shortCode": "RJ" }, - { "name": "Rio Grande do Norte", "shortCode": "RN" }, - { "name": "Rio Grande do Sul", "shortCode": "RS" }, - { "name": "Rondônia", "shortCode": "RO" }, - { "name": "Roraima", "shortCode": "RR" }, - { "name": "Santa Catarina", "shortCode": "SC" }, - { "name": "São Paulo", "shortCode": "SP" }, - { "name": "Sergipe", "shortCode": "SE" }, - { "name": "Tocantins", "shortCode": "TO" } - ] + { + "name": "Acre", + "shortCode": "AC" + }, + { + "name": "Alagoas", + "shortCode": "AL" + }, + { + "name": "Amapá", + "shortCode": "AP" + }, + { + "name": "Amazonas", + "shortCode": "AM" + }, + { + "name": "Bahia", + "shortCode": "BA" + }, + { + "name": "Ceará", + "shortCode": "CE" + }, + { + "name": "Distrito Federal", + "shortCode": "DF" + }, + { + "name": "Espírito Santo", + "shortCode": "ES" + }, + { + "name": "Goiás", + "shortCode": "GO" + }, + { + "name": "Maranhão", + "shortCode": "MA" + }, + { + "name": "Mato Grosso", + "shortCode": "MT" + }, + { + "name": "Mato Grosso do Sul", + "shortCode": "MS" + }, + { + "name": "Minas Gerais", + "shortCode": "MG" + }, + { + "name": "Pará", + "shortCode": "PA" + }, + { + "name": "Paraíba", + "shortCode": "PB" + }, + { + "name": "Paraná", + "shortCode": "PR" + }, + { + "name": "Pernambuco", + "shortCode": "PE" + }, + { + "name": "Piauí", + "shortCode": "PI" + }, + { + "name": "Rio de Janeiro", + "shortCode": "RJ" + }, + { + "name": "Rio Grande do Norte", + "shortCode": "RN" + }, + { + "name": "Rio Grande do Sul", + "shortCode": "RS" + }, + { + "name": "Rondônia", + "shortCode": "RO" + }, + { + "name": "Roraima", + "shortCode": "RR" + }, + { + "name": "Santa Catarina", + "shortCode": "SC" + }, + { + "name": "São Paulo", + "shortCode": "SP" + }, + { + "name": "Sergipe", + "shortCode": "SE" + }, + { + "name": "Tocantins", + "shortCode": "TO" + } + ], + "capital": "Brasília", + "population": 213421037, + "area": 8515767, + "continent": "South America", + "nativeName": "República Federativa do Brasil", + "demonym": "Brazilians", + "languages": [ + "Portuguese" + ], + "tld": [ + ".br" + ], + "borders": [ + "UY", + "FR", + "AR", + "PE", + "VE", + "SR", + "PY", + "GY", + "CO", + "BO", + "GF" + ], + "unMember": true, + "independent": true }, { "countryName": "British Indian Ocean Territory", @@ -1431,7 +3515,27 @@ "tzName": "Indian Ocean Time" } ], - "regions": [{ "name": "British Indian Ocean Territory", "shortCode": "IO" }] + "regions": [ + { + "name": "British Indian Ocean Territory", + "shortCode": "IO" + } + ], + "capital": "Diego Garcia", + "population": 3000, + "area": 60, + "continent": "Africa", + "officialName": "British Indian Ocean Territory", + "nativeName": "British Indian Ocean Territory", + "demonym": "British", + "languages": [ + "English" + ], + "tld": [ + ".io" + ], + "unMember": false, + "independent": false }, { "countryName": "Brunei Darussalam", @@ -1450,11 +3554,40 @@ } ], "regions": [ - { "name": "Belait", "shortCode": "BE" }, - { "name": "Brunei Muara", "shortCode": "BM" }, - { "name": "Temburong", "shortCode": "TE" }, - { "name": "Tutong", "shortCode": "TU" } - ] + { + "name": "Belait", + "shortCode": "BE" + }, + { + "name": "Brunei Muara", + "shortCode": "BM" + }, + { + "name": "Temburong", + "shortCode": "TE" + }, + { + "name": "Tutong", + "shortCode": "TU" + } + ], + "capital": "Bandar Seri Begawan", + "population": 458949, + "area": 5765.313533, + "continent": "Asia", + "nativeName": "Brunei Darussalam", + "languages": [ + "British English", + "Malay" + ], + "tld": [ + ".bn" + ], + "borders": [ + "MY" + ], + "unMember": true, + "independent": true }, { "countryName": "Bulgaria", @@ -1473,35 +3606,142 @@ } ], "regions": [ - { "name": "Blagoevgrad", "shortCode": "01" }, - { "name": "Burgas", "shortCode": "02" }, - { "name": "Dobrich", "shortCode": "08" }, - { "name": "Gabrovo", "shortCode": "07" }, - { "name": "Jambol", "shortCode": "28" }, - { "name": "Khaskovo", "shortCode": "26" }, - { "name": "Kjustendil", "shortCode": "10" }, - { "name": "Kurdzhali", "shortCode": "09" }, - { "name": "Lovech", "shortCode": "11" }, - { "name": "Montana", "shortCode": "12" }, - { "name": "Pazardzhik", "shortCode": "13" }, - { "name": "Pernik", "shortCode": "14" }, - { "name": "Pleven", "shortCode": "15" }, - { "name": "Plovdiv", "shortCode": "16" }, - { "name": "Razgrad", "shortCode": "17" }, - { "name": "Ruse", "shortCode": "18" }, - { "name": "Shumen", "shortCode": "27" }, - { "name": "Silistra", "shortCode": "19" }, - { "name": "Sliven", "shortCode": "20" }, - { "name": "Smoljan", "shortCode": "21" }, - { "name": "Sofija", "shortCode": "23" }, - { "name": "Sofija-Grad", "shortCode": "22" }, - { "name": "Stara Zagora", "shortCode": "24" }, - { "name": "Turgovishhe", "shortCode": "25" }, - { "name": "Varna", "shortCode": "03" }, - { "name": "Veliko Turnovo", "shortCode": "04" }, - { "name": "Vidin", "shortCode": "05" }, - { "name": "Vraca", "shortCode": "06" } - ] + { + "name": "Blagoevgrad", + "shortCode": "01" + }, + { + "name": "Burgas", + "shortCode": "02" + }, + { + "name": "Dobrich", + "shortCode": "08" + }, + { + "name": "Gabrovo", + "shortCode": "07" + }, + { + "name": "Jambol", + "shortCode": "28" + }, + { + "name": "Khaskovo", + "shortCode": "26" + }, + { + "name": "Kjustendil", + "shortCode": "10" + }, + { + "name": "Kurdzhali", + "shortCode": "09" + }, + { + "name": "Lovech", + "shortCode": "11" + }, + { + "name": "Montana", + "shortCode": "12" + }, + { + "name": "Pazardzhik", + "shortCode": "13" + }, + { + "name": "Pernik", + "shortCode": "14" + }, + { + "name": "Pleven", + "shortCode": "15" + }, + { + "name": "Plovdiv", + "shortCode": "16" + }, + { + "name": "Razgrad", + "shortCode": "17" + }, + { + "name": "Ruse", + "shortCode": "18" + }, + { + "name": "Shumen", + "shortCode": "27" + }, + { + "name": "Silistra", + "shortCode": "19" + }, + { + "name": "Sliven", + "shortCode": "20" + }, + { + "name": "Smoljan", + "shortCode": "21" + }, + { + "name": "Sofija", + "shortCode": "23" + }, + { + "name": "Sofija-Grad", + "shortCode": "22" + }, + { + "name": "Stara Zagora", + "shortCode": "24" + }, + { + "name": "Turgovishhe", + "shortCode": "25" + }, + { + "name": "Varna", + "shortCode": "03" + }, + { + "name": "Veliko Turnovo", + "shortCode": "04" + }, + { + "name": "Vidin", + "shortCode": "05" + }, + { + "name": "Vraca", + "shortCode": "06" + } + ], + "capital": "Sofia", + "population": 6423207, + "area": 110993.6, + "continent": "Europe", + "officialName": "Republic of Bulgaria", + "nativeName": "България", + "demonym": "Bulgarian", + "languages": [ + "Bulgarian" + ], + "tld": [ + ".бг", + ".bg" + ], + "borders": [ + "GR", + "TR", + "RO", + "MK", + "RS" + ], + "unMember": true, + "independent": true }, { "countryName": "Burkina Faso", @@ -1520,56 +3760,216 @@ } ], "regions": [ - { "name": "Balé", "shortCode": "BAL" }, - { "name": "Bam/Lake Bam", "shortCode": "BAM" }, - { "name": "Banwa Province", "shortCode": "BAN" }, - { "name": "Bazèga", "shortCode": "BAZ" }, - { "name": "Bougouriba", "shortCode": "BGR" }, - { "name": "Boulgou Province", "shortCode": "BLG" }, - { "name": "Boulkiemdé", "shortCode": "BLK" }, - { "name": "Comoé/Komoe", "shortCode": "COM" }, - { "name": "Ganzourgou Province", "shortCode": "GAN" }, - { "name": "Gnagna", "shortCode": "GNA" }, - { "name": "Gourma Province", "shortCode": "GOU" }, - { "name": "Houet", "shortCode": "HOU" }, - { "name": "Ioba", "shortCode": "IOB" }, - { "name": "Kadiogo", "shortCode": "KAD" }, - { "name": "Kénédougou", "shortCode": "KEN" }, - { "name": "Komondjari", "shortCode": "KMD" }, - { "name": "Kompienga", "shortCode": "KMP" }, - { "name": "Kossi Province", "shortCode": "KOS" }, - { "name": "Koulpélogo", "shortCode": "KOP" }, - { "name": "Kouritenga", "shortCode": "KOT" }, - { "name": "Kourwéogo", "shortCode": "KOW" }, - { "name": "Léraba", "shortCode": "LER" }, - { "name": "Loroum", "shortCode": "LOR" }, - { "name": "Mouhoun", "shortCode": "MOU" }, - { "name": "Namentenga", "shortCode": "NAM" }, - { "name": "Naouri/Nahouri", "shortCode": "NAO" }, - { "name": "Nayala", "shortCode": "NAY" }, - { "name": "Noumbiel", "shortCode": "NOU" }, - { "name": "Oubritenga", "shortCode": "OUB" }, - { "name": "Oudalan", "shortCode": "OUD" }, - { "name": "Passoré", "shortCode": "PAS" }, - { "name": "Poni", "shortCode": "PON" }, - { "name": "Sanguié", "shortCode": "SNG" }, - { "name": "Sanmatenga", "shortCode": "SMT" }, - { "name": "Séno", "shortCode": "SEN" }, - { "name": "Sissili", "shortCode": "SIS" }, - { "name": "Soum", "shortCode": "SOM" }, - { "name": "Sourou", "shortCode": "SOR" }, - { "name": "Tapoa", "shortCode": "TAP" }, - { "name": "Tui/Tuy", "shortCode": "TUI" }, - { "name": "Yagha", "shortCode": "YAG" }, - { "name": "Yatenga", "shortCode": "YAT" }, - { "name": "Ziro", "shortCode": "ZIR" }, - { "name": "Zondoma", "shortCode": "ZON" }, - { "name": "Zoundwéogo", "shortCode": "ZOU" } - ] - }, - { - "countryName": "Burundi", - "countryShortCode": "BI", + { + "name": "Balé", + "shortCode": "BAL" + }, + { + "name": "Bam/Lake Bam", + "shortCode": "BAM" + }, + { + "name": "Banwa Province", + "shortCode": "BAN" + }, + { + "name": "Bazèga", + "shortCode": "BAZ" + }, + { + "name": "Bougouriba", + "shortCode": "BGR" + }, + { + "name": "Boulgou Province", + "shortCode": "BLG" + }, + { + "name": "Boulkiemdé", + "shortCode": "BLK" + }, + { + "name": "Comoé/Komoe", + "shortCode": "COM" + }, + { + "name": "Ganzourgou Province", + "shortCode": "GAN" + }, + { + "name": "Gnagna", + "shortCode": "GNA" + }, + { + "name": "Gourma Province", + "shortCode": "GOU" + }, + { + "name": "Houet", + "shortCode": "HOU" + }, + { + "name": "Ioba", + "shortCode": "IOB" + }, + { + "name": "Kadiogo", + "shortCode": "KAD" + }, + { + "name": "Kénédougou", + "shortCode": "KEN" + }, + { + "name": "Komondjari", + "shortCode": "KMD" + }, + { + "name": "Kompienga", + "shortCode": "KMP" + }, + { + "name": "Kossi Province", + "shortCode": "KOS" + }, + { + "name": "Koulpélogo", + "shortCode": "KOP" + }, + { + "name": "Kouritenga", + "shortCode": "KOT" + }, + { + "name": "Kourwéogo", + "shortCode": "KOW" + }, + { + "name": "Léraba", + "shortCode": "LER" + }, + { + "name": "Loroum", + "shortCode": "LOR" + }, + { + "name": "Mouhoun", + "shortCode": "MOU" + }, + { + "name": "Namentenga", + "shortCode": "NAM" + }, + { + "name": "Naouri/Nahouri", + "shortCode": "NAO" + }, + { + "name": "Nayala", + "shortCode": "NAY" + }, + { + "name": "Noumbiel", + "shortCode": "NOU" + }, + { + "name": "Oubritenga", + "shortCode": "OUB" + }, + { + "name": "Oudalan", + "shortCode": "OUD" + }, + { + "name": "Passoré", + "shortCode": "PAS" + }, + { + "name": "Poni", + "shortCode": "PON" + }, + { + "name": "Sanguié", + "shortCode": "SNG" + }, + { + "name": "Sanmatenga", + "shortCode": "SMT" + }, + { + "name": "Séno", + "shortCode": "SEN" + }, + { + "name": "Sissili", + "shortCode": "SIS" + }, + { + "name": "Soum", + "shortCode": "SOM" + }, + { + "name": "Sourou", + "shortCode": "SOR" + }, + { + "name": "Tapoa", + "shortCode": "TAP" + }, + { + "name": "Tui/Tuy", + "shortCode": "TUI" + }, + { + "name": "Yagha", + "shortCode": "YAG" + }, + { + "name": "Yatenga", + "shortCode": "YAT" + }, + { + "name": "Ziro", + "shortCode": "ZIR" + }, + { + "name": "Zondoma", + "shortCode": "ZON" + }, + { + "name": "Zoundwéogo", + "shortCode": "ZOU" + } + ], + "capital": "Ouagadougou", + "population": 23025776, + "area": 274200, + "continent": "Africa", + "officialName": "Burkina Faso", + "nativeName": "Burkina Faso", + "demonym": "Burkinabe", + "languages": [ + "Bissa", + "Mooré", + "Dioula" + ], + "tld": [ + ".bf" + ], + "borders": [ + "GH", + "ML", + "TG", + "BJ", + "CI", + "NE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Burundi", + "countryShortCode": "BI", "phoneCode": "+257", "currencyCode": "BIF", "latitude": "-3.50000000", @@ -1584,24 +3984,97 @@ } ], "regions": [ - { "name": "Bubanza", "shortCode": "BB" }, - { "name": "Bujumbura Mairie", "shortCode": "BM" }, - { "name": "Bujumbura Rural", "shortCode": "BL" }, - { "name": "Bururi", "shortCode": "BR" }, - { "name": "Cankuzo", "shortCode": "CA" }, - { "name": "Cibitoke", "shortCode": "CI" }, - { "name": "Gitega", "shortCode": "GI" }, - { "name": "Karuzi", "shortCode": "KR" }, - { "name": "Kayanza", "shortCode": "KY" }, - { "name": "Kirundo", "shortCode": "KI" }, - { "name": "Makamba", "shortCode": "MA" }, - { "name": "Muramvya", "shortCode": "MU" }, - { "name": "Muyinga", "shortCode": "MY" }, - { "name": "Mwaro", "shortCode": "MW" }, - { "name": "Ngozi", "shortCode": "NG" }, - { "name": "Rutana", "shortCode": "RT" }, - { "name": "Ruyigi", "shortCode": "RY" } - ] + { + "name": "Bubanza", + "shortCode": "BB" + }, + { + "name": "Bujumbura Mairie", + "shortCode": "BM" + }, + { + "name": "Bujumbura Rural", + "shortCode": "BL" + }, + { + "name": "Bururi", + "shortCode": "BR" + }, + { + "name": "Cankuzo", + "shortCode": "CA" + }, + { + "name": "Cibitoke", + "shortCode": "CI" + }, + { + "name": "Gitega", + "shortCode": "GI" + }, + { + "name": "Karuzi", + "shortCode": "KR" + }, + { + "name": "Kayanza", + "shortCode": "KY" + }, + { + "name": "Kirundo", + "shortCode": "KI" + }, + { + "name": "Makamba", + "shortCode": "MA" + }, + { + "name": "Muramvya", + "shortCode": "MU" + }, + { + "name": "Muyinga", + "shortCode": "MY" + }, + { + "name": "Mwaro", + "shortCode": "MW" + }, + { + "name": "Ngozi", + "shortCode": "NG" + }, + { + "name": "Rutana", + "shortCode": "RT" + }, + { + "name": "Ruyigi", + "shortCode": "RY" + } + ], + "capital": "Gitega", + "population": 13689450, + "area": 27834, + "continent": "Africa", + "officialName": "Republic of Burundi", + "nativeName": "Uburundi", + "demonym": "Burundian", + "languages": [ + "Kirundi", + "French", + "English" + ], + "tld": [ + ".bi" + ], + "borders": [ + "TZ", + "CD", + "RW" + ], + "unMember": true, + "independent": true }, { "countryName": "Cambodia", @@ -1620,32 +4093,127 @@ } ], "regions": [ - { "name": "Baat Dambang", "shortCode": "2" }, - { "name": "Banteay Mean Chey", "shortCode": "1" }, - { "name": "Kampong Chaam", "shortCode": "3" }, - { "name": "Kampong Chhnang", "shortCode": "4" }, - { "name": "Kampong Spueu", "shortCode": "5" }, - { "name": "Kampong Thum", "shortCode": "6" }, - { "name": "Kampot", "shortCode": "7" }, - { "name": "Kandaal", "shortCode": "8" }, - { "name": "Kaoh Kong", "shortCode": "9" }, - { "name": "Kracheh", "shortCode": "10" }, - { "name": "Krong Kaeb", "shortCode": "23" }, - { "name": "Krong Pailin", "shortCode": "24" }, - { "name": "Krong Preah Sihanouk", "shortCode": "18" }, - { "name": "Mondol Kiri", "shortCode": "11" }, - { "name": "Otdar Mean Chey", "shortCode": "22" }, - { "name": "Phnom Penh", "shortCode": "12" }, - { "name": "Pousaat", "shortCode": "15" }, - { "name": "Preah Vihear", "shortCode": "13" }, - { "name": "Prey Veaeng", "shortCode": "14" }, - { "name": "Rotanah Kiri", "shortCode": "16" }, - { "name": "Siem Reab", "shortCode": "17" }, - { "name": "Stueng Treng", "shortCode": "19" }, - { "name": "Svaay Rieng", "shortCode": "20" }, - { "name": "Taakaev", "shortCode": "21" }, - { "name": "Tbong Khmum", "shortCode": "25" } - ] + { + "name": "Baat Dambang", + "shortCode": "2" + }, + { + "name": "Banteay Mean Chey", + "shortCode": "1" + }, + { + "name": "Kampong Chaam", + "shortCode": "3" + }, + { + "name": "Kampong Chhnang", + "shortCode": "4" + }, + { + "name": "Kampong Spueu", + "shortCode": "5" + }, + { + "name": "Kampong Thum", + "shortCode": "6" + }, + { + "name": "Kampot", + "shortCode": "7" + }, + { + "name": "Kandaal", + "shortCode": "8" + }, + { + "name": "Kaoh Kong", + "shortCode": "9" + }, + { + "name": "Kracheh", + "shortCode": "10" + }, + { + "name": "Krong Kaeb", + "shortCode": "23" + }, + { + "name": "Krong Pailin", + "shortCode": "24" + }, + { + "name": "Krong Preah Sihanouk", + "shortCode": "18" + }, + { + "name": "Mondol Kiri", + "shortCode": "11" + }, + { + "name": "Otdar Mean Chey", + "shortCode": "22" + }, + { + "name": "Phnom Penh", + "shortCode": "12" + }, + { + "name": "Pousaat", + "shortCode": "15" + }, + { + "name": "Preah Vihear", + "shortCode": "13" + }, + { + "name": "Prey Veaeng", + "shortCode": "14" + }, + { + "name": "Rotanah Kiri", + "shortCode": "16" + }, + { + "name": "Siem Reab", + "shortCode": "17" + }, + { + "name": "Stueng Treng", + "shortCode": "19" + }, + { + "name": "Svaay Rieng", + "shortCode": "20" + }, + { + "name": "Taakaev", + "shortCode": "21" + }, + { + "name": "Tbong Khmum", + "shortCode": "25" + } + ], + "capital": "Phnom Penh", + "population": 17423880, + "area": 181035, + "continent": "Asia", + "officialName": "Kingdom of Cambodia", + "nativeName": "កម្ពុជា", + "demonym": "Cambodian", + "languages": [ + "Khmer" + ], + "tld": [ + ".kh" + ], + "borders": [ + "LA", + "TH", + "VN" + ], + "unMember": true, + "independent": true }, { "countryName": "Cameroon", @@ -1664,17 +4232,71 @@ } ], "regions": [ - { "name": "Adamaoua", "shortCode": "AD" }, - { "name": "Centre", "shortCode": "CE" }, - { "name": "Est", "shortCode": "ES" }, - { "name": "Extrême-Nord", "shortCode": "EN" }, - { "name": "Littoral", "shortCode": "LT" }, - { "name": "Nord", "shortCode": "NO" }, - { "name": "Nord-Ouest", "shortCode": "NW" }, - { "name": "Ouest", "shortCode": "OU" }, - { "name": "Sud", "shortCode": "SU" }, - { "name": "Sud-Ouest", "shortCode": "SW" } - ] + { + "name": "Adamaoua", + "shortCode": "AD" + }, + { + "name": "Centre", + "shortCode": "CE" + }, + { + "name": "Est", + "shortCode": "ES" + }, + { + "name": "Extrême-Nord", + "shortCode": "EN" + }, + { + "name": "Littoral", + "shortCode": "LT" + }, + { + "name": "Nord", + "shortCode": "NO" + }, + { + "name": "Nord-Ouest", + "shortCode": "NW" + }, + { + "name": "Ouest", + "shortCode": "OU" + }, + { + "name": "Sud", + "shortCode": "SU" + }, + { + "name": "Sud-Ouest", + "shortCode": "SW" + } + ], + "capital": "Yaoundé", + "population": 28372687, + "area": 475442, + "continent": "Africa", + "officialName": "Republic of Cameroon", + "nativeName": "République du Cameroun", + "demonym": "Cameroonian", + "languages": [ + "French", + "English" + ], + "tld": [ + ".cm" + ], + "borders": [ + "TD", + "CF", + "CG", + "GQ", + "GA", + "NG" + ], + "unMember": true, + "independent": true }, { "countryName": "Canada", @@ -1882,20 +4504,78 @@ } ], "regions": [ - { "name": "Alberta", "shortCode": "AB" }, - { "name": "British Columbia", "shortCode": "BC" }, - { "name": "Manitoba", "shortCode": "MB" }, - { "name": "New Brunswick", "shortCode": "NB" }, - { "name": "Newfoundland and Labrador", "shortCode": "NL" }, - { "name": "Northwest Territories", "shortCode": "NT" }, - { "name": "Nova Scotia", "shortCode": "NS" }, - { "name": "Nunavut", "shortCode": "NU" }, - { "name": "Ontario", "shortCode": "ON" }, - { "name": "Prince Edward Island", "shortCode": "PE" }, - { "name": "Quebec", "shortCode": "QC" }, - { "name": "Saskatchewan", "shortCode": "SK" }, - { "name": "Yukon", "shortCode": "YT" } - ] + { + "name": "Alberta", + "shortCode": "AB" + }, + { + "name": "British Columbia", + "shortCode": "BC" + }, + { + "name": "Manitoba", + "shortCode": "MB" + }, + { + "name": "New Brunswick", + "shortCode": "NB" + }, + { + "name": "Newfoundland and Labrador", + "shortCode": "NL" + }, + { + "name": "Northwest Territories", + "shortCode": "NT" + }, + { + "name": "Nova Scotia", + "shortCode": "NS" + }, + { + "name": "Nunavut", + "shortCode": "NU" + }, + { + "name": "Ontario", + "shortCode": "ON" + }, + { + "name": "Prince Edward Island", + "shortCode": "PE" + }, + { + "name": "Quebec", + "shortCode": "QC" + }, + { + "name": "Saskatchewan", + "shortCode": "SK" + }, + { + "name": "Yukon", + "shortCode": "YT" + } + ], + "capital": "Ottawa", + "population": 40000000, + "area": 9984670, + "continent": "North America", + "officialName": "Canada", + "nativeName": "Canada", + "demonym": "Canadians", + "languages": [ + "French", + "English" + ], + "tld": [ + ".ca" + ], + "borders": [ + "US" + ], + "unMember": true, + "independent": true }, { "countryName": "Cape Verde", @@ -1914,53 +4594,155 @@ } ], "regions": [ - { "name": "Boa Vista", "shortCode": "BV" }, - { "name": "Brava", "shortCode": "BR" }, - { "name": "Calheta de São Miguel", "shortCode": "CS" }, - { "name": "Maio", "shortCode": "MA" }, - { "name": "Mosteiros", "shortCode": "MO" }, - { "name": "Paúl", "shortCode": "PA" }, - { "name": "Porto Novo", "shortCode": "PN" }, - { "name": "Praia", "shortCode": "PR" }, - { "name": "Ribeira Brava", "shortCode": "RB" }, - { "name": "Ribeira Grande", "shortCode": "RG" }, - { "name": "Sal", "shortCode": "SL" }, - { "name": "Santa Catarina", "shortCode": "CA" }, - { "name": "Santa Cruz", "shortCode": "CR" }, - { "name": "São Domingos", "shortCode": "SD" }, - { "name": "São Filipe", "shortCode": "SF" }, - { "name": "São Nicolau", "shortCode": "SN" }, - { "name": "São Vicente", "shortCode": "SV" }, - { "name": "Tarrafal", "shortCode": "TA" }, - { "name": "Tarrafal de São Nicolau", "shortCode": "TS" } - ] - }, - { - "countryName": "Cayman Islands", - "countryShortCode": "KY", - "phoneCode": "+1345", - "currencyCode": "KYD", - "latitude": "19.50000000", - "longitude": "-80.50000000", - "timezones": [ { - "zoneName": "America/Cayman", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", + "name": "Boa Vista", + "shortCode": "BV" + }, + { + "name": "Brava", + "shortCode": "BR" + }, + { + "name": "Calheta de São Miguel", + "shortCode": "CS" + }, + { + "name": "Maio", + "shortCode": "MA" + }, + { + "name": "Mosteiros", + "shortCode": "MO" + }, + { + "name": "Paúl", + "shortCode": "PA" + }, + { + "name": "Porto Novo", + "shortCode": "PN" + }, + { + "name": "Praia", + "shortCode": "PR" + }, + { + "name": "Ribeira Brava", + "shortCode": "RB" + }, + { + "name": "Ribeira Grande", + "shortCode": "RG" + }, + { + "name": "Sal", + "shortCode": "SL" + }, + { + "name": "Santa Catarina", + "shortCode": "CA" + }, + { + "name": "Santa Cruz", + "shortCode": "CR" + }, + { + "name": "São Domingos", + "shortCode": "SD" + }, + { + "name": "São Filipe", + "shortCode": "SF" + }, + { + "name": "São Nicolau", + "shortCode": "SN" + }, + { + "name": "São Vicente", + "shortCode": "SV" + }, + { + "name": "Tarrafal", + "shortCode": "TA" + }, + { + "name": "Tarrafal de São Nicolau", + "shortCode": "TS" + } + ], + "capital": "Praia", + "population": 555988, + "area": 4033, + "continent": "Africa", + "nativeName": "República de Cabo Verde", + "demonym": "Cape Verdean", + "languages": [ + "Portuguese", + "Cape Verdean Creole" + ], + "tld": [ + ".cv" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Cayman Islands", + "countryShortCode": "KY", + "phoneCode": "+1345", + "currencyCode": "KYD", + "latitude": "19.50000000", + "longitude": "-80.50000000", + "timezones": [ + { + "zoneName": "America/Cayman", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", "abbreviation": "EST", "tzName": "Eastern Standard Time (North America" } ], "regions": [ - { "name": "Creek" }, - { "name": "Eastern" }, - { "name": "Midland" }, - { "name": "South Town" }, - { "name": "Spot Bay" }, - { "name": "Stake Bay" }, - { "name": "West End" }, - { "name": "Western" } - ] + { + "name": "Creek" + }, + { + "name": "Eastern" + }, + { + "name": "Midland" + }, + { + "name": "South Town" + }, + { + "name": "Spot Bay" + }, + { + "name": "Stake Bay" + }, + { + "name": "West End" + }, + { + "name": "Western" + } + ], + "capital": "George Town", + "population": 88833, + "area": 264, + "continent": "North America", + "officialName": "Cayman Islands", + "demonym": "Caymanian", + "languages": [ + "English" + ], + "tld": [ + ".ky" + ], + "unMember": false, + "independent": false }, { "countryName": "Central African Republic", @@ -1979,24 +4761,99 @@ } ], "regions": [ - { "name": "Bamingui-Bangoran", "shortCode": "BB" }, - { "name": "Bangui", "shortCode": "BGF" }, - { "name": "Basse-Kotto", "shortCode": "BK" }, - { "name": "Haute-Kotto", "shortCode": "HK" }, - { "name": "Haut-Mbomou", "shortCode": "HM" }, - { "name": "Kémo", "shortCode": "KG" }, - { "name": "Lobaye", "shortCode": "LB" }, - { "name": "Mambéré-Kadéï", "shortCode": "HS" }, - { "name": "Mbomou", "shortCode": "MB" }, - { "name": "Nana-Grebizi", "shortCode": "10" }, - { "name": "Nana-Mambéré", "shortCode": "NM" }, - { "name": "Ombella-M'Poko", "shortCode": "MP" }, - { "name": "Ouaka", "shortCode": "UK" }, - { "name": "Ouham", "shortCode": "AC" }, - { "name": "Ouham Péndé", "shortCode": "OP" }, - { "name": "Sangha-Mbaéré", "shortCode": "SE" }, - { "name": "Vakaga", "shortCode": "VK" } - ] + { + "name": "Bamingui-Bangoran", + "shortCode": "BB" + }, + { + "name": "Bangui", + "shortCode": "BGF" + }, + { + "name": "Basse-Kotto", + "shortCode": "BK" + }, + { + "name": "Haute-Kotto", + "shortCode": "HK" + }, + { + "name": "Haut-Mbomou", + "shortCode": "HM" + }, + { + "name": "Kémo", + "shortCode": "KG" + }, + { + "name": "Lobaye", + "shortCode": "LB" + }, + { + "name": "Mambéré-Kadéï", + "shortCode": "HS" + }, + { + "name": "Mbomou", + "shortCode": "MB" + }, + { + "name": "Nana-Grebizi", + "shortCode": "10" + }, + { + "name": "Nana-Mambéré", + "shortCode": "NM" + }, + { + "name": "Ombella-M'Poko", + "shortCode": "MP" + }, + { + "name": "Ouaka", + "shortCode": "UK" + }, + { + "name": "Ouham", + "shortCode": "AC" + }, + { + "name": "Ouham Péndé", + "shortCode": "OP" + }, + { + "name": "Sangha-Mbaéré", + "shortCode": "SE" + }, + { + "name": "Vakaga", + "shortCode": "VK" + } + ], + "capital": "Bangui", + "population": 5152421, + "area": 622984, + "continent": "Africa", + "officialName": "Central African Republic", + "nativeName": "Republique Centrafricaine", + "demonym": "Central African", + "languages": [ + "French", + "Sango" + ], + "tld": [ + ".cf" + ], + "borders": [ + "SD", + "TD", + "SS", + "CG", + "CD", + "CM" + ], + "unMember": true, + "independent": true }, { "countryName": "Chad", @@ -2015,29 +4872,119 @@ } ], "regions": [ - { "name": "Bahr el Ghazal", "shortCode": "BG" }, - { "name": "Batha", "shortCode": "BA" }, - { "name": "Borkou", "shortCode": "BO" }, - { "name": "Chari-Baguirmi", "shortCode": "CB" }, - { "name": "Ennedi-Est", "shortCode": "EE" }, - { "name": "Ennedi-Ouest", "shortCode": "EO" }, - { "name": "Guéra", "shortCode": "GR" }, - { "name": "Hadjer Lamis", "shortCode": "HL" }, - { "name": "Kanem", "shortCode": "KA" }, - { "name": "Lac", "shortCode": "LC" }, - { "name": "Logone Occidental", "shortCode": "LO" }, - { "name": "Logone Oriental", "shortCode": "LR" }, - { "name": "Mondoul", "shortCode": "MA" }, - { "name": "Mayo-Kébbi-Est", "shortCode": "ME" }, - { "name": "Moyen-Chari", "shortCode": "MC" }, - { "name": "Ouaddai", "shortCode": "OD" }, - { "name": "Salamat", "shortCode": "SA" }, - { "name": "Sila", "shortCode": "SI" }, - { "name": "Tandjilé", "shortCode": "TA" }, - { "name": "Tibesti", "shortCode": "TI" }, - { "name": "Ville de Ndjamena", "shortCode": "ND" }, - { "name": "Wadi Fira", "shortCode": "WF" } - ] + { + "name": "Bahr el Ghazal", + "shortCode": "BG" + }, + { + "name": "Batha", + "shortCode": "BA" + }, + { + "name": "Borkou", + "shortCode": "BO" + }, + { + "name": "Chari-Baguirmi", + "shortCode": "CB" + }, + { + "name": "Ennedi-Est", + "shortCode": "EE" + }, + { + "name": "Ennedi-Ouest", + "shortCode": "EO" + }, + { + "name": "Guéra", + "shortCode": "GR" + }, + { + "name": "Hadjer Lamis", + "shortCode": "HL" + }, + { + "name": "Kanem", + "shortCode": "KA" + }, + { + "name": "Lac", + "shortCode": "LC" + }, + { + "name": "Logone Occidental", + "shortCode": "LO" + }, + { + "name": "Logone Oriental", + "shortCode": "LR" + }, + { + "name": "Mondoul", + "shortCode": "MA" + }, + { + "name": "Mayo-Kébbi-Est", + "shortCode": "ME" + }, + { + "name": "Moyen-Chari", + "shortCode": "MC" + }, + { + "name": "Ouaddai", + "shortCode": "OD" + }, + { + "name": "Salamat", + "shortCode": "SA" + }, + { + "name": "Sila", + "shortCode": "SI" + }, + { + "name": "Tandjilé", + "shortCode": "TA" + }, + { + "name": "Tibesti", + "shortCode": "TI" + }, + { + "name": "Ville de Ndjamena", + "shortCode": "ND" + }, + { + "name": "Wadi Fira", + "shortCode": "WF" + } + ], + "capital": "N'Djamena", + "population": 19319064, + "area": 1284000, + "continent": "Africa", + "officialName": "Republic of Chad", + "nativeName": "جُمْهُورِيَّة تشاد", + "demonym": "Chadian", + "languages": [ + "French", + "Arabic" + ], + "tld": [ + ".td" + ], + "borders": [ + "CF", + "CM", + "LY", + "NE", + "NG", + "SD" + ], + "unMember": true, + "independent": true }, { "countryName": "Chile", @@ -2074,23 +5021,91 @@ "name": "Aisén del General Carlos Ibáñez del Campo", "shortCode": "AI" }, - { "name": "Antofagasta", "shortCode": "AN" }, - { "name": "Araucanía", "shortCode": "AR" }, - { "name": "Arica y Parinacota", "shortCode": "AP" }, - { "name": "Atacama", "shortCode": "AT" }, - { "name": "Bío-Bío", "shortCode": "BI" }, - { "name": "Coquimbo", "shortCode": "CO" }, - { "name": "Libertador General Bernardo O'Higgins", "shortCode": "LI" }, - { "name": "Los Lagos", "shortCode": "LL" }, - { "name": "Los Ríos", "shortCode": "LR" }, - { "name": "Magallanes y Antartica Chilena", "shortCode": "MA" }, - { "name": "Marga-Marga", "shortCode": "" }, - { "name": "Maule", "shortCode": "ML" }, - { "name": "Ñuble", "shortCode": "NB" }, - { "name": "Región Metropolitana de Santiago", "shortCode": "RM" }, - { "name": "Tarapacá", "shortCode": "TA" }, - { "name": "Valparaíso", "shortCode": "VS" } - ] + { + "name": "Antofagasta", + "shortCode": "AN" + }, + { + "name": "Araucanía", + "shortCode": "AR" + }, + { + "name": "Arica y Parinacota", + "shortCode": "AP" + }, + { + "name": "Atacama", + "shortCode": "AT" + }, + { + "name": "Bío-Bío", + "shortCode": "BI" + }, + { + "name": "Coquimbo", + "shortCode": "CO" + }, + { + "name": "Libertador General Bernardo O'Higgins", + "shortCode": "LI" + }, + { + "name": "Los Lagos", + "shortCode": "LL" + }, + { + "name": "Los Ríos", + "shortCode": "LR" + }, + { + "name": "Magallanes y Antartica Chilena", + "shortCode": "MA" + }, + { + "name": "Marga-Marga", + "shortCode": "" + }, + { + "name": "Maule", + "shortCode": "ML" + }, + { + "name": "Ñuble", + "shortCode": "NB" + }, + { + "name": "Región Metropolitana de Santiago", + "shortCode": "RM" + }, + { + "name": "Tarapacá", + "shortCode": "TA" + }, + { + "name": "Valparaíso", + "shortCode": "VS" + } + ], + "capital": "Santiago", + "population": 19458000, + "area": 756102, + "continent": "South America", + "officialName": "Republic of Chile", + "nativeName": "Chile", + "demonym": "Chilean", + "languages": [ + "Spanish" + ], + "tld": [ + ".cl" + ], + "borders": [ + "AR", + "PE", + "BO" + ], + "unMember": true, + "independent": true }, { "countryName": "China", @@ -2116,144 +5131,450 @@ } ], "regions": [ - { "name": "Anhui", "shortCode": "34" }, - { "name": "Beijing", "shortCode": "11" }, - { "name": "Chongqing", "shortCode": "50" }, - { "name": "Fujian", "shortCode": "35" }, - { "name": "Gansu", "shortCode": "62" }, - { "name": "Guangdong", "shortCode": "44" }, - { "name": "Guangxi", "shortCode": "45" }, - { "name": "Guizhou", "shortCode": "52" }, - { "name": "Hainan", "shortCode": "46" }, - { "name": "Hebei", "shortCode": "13" }, - { "name": "Heilongjiang", "shortCode": "23" }, - { "name": "Henan", "shortCode": "41" }, - { "name": "Hong Kong", "shortCode": "91" }, - { "name": "Hubei", "shortCode": "42" }, - { "name": "Hunan", "shortCode": "43" }, - { "name": "Inner Mongolia", "shortCode": "15" }, - { "name": "Jiangsu", "shortCode": "32" }, - { "name": "Jiangxi", "shortCode": "36" }, - { "name": "Jilin", "shortCode": "22" }, - { "name": "Liaoning", "shortCode": "21" }, - { "name": "Macau", "shortCode": "92" }, - { "name": "Ningxia", "shortCode": "64" }, - { "name": "Qinghai", "shortCode": "63" }, - { "name": "Shaanxi", "shortCode": "61" }, - { "name": "Shandong", "shortCode": "37" }, - { "name": "Shanghai", "shortCode": "31" }, - { "name": "Shanxi", "shortCode": "14" }, - { "name": "Sichuan", "shortCode": "51" }, - { "name": "Tianjin", "shortCode": "12" }, - { "name": "Tibet", "shortCode": "54" }, - { "name": "Xinjiang", "shortCode": "65" }, - { "name": "Yunnan", "shortCode": "53" }, - { "name": "Zhejiang", "shortCode": "33" } - ] - }, - { - "countryName": "Christmas Island", - "countryShortCode": "CX", - "phoneCode": "+61", - "currencyCode": "AUD", - "latitude": "-10.50000000", - "longitude": "105.66666666", - "timezones": [ { - "zoneName": "Indian/Christmas", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "CXT", - "tzName": "Christmas Island Time" - } - ], - "regions": [{ "name": "Christmas Island", "shortCode": "CX" }] - }, - { - "countryName": "Cocos (Keeling) Islands", - "countryShortCode": "CC", - "phoneCode": "+61", - "currencyCode": "AUD", - "latitude": "-12.50000000", - "longitude": "96.83333333", - "timezones": [ + "name": "Anhui", + "shortCode": "34" + }, { - "zoneName": "Indian/Cocos", - "gmtOffset": 23400, - "gmtOffsetName": "UTC+06:30", - "abbreviation": "CCT", - "tzName": "Cocos Islands Time" - } - ], - "regions": [ - { "name": "Direction Island", "shortCode": "DI" }, - { "name": "Home Island", "shortCode": "HM" }, - { "name": "Horsburgh Island", "shortCode": "HR" }, - { "name": "North Keeling Island", "shortCode": "NK" }, - { "name": "South Island", "shortCode": "SI" }, - { "name": "West Island", "shortCode": "WI" } - ] - }, - { - "countryName": "Colombia", - "countryShortCode": "CO", - "phoneCode": "+57", - "currencyCode": "COP", - "latitude": "4.00000000", - "longitude": "-72.00000000", - "timezones": [ + "name": "Beijing", + "shortCode": "11" + }, { - "zoneName": "America/Bogota", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "COT", - "tzName": "Colombia Time" - } - ], - "regions": [ - { "name": "Amazonas", "shortCode": "AMA" }, - { "name": "Antioquia", "shortCode": "ANT" }, - { "name": "Arauca", "shortCode": "ARA" }, - { "name": "Archipiélago de San Andrés", "shortCode": "SAP" }, - { "name": "Atlántico", "shortCode": "ATL" }, - { "name": "Bogotá D.C.", "shortCode": "DC" }, - { "name": "Bolívar", "shortCode": "BOL" }, - { "name": "Boyacá", "shortCode": "BOY" }, - { "name": "Caldas", "shortCode": "CAL" }, - { "name": "Caquetá", "shortCode": "CAQ" }, - { "name": "Casanare", "shortCode": "CAS" }, - { "name": "Cauca", "shortCode": "CAU" }, - { "name": "Cesar", "shortCode": "CES" }, - { "name": "Chocó", "shortCode": "CHO" }, - { "name": "Córdoba", "shortCode": "COR" }, - { "name": "Cundinamarca", "shortCode": "CUN" }, - { "name": "Guainía", "shortCode": "GUA" }, - { "name": "Guaviare", "shortCode": "GUV" }, - { "name": "Huila", "shortCode": "HUI" }, - { "name": "La Guajira", "shortCode": "LAG" }, - { "name": "Magdalena", "shortCode": "MAG" }, - { "name": "Meta", "shortCode": "MET" }, - { "name": "Nariño", "shortCode": "NAR" }, - { "name": "Norte de Santander", "shortCode": "NSA" }, - { "name": "Putumayo", "shortCode": "PUT" }, - { "name": "Quindío", "shortCode": "QUI" }, - { "name": "Risaralda", "shortCode": "RIS" }, - { "name": "Santander", "shortCode": "SAN" }, - { "name": "Sucre", "shortCode": "SUC" }, - { "name": "Tolima", "shortCode": "TOL" }, - { "name": "Valle del Cauca", "shortCode": "VAC" }, - { "name": "Vaupés", "shortCode": "VAU" }, - { "name": "Vichada", "shortCode": "VID" } - ] - }, - { - "countryName": "Comoros", - "countryShortCode": "KM", - "phoneCode": "+269", - "currencyCode": "KMF", - "latitude": "-12.16666666", - "longitude": "44.25000000", - "timezones": [ + "name": "Chongqing", + "shortCode": "50" + }, + { + "name": "Fujian", + "shortCode": "35" + }, + { + "name": "Gansu", + "shortCode": "62" + }, + { + "name": "Guangdong", + "shortCode": "44" + }, + { + "name": "Guangxi", + "shortCode": "45" + }, + { + "name": "Guizhou", + "shortCode": "52" + }, + { + "name": "Hainan", + "shortCode": "46" + }, + { + "name": "Hebei", + "shortCode": "13" + }, + { + "name": "Heilongjiang", + "shortCode": "23" + }, + { + "name": "Henan", + "shortCode": "41" + }, + { + "name": "Hong Kong", + "shortCode": "91" + }, + { + "name": "Hubei", + "shortCode": "42" + }, + { + "name": "Hunan", + "shortCode": "43" + }, + { + "name": "Inner Mongolia", + "shortCode": "15" + }, + { + "name": "Jiangsu", + "shortCode": "32" + }, + { + "name": "Jiangxi", + "shortCode": "36" + }, + { + "name": "Jilin", + "shortCode": "22" + }, + { + "name": "Liaoning", + "shortCode": "21" + }, + { + "name": "Macau", + "shortCode": "92" + }, + { + "name": "Ningxia", + "shortCode": "64" + }, + { + "name": "Qinghai", + "shortCode": "63" + }, + { + "name": "Shaanxi", + "shortCode": "61" + }, + { + "name": "Shandong", + "shortCode": "37" + }, + { + "name": "Shanghai", + "shortCode": "31" + }, + { + "name": "Shanxi", + "shortCode": "14" + }, + { + "name": "Sichuan", + "shortCode": "51" + }, + { + "name": "Tianjin", + "shortCode": "12" + }, + { + "name": "Tibet", + "shortCode": "54" + }, + { + "name": "Xinjiang", + "shortCode": "65" + }, + { + "name": "Yunnan", + "shortCode": "53" + }, + { + "name": "Zhejiang", + "shortCode": "33" + } + ], + "capital": "Beijing", + "population": 1404890000, + "area": 9596961, + "continent": "Asia", + "nativeName": "中华人民共和国", + "demonym": "Chinese", + "languages": [ + "Putonghua" + ], + "tld": [ + ".中國", + ".中国", + ".公司", + ".cn" + ], + "borders": [ + "JP", + "RU", + "KZ", + "KP", + "IN", + "MN", + "KG", + "LA", + "MM", + "NP", + "PK", + "TJ", + "VN", + "KR", + "AF", + "BT" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Christmas Island", + "countryShortCode": "CX", + "phoneCode": "+61", + "currencyCode": "AUD", + "latitude": "-10.50000000", + "longitude": "105.66666666", + "timezones": [ + { + "zoneName": "Indian/Christmas", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "CXT", + "tzName": "Christmas Island Time" + } + ], + "regions": [ + { + "name": "Christmas Island", + "shortCode": "CX" + } + ], + "capital": "Flying Fish Cove", + "population": 1692, + "area": 135, + "continent": "Asia", + "nativeName": "Territory of Christmas Island", + "demonym": "Christmas Islander", + "languages": [ + "English" + ], + "tld": [ + ".cx" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Cocos (Keeling) Islands", + "countryShortCode": "CC", + "phoneCode": "+61", + "currencyCode": "AUD", + "latitude": "-12.50000000", + "longitude": "96.83333333", + "timezones": [ + { + "zoneName": "Indian/Cocos", + "gmtOffset": 23400, + "gmtOffsetName": "UTC+06:30", + "abbreviation": "CCT", + "tzName": "Cocos Islands Time" + } + ], + "regions": [ + { + "name": "Direction Island", + "shortCode": "DI" + }, + { + "name": "Home Island", + "shortCode": "HM" + }, + { + "name": "Horsburgh Island", + "shortCode": "HR" + }, + { + "name": "North Keeling Island", + "shortCode": "NK" + }, + { + "name": "South Island", + "shortCode": "SI" + }, + { + "name": "West Island", + "shortCode": "WI" + } + ], + "capital": "West Island", + "population": 602, + "area": 14, + "continent": "Oceania", + "officialName": "Cocos Islands", + "languages": [ + "English" + ], + "tld": [ + ".cc" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Colombia", + "countryShortCode": "CO", + "phoneCode": "+57", + "currencyCode": "COP", + "latitude": "4.00000000", + "longitude": "-72.00000000", + "timezones": [ + { + "zoneName": "America/Bogota", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "COT", + "tzName": "Colombia Time" + } + ], + "regions": [ + { + "name": "Amazonas", + "shortCode": "AMA" + }, + { + "name": "Antioquia", + "shortCode": "ANT" + }, + { + "name": "Arauca", + "shortCode": "ARA" + }, + { + "name": "Archipiélago de San Andrés", + "shortCode": "SAP" + }, + { + "name": "Atlántico", + "shortCode": "ATL" + }, + { + "name": "Bogotá D.C.", + "shortCode": "DC" + }, + { + "name": "Bolívar", + "shortCode": "BOL" + }, + { + "name": "Boyacá", + "shortCode": "BOY" + }, + { + "name": "Caldas", + "shortCode": "CAL" + }, + { + "name": "Caquetá", + "shortCode": "CAQ" + }, + { + "name": "Casanare", + "shortCode": "CAS" + }, + { + "name": "Cauca", + "shortCode": "CAU" + }, + { + "name": "Cesar", + "shortCode": "CES" + }, + { + "name": "Chocó", + "shortCode": "CHO" + }, + { + "name": "Córdoba", + "shortCode": "COR" + }, + { + "name": "Cundinamarca", + "shortCode": "CUN" + }, + { + "name": "Guainía", + "shortCode": "GUA" + }, + { + "name": "Guaviare", + "shortCode": "GUV" + }, + { + "name": "Huila", + "shortCode": "HUI" + }, + { + "name": "La Guajira", + "shortCode": "LAG" + }, + { + "name": "Magdalena", + "shortCode": "MAG" + }, + { + "name": "Meta", + "shortCode": "MET" + }, + { + "name": "Nariño", + "shortCode": "NAR" + }, + { + "name": "Norte de Santander", + "shortCode": "NSA" + }, + { + "name": "Putumayo", + "shortCode": "PUT" + }, + { + "name": "Quindío", + "shortCode": "QUI" + }, + { + "name": "Risaralda", + "shortCode": "RIS" + }, + { + "name": "Santander", + "shortCode": "SAN" + }, + { + "name": "Sucre", + "shortCode": "SUC" + }, + { + "name": "Tolima", + "shortCode": "TOL" + }, + { + "name": "Valle del Cauca", + "shortCode": "VAC" + }, + { + "name": "Vaupés", + "shortCode": "VAU" + }, + { + "name": "Vichada", + "shortCode": "VID" + } + ], + "capital": "Bogotá", + "population": 52321152, + "area": 1141748, + "continent": "South America", + "officialName": "Republic of Colombia", + "nativeName": "Colombia", + "demonym": "Colombian", + "languages": [ + "Spanish" + ], + "tld": [ + ".co" + ], + "borders": [ + "BR", + "PE", + "VE", + "EC", + "PA", + "NI" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Comoros", + "countryShortCode": "KM", + "phoneCode": "+269", + "currencyCode": "KMF", + "latitude": "-12.16666666", + "longitude": "44.25000000", + "timezones": [ { "zoneName": "Indian/Comoro", "gmtOffset": 10800, @@ -2263,10 +5584,43 @@ } ], "regions": [ - { "name": "Andjazîdja", "shortCode": "G" }, - { "name": "Andjouân", "shortCode": "A" }, - { "name": "Moûhîlî", "shortCode": "M" } - ] + { + "name": "Andjazîdja", + "shortCode": "G" + }, + { + "name": "Andjouân", + "shortCode": "A" + }, + { + "name": "Moûhîlî", + "shortCode": "M" + } + ], + "capital": "Moroni", + "population": 902348, + "area": 2034, + "continent": "Africa", + "officialName": "Union of the Comoros", + "nativeName": "الاتحاد القمري", + "demonym": "Comorians", + "languages": [ + "French", + "Arabic", + "Comorian" + ], + "tld": [ + ".km" + ], + "borders": [ + "FR", + "TZ", + "MG", + "MZ", + "SC" + ], + "unMember": true, + "independent": true }, { "countryName": "Congo, Republic of the (Brazzaville)", @@ -2285,19 +5639,77 @@ } ], "regions": [ - { "name": "Bouenza", "shortCode": "11" }, - { "name": "Brazzaville", "shortCode": "BZV" }, - { "name": "Cuvette", "shortCode": "8" }, - { "name": "Cuvette-Ouest", "shortCode": "15" }, - { "name": "Kouilou", "shortCode": "5" }, - { "name": "Lékoumou", "shortCode": "2" }, - { "name": "Likouala", "shortCode": "7" }, - { "name": "Niari", "shortCode": "9" }, - { "name": "Plateaux", "shortCode": "14" }, - { "name": "Pointe-Noire", "shortCode": "16" }, - { "name": "Pool", "shortCode": "12" }, - { "name": "Sangha", "shortCode": "13" } - ] + { + "name": "Bouenza", + "shortCode": "11" + }, + { + "name": "Brazzaville", + "shortCode": "BZV" + }, + { + "name": "Cuvette", + "shortCode": "8" + }, + { + "name": "Cuvette-Ouest", + "shortCode": "15" + }, + { + "name": "Kouilou", + "shortCode": "5" + }, + { + "name": "Lékoumou", + "shortCode": "2" + }, + { + "name": "Likouala", + "shortCode": "7" + }, + { + "name": "Niari", + "shortCode": "9" + }, + { + "name": "Plateaux", + "shortCode": "14" + }, + { + "name": "Pointe-Noire", + "shortCode": "16" + }, + { + "name": "Pool", + "shortCode": "12" + }, + { + "name": "Sangha", + "shortCode": "13" + } + ], + "capital": "Brazzaville", + "population": 6278845, + "area": 342000, + "continent": "Africa", + "officialName": "Republic of the Congo", + "nativeName": "République du Congo", + "demonym": "Congolese", + "languages": [ + "French" + ], + "tld": [ + ".cg" + ], + "borders": [ + "AO", + "CF", + "CD", + "GA", + "CM" + ], + "unMember": true, + "independent": true }, { "countryName": "Congo, the Democratic Republic of the (Kinshasa)", @@ -2323,18 +5735,78 @@ } ], "regions": [ - { "name": "Bandundu", "shortCode": "BN" }, - { "name": "Bas-Congo", "shortCode": "BC" }, - { "name": "Équateur", "shortCode": "EQ" }, - { "name": "Kasaï-Occidental", "shortCode": "KE" }, - { "name": "Kasaï-Oriental", "shortCode": "KW" }, - { "name": "Katanga", "shortCode": "KA" }, - { "name": "Kinshasa", "shortCode": "KN" }, - { "name": "Maniema", "shortCode": "MA" }, - { "name": "Nord-Kivu", "shortCode": "NK" }, - { "name": "Orientale", "shortCode": "OR" }, - { "name": "Sud-Kivu", "shortCode": "SK" } - ] + { + "name": "Bandundu", + "shortCode": "BN" + }, + { + "name": "Bas-Congo", + "shortCode": "BC" + }, + { + "name": "Équateur", + "shortCode": "EQ" + }, + { + "name": "Kasaï-Occidental", + "shortCode": "KE" + }, + { + "name": "Kasaï-Oriental", + "shortCode": "KW" + }, + { + "name": "Katanga", + "shortCode": "KA" + }, + { + "name": "Kinshasa", + "shortCode": "KN" + }, + { + "name": "Maniema", + "shortCode": "MA" + }, + { + "name": "Nord-Kivu", + "shortCode": "NK" + }, + { + "name": "Orientale", + "shortCode": "OR" + }, + { + "name": "Sud-Kivu", + "shortCode": "SK" + } + ], + "capital": "Kinshasa", + "population": 105789731, + "area": 2344858, + "continent": "Africa", + "nativeName": "République démocratique du Congo", + "demonym": "Congolese", + "languages": [ + "French" + ], + "tld": [ + ".cd" + ], + "borders": [ + "AO", + "TZ", + "CF", + "ZM", + "SS", + "BI", + "CG", + "CM", + "UG", + "RW", + "SD" + ], + "unMember": true, + "independent": true }, { "countryName": "Cook Islands", @@ -2353,19 +5825,59 @@ } ], "regions": [ - { "name": "Aitutaki" }, - { "name": "Atiu" }, - { "name": "Avarua" }, - { "name": "Mangaia" }, - { "name": "Manihiki" }, - { "name": "Ma'uke" }, - { "name": "Mitiaro" }, - { "name": "Nassau" }, - { "name": "Palmerston" }, - { "name": "Penrhyn" }, - { "name": "Pukapuka" }, - { "name": "Rakahanga" } - ] + { + "name": "Aitutaki" + }, + { + "name": "Atiu" + }, + { + "name": "Avarua" + }, + { + "name": "Mangaia" + }, + { + "name": "Manihiki" + }, + { + "name": "Ma'uke" + }, + { + "name": "Mitiaro" + }, + { + "name": "Nassau" + }, + { + "name": "Palmerston" + }, + { + "name": "Penrhyn" + }, + { + "name": "Pukapuka" + }, + { + "name": "Rakahanga" + } + ], + "capital": "Avarua", + "population": 14222, + "area": 240, + "continent": "Insular Oceania", + "officialName": "Cook Islands", + "nativeName": "Kūki 'Āirani", + "demonym": "Cook Islander", + "languages": [ + "English", + "Cook Islands Maori" + ], + "tld": [ + ".ck" + ], + "unMember": false, + "independent": false }, { "countryName": "Costa Rica", @@ -2384,14 +5896,54 @@ } ], "regions": [ - { "name": "Alajuela", "shortCode": "2" }, - { "name": "Cartago", "shortCode": "3" }, - { "name": "Guanacaste", "shortCode": "5" }, - { "name": "Heredia", "shortCode": "4" }, - { "name": "Limón", "shortCode": "7" }, - { "name": "Puntarenas", "shortCode": "6" }, - { "name": "San José", "shortCode": "1" } - ] + { + "name": "Alajuela", + "shortCode": "2" + }, + { + "name": "Cartago", + "shortCode": "3" + }, + { + "name": "Guanacaste", + "shortCode": "5" + }, + { + "name": "Heredia", + "shortCode": "4" + }, + { + "name": "Limón", + "shortCode": "7" + }, + { + "name": "Puntarenas", + "shortCode": "6" + }, + { + "name": "San José", + "shortCode": "1" + } + ], + "capital": "San José", + "population": 5265575, + "area": 51179.92, + "continent": "North America", + "officialName": "Republic of Costa Rica", + "nativeName": "República de Costa Rica", + "demonym": "Costa Ricans", + "languages": [ + "Spanish" + ], + "tld": [ + ".cr" + ], + "borders": [ + "PA", + "NI" + ], + "unMember": true, + "independent": true }, { "countryName": "Côte d'Ivoire, Republic of", @@ -2410,26 +5962,105 @@ } ], "regions": [ - { "name": "Agnéby", "shortCode": "16" }, - { "name": "Bafing", "shortCode": "17" }, - { "name": "Bas-Sassandra", "shortCode": "09" }, - { "name": "Denguélé", "shortCode": "10" }, - { "name": "Dix-Huit Montagnes", "shortCode": "06" }, - { "name": "Fromager", "shortCode": "18" }, - { "name": "Haut-Sassandra", "shortCode": "02" }, - { "name": "Lacs", "shortCode": "07" }, - { "name": "Lagunes", "shortCode": "01" }, - { "name": "Marahoué", "shortCode": "12" }, - { "name": "Moyen-Cavally", "shortCode": "19" }, - { "name": "Moyen-Comoé", "shortCode": "05" }, - { "name": "N'zi-Comoé", "shortCode": "11" }, - { "name": "Savanes", "shortCode": "03" }, - { "name": "Sud-Bandama", "shortCode": "15" }, - { "name": "Sud-Comoé", "shortCode": "13" }, - { "name": "Vallée du Bandama", "shortCode": "04" }, - { "name": "Worodougou", "shortCode": "14" }, - { "name": "Zanzan", "shortCode": "08" } - ] + { + "name": "Agnéby", + "shortCode": "16" + }, + { + "name": "Bafing", + "shortCode": "17" + }, + { + "name": "Bas-Sassandra", + "shortCode": "09" + }, + { + "name": "Denguélé", + "shortCode": "10" + }, + { + "name": "Dix-Huit Montagnes", + "shortCode": "06" + }, + { + "name": "Fromager", + "shortCode": "18" + }, + { + "name": "Haut-Sassandra", + "shortCode": "02" + }, + { + "name": "Lacs", + "shortCode": "07" + }, + { + "name": "Lagunes", + "shortCode": "01" + }, + { + "name": "Marahoué", + "shortCode": "12" + }, + { + "name": "Moyen-Cavally", + "shortCode": "19" + }, + { + "name": "Moyen-Comoé", + "shortCode": "05" + }, + { + "name": "N'zi-Comoé", + "shortCode": "11" + }, + { + "name": "Savanes", + "shortCode": "03" + }, + { + "name": "Sud-Bandama", + "shortCode": "15" + }, + { + "name": "Sud-Comoé", + "shortCode": "13" + }, + { + "name": "Vallée du Bandama", + "shortCode": "04" + }, + { + "name": "Worodougou", + "shortCode": "14" + }, + { + "name": "Zanzan", + "shortCode": "08" + } + ], + "capital": "Yamoussoukro", + "population": 31165654, + "area": 322463, + "continent": "Africa", + "officialName": "Republic of Côte d’Ivoire", + "nativeName": "République de Côte d'Ivoire", + "demonym": "Ivorian", + "languages": [ + "French" + ], + "tld": [ + ".ci" + ], + "borders": [ + "GH", + "ML", + "BF", + "GN", + "LR" + ], + "unMember": true, + "independent": true }, { "countryName": "Croatia", @@ -2448,28 +6079,112 @@ } ], "regions": [ - { "name": "Bjelovarsko-Bilogorska Županija", "shortCode": "07" }, - { "name": "Brodsko-Posavska Županija", "shortCode": "12" }, - { "name": "Dubrovačko-Neretvanska Županija", "shortCode": "19" }, - { "name": "Grad Zagreb", "shortCode": "21" }, - { "name": "Istarska Županija", "shortCode": "18" }, - { "name": "Karlovačka Županija", "shortCode": "04" }, - { "name": "Koprivničko-Krizevačka Županija", "shortCode": "06" }, - { "name": "Krapinsko-Zagorska Županija", "shortCode": "02" }, - { "name": "Ličko-Senjska Županija", "shortCode": "09" }, - { "name": "Međimurska Županija", "shortCode": "20" }, - { "name": "Osječko-Baranjska Županija", "shortCode": "14" }, - { "name": "Požeško-Slavonska Županija", "shortCode": "11" }, - { "name": "Primorsko-Goranska Županija", "shortCode": "08" }, - { "name": "Sisačko-Moslavačka Županija", "shortCode": "03" }, - { "name": "Splitsko-Dalmatinska Županija", "shortCode": "17" }, - { "name": "Sibensko-Kninska Županija", "shortCode": "15" }, - { "name": "Varaždinska Županija", "shortCode": "05" }, - { "name": "Virovitičko-Podravska Županija", "shortCode": "10" }, - { "name": "Vukovarsko-Srijemska Županija", "shortCode": "16" }, - { "name": "Zadarska Županija", "shortCode": "13" }, - { "name": "Zagrebacka Zupanija", "shortCode": "01" } - ] + { + "name": "Bjelovarsko-Bilogorska Županija", + "shortCode": "07" + }, + { + "name": "Brodsko-Posavska Županija", + "shortCode": "12" + }, + { + "name": "Dubrovačko-Neretvanska Županija", + "shortCode": "19" + }, + { + "name": "Grad Zagreb", + "shortCode": "21" + }, + { + "name": "Istarska Županija", + "shortCode": "18" + }, + { + "name": "Karlovačka Županija", + "shortCode": "04" + }, + { + "name": "Koprivničko-Krizevačka Županija", + "shortCode": "06" + }, + { + "name": "Krapinsko-Zagorska Županija", + "shortCode": "02" + }, + { + "name": "Ličko-Senjska Županija", + "shortCode": "09" + }, + { + "name": "Međimurska Županija", + "shortCode": "20" + }, + { + "name": "Osječko-Baranjska Županija", + "shortCode": "14" + }, + { + "name": "Požeško-Slavonska Županija", + "shortCode": "11" + }, + { + "name": "Primorsko-Goranska Županija", + "shortCode": "08" + }, + { + "name": "Sisačko-Moslavačka Županija", + "shortCode": "03" + }, + { + "name": "Splitsko-Dalmatinska Županija", + "shortCode": "17" + }, + { + "name": "Sibensko-Kninska Županija", + "shortCode": "15" + }, + { + "name": "Varaždinska Županija", + "shortCode": "05" + }, + { + "name": "Virovitičko-Podravska Županija", + "shortCode": "10" + }, + { + "name": "Vukovarsko-Srijemska Županija", + "shortCode": "16" + }, + { + "name": "Zadarska Županija", + "shortCode": "13" + }, + { + "name": "Zagrebacka Zupanija", + "shortCode": "01" + } + ], + "capital": "Zagreb", + "population": 3871833, + "area": 56594, + "continent": "Europe", + "nativeName": "Hrvatska", + "demonym": "Croatian", + "languages": [ + "Croatian" + ], + "tld": [ + ".hr" + ], + "borders": [ + "HU", + "SI", + "BA", + "ME", + "RS" + ], + "unMember": true, + "independent": true }, { "countryName": "Cuba", @@ -2488,23 +6203,90 @@ } ], "regions": [ - { "name": "Artemisa", "shortCode": "15" }, - { "name": "Camagüey", "shortCode": "09" }, - { "name": "Ciego de Ávila", "shortCode": "08" }, - { "name": "Cienfuegos", "shortCode": "06" }, - { "name": "Granma", "shortCode": "12" }, - { "name": "Guantánamo", "shortCode": "14" }, - { "name": "Holguín", "shortCode": "11" }, - { "name": "Isla de la Juventud", "shortCode": "99" }, - { "name": "La Habana", "shortCode": "03" }, - { "name": "Las Tunas", "shortCode": "10" }, - { "name": "Matanzas", "shortCode": "04" }, - { "name": "Mayabeque", "shortCode": "16" }, - { "name": "Pinar del Río", "shortCode": "01" }, - { "name": "Sancti Spíritus", "shortCode": "07" }, - { "name": "Santiago de Cuba", "shortCode": "13" }, - { "name": "Villa Clara", "shortCode": "05" } - ] + { + "name": "Artemisa", + "shortCode": "15" + }, + { + "name": "Camagüey", + "shortCode": "09" + }, + { + "name": "Ciego de Ávila", + "shortCode": "08" + }, + { + "name": "Cienfuegos", + "shortCode": "06" + }, + { + "name": "Granma", + "shortCode": "12" + }, + { + "name": "Guantánamo", + "shortCode": "14" + }, + { + "name": "Holguín", + "shortCode": "11" + }, + { + "name": "Isla de la Juventud", + "shortCode": "99" + }, + { + "name": "La Habana", + "shortCode": "03" + }, + { + "name": "Las Tunas", + "shortCode": "10" + }, + { + "name": "Matanzas", + "shortCode": "04" + }, + { + "name": "Mayabeque", + "shortCode": "16" + }, + { + "name": "Pinar del Río", + "shortCode": "01" + }, + { + "name": "Sancti Spíritus", + "shortCode": "07" + }, + { + "name": "Santiago de Cuba", + "shortCode": "13" + }, + { + "name": "Villa Clara", + "shortCode": "05" + } + ], + "capital": "Havana", + "population": 10985974, + "area": 109884, + "continent": "North America", + "officialName": "Republic of Cuba", + "nativeName": "República de Cuba", + "demonym": "Cuban", + "languages": [ + "Spanish" + ], + "tld": [ + ".cu" + ], + "borders": [ + "US", + "GB" + ], + "unMember": true, + "independent": true }, { "countryName": "Curaçao", @@ -2522,7 +6304,29 @@ "tzName": "Atlantic Standard Time" } ], - "regions": [{ "name": "Curaçao", "shortCode": "CW" }] + "regions": [ + { + "name": "Curaçao", + "shortCode": "CW" + } + ], + "capital": "Willemstad", + "population": 152849, + "area": 444, + "continent": "North America", + "officialName": "Curaçao", + "nativeName": "Curaçao", + "demonym": "Curaçaoan", + "languages": [ + "English", + "Dutch", + "Papiamento" + ], + "tld": [ + ".cw" + ], + "unMember": false, + "independent": false }, { "countryName": "Cyprus", @@ -2548,13 +6352,52 @@ } ], "regions": [ - { "name": "Ammochostos", "shortCode": "04" }, - { "name": "Keryneia", "shortCode": "05" }, - { "name": "Larnaka", "shortCode": "03" }, - { "name": "Lefkosia", "shortCode": "01" }, - { "name": "Lemesos", "shortCode": "02" }, - { "name": "Pafos", "shortCode": "05" } - ] + { + "name": "Ammochostos", + "shortCode": "04" + }, + { + "name": "Keryneia", + "shortCode": "05" + }, + { + "name": "Larnaka", + "shortCode": "03" + }, + { + "name": "Lefkosia", + "shortCode": "01" + }, + { + "name": "Lemesos", + "shortCode": "02" + }, + { + "name": "Pafos", + "shortCode": "05" + } + ], + "capital": "Nicosia", + "area": 9242.45, + "continent": "Europe", + "officialName": "Republic of Cyprus", + "nativeName": "Κυπριακή Δημοκρατία", + "demonym": "Cypriot", + "languages": [ + "Turkish", + "Modern Greek", + "Greek" + ], + "tld": [ + ".cy" + ], + "borders": [ + "TR", + "GB", + "IL" + ], + "unMember": true, + "independent": true }, { "countryName": "Czech Republic", @@ -2573,21 +6416,84 @@ } ], "regions": [ - { "name": "Hlavní město Praha", "shortCode": "PR" }, - { "name": "Jihočeský kraj", "shortCode": "JC" }, - { "name": "Jihomoravský kraj", "shortCode": "JM" }, - { "name": "Karlovarský kraj", "shortCode": "KA" }, - { "name": "Královéhradecký kraj", "shortCode": "KR" }, - { "name": "Liberecký kraj", "shortCode": "LI" }, - { "name": "Moravskoslezský kraj", "shortCode": "MO" }, - { "name": "Olomoucký kraj", "shortCode": "OL" }, - { "name": "Pardubický kraj", "shortCode": "PA" }, - { "name": "Plzeňský kraj", "shortCode": "PL" }, - { "name": "Středočeský kraj", "shortCode": "ST" }, - { "name": "Ústecký kraj", "shortCode": "US" }, - { "name": "Vysočina", "shortCode": "VY" }, - { "name": "Zlínský kraj", "shortCode": "ZL" } - ] + { + "name": "Hlavní město Praha", + "shortCode": "PR" + }, + { + "name": "Jihočeský kraj", + "shortCode": "JC" + }, + { + "name": "Jihomoravský kraj", + "shortCode": "JM" + }, + { + "name": "Karlovarský kraj", + "shortCode": "KA" + }, + { + "name": "Královéhradecký kraj", + "shortCode": "KR" + }, + { + "name": "Liberecký kraj", + "shortCode": "LI" + }, + { + "name": "Moravskoslezský kraj", + "shortCode": "MO" + }, + { + "name": "Olomoucký kraj", + "shortCode": "OL" + }, + { + "name": "Pardubický kraj", + "shortCode": "PA" + }, + { + "name": "Plzeňský kraj", + "shortCode": "PL" + }, + { + "name": "Středočeský kraj", + "shortCode": "ST" + }, + { + "name": "Ústecký kraj", + "shortCode": "US" + }, + { + "name": "Vysočina", + "shortCode": "VY" + }, + { + "name": "Zlínský kraj", + "shortCode": "ZL" + } + ], + "capital": "Prague", + "population": 10909500, + "area": 78871, + "continent": "Europe", + "officialName": "Czech Republic", + "nativeName": "Česko", + "demonym": "Czech", + "languages": [ + "Czech" + ], + "tld": [ + ".cz" + ], + "borders": [ + "PL", + "AT", + "DE", + "SK" + ], + "unMember": true, + "independent": true }, { "countryName": "Denmark", @@ -2606,29 +6512,93 @@ } ], "regions": [ - { "name": "Hovedstaden", "shortCode": "84" }, - { "name": "Kujalleq", "shortCode": "GL-KU" }, - { "name": "Midtjylland", "shortCode": "82" }, - { "name": "Norderøerne", "shortCode": "FO-01" }, - { "name": "Nordjylland", "shortCode": "81" }, - { "name": "Østerø", "shortCode": "FO-06" }, - { "name": "Qaasuitsup", "shortCode": "GL-QA" }, - { "name": "Qeqqata", "shortCode": "GL-QE" }, - { "name": "Sandø", "shortCode": "FO-02" }, - { "name": "Sermersooq", "shortCode": "GL-SM" }, - { "name": "Sjælland", "shortCode": "85" }, - { "name": "Strømø", "shortCode": "FO-03" }, - { "name": "Suderø", "shortCode": "FO-04" }, - { "name": "Syddanmark", "shortCode": "83" }, - { "name": "Vågø", "shortCode": "FO-05" } - ] - }, - { - "countryName": "Djibouti", - "countryShortCode": "DJ", - "phoneCode": "+253", - "currencyCode": "DJF", - "latitude": "11.50000000", + { + "name": "Hovedstaden", + "shortCode": "84" + }, + { + "name": "Kujalleq", + "shortCode": "GL-KU" + }, + { + "name": "Midtjylland", + "shortCode": "82" + }, + { + "name": "Norderøerne", + "shortCode": "FO-01" + }, + { + "name": "Nordjylland", + "shortCode": "81" + }, + { + "name": "Østerø", + "shortCode": "FO-06" + }, + { + "name": "Qaasuitsup", + "shortCode": "GL-QA" + }, + { + "name": "Qeqqata", + "shortCode": "GL-QE" + }, + { + "name": "Sandø", + "shortCode": "FO-02" + }, + { + "name": "Sermersooq", + "shortCode": "GL-SM" + }, + { + "name": "Sjælland", + "shortCode": "85" + }, + { + "name": "Strømø", + "shortCode": "FO-03" + }, + { + "name": "Suderø", + "shortCode": "FO-04" + }, + { + "name": "Syddanmark", + "shortCode": "83" + }, + { + "name": "Vågø", + "shortCode": "FO-05" + } + ], + "capital": "Copenhagen", + "population": 5822863, + "area": 42925.46, + "continent": "Europe", + "nativeName": "Danmark", + "demonym": "Dane", + "languages": [ + "Danish" + ], + "tld": [ + ".dk" + ], + "borders": [ + "NO", + "SE", + "DE" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Djibouti", + "countryShortCode": "DJ", + "phoneCode": "+253", + "currencyCode": "DJF", + "latitude": "11.50000000", "longitude": "43.00000000", "timezones": [ { @@ -2640,12 +6610,47 @@ } ], "regions": [ - { "name": "Ali Sabieh", "shortCode": "AS" }, - { "name": "Arta", "shortCode": "AR" }, - { "name": "Dikhil", "shortCode": "DI" }, - { "name": "Obock", "shortCode": "OB" }, - { "name": "Tadjourah", "shortCode": "TA" } - ] + { + "name": "Ali Sabieh", + "shortCode": "AS" + }, + { + "name": "Arta", + "shortCode": "AR" + }, + { + "name": "Dikhil", + "shortCode": "DI" + }, + { + "name": "Obock", + "shortCode": "OB" + }, + { + "name": "Tadjourah", + "shortCode": "TA" + } + ], + "capital": "Djibouti", + "population": 1152944, + "area": 23200, + "continent": "Africa", + "nativeName": "Jabuuti", + "demonym": "Djiboutian", + "languages": [ + "French", + "Arabic" + ], + "tld": [ + ".dj" + ], + "borders": [ + "ET", + "ER", + "SO" + ], + "unMember": true, + "independent": true }, { "countryName": "Dominica", @@ -2664,17 +6669,65 @@ } ], "regions": [ - { "name": "Saint Andrew Parish", "shortCode": "02" }, - { "name": "Saint David Parish", "shortCode": "03" }, - { "name": "Saint George Parish", "shortCode": "04" }, - { "name": "Saint John Parish", "shortCode": "05" }, - { "name": "Saint Joseph Parish", "shortCode": "06" }, - { "name": "Saint Luke Parish", "shortCode": "07" }, - { "name": "Saint Mark Parish", "shortCode": "08" }, - { "name": "Saint Patrick Parish", "shortCode": "09" }, - { "name": "Saint Paul Parish", "shortCode": "10" }, - { "name": "Saint Peter Parish", "shortCode": "11" } - ] + { + "name": "Saint Andrew Parish", + "shortCode": "02" + }, + { + "name": "Saint David Parish", + "shortCode": "03" + }, + { + "name": "Saint George Parish", + "shortCode": "04" + }, + { + "name": "Saint John Parish", + "shortCode": "05" + }, + { + "name": "Saint Joseph Parish", + "shortCode": "06" + }, + { + "name": "Saint Luke Parish", + "shortCode": "07" + }, + { + "name": "Saint Mark Parish", + "shortCode": "08" + }, + { + "name": "Saint Patrick Parish", + "shortCode": "09" + }, + { + "name": "Saint Paul Parish", + "shortCode": "10" + }, + { + "name": "Saint Peter Parish", + "shortCode": "11" + } + ], + "capital": "Roseau", + "population": 74656, + "area": 751.096551, + "continent": "North America", + "officialName": "Commonwealth of Dominica", + "nativeName": "Commonwealth of Dominica", + "demonym": "Dominican", + "languages": [ + "English" + ], + "tld": [ + ".dm" + ], + "borders": [ + "VE" + ], + "unMember": true, + "independent": true }, { "countryName": "Dominican Republic", @@ -2693,16 +6746,63 @@ } ], "regions": [ - { "name": "Cibao Central", "shortCode": "02" }, - { "name": "Del Valle", "shortCode": "37" }, - { "name": "Distrito Nacional", "shortCode": "01" }, - { "name": "Enriquillo", "shortCode": "38" }, - { "name": "Norcentral", "shortCode": "04" }, - { "name": "Nordeste", "shortCode": "34" }, - { "name": "Noroeste", "shortCode": "34" }, - { "name": "Norte", "shortCode": "35" }, - { "name": "Valdesia", "shortCode": "42" } - ] + { + "name": "Cibao Central", + "shortCode": "02" + }, + { + "name": "Del Valle", + "shortCode": "37" + }, + { + "name": "Distrito Nacional", + "shortCode": "01" + }, + { + "name": "Enriquillo", + "shortCode": "38" + }, + { + "name": "Norcentral", + "shortCode": "04" + }, + { + "name": "Nordeste", + "shortCode": "34" + }, + { + "name": "Noroeste", + "shortCode": "34" + }, + { + "name": "Norte", + "shortCode": "35" + }, + { + "name": "Valdesia", + "shortCode": "42" + } + ], + "capital": "Santo Domingo", + "population": 10760028, + "area": 48670.82, + "continent": "North America", + "nativeName": "República Dominicana", + "demonym": "Dominican", + "languages": [ + "Spanish" + ], + "tld": [ + ".do" + ], + "borders": [ + "US", + "VE", + "HT", + "TC" + ], + "unMember": true, + "independent": true }, { "countryName": "Ecuador", @@ -2728,31 +6828,123 @@ } ], "regions": [ - { "name": "Azuay", "shortCode": "A" }, - { "name": "Bolívar", "shortCode": "B" }, - { "name": "Cañar", "shortCode": "F" }, - { "name": "Carchi", "shortCode": "C" }, - { "name": "Chimborazo", "shortCode": "H" }, - { "name": "Cotopaxi", "shortCode": "X" }, - { "name": "El Oro", "shortCode": "O" }, - { "name": "Esmeraldas", "shortCode": "E" }, - { "name": "Galápagos", "shortCode": "W" }, - { "name": "Guayas", "shortCode": "G" }, - { "name": "Imbabura", "shortCode": "I" }, - { "name": "Loja", "shortCode": "L" }, - { "name": "Los Ríos", "shortCode": "R" }, - { "name": "Manabí", "shortCode": "M" }, - { "name": "Morona-Santiago", "shortCode": "S" }, - { "name": "Napo", "shortCode": "N" }, - { "name": "Orellana", "shortCode": "D" }, - { "name": "Pastaza", "shortCode": "Y" }, - { "name": "Pichincha", "shortCode": "P" }, - { "name": "Santa Elena", "shortCode": "SE" }, - { "name": "Santo Domingo de los Tsáchilas", "shortCode": "SD" }, - { "name": "Sucumbíos", "shortCode": "U" }, - { "name": "Tungurahua", "shortCode": "T" }, - { "name": "Zamora-Chinchipe", "shortCode": "Z" } - ] + { + "name": "Azuay", + "shortCode": "A" + }, + { + "name": "Bolívar", + "shortCode": "B" + }, + { + "name": "Cañar", + "shortCode": "F" + }, + { + "name": "Carchi", + "shortCode": "C" + }, + { + "name": "Chimborazo", + "shortCode": "H" + }, + { + "name": "Cotopaxi", + "shortCode": "X" + }, + { + "name": "El Oro", + "shortCode": "O" + }, + { + "name": "Esmeraldas", + "shortCode": "E" + }, + { + "name": "Galápagos", + "shortCode": "W" + }, + { + "name": "Guayas", + "shortCode": "G" + }, + { + "name": "Imbabura", + "shortCode": "I" + }, + { + "name": "Loja", + "shortCode": "L" + }, + { + "name": "Los Ríos", + "shortCode": "R" + }, + { + "name": "Manabí", + "shortCode": "M" + }, + { + "name": "Morona-Santiago", + "shortCode": "S" + }, + { + "name": "Napo", + "shortCode": "N" + }, + { + "name": "Orellana", + "shortCode": "D" + }, + { + "name": "Pastaza", + "shortCode": "Y" + }, + { + "name": "Pichincha", + "shortCode": "P" + }, + { + "name": "Santa Elena", + "shortCode": "SE" + }, + { + "name": "Santo Domingo de los Tsáchilas", + "shortCode": "SD" + }, + { + "name": "Sucumbíos", + "shortCode": "U" + }, + { + "name": "Tungurahua", + "shortCode": "T" + }, + { + "name": "Zamora-Chinchipe", + "shortCode": "Z" + } + ], + "capital": "Quito", + "population": 16938986, + "area": 257204.27, + "continent": "South America", + "nativeName": "República del Ecuador", + "demonym": "Ecuadoran", + "languages": [ + "Spanish", + "Shuar", + "Northern Quichua" + ], + "tld": [ + ".ec" + ], + "borders": [ + "PE", + "CO" + ], + "unMember": true, + "independent": true }, { "countryName": "Egypt", @@ -2771,36 +6963,144 @@ } ], "regions": [ - { "name": "Alexandria", "shortCode": "ALX" }, - { "name": "Aswan", "shortCode": "ASN" }, - { "name": "Asyout", "shortCode": "AST" }, - { "name": "Bani Sueif", "shortCode": "BNS" }, - { "name": "Beheira", "shortCode": "BH" }, - { "name": "Cairo", "shortCode": "C" }, - { "name": "Daqahlia", "shortCode": "DK" }, - { "name": "Dumiat", "shortCode": "DT" }, - { "name": "El Bahr El Ahmar", "shortCode": "BA" }, - { "name": "El Ismailia", "shortCode": "IS" }, - { "name": "El Suez", "shortCode": "SUZ" }, - { "name": "El Wadi El Gedeed", "shortCode": "WAD" }, - { "name": "Fayoum", "shortCode": "FYM" }, - { "name": "Gharbia", "shortCode": "GH" }, - { "name": "Giza", "shortCode": "SUZ" }, - { "name": "Helwan", "shortCode": "HU" }, - { "name": "Kafr El Sheikh", "shortCode": "KFS" }, - { "name": "Luxor", "shortCode": "LX" }, - { "name": "Matrouh", "shortCode": "MT" }, - { "name": "Menia", "shortCode": "MN" }, - { "name": "Menofia", "shortCode": "MNF" }, - { "name": "North Sinai", "shortCode": "SIN" }, - { "name": "Port Said", "shortCode": "PTS" }, - { "name": "Qalubia", "shortCode": "KB" }, - { "name": "Qena", "shortCode": "KN" }, - { "name": "Sharqia", "shortCode": "SHR" }, - { "name": "Sixth of October", "shortCode": "SU" }, - { "name": "Sohag", "shortCode": "SHG" }, - { "name": "South Sinai", "shortCode": "JS" } - ] + { + "name": "Alexandria", + "shortCode": "ALX" + }, + { + "name": "Aswan", + "shortCode": "ASN" + }, + { + "name": "Asyout", + "shortCode": "AST" + }, + { + "name": "Bani Sueif", + "shortCode": "BNS" + }, + { + "name": "Beheira", + "shortCode": "BH" + }, + { + "name": "Cairo", + "shortCode": "C" + }, + { + "name": "Daqahlia", + "shortCode": "DK" + }, + { + "name": "Dumiat", + "shortCode": "DT" + }, + { + "name": "El Bahr El Ahmar", + "shortCode": "BA" + }, + { + "name": "El Ismailia", + "shortCode": "IS" + }, + { + "name": "El Suez", + "shortCode": "SUZ" + }, + { + "name": "El Wadi El Gedeed", + "shortCode": "WAD" + }, + { + "name": "Fayoum", + "shortCode": "FYM" + }, + { + "name": "Gharbia", + "shortCode": "GH" + }, + { + "name": "Giza", + "shortCode": "SUZ" + }, + { + "name": "Helwan", + "shortCode": "HU" + }, + { + "name": "Kafr El Sheikh", + "shortCode": "KFS" + }, + { + "name": "Luxor", + "shortCode": "LX" + }, + { + "name": "Matrouh", + "shortCode": "MT" + }, + { + "name": "Menia", + "shortCode": "MN" + }, + { + "name": "Menofia", + "shortCode": "MNF" + }, + { + "name": "North Sinai", + "shortCode": "SIN" + }, + { + "name": "Port Said", + "shortCode": "PTS" + }, + { + "name": "Qalubia", + "shortCode": "KB" + }, + { + "name": "Qena", + "shortCode": "KN" + }, + { + "name": "Sharqia", + "shortCode": "SHR" + }, + { + "name": "Sixth of October", + "shortCode": "SU" + }, + { + "name": "Sohag", + "shortCode": "SHG" + }, + { + "name": "South Sinai", + "shortCode": "JS" + } + ], + "capital": "Cairo", + "population": 107476864, + "area": 1010407.87, + "continent": "Africa", + "nativeName": "Egypt", + "demonym": "Egyptian", + "languages": [ + "Arabic" + ], + "tld": [ + ".مصر", + ".eg" + ], + "borders": [ + "IL", + "LY", + "SD", + "PS" + ], + "unMember": true, + "independent": true }, { "countryName": "El Salvador", @@ -2819,21 +7119,81 @@ } ], "regions": [ - { "name": "Ahuachapán", "shortCode": "AH" }, - { "name": "Cabañas", "shortCode": "CA" }, - { "name": "Cuscatlán", "shortCode": "CU" }, - { "name": "Chalatenango", "shortCode": "CH" }, - { "name": "La Libertad", "shortCode": "LI" }, - { "name": "La Paz", "shortCode": "PA" }, - { "name": "La Unión", "shortCode": "UN" }, - { "name": "Morazán", "shortCode": "MO" }, - { "name": "San Miguel", "shortCode": "SM" }, - { "name": "San Salvador", "shortCode": "SS" }, - { "name": "Santa Ana", "shortCode": "SA" }, - { "name": "San Vicente", "shortCode": "SV" }, - { "name": "Sonsonate", "shortCode": "SO" }, - { "name": "Usulután", "shortCode": "US" } - ] + { + "name": "Ahuachapán", + "shortCode": "AH" + }, + { + "name": "Cabañas", + "shortCode": "CA" + }, + { + "name": "Cuscatlán", + "shortCode": "CU" + }, + { + "name": "Chalatenango", + "shortCode": "CH" + }, + { + "name": "La Libertad", + "shortCode": "LI" + }, + { + "name": "La Paz", + "shortCode": "PA" + }, + { + "name": "La Unión", + "shortCode": "UN" + }, + { + "name": "Morazán", + "shortCode": "MO" + }, + { + "name": "San Miguel", + "shortCode": "SM" + }, + { + "name": "San Salvador", + "shortCode": "SS" + }, + { + "name": "Santa Ana", + "shortCode": "SA" + }, + { + "name": "San Vicente", + "shortCode": "SV" + }, + { + "name": "Sonsonate", + "shortCode": "SO" + }, + { + "name": "Usulután", + "shortCode": "US" + } + ], + "capital": "San Salvador", + "population": 6029976, + "area": 21041, + "continent": "North America", + "nativeName": "República de El Salvador", + "demonym": "Salvadoran", + "languages": [ + "Spanish" + ], + "tld": [ + ".sv" + ], + "borders": [ + "GT", + "HN" + ], + "unMember": true, + "independent": true }, { "countryName": "Equatorial Guinea", @@ -2852,23 +7212,65 @@ } ], "regions": [ - { "name": "Annobón", "shortCode": "AN" }, - { "name": "Bioko Norte", "shortCode": "BN" }, - { "name": "Bioko Sur", "shortCode": "BS" }, - { "name": "Centro Sur", "shortCode": "CS" }, - { "name": "Kié-Ntem", "shortCode": "KN" }, - { "name": "Litoral", "shortCode": "LI" }, - { "name": "Wele-Nzas", "shortCode": "WN" } - ] - }, - { - "countryName": "Eritrea", - "countryShortCode": "ER", - "phoneCode": "+291", - "currencyCode": "ERN", - "latitude": "15.00000000", - "longitude": "39.00000000", - "timezones": [ + { + "name": "Annobón", + "shortCode": "AN" + }, + { + "name": "Bioko Norte", + "shortCode": "BN" + }, + { + "name": "Bioko Sur", + "shortCode": "BS" + }, + { + "name": "Centro Sur", + "shortCode": "CS" + }, + { + "name": "Kié-Ntem", + "shortCode": "KN" + }, + { + "name": "Litoral", + "shortCode": "LI" + }, + { + "name": "Wele-Nzas", + "shortCode": "WN" + } + ], + "capital": "Ciudad de la Paz", + "population": 1847549, + "area": 28051, + "continent": "Africa", + "nativeName": "República de Guinea Ecuatorial", + "demonym": "Equatoguinean", + "languages": [ + "French", + "Spanish", + "Portuguese" + ], + "tld": [ + ".gq" + ], + "borders": [ + "GA", + "CM", + "ST" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Eritrea", + "countryShortCode": "ER", + "phoneCode": "+291", + "currencyCode": "ERN", + "latitude": "15.00000000", + "longitude": "39.00000000", + "timezones": [ { "zoneName": "Africa/Asmara", "gmtOffset": 10800, @@ -2878,13 +7280,52 @@ } ], "regions": [ - { "name": "Anseba", "shortCode": "AN" }, - { "name": "Debub", "shortCode": "DU" }, - { "name": "Debub-Keih-Bahri", "shortCode": "DK" }, - { "name": "Gash-Barka", "shortCode": "GB" }, - { "name": "Maekel", "shortCode": "MA" }, - { "name": "Semien-Keih-Bahri", "shortCode": "SK" } - ] + { + "name": "Anseba", + "shortCode": "AN" + }, + { + "name": "Debub", + "shortCode": "DU" + }, + { + "name": "Debub-Keih-Bahri", + "shortCode": "DK" + }, + { + "name": "Gash-Barka", + "shortCode": "GB" + }, + { + "name": "Maekel", + "shortCode": "MA" + }, + { + "name": "Semien-Keih-Bahri", + "shortCode": "SK" + } + ], + "capital": "Asmara", + "population": 3497000, + "area": 117600, + "continent": "Africa", + "nativeName": "إرترة", + "demonym": "Eritrean", + "languages": [ + "English", + "Arabic", + "Tigrinya" + ], + "tld": [ + ".er" + ], + "borders": [ + "ET", + "DJ", + "SD" + ], + "unMember": true, + "independent": true }, { "countryName": "Estonia", @@ -2903,22 +7344,85 @@ } ], "regions": [ - { "name": "Harjumaa (Tallinn)", "shortCode": "37" }, - { "name": "Hiiumaa (Kardla)", "shortCode": "39" }, - { "name": "Ida-Virumaa (Johvi)", "shortCode": "44" }, - { "name": "Järvamaa (Paide)", "shortCode": "41" }, - { "name": "Jõgevamaa (Jogeva)", "shortCode": "49" }, - { "name": "Läänemaa", "shortCode": "57" }, - { "name": "Lääne-Virumaa (Rakvere)", "shortCode": "59" }, - { "name": "Pärnumaa (Parnu)", "shortCode": "67" }, - { "name": "Põlvamaa (Polva)", "shortCode": "65" }, - { "name": "Raplamaa (Rapla)", "shortCode": "70" }, - { "name": "Saaremaa (Kuessaare)", "shortCode": "74" }, - { "name": "Tartumaa (Tartu)", "shortCode": "78" }, - { "name": "Valgamaa (Valga)", "shortCode": "82" }, - { "name": "Viljandimaa (Viljandi)", "shortCode": "84" }, - { "name": "Võrumaa (Voru)", "shortCode": "86" } - ] + { + "name": "Harjumaa (Tallinn)", + "shortCode": "37" + }, + { + "name": "Hiiumaa (Kardla)", + "shortCode": "39" + }, + { + "name": "Ida-Virumaa (Johvi)", + "shortCode": "44" + }, + { + "name": "Järvamaa (Paide)", + "shortCode": "41" + }, + { + "name": "Jõgevamaa (Jogeva)", + "shortCode": "49" + }, + { + "name": "Läänemaa", + "shortCode": "57" + }, + { + "name": "Lääne-Virumaa (Rakvere)", + "shortCode": "59" + }, + { + "name": "Pärnumaa (Parnu)", + "shortCode": "67" + }, + { + "name": "Põlvamaa (Polva)", + "shortCode": "65" + }, + { + "name": "Raplamaa (Rapla)", + "shortCode": "70" + }, + { + "name": "Saaremaa (Kuessaare)", + "shortCode": "74" + }, + { + "name": "Tartumaa (Tartu)", + "shortCode": "78" + }, + { + "name": "Valgamaa (Valga)", + "shortCode": "82" + }, + { + "name": "Viljandimaa (Viljandi)", + "shortCode": "84" + }, + { + "name": "Võrumaa (Voru)", + "shortCode": "86" + } + ], + "capital": "Tallinn", + "population": 1369995, + "area": 45335, + "continent": "Europe", + "nativeName": "Eesti Vabariik", + "demonym": "Estonian", + "languages": [ + "Estonian" + ], + "tld": [ + ".ee" + ], + "borders": [ + "RU", + "LV" + ], + "unMember": true, + "independent": true }, { "countryName": "Ethiopia", @@ -2937,21 +7441,73 @@ } ], "regions": [ - { "name": "Addis Ababa", "shortCode": "AA" }, - { "name": "Afar", "shortCode": "AF" }, - { "name": "Amhara", "shortCode": "AM" }, - { "name": "Benshangul-Gumaz", "shortCode": "BE" }, - { "name": "Dire Dawa", "shortCode": "DD" }, - { "name": "Gambela", "shortCode": "GA" }, - { "name": "Harari", "shortCode": "HA" }, - { "name": "Oromia", "shortCode": "OR" }, - { "name": "Somali", "shortCode": "SO" }, + { + "name": "Addis Ababa", + "shortCode": "AA" + }, + { + "name": "Afar", + "shortCode": "AF" + }, + { + "name": "Amhara", + "shortCode": "AM" + }, + { + "name": "Benshangul-Gumaz", + "shortCode": "BE" + }, + { + "name": "Dire Dawa", + "shortCode": "DD" + }, + { + "name": "Gambela", + "shortCode": "GA" + }, + { + "name": "Harari", + "shortCode": "HA" + }, + { + "name": "Oromia", + "shortCode": "OR" + }, + { + "name": "Somali", + "shortCode": "SO" + }, { "name": "Southern Nations Nationalities and People's Region", "shortCode": "SN" }, - { "name": "Tigray", "shortCode": "TI" } - ] + { + "name": "Tigray", + "shortCode": "TI" + } + ], + "capital": "Addis Ababa", + "population": 128691692, + "area": 1104300, + "continent": "Africa", + "nativeName": "የኢትዮጵያ ፌዴራላዊ ዲሞክራሲያዊ ሪፐብሊክ", + "demonym": "Ethiopian", + "languages": [ + "Amharic" + ], + "tld": [ + ".et" + ], + "borders": [ + "KE", + "SS", + "DJ", + "ER", + "SO", + "SD" + ], + "unMember": true, + "independent": true }, { "countryName": "Falkland Islands (Islas Malvinas)", @@ -2969,7 +7525,23 @@ "tzName": "Falkland Islands Summer Time" } ], - "regions": [{ "name": "Falkland Islands (Islas Malvinas)" }] + "regions": [ + { + "name": "Falkland Islands (Islas Malvinas)" + } + ], + "capital": "Stanley", + "population": 4550, + "area": 12200, + "continent": "South America", + "languages": [ + "British English" + ], + "tld": [ + ".fk" + ], + "unMember": false, + "independent": false }, { "countryName": "Faroe Islands", @@ -2988,16 +7560,51 @@ } ], "regions": [ - { "name": "Bordoy" }, - { "name": "Eysturoy" }, - { "name": "Mykines" }, - { "name": "Sandoy" }, - { "name": "Skuvoy" }, - { "name": "Streymoy" }, - { "name": "Suduroy" }, - { "name": "Tvoroyri" }, - { "name": "Vagar" } - ] + { + "name": "Bordoy" + }, + { + "name": "Eysturoy" + }, + { + "name": "Mykines" + }, + { + "name": "Sandoy" + }, + { + "name": "Skuvoy" + }, + { + "name": "Streymoy" + }, + { + "name": "Suduroy" + }, + { + "name": "Tvoroyri" + }, + { + "name": "Vagar" + } + ], + "capital": "Tórshavn", + "population": 54149, + "area": 1399, + "continent": "Europe", + "nativeName": "Føroyar", + "languages": [ + "Danish", + "Faroese" + ], + "tld": [ + ".fo" + ], + "borders": [ + "IS" + ], + "unMember": false, + "independent": false }, { "countryName": "Fiji", @@ -3016,22 +7623,87 @@ } ], "regions": [ - { "name": "Ba", "shortCode": "01" }, - { "name": "Bua", "shortCode": "01" }, - { "name": "Cakaudrove", "shortCode": "03" }, - { "name": "Kadavu", "shortCode": "04" }, - { "name": "Lau", "shortCode": "05" }, - { "name": "Lomaiviti", "shortCode": "06" }, - { "name": "Macuata", "shortCode": "07" }, - { "name": "Nadroga and Navosa", "shortCode": "08" }, - { "name": "Naitasiri", "shortCode": "09" }, - { "name": "Namosi", "shortCode": "10" }, - { "name": "Ra", "shortCode": "011" }, - { "name": "Rewa", "shortCode": "12" }, - { "name": "Rotuma", "shortCode": "R" }, - { "name": "Serua", "shortCode": "12" }, - { "name": "Tailevu", "shortCode": "14" } - ] + { + "name": "Ba", + "shortCode": "01" + }, + { + "name": "Bua", + "shortCode": "01" + }, + { + "name": "Cakaudrove", + "shortCode": "03" + }, + { + "name": "Kadavu", + "shortCode": "04" + }, + { + "name": "Lau", + "shortCode": "05" + }, + { + "name": "Lomaiviti", + "shortCode": "06" + }, + { + "name": "Macuata", + "shortCode": "07" + }, + { + "name": "Nadroga and Navosa", + "shortCode": "08" + }, + { + "name": "Naitasiri", + "shortCode": "09" + }, + { + "name": "Namosi", + "shortCode": "10" + }, + { + "name": "Ra", + "shortCode": "011" + }, + { + "name": "Rewa", + "shortCode": "12" + }, + { + "name": "Rotuma", + "shortCode": "R" + }, + { + "name": "Serua", + "shortCode": "12" + }, + { + "name": "Tailevu", + "shortCode": "14" + } + ], + "capital": "Suva", + "population": 926276, + "area": 18274, + "continent": "Insular Oceania", + "officialName": "Republic of Fiji", + "nativeName": "Viti", + "demonym": "Fijian", + "languages": [ + "English", + "Fijian", + "Fiji Hindi" + ], + "tld": [ + ".fj" + ], + "borders": [ + "SB" + ], + "unMember": true, + "independent": true }, { "countryName": "Finland", @@ -3050,13 +7722,51 @@ } ], "regions": [ - { "name": "Ahvenanmaan lääni", "shortCode": "AL" }, - { "name": "Etelä-Suomen lääni", "shortCode": "ES" }, - { "name": "Itä-Suomen lääni", "shortCode": "IS" }, - { "name": "Länsi-Suomen lääni", "shortCode": "LS" }, - { "name": "Lapin lääni", "shortCode": "LL" }, - { "name": "Oulun lääni", "shortCode": "OL" } - ] + { + "name": "Ahvenanmaan lääni", + "shortCode": "AL" + }, + { + "name": "Etelä-Suomen lääni", + "shortCode": "ES" + }, + { + "name": "Itä-Suomen lääni", + "shortCode": "IS" + }, + { + "name": "Länsi-Suomen lääni", + "shortCode": "LS" + }, + { + "name": "Lapin lääni", + "shortCode": "LL" + }, + { + "name": "Oulun lääni", + "shortCode": "OL" + } + ], + "capital": "Helsinki", + "population": 5652881, + "area": 338478.34, + "continent": "Europe", + "nativeName": "Finland", + "demonym": "Finnish", + "languages": [ + "Finnish", + "Swedish" + ], + "tld": [ + ".fi" + ], + "borders": [ + "NO", + "SE", + "RU" + ], + "unMember": true, + "independent": true }, { "countryName": "France", @@ -3075,33 +7785,138 @@ } ], "regions": [ - { "name": "Auvergne-Rhône-Alpes", "shortCode": "ARA" }, - { "name": "Bourgogne-Franche-Comté", "shortCode": "BFC" }, - { "name": "Bretagne", "shortCode": "BRE" }, - { "name": "Centre-Val de Loire", "shortCode": "CVL" }, - { "name": "Corse", "shortCode": "COR" }, - { "name": "Grand Est", "shortCode": "GES" }, - { "name": "Hauts-de-France", "shortCode": "HDF" }, - { "name": "Île-de-France", "shortCode": "IDF" }, - { "name": "Normandie", "shortCode": "NOR" }, - { "name": "Nouvelle-Aquitaine", "shortCode": "NAQ" }, - { "name": "Occitanie", "shortCode": "OCC" }, - { "name": "Pays de la Loire", "shortCode": "PDL" }, - { "name": "Provence-Alpes-Côte d'Azur", "shortCode": "PAC" }, - { "name": "Clipperton", "shortCode": "CP" }, - { "name": "Guadeloupe", "shortCode": "GP" }, - { "name": "Guyane", "shortCode": "GF" }, - { "name": "Martinique", "shortCode": "MQ" }, - { "name": "Mayotte", "shortCode": "YT" }, - { "name": "Nouvelle Calédonie", "shortCode": "NC" }, - { "name": "Polynésie", "shortCode": "PF" }, - { "name": "Saint-Pierre-et-Miquelon", "shortCode": "PM" }, - { "name": "Saint Barthélemy", "shortCode": "BL" }, - { "name": "Saint Martin", "shortCode": "MF" }, - { "name": "Réunion", "shortCode": "RE" }, - { "name": "Terres Australes Françaises", "shortCode": "TF" }, - { "name": "Wallis-et-Futuna", "shortCode": "WF" } - ] + { + "name": "Auvergne-Rhône-Alpes", + "shortCode": "ARA" + }, + { + "name": "Bourgogne-Franche-Comté", + "shortCode": "BFC" + }, + { + "name": "Bretagne", + "shortCode": "BRE" + }, + { + "name": "Centre-Val de Loire", + "shortCode": "CVL" + }, + { + "name": "Corse", + "shortCode": "COR" + }, + { + "name": "Grand Est", + "shortCode": "GES" + }, + { + "name": "Hauts-de-France", + "shortCode": "HDF" + }, + { + "name": "Île-de-France", + "shortCode": "IDF" + }, + { + "name": "Normandie", + "shortCode": "NOR" + }, + { + "name": "Nouvelle-Aquitaine", + "shortCode": "NAQ" + }, + { + "name": "Occitanie", + "shortCode": "OCC" + }, + { + "name": "Pays de la Loire", + "shortCode": "PDL" + }, + { + "name": "Provence-Alpes-Côte d'Azur", + "shortCode": "PAC" + }, + { + "name": "Clipperton", + "shortCode": "CP" + }, + { + "name": "Guadeloupe", + "shortCode": "GP" + }, + { + "name": "Guyane", + "shortCode": "GF" + }, + { + "name": "Martinique", + "shortCode": "MQ" + }, + { + "name": "Mayotte", + "shortCode": "YT" + }, + { + "name": "Nouvelle Calédonie", + "shortCode": "NC" + }, + { + "name": "Polynésie", + "shortCode": "PF" + }, + { + "name": "Saint-Pierre-et-Miquelon", + "shortCode": "PM" + }, + { + "name": "Saint Barthélemy", + "shortCode": "BL" + }, + { + "name": "Saint Martin", + "shortCode": "MF" + }, + { + "name": "Réunion", + "shortCode": "RE" + }, + { + "name": "Terres Australes Françaises", + "shortCode": "TF" + }, + { + "name": "Wallis-et-Futuna", + "shortCode": "WF" + } + ], + "capital": "Paris", + "population": 68605616, + "area": 643801, + "continent": "Europe", + "nativeName": "France", + "demonym": "French", + "languages": [ + "French" + ], + "tld": [ + ".fr" + ], + "borders": [ + "ES", + "BE", + "LU", + "IT", + "CH", + "BR", + "DE", + "AD", + "MC", + "SR", + "NL" + ], + "unMember": true, + "independent": true }, { "countryName": "French Guiana", @@ -3119,7 +7934,30 @@ "tzName": "French Guiana Time" } ], - "regions": [{ "name": "French Guiana" }] + "regions": [ + { + "name": "French Guiana" + } + ], + "capital": "Cayenne", + "population": 293996, + "area": 83534, + "continent": "South America", + "nativeName": "Guyane", + "demonym": "Guianese", + "languages": [ + "French", + "Guianan Creole" + ], + "tld": [ + ".gf" + ], + "borders": [ + "BR", + "SR" + ], + "unMember": false, + "independent": false }, { "countryName": "French Polynesia", @@ -3152,12 +7990,36 @@ } ], "regions": [ - { "name": "Archipel des Marquises" }, - { "name": "Archipel des Tuamotu" }, - { "name": "Archipel des Tubuai" }, - { "name": "Iles du Vent" }, - { "name": "Iles Sous-le-Vent" } - ] + { + "name": "Archipel des Marquises" + }, + { + "name": "Archipel des Tuamotu" + }, + { + "name": "Archipel des Tubuai" + }, + { + "name": "Iles du Vent" + }, + { + "name": "Iles Sous-le-Vent" + } + ], + "capital": "Papeete", + "population": 278786, + "area": 4167, + "continent": "Insular Oceania", + "nativeName": "Polynésie française", + "demonym": "French Polynesian", + "languages": [ + "French" + ], + "tld": [ + ".pf" + ], + "unMember": false, + "independent": false }, { "countryName": "French Southern and Antarctic Lands", @@ -3176,12 +8038,34 @@ } ], "regions": [ - { "name": "Adelie Land" }, - { "name": "Ile Crozet" }, - { "name": "Iles Kerguelen" }, - { "name": "Iles Saint-Paul et Amsterdam" } - ] - }, + { + "name": "Adelie Land" + }, + { + "name": "Ile Crozet" + }, + { + "name": "Iles Kerguelen" + }, + { + "name": "Iles Saint-Paul et Amsterdam" + } + ], + "capital": "Port-aux-Français", + "population": 196, + "area": 7829, + "continent": "Africa", + "nativeName": "Terres australes et antarctiques françaises", + "demonym": "French", + "languages": [ + "French" + ], + "tld": [ + ".tf" + ], + "unMember": false, + "independent": false + }, { "countryName": "Gabon", "countryShortCode": "GA", @@ -3199,16 +8083,64 @@ } ], "regions": [ - { "name": "Estuaire", "shortCode": "1" }, - { "name": "Haut-Ogooué", "shortCode": "2" }, - { "name": "Moyen-Ogooué", "shortCode": "3" }, - { "name": "Ngounié", "shortCode": "4" }, - { "name": "Nyanga", "shortCode": "5" }, - { "name": "Ogooué-Ivindo", "shortCode": "6" }, - { "name": "Ogooué-Lolo", "shortCode": "7" }, - { "name": "Ogooué-Maritime", "shortCode": "8" }, - { "name": "Woleu-Ntem", "shortCode": "9" } - ] + { + "name": "Estuaire", + "shortCode": "1" + }, + { + "name": "Haut-Ogooué", + "shortCode": "2" + }, + { + "name": "Moyen-Ogooué", + "shortCode": "3" + }, + { + "name": "Ngounié", + "shortCode": "4" + }, + { + "name": "Nyanga", + "shortCode": "5" + }, + { + "name": "Ogooué-Ivindo", + "shortCode": "6" + }, + { + "name": "Ogooué-Lolo", + "shortCode": "7" + }, + { + "name": "Ogooué-Maritime", + "shortCode": "8" + }, + { + "name": "Woleu-Ntem", + "shortCode": "9" + } + ], + "capital": "Libreville", + "population": 2300000, + "area": 267667, + "continent": "Africa", + "nativeName": "République gabonaise", + "demonym": "Gabonese", + "languages": [ + "French" + ], + "tld": [ + ".ga" + ], + "borders": [ + "AO", + "CG", + "GQ", + "CM", + "ST" + ], + "unMember": true, + "independent": true }, { "countryName": "Gambia, The", @@ -3227,13 +8159,49 @@ } ], "regions": [ - { "name": "Banjul", "shortCode": "B" }, - { "name": "Central River", "shortCode": "M" }, - { "name": "Lower River", "shortCode": "L" }, - { "name": "North Bank", "shortCode": "N" }, - { "name": "Upper River", "shortCode": "U" }, - { "name": "Western", "shortCode": "W" } - ] + { + "name": "Banjul", + "shortCode": "B" + }, + { + "name": "Central River", + "shortCode": "M" + }, + { + "name": "Lower River", + "shortCode": "L" + }, + { + "name": "North Bank", + "shortCode": "N" + }, + { + "name": "Upper River", + "shortCode": "U" + }, + { + "name": "Western", + "shortCode": "W" + } + ], + "capital": "Banjul", + "population": 2639916, + "area": 11300, + "continent": "Africa", + "officialName": "Republic of The Gambia", + "nativeName": "Republic of The Gambia", + "demonym": "Gambian", + "languages": [ + "English" + ], + "tld": [ + ".gm" + ], + "borders": [ + "SN" + ], + "unMember": true, + "independent": true }, { "countryName": "Georgia", @@ -3252,19 +8220,76 @@ } ], "regions": [ - { "name": "Abkhazia (Sokhumi)", "shortCode": "AB" }, - { "name": "Ajaria (Bat'umi)", "shortCode": "AJ" }, - { "name": "Guria", "shortCode": "GU" }, - { "name": "Imereti", "shortCode": "IM" }, - { "name": "K'akheti", "shortCode": "KA" }, - { "name": "Kvemo Kartli", "shortCode": "KK" }, - { "name": "Mtshkheta-Mtianeti", "shortCode": "MM" }, - { "name": "Rach'a-Lexhkumi-KvemoSvaneti", "shortCode": "RL" }, - { "name": "Samegrelo-Zemo Svaneti", "shortCode": "SZ" }, - { "name": "Samtskhe-Javakheti", "shortCode": "SJ" }, - { "name": "Shida Kartli", "shortCode": "SK" }, - { "name": "Tbilisi", "shortCode": "TB" } - ] + { + "name": "Abkhazia (Sokhumi)", + "shortCode": "AB" + }, + { + "name": "Ajaria (Bat'umi)", + "shortCode": "AJ" + }, + { + "name": "Guria", + "shortCode": "GU" + }, + { + "name": "Imereti", + "shortCode": "IM" + }, + { + "name": "K'akheti", + "shortCode": "KA" + }, + { + "name": "Kvemo Kartli", + "shortCode": "KK" + }, + { + "name": "Mtshkheta-Mtianeti", + "shortCode": "MM" + }, + { + "name": "Rach'a-Lexhkumi-KvemoSvaneti", + "shortCode": "RL" + }, + { + "name": "Samegrelo-Zemo Svaneti", + "shortCode": "SZ" + }, + { + "name": "Samtskhe-Javakheti", + "shortCode": "SJ" + }, + { + "name": "Shida Kartli", + "shortCode": "SK" + }, + { + "name": "Tbilisi", + "shortCode": "TB" + } + ], + "capital": "Tbilisi", + "population": 3694600, + "area": 69700, + "continent": "Europe", + "officialName": "Georgia", + "nativeName": "საქართველო", + "demonym": "Georgian", + "languages": [ + "Georgian" + ], + "tld": [ + ".ge" + ], + "borders": [ + "TR", + "RU", + "AZ", + "AM" + ], + "unMember": true, + "independent": true }, { "countryName": "Germany", @@ -3290,23 +8315,95 @@ } ], "regions": [ - { "name": "Baden-Württemberg", "shortCode": "BW" }, - { "name": "Bayern", "shortCode": "BY" }, - { "name": "Berlin", "shortCode": "BE" }, - { "name": "Brandenburg", "shortCode": "BB" }, - { "name": "Bremen", "shortCode": "HB" }, - { "name": "Hamburg", "shortCode": "HH" }, - { "name": "Hessen", "shortCode": "HE" }, - { "name": "Mecklenburg-Vorpommern", "shortCode": "MV" }, - { "name": "Niedersachsen", "shortCode": "NI" }, - { "name": "Nordrhein-Westfalen", "shortCode": "NW" }, - { "name": "Rheinland-Pfalz", "shortCode": "RP" }, - { "name": "Saarland", "shortCode": "SL" }, - { "name": "Sachsen", "shortCode": "SN" }, - { "name": "Sachsen-Anhalt", "shortCode": "ST" }, - { "name": "Schleswig-Holstein", "shortCode": "SH" }, - { "name": "Thüringen", "shortCode": "TH" } - ] + { + "name": "Baden-Württemberg", + "shortCode": "BW" + }, + { + "name": "Bayern", + "shortCode": "BY" + }, + { + "name": "Berlin", + "shortCode": "BE" + }, + { + "name": "Brandenburg", + "shortCode": "BB" + }, + { + "name": "Bremen", + "shortCode": "HB" + }, + { + "name": "Hamburg", + "shortCode": "HH" + }, + { + "name": "Hessen", + "shortCode": "HE" + }, + { + "name": "Mecklenburg-Vorpommern", + "shortCode": "MV" + }, + { + "name": "Niedersachsen", + "shortCode": "NI" + }, + { + "name": "Nordrhein-Westfalen", + "shortCode": "NW" + }, + { + "name": "Rheinland-Pfalz", + "shortCode": "RP" + }, + { + "name": "Saarland", + "shortCode": "SL" + }, + { + "name": "Sachsen", + "shortCode": "SN" + }, + { + "name": "Sachsen-Anhalt", + "shortCode": "ST" + }, + { + "name": "Schleswig-Holstein", + "shortCode": "SH" + }, + { + "name": "Thüringen", + "shortCode": "TH" + } + ], + "capital": "Berlin", + "population": 83577140, + "area": 357587.77, + "continent": "Europe", + "nativeName": "Deutschland", + "demonym": "German", + "languages": [ + "German" + ], + "tld": [ + ".de" + ], + "borders": [ + "BE", + "LU", + "DK", + "PL", + "CH", + "AT", + "FR", + "CZ" + ], + "unMember": true, + "independent": true }, { "countryName": "Ghana", @@ -3325,23 +8422,84 @@ } ], "regions": [ - { "name": "Ahafo" }, - { "name": "Ashanti", "shortCode": "AH" }, - { "name": "Bono" }, - { "name": "Bono East" }, - { "name": "Central", "shortCode": "CP" }, - { "name": "Eastern", "shortCode": "EP" }, - { "name": "Greater Accra", "shortCode": "AA" }, - { "name": "Northern", "shortCode": "NP" }, - { "name": "North East" }, - { "name": "Oti" }, - { "name": "Savannah" }, - { "name": "Upper East", "shortCode": "UE" }, - { "name": "Upper West", "shortCode": "UW" }, - { "name": "Volta", "shortCode": "TV" }, - { "name": "Western", "shortCode": "WP" }, - { "name": "Western North" } - ] + { + "name": "Ahafo" + }, + { + "name": "Ashanti", + "shortCode": "AH" + }, + { + "name": "Bono" + }, + { + "name": "Bono East" + }, + { + "name": "Central", + "shortCode": "CP" + }, + { + "name": "Eastern", + "shortCode": "EP" + }, + { + "name": "Greater Accra", + "shortCode": "AA" + }, + { + "name": "Northern", + "shortCode": "NP" + }, + { + "name": "North East" + }, + { + "name": "Oti" + }, + { + "name": "Savannah" + }, + { + "name": "Upper East", + "shortCode": "UE" + }, + { + "name": "Upper West", + "shortCode": "UW" + }, + { + "name": "Volta", + "shortCode": "TV" + }, + { + "name": "Western", + "shortCode": "WP" + }, + { + "name": "Western North" + } + ], + "capital": "Accra", + "population": 32833031, + "area": 238535, + "continent": "Africa", + "officialName": "Ghana", + "nativeName": "Ghana", + "demonym": "Ghanaian", + "languages": [ + "English" + ], + "tld": [ + ".gh" + ], + "borders": [ + "TG", + "BF", + "CI" + ], + "unMember": true, + "independent": true }, { "countryName": "Gibraltar", @@ -3359,7 +8517,29 @@ "tzName": "Central European Time" } ], - "regions": [{ "name": "Gibraltar" }] + "regions": [ + { + "name": "Gibraltar" + } + ], + "capital": "Gibraltar", + "population": 34003, + "area": 6.843, + "continent": "Europe", + "officialName": "Gibraltar", + "nativeName": "Gibraltar", + "demonym": "Gibraltarian", + "languages": [ + "British English" + ], + "tld": [ + ".gi" + ], + "borders": [ + "ES" + ], + "unMember": false, + "independent": false }, { "countryName": "Greece", @@ -3378,21 +8558,85 @@ } ], "regions": [ - { "name": "Anatolikí Makedonía kai Thráki", "shortCode": "A" }, - { "name": "Attikḯ", "shortCode": "I" }, - { "name": "Dytikí Elláda", "shortCode": "G" }, - { "name": "Dytikí Makedonía", "shortCode": "C" }, - { "name": "Ionía Nísia", "shortCode": "F" }, - { "name": "Kentrikí Makedonía", "shortCode": "B" }, - { "name": "Krítí", "shortCode": "M" }, - { "name": "Notío Aigaío", "shortCode": "L" }, - { "name": "Peloponnísos", "shortCode": "J" }, - { "name": "Stereá Elláda", "shortCode": "H" }, - { "name": "Thessalía", "shortCode": "E" }, - { "name": "Voreío Aigaío", "shortCode": "K" }, - { "name": "Ípeiros", "shortCode": "D" }, - { "name": "Ágion Óros", "shortCode": "69" } - ] + { + "name": "Anatolikí Makedonía kai Thráki", + "shortCode": "A" + }, + { + "name": "Attikḯ", + "shortCode": "I" + }, + { + "name": "Dytikí Elláda", + "shortCode": "G" + }, + { + "name": "Dytikí Makedonía", + "shortCode": "C" + }, + { + "name": "Ionía Nísia", + "shortCode": "F" + }, + { + "name": "Kentrikí Makedonía", + "shortCode": "B" + }, + { + "name": "Krítí", + "shortCode": "M" + }, + { + "name": "Notío Aigaío", + "shortCode": "L" + }, + { + "name": "Peloponnísos", + "shortCode": "J" + }, + { + "name": "Stereá Elláda", + "shortCode": "H" + }, + { + "name": "Thessalía", + "shortCode": "E" + }, + { + "name": "Voreío Aigaío", + "shortCode": "K" + }, + { + "name": "Ípeiros", + "shortCode": "D" + }, + { + "name": "Ágion Óros", + "shortCode": "69" + } + ], + "capital": "Athens", + "population": 10566531, + "area": 131957, + "continent": "Europe", + "officialName": "Hellenic Republic", + "nativeName": "Ελλάδα", + "demonym": "Greek", + "languages": [ + "Greek" + ], + "tld": [ + ".ελ", + ".gr" + ], + "borders": [ + "TR", + "BG", + "MK", + "AL" + ], + "unMember": true, + "independent": true }, { "countryName": "Greenland", @@ -3432,11 +8676,42 @@ } ], "regions": [ - { "name": "Kommune Kujalleq", "shortCode": "KU" }, - { "name": "Kommuneqarfik Sermersooq", "shortCode": "SM" }, - { "name": "Qaasuitsup Kommunia", "shortCode": "QA" }, - { "name": "Qeqqata Kommunia", "shortCode": "QE" } - ] + { + "name": "Kommune Kujalleq", + "shortCode": "KU" + }, + { + "name": "Kommuneqarfik Sermersooq", + "shortCode": "SM" + }, + { + "name": "Qaasuitsup Kommunia", + "shortCode": "QA" + }, + { + "name": "Qeqqata Kommunia", + "shortCode": "QE" + } + ], + "capital": "Nuuk", + "population": 56542, + "area": 2166086, + "continent": "North America", + "nativeName": "Grønland", + "demonym": "Greenlandic", + "languages": [ + "Greenlandic" + ], + "tld": [ + ".gl" + ], + "borders": [ + "CA", + "NO", + "IS" + ], + "unMember": false, + "independent": false }, { "countryName": "Grenada", @@ -3455,14 +8730,54 @@ } ], "regions": [ - { "name": "Saint Andrew", "shortCode": "01" }, - { "name": "Saint David", "shortCode": "02" }, - { "name": "Saint George", "shortCode": "03" }, - { "name": "Saint John", "shortCode": "04" }, - { "name": "Saint Mark", "shortCode": "05" }, - { "name": "Saint Patrick", "shortCode": "06" }, - { "name": "Southern Grenadine Islands", "shortCode": "10" } - ] + { + "name": "Saint Andrew", + "shortCode": "01" + }, + { + "name": "Saint David", + "shortCode": "02" + }, + { + "name": "Saint George", + "shortCode": "03" + }, + { + "name": "Saint John", + "shortCode": "04" + }, + { + "name": "Saint Mark", + "shortCode": "05" + }, + { + "name": "Saint Patrick", + "shortCode": "06" + }, + { + "name": "Southern Grenadine Islands", + "shortCode": "10" + } + ], + "capital": "St. George's", + "population": 114299, + "area": 348.5, + "continent": "North America", + "officialName": "Grenada", + "nativeName": "State of Grenada", + "demonym": "Grenadian", + "languages": [ + "English", + "Grenadian Creole English" + ], + "tld": [ + ".gd" + ], + "borders": [ + "VE" + ], + "unMember": true, + "independent": true }, { "countryName": "Guadeloupe", @@ -3480,7 +8795,22 @@ "tzName": "Atlantic Standard Time" } ], - "regions": [{ "name": "Guadeloupe" }] + "regions": [ + { + "name": "Guadeloupe" + } + ], + "capital": "Basse-Terre", + "population": 384160, + "area": 1628, + "continent": "North America", + "nativeName": "Guadeloupe", + "demonym": "Guadeloupean", + "tld": [ + ".gp" + ], + "unMember": false, + "independent": false }, { "countryName": "Guam", @@ -3498,7 +8828,31 @@ "tzName": "Chamorro Standard Time" } ], - "regions": [{ "name": "Guam" }] + "regions": [ + { + "name": "Guam" + } + ], + "capital": "Hagåtña", + "population": 153836, + "area": 544, + "continent": "Oceania", + "officialName": "Guam", + "nativeName": "Guam", + "demonym": "Guamanians", + "languages": [ + "English", + "Chamorro" + ], + "tld": [ + ".gu" + ], + "borders": [ + "FM", + "MP" + ], + "unMember": false, + "independent": false }, { "countryName": "Guatemala", @@ -3517,65 +8871,185 @@ } ], "regions": [ - { "name": "Alta Verapaz", "shortCode": "AV" }, - { "name": "Baja Verapaz", "shortCode": "BV" }, - { "name": "Chimaltenango", "shortCode": "CM" }, - { "name": "Chiquimula", "shortCode": "CQ" }, - { "name": "El Progreso", "shortCode": "PR" }, - { "name": "Escuintla", "shortCode": "ES" }, - { "name": "Guatemala", "shortCode": "GU" }, - { "name": "Huehuetenango", "shortCode": "HU" }, - { "name": "Izabal", "shortCode": "IZ" }, - { "name": "Jalapa", "shortCode": "JA" }, - { "name": "Jutiapa", "shortCode": "JU" }, - { "name": "Petén", "shortCode": "PE" }, - { "name": "Quetzaltenango", "shortCode": "QZ" }, - { "name": "Quiché", "shortCode": "QC" }, - { "name": "Retalhuleu", "shortCode": "Re" }, - { "name": "Sacatepéquez", "shortCode": "SA" }, - { "name": "San Marcos", "shortCode": "SM" }, - { "name": "Santa Rosa", "shortCode": "SR" }, - { "name": "Sololá", "shortCode": "SO" }, - { "name": "Suchitepéquez", "shortCode": "SU" }, - { "name": "Totonicapán", "shortCode": "TO" }, - { "name": "Zacapa", "shortCode": "ZA" } - ] - }, - { - "countryName": "Guernsey", - "countryShortCode": "GG", - "phoneCode": "+44", - "currencyCode": "GBP", - "latitude": "49.46666666", - "longitude": "-2.58333333", - "timezones": [ { - "zoneName": "Europe/Guernsey", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [ - { "name": "Castel" }, - { "name": "Forest" }, - { "name": "St. Andrew" }, - { "name": "St. Martin" }, - { "name": "St. Peter Port" }, - { "name": "St. Pierre du Bois" }, - { "name": "St. Sampson" }, - { "name": "St. Saviour" }, - { "name": "Torteval" }, - { "name": "Vale" } - ] - }, - { - "countryName": "Guinea", - "countryShortCode": "GN", - "phoneCode": "+224", - "currencyCode": "GNF", - "latitude": "11.00000000", + "name": "Alta Verapaz", + "shortCode": "AV" + }, + { + "name": "Baja Verapaz", + "shortCode": "BV" + }, + { + "name": "Chimaltenango", + "shortCode": "CM" + }, + { + "name": "Chiquimula", + "shortCode": "CQ" + }, + { + "name": "El Progreso", + "shortCode": "PR" + }, + { + "name": "Escuintla", + "shortCode": "ES" + }, + { + "name": "Guatemala", + "shortCode": "GU" + }, + { + "name": "Huehuetenango", + "shortCode": "HU" + }, + { + "name": "Izabal", + "shortCode": "IZ" + }, + { + "name": "Jalapa", + "shortCode": "JA" + }, + { + "name": "Jutiapa", + "shortCode": "JU" + }, + { + "name": "Petén", + "shortCode": "PE" + }, + { + "name": "Quetzaltenango", + "shortCode": "QZ" + }, + { + "name": "Quiché", + "shortCode": "QC" + }, + { + "name": "Retalhuleu", + "shortCode": "Re" + }, + { + "name": "Sacatepéquez", + "shortCode": "SA" + }, + { + "name": "San Marcos", + "shortCode": "SM" + }, + { + "name": "Santa Rosa", + "shortCode": "SR" + }, + { + "name": "Sololá", + "shortCode": "SO" + }, + { + "name": "Suchitepéquez", + "shortCode": "SU" + }, + { + "name": "Totonicapán", + "shortCode": "TO" + }, + { + "name": "Zacapa", + "shortCode": "ZA" + } + ], + "capital": "Guatemala City", + "population": 17263239, + "area": 108889, + "continent": "North America", + "nativeName": "República de Guatemala", + "demonym": "Guatemalan", + "languages": [ + "Spanish" + ], + "tld": [ + ".gt" + ], + "borders": [ + "MX", + "BZ", + "HN", + "SV" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Guernsey", + "countryShortCode": "GG", + "phoneCode": "+44", + "currencyCode": "GBP", + "latitude": "49.46666666", + "longitude": "-2.58333333", + "timezones": [ + { + "zoneName": "Europe/Guernsey", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Castel" + }, + { + "name": "Forest" + }, + { + "name": "St. Andrew" + }, + { + "name": "St. Martin" + }, + { + "name": "St. Peter Port" + }, + { + "name": "St. Pierre du Bois" + }, + { + "name": "St. Sampson" + }, + { + "name": "St. Saviour" + }, + { + "name": "Torteval" + }, + { + "name": "Vale" + } + ], + "capital": "Saint Peter Port", + "population": 67787, + "area": 78, + "continent": "Europe", + "officialName": "Bailiwick of Guernsey", + "languages": [ + "French", + "English" + ], + "tld": [ + ".gg" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Guinea", + "countryShortCode": "GN", + "phoneCode": "+224", + "currencyCode": "GNF", + "latitude": "11.00000000", "longitude": "-10.00000000", "timezones": [ { @@ -3587,15 +9061,62 @@ } ], "regions": [ - { "name": "Boké", "shortCode": "B" }, - { "name": "Conakry", "shortCode": "C" }, - { "name": "Faranah", "shortCode": "F" }, - { "name": "Kankan", "shortCode": "K" }, - { "name": "Kindia", "shortCode": "D" }, - { "name": "Labé", "shortCode": "L" }, - { "name": "Mamou", "shortCode": "M" }, - { "name": "Nzérékoré", "shortCode": "N" } - ] + { + "name": "Boké", + "shortCode": "B" + }, + { + "name": "Conakry", + "shortCode": "C" + }, + { + "name": "Faranah", + "shortCode": "F" + }, + { + "name": "Kankan", + "shortCode": "K" + }, + { + "name": "Kindia", + "shortCode": "D" + }, + { + "name": "Labé", + "shortCode": "L" + }, + { + "name": "Mamou", + "shortCode": "M" + }, + { + "name": "Nzérékoré", + "shortCode": "N" + } + ], + "capital": "Conakry", + "population": 17521167, + "area": 245857, + "continent": "Africa", + "nativeName": "République de Guinée", + "demonym": "Guinean", + "languages": [ + "French", + "languages of Guinea" + ], + "tld": [ + ".gn" + ], + "borders": [ + "ML", + "GW", + "CI", + "LR", + "SN", + "SL" + ], + "unMember": true, + "independent": true }, { "countryName": "Guinea-Bissau", @@ -3614,16 +9135,61 @@ } ], "regions": [ - { "name": "Bafatá", "shortCode": "BA" }, - { "name": "Biombo", "shortCode": "BM" }, - { "name": "Bissau", "shortCode": "BS" }, - { "name": "Bolama-Bijagos", "shortCode": "BL" }, - { "name": "Cacheu", "shortCode": "CA" }, - { "name": "Gabú", "shortCode": "GA" }, - { "name": "Oio", "shortCode": "OI" }, - { "name": "Quinara", "shortCode": "QU" }, - { "name": "Tombali", "shortCode": "TO" } - ] + { + "name": "Bafatá", + "shortCode": "BA" + }, + { + "name": "Biombo", + "shortCode": "BM" + }, + { + "name": "Bissau", + "shortCode": "BS" + }, + { + "name": "Bolama-Bijagos", + "shortCode": "BL" + }, + { + "name": "Cacheu", + "shortCode": "CA" + }, + { + "name": "Gabú", + "shortCode": "GA" + }, + { + "name": "Oio", + "shortCode": "OI" + }, + { + "name": "Quinara", + "shortCode": "QU" + }, + { + "name": "Tombali", + "shortCode": "TO" + } + ], + "capital": "Bissau", + "population": 1861283, + "area": 36125, + "continent": "Africa", + "nativeName": "República da Guiné-Bissau", + "demonym": "Bissau-Guinean", + "languages": [ + "Portuguese" + ], + "tld": [ + ".gw" + ], + "borders": [ + "GN", + "SN" + ], + "unMember": true, + "independent": true }, { "countryName": "Guyana", @@ -3642,17 +9208,67 @@ } ], "regions": [ - { "name": "Barima-Waini", "shortCode": "BA" }, - { "name": "Cuyuni-Mazaruni", "shortCode": "CU" }, - { "name": "Demerara-Mahaica", "shortCode": "DE" }, - { "name": "East Berbice-Corentyne", "shortCode": "EB" }, - { "name": "Essequibo Islands-West Demerara", "shortCode": "ES" }, - { "name": "Mahaica-Berbice", "shortCode": "MA" }, - { "name": "Pomeroon-Supenaam", "shortCode": "PM" }, - { "name": "Potaro-Siparuni", "shortCode": "PT" }, - { "name": "Upper Demerara-Berbice", "shortCode": "UD" }, - { "name": "Upper Takutu-Upper Essequibo", "shortCode": "UT" } - ] + { + "name": "Barima-Waini", + "shortCode": "BA" + }, + { + "name": "Cuyuni-Mazaruni", + "shortCode": "CU" + }, + { + "name": "Demerara-Mahaica", + "shortCode": "DE" + }, + { + "name": "East Berbice-Corentyne", + "shortCode": "EB" + }, + { + "name": "Essequibo Islands-West Demerara", + "shortCode": "ES" + }, + { + "name": "Mahaica-Berbice", + "shortCode": "MA" + }, + { + "name": "Pomeroon-Supenaam", + "shortCode": "PM" + }, + { + "name": "Potaro-Siparuni", + "shortCode": "PT" + }, + { + "name": "Upper Demerara-Berbice", + "shortCode": "UD" + }, + { + "name": "Upper Takutu-Upper Essequibo", + "shortCode": "UT" + } + ], + "capital": "Georgetown", + "population": 878674, + "area": 214970, + "continent": "South America", + "officialName": "Co-operative Republic of Guyana", + "nativeName": "Co-operative Republic of Guyana", + "demonym": "Guyanese", + "languages": [ + "English" + ], + "tld": [ + ".gy" + ], + "borders": [ + "BR", + "VE", + "SR" + ], + "unMember": true, + "independent": true }, { "countryName": "Haiti", @@ -3671,17 +9287,67 @@ } ], "regions": [ - { "name": "Artibonite", "shortCode": "AR" }, - { "name": "Centre", "shortCode": "CE" }, - { "name": "Grand'Anse", "shortCode": "GA" }, - { "name": "Nippes", "shortCode": "NI" }, - { "name": "Nord", "shortCode": "ND" }, - { "name": "Nord-Est", "shortCode": "NE" }, - { "name": "Nord-Ouest", "shortCode": "NO" }, - { "name": "Ouest", "shortCode": "OU" }, - { "name": "Sud", "shortCode": "SD" }, - { "name": "Sud-Est", "shortCode": "SE" } - ] + { + "name": "Artibonite", + "shortCode": "AR" + }, + { + "name": "Centre", + "shortCode": "CE" + }, + { + "name": "Grand'Anse", + "shortCode": "GA" + }, + { + "name": "Nippes", + "shortCode": "NI" + }, + { + "name": "Nord", + "shortCode": "ND" + }, + { + "name": "Nord-Est", + "shortCode": "NE" + }, + { + "name": "Nord-Ouest", + "shortCode": "NO" + }, + { + "name": "Ouest", + "shortCode": "OU" + }, + { + "name": "Sud", + "shortCode": "SD" + }, + { + "name": "Sud-Est", + "shortCode": "SE" + } + ], + "capital": "Port-au-Prince", + "population": 10981229, + "area": 27750, + "continent": "North America", + "nativeName": "Ayiti", + "demonym": "Haitian", + "languages": [ + "French", + "Haitian Creole" + ], + "tld": [ + ".ht" + ], + "borders": [ + "US", + "DO", + "TC" + ], + "unMember": true, + "independent": true }, { "countryName": "Heard Island and McDonald Islands", @@ -3699,7 +9365,23 @@ "tzName": "French Southern and Antarctic Time" } ], - "regions": [{ "name": "Heard Island and McDonald Islands" }] + "regions": [ + { + "name": "Heard Island and McDonald Islands" + } + ], + "area": 368, + "continent": "Antarctica", + "nativeName": "Heard Island and McDonald Islands", + "demonym": "Heard and McDonald Islander", + "languages": [ + "English" + ], + "tld": [ + ".hm" + ], + "unMember": false, + "independent": false }, { "countryName": "Holy See (Vatican City)", @@ -3717,7 +9399,30 @@ "tzName": "Central European Time" } ], - "regions": [{ "name": "Holy See (Vatican City)", "shortCode": "01" }] + "regions": [ + { + "name": "Holy See (Vatican City)", + "shortCode": "01" + } + ], + "capital": "Vatican City", + "population": 882, + "area": 0.49, + "continent": "Europe", + "nativeName": "Civitas Vaticana", + "demonym": "Vatican", + "languages": [ + "Latin", + "Italian" + ], + "tld": [ + ".va" + ], + "borders": [ + "IT" + ], + "unMember": false, + "independent": true }, { "countryName": "Honduras", @@ -3736,25 +9441,98 @@ } ], "regions": [ - { "name": "Atlántida", "shortCode": "AT" }, - { "name": "Choluteca", "shortCode": "CH" }, - { "name": "Colón", "shortCode": "CL" }, - { "name": "Comayagua", "shortCode": "CM" }, - { "name": "Copán", "shortCode": "CP" }, - { "name": "Cortés", "shortCode": "CR" }, - { "name": "El Paraíso", "shortCode": "EP" }, - { "name": "Francisco Morazan", "shortCode": "FM" }, - { "name": "Gracias a Dios", "shortCode": "GD" }, - { "name": "Intibucá", "shortCode": "IN" }, - { "name": "Islas de la Bahía", "shortCode": "IB" }, - { "name": "La Paz", "shortCode": "LP" }, - { "name": "Lempira", "shortCode": "LE" }, - { "name": "Ocotepeque", "shortCode": "OC" }, - { "name": "Olancho", "shortCode": "OL" }, - { "name": "Santa Bárbara", "shortCode": "SB" }, - { "name": "Valle", "shortCode": "VA" }, - { "name": "Yoro", "shortCode": "YO" } - ] + { + "name": "Atlántida", + "shortCode": "AT" + }, + { + "name": "Choluteca", + "shortCode": "CH" + }, + { + "name": "Colón", + "shortCode": "CL" + }, + { + "name": "Comayagua", + "shortCode": "CM" + }, + { + "name": "Copán", + "shortCode": "CP" + }, + { + "name": "Cortés", + "shortCode": "CR" + }, + { + "name": "El Paraíso", + "shortCode": "EP" + }, + { + "name": "Francisco Morazan", + "shortCode": "FM" + }, + { + "name": "Gracias a Dios", + "shortCode": "GD" + }, + { + "name": "Intibucá", + "shortCode": "IN" + }, + { + "name": "Islas de la Bahía", + "shortCode": "IB" + }, + { + "name": "La Paz", + "shortCode": "LP" + }, + { + "name": "Lempira", + "shortCode": "LE" + }, + { + "name": "Ocotepeque", + "shortCode": "OC" + }, + { + "name": "Olancho", + "shortCode": "OL" + }, + { + "name": "Santa Bárbara", + "shortCode": "SB" + }, + { + "name": "Valle", + "shortCode": "VA" + }, + { + "name": "Yoro", + "shortCode": "YO" + } + ], + "capital": "Tegucigalpa", + "population": 11002356, + "area": 112492, + "continent": "North America", + "nativeName": "República de Honduras", + "demonym": "Honduran", + "languages": [ + "Spanish" + ], + "tld": [ + ".hn" + ], + "borders": [ + "GT", + "SV", + "NI" + ], + "unMember": true, + "independent": true }, { "countryName": "Hong Kong", @@ -3772,7 +9550,26 @@ "tzName": "Hong Kong Time" } ], - "regions": [{ "name": "Hong Kong", "shortCode": "HK" }] + "regions": [ + { + "name": "Hong Kong", + "shortCode": "HK" + } + ], + "population": 7413070, + "area": 2755.03, + "continent": "Asia", + "officialName": "Hong Kong Special Administrative Region of the People's Republic of China", + "nativeName": "香港", + "demonym": "Hong Kong people", + "languages": [ + "Standard Chinese" + ], + "tld": [ + ".hk" + ], + "unMember": false, + "independent": false }, { "countryName": "Hungary", @@ -3791,77 +9588,270 @@ } ], "regions": [ - { "name": "Bács-Kiskun", "shortCode": "BK" }, - { "name": "Baranya", "shortCode": "BA" }, - { "name": "Békés", "shortCode": "BE" }, - { "name": "Békéscsaba", "shortCode": "BC" }, - { "name": "Borsod-Abauj-Zemplen", "shortCode": "BZ" }, - { "name": "Budapest", "shortCode": "BU" }, - { "name": "Csongrád", "shortCode": "CS" }, - { "name": "Debrecen", "shortCode": "DE" }, - { "name": "Dunaújváros", "shortCode": "DU" }, - { "name": "Eger", "shortCode": "EG" }, - { "name": "Érd", "shortCode": "ER" }, - { "name": "Fejér", "shortCode": "FE" }, - { "name": "Győr", "shortCode": "GY" }, - { "name": "Győr-Moson-Sopron", "shortCode": "GS" }, - { "name": "Hajdú-Bihar", "shortCode": "HB" }, - { "name": "Heves", "shortCode": "HE" }, - { "name": "Hódmezővásárhely", "shortCode": "HV" }, - { "name": "Jász-Nagykun-Szolnok", "shortCode": "N" }, - { "name": "Kaposvár", "shortCode": "KV" }, - { "name": "Kecskemét", "shortCode": "KM" }, - { "name": "Komárom-Esztergom", "shortCode": "KE" }, - { "name": "Miskolc", "shortCode": "MI" }, - { "name": "Nagykanizsa", "shortCode": "NK" }, - { "name": "Nógrád", "shortCode": "NO" }, - { "name": "Nyíregyháza", "shortCode": "NY" }, - { "name": "Pécs", "shortCode": "PS" }, - { "name": "Pest", "shortCode": "PE" }, - { "name": "Salgótarján", "shortCode": "ST" }, - { "name": "Somogy", "shortCode": "SO" }, - { "name": "Sopron", "shortCode": "SN" }, - { "name": "Szabolcs-á-Bereg", "shortCode": "SZ" }, - { "name": "Szeged", "shortCode": "SD" }, - { "name": "Székesfehérvár", "shortCode": "SF" }, - { "name": "Szekszárd", "shortCode": "SS" }, - { "name": "Szolnok", "shortCode": "SK" }, - { "name": "Szombathely", "shortCode": "SH" }, - { "name": "Tatabánya", "shortCode": "TB" }, - { "name": "Tolna", "shortCode": "TO" }, - { "name": "Vas", "shortCode": "VA" }, - { "name": "Veszprém", "shortCode": "VE" }, - { "name": "Veszprém (City)", "shortCode": "VM" }, - { "name": "Zala", "shortCode": "ZA" }, - { "name": "Zalaegerszeg", "shortCode": "ZE" } - ] - }, - { - "countryName": "Iceland", - "countryShortCode": "IS", - "phoneCode": "+354", - "currencyCode": "ISK", - "latitude": "65.00000000", - "longitude": "-18.00000000", - "timezones": [ { - "zoneName": "Atlantic/Reykjavik", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", + "name": "Bács-Kiskun", + "shortCode": "BK" + }, + { + "name": "Baranya", + "shortCode": "BA" + }, + { + "name": "Békés", + "shortCode": "BE" + }, + { + "name": "Békéscsaba", + "shortCode": "BC" + }, + { + "name": "Borsod-Abauj-Zemplen", + "shortCode": "BZ" + }, + { + "name": "Budapest", + "shortCode": "BU" + }, + { + "name": "Csongrád", + "shortCode": "CS" + }, + { + "name": "Debrecen", + "shortCode": "DE" + }, + { + "name": "Dunaújváros", + "shortCode": "DU" + }, + { + "name": "Eger", + "shortCode": "EG" + }, + { + "name": "Érd", + "shortCode": "ER" + }, + { + "name": "Fejér", + "shortCode": "FE" + }, + { + "name": "Győr", + "shortCode": "GY" + }, + { + "name": "Győr-Moson-Sopron", + "shortCode": "GS" + }, + { + "name": "Hajdú-Bihar", + "shortCode": "HB" + }, + { + "name": "Heves", + "shortCode": "HE" + }, + { + "name": "Hódmezővásárhely", + "shortCode": "HV" + }, + { + "name": "Jász-Nagykun-Szolnok", + "shortCode": "N" + }, + { + "name": "Kaposvár", + "shortCode": "KV" + }, + { + "name": "Kecskemét", + "shortCode": "KM" + }, + { + "name": "Komárom-Esztergom", + "shortCode": "KE" + }, + { + "name": "Miskolc", + "shortCode": "MI" + }, + { + "name": "Nagykanizsa", + "shortCode": "NK" + }, + { + "name": "Nógrád", + "shortCode": "NO" + }, + { + "name": "Nyíregyháza", + "shortCode": "NY" + }, + { + "name": "Pécs", + "shortCode": "PS" + }, + { + "name": "Pest", + "shortCode": "PE" + }, + { + "name": "Salgótarján", + "shortCode": "ST" + }, + { + "name": "Somogy", + "shortCode": "SO" + }, + { + "name": "Sopron", + "shortCode": "SN" + }, + { + "name": "Szabolcs-á-Bereg", + "shortCode": "SZ" + }, + { + "name": "Szeged", + "shortCode": "SD" + }, + { + "name": "Székesfehérvár", + "shortCode": "SF" + }, + { + "name": "Szekszárd", + "shortCode": "SS" + }, + { + "name": "Szolnok", + "shortCode": "SK" + }, + { + "name": "Szombathely", + "shortCode": "SH" + }, + { + "name": "Tatabánya", + "shortCode": "TB" + }, + { + "name": "Tolna", + "shortCode": "TO" + }, + { + "name": "Vas", + "shortCode": "VA" + }, + { + "name": "Veszprém", + "shortCode": "VE" + }, + { + "name": "Veszprém (City)", + "shortCode": "VM" + }, + { + "name": "Zala", + "shortCode": "ZA" + }, + { + "name": "Zalaegerszeg", + "shortCode": "ZE" + } + ], + "capital": "Budapest", + "population": 9489000, + "area": 93011.4, + "continent": "Europe", + "nativeName": "Magyarország", + "demonym": "Hungarian", + "languages": [ + "Hungarian" + ], + "tld": [ + ".hu" + ], + "borders": [ + "AT", + "UA", + "SK", + "SI", + "RO", + "HR", + "RS" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Iceland", + "countryShortCode": "IS", + "phoneCode": "+354", + "currencyCode": "ISK", + "latitude": "65.00000000", + "longitude": "-18.00000000", + "timezones": [ + { + "zoneName": "Atlantic/Reykjavik", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", "abbreviation": "GMT", "tzName": "Greenwich Mean Time" } ], "regions": [ - { "name": "Austurland", "shortCode": "7" }, - { "name": "Höfuðborgarsvæði utan Reykjavíkur", "shortCode": "1" }, - { "name": "Norðurland eystra", "shortCode": "6" }, - { "name": "Norðurland vestra", "shortCode": "5" }, - { "name": "Suðurland", "shortCode": "8" }, - { "name": "Suðurnes", "shortCode": "2" }, - { "name": "Vestfirðir", "shortCode": "4" }, - { "name": "Vesturland", "shortCode": "3" } - ] + { + "name": "Austurland", + "shortCode": "7" + }, + { + "name": "Höfuðborgarsvæði utan Reykjavíkur", + "shortCode": "1" + }, + { + "name": "Norðurland eystra", + "shortCode": "6" + }, + { + "name": "Norðurland vestra", + "shortCode": "5" + }, + { + "name": "Suðurland", + "shortCode": "8" + }, + { + "name": "Suðurnes", + "shortCode": "2" + }, + { + "name": "Vestfirðir", + "shortCode": "4" + }, + { + "name": "Vesturland", + "shortCode": "3" + } + ], + "capital": "Reykjavík", + "population": 376248, + "area": 103004, + "continent": "Europe", + "nativeName": "Ísland", + "languages": [ + "Icelandic" + ], + "tld": [ + ".is" + ], + "borders": [ + "GL", + "FO" + ], + "unMember": true, + "independent": true }, { "countryName": "India", @@ -3880,43 +9870,189 @@ } ], "regions": [ - { "name": "Andaman and Nicobar Islands", "shortCode": "AN" }, - { "name": "Andhra Pradesh", "shortCode": "AP" }, - { "name": "Arunachal Pradesh", "shortCode": "AR" }, - { "name": "Assam", "shortCode": "AS" }, - { "name": "Bihar", "shortCode": "BR" }, - { "name": "Chandigarh", "shortCode": "CH" }, - { "name": "Chhattisgarh", "shortCode": "CT" }, - { "name": "Dadra and Nagar Haveli", "shortCode": "DN" }, - { "name": "Daman and Diu", "shortCode": "DD" }, - { "name": "Delhi", "shortCode": "DL" }, - { "name": "Goa", "shortCode": "GA" }, - { "name": "Gujarat", "shortCode": "GJ" }, - { "name": "Haryana", "shortCode": "HR" }, - { "name": "Himachal Pradesh", "shortCode": "HP" }, - { "name": "Jammu and Kashmir", "shortCode": "JK" }, - { "name": "Jharkhand", "shortCode": "JH" }, - { "name": "Karnataka", "shortCode": "KA" }, - { "name": "Kerala", "shortCode": "KL" }, - { "name": "Lakshadweep", "shortCode": "LD" }, - { "name": "Madhya Pradesh", "shortCode": "MP" }, - { "name": "Maharashtra", "shortCode": "MH" }, - { "name": "Manipur", "shortCode": "MN" }, - { "name": "Meghalaya", "shortCode": "ML" }, - { "name": "Mizoram", "shortCode": "MZ" }, - { "name": "Nagaland", "shortCode": "NL" }, - { "name": "Odisha", "shortCode": "OR" }, - { "name": "Puducherry", "shortCode": "PY" }, - { "name": "Punjab", "shortCode": "PB" }, - { "name": "Rajasthan", "shortCode": "RJ" }, - { "name": "Sikkim", "shortCode": "WK" }, - { "name": "Tamil Nadu", "shortCode": "TN" }, - { "name": "Telangana", "shortCode": "TG" }, - { "name": "Tripura", "shortCode": "TR" }, - { "name": "Uttarakhand", "shortCode": "UT" }, - { "name": "Uttar Pradesh", "shortCode": "UP" }, - { "name": "West Bengal", "shortCode": "WB" } - ] + { + "name": "Andaman and Nicobar Islands", + "shortCode": "AN" + }, + { + "name": "Andhra Pradesh", + "shortCode": "AP" + }, + { + "name": "Arunachal Pradesh", + "shortCode": "AR" + }, + { + "name": "Assam", + "shortCode": "AS" + }, + { + "name": "Bihar", + "shortCode": "BR" + }, + { + "name": "Chandigarh", + "shortCode": "CH" + }, + { + "name": "Chhattisgarh", + "shortCode": "CT" + }, + { + "name": "Dadra and Nagar Haveli", + "shortCode": "DN" + }, + { + "name": "Daman and Diu", + "shortCode": "DD" + }, + { + "name": "Delhi", + "shortCode": "DL" + }, + { + "name": "Goa", + "shortCode": "GA" + }, + { + "name": "Gujarat", + "shortCode": "GJ" + }, + { + "name": "Haryana", + "shortCode": "HR" + }, + { + "name": "Himachal Pradesh", + "shortCode": "HP" + }, + { + "name": "Jammu and Kashmir", + "shortCode": "JK" + }, + { + "name": "Jharkhand", + "shortCode": "JH" + }, + { + "name": "Karnataka", + "shortCode": "KA" + }, + { + "name": "Kerala", + "shortCode": "KL" + }, + { + "name": "Lakshadweep", + "shortCode": "LD" + }, + { + "name": "Madhya Pradesh", + "shortCode": "MP" + }, + { + "name": "Maharashtra", + "shortCode": "MH" + }, + { + "name": "Manipur", + "shortCode": "MN" + }, + { + "name": "Meghalaya", + "shortCode": "ML" + }, + { + "name": "Mizoram", + "shortCode": "MZ" + }, + { + "name": "Nagaland", + "shortCode": "NL" + }, + { + "name": "Odisha", + "shortCode": "OR" + }, + { + "name": "Puducherry", + "shortCode": "PY" + }, + { + "name": "Punjab", + "shortCode": "PB" + }, + { + "name": "Rajasthan", + "shortCode": "RJ" + }, + { + "name": "Sikkim", + "shortCode": "WK" + }, + { + "name": "Tamil Nadu", + "shortCode": "TN" + }, + { + "name": "Telangana", + "shortCode": "TG" + }, + { + "name": "Tripura", + "shortCode": "TR" + }, + { + "name": "Uttarakhand", + "shortCode": "UT" + }, + { + "name": "Uttar Pradesh", + "shortCode": "UP" + }, + { + "name": "West Bengal", + "shortCode": "WB" + } + ], + "capital": "New Delhi", + "population": 1326093247, + "area": 3287263, + "continent": "Asia", + "officialName": "Republic of India", + "nativeName": "भारत", + "demonym": "Indian", + "languages": [ + "English", + "Hindi" + ], + "tld": [ + ".भारत", + ".بھارت", + ".ભારત", + ".ভারত", + ".ভাৰত", + ".భారత్", + ".இந்தியா", + ".ਭਾਰਤ", + ".ಭಾರತ", + ".ഭാരതം", + ".ଭାରତ", + ".in" + ], + "borders": [ + "CN", + "ID", + "MM", + "NP", + "PK", + "LK", + "AF", + "BD", + "BT" + ], + "unMember": true, + "independent": true }, { "countryName": "Indonesia", @@ -3956,700 +10092,348 @@ } ], "regions": [ - { "name": "Aceh", "shortCode": "AC" }, - { "name": "Bali", "shortCode": "BA" }, - { "name": "Bangka Belitung", "shortCode": "BB" }, - { "name": "Banten", "shortCode": "BT" }, - { "name": "Bengkulu", "shortCode": "BE" }, - { "name": "Gorontalo", "shortCode": "GO" }, - { "name": "Jakarta Raya", "shortCode": "JK" }, - { "name": "Jambi", "shortCode": "JA" }, - { "name": "Jawa Barat", "shortCode": "JB" }, - { "name": "Jawa Tengah", "shortCode": "JT" }, - { "name": "Jawa Timur", "shortCode": "JI" }, - { "name": "Kalimantan Barat", "shortCode": "KB" }, - { "name": "Kalimantan Selatan", "shortCode": "KS" }, - { "name": "Kalimantan Tengah", "shortCode": "KT" }, - { "name": "Kalimantan Timur", "shortCode": "KI" }, - { "name": "Kalimantan Utara", "shortCode": "KU" }, - { "name": "Kepulauan Riau", "shortCode": "KR" }, - { "name": "Lampung", "shortCode": "LA" }, - { "name": "Maluku", "shortCode": "MA" }, - { "name": "Maluku Utara", "shortCode": "MU" }, - { "name": "Nusa Tenggara Barat", "shortCode": "NB" }, - { "name": "Nusa Tenggara Timur", "shortCode": "NT" }, - { "name": "Papua", "shortCode": "PA" }, - { "name": "Papua Barat", "shortCode": "PB" }, - { "name": "Riau", "shortCode": "RI" }, - { "name": "Sulawesi Selatan", "shortCode": "SR" }, - { "name": "Sulawesi Tengah", "shortCode": "ST" }, - { "name": "Sulawesi Tenggara", "shortCode": "SG" }, - { "name": "Sulawesi Utara", "shortCode": "SA" }, - { "name": "Sumatera Barat", "shortCode": "SB" }, - { "name": "Sumatera Selatan", "shortCode": "SS" }, - { "name": "Sumatera Utara", "shortCode": "SU" }, - { "name": "Yogyakarta", "shortCode": "YO" } - ] - }, - { - "countryName": "Iran, Islamic Republic of", - "countryShortCode": "IR", - "phoneCode": "+98", - "currencyCode": "IRR", - "latitude": "32.00000000", - "longitude": "53.00000000", - "timezones": [ { - "zoneName": "Asia/Tehran", - "gmtOffset": 12600, - "gmtOffsetName": "UTC+03:30", - "abbreviation": "IRDT", - "tzName": "Iran Daylight Time" - } - ], - "regions": [ - { "name": "Alborz", "shortCode": "32" }, - { "name": "Ardabīl", "shortCode": "03" }, - { "name": "Āz̄arbāyjān-e Gharbī", "shortCode": "02" }, - { "name": "Āz̄arbāyjān-e Sharqī", "shortCode": "01" }, - { "name": "Būshehr", "shortCode": "06" }, - { "name": "Chahār Maḩāl va Bakhtīārī", "shortCode": "08" }, - { "name": "Eşfahān", "shortCode": "04" }, - { "name": "Fārs", "shortCode": "14" }, - { "name": "Gīlān", "shortCode": "19" }, - { "name": "Golestān", "shortCode": "27" }, - { "name": "Hamadān", "shortCode": "24" }, - { "name": "Hormozgān", "shortCode": "23" }, - { "name": "Īlām", "shortCode": "05" }, - { "name": "Kermān", "shortCode": "15" }, - { "name": "Kermānshāh", "shortCode": "17" }, - { "name": "Khorāsān-e Jonūbī", "shortCode": "29" }, - { "name": "Khorāsān-e Raẕavī", "shortCode": "30" }, - { "name": "Khorāsān-e Shomālī", "shortCode": "61" }, - { "name": "Khūzestān", "shortCode": "10" }, - { "name": "Kohgīlūyeh va Bowyer Aḩmad", "shortCode": "18" }, - { "name": "Kordestān", "shortCode": "16" }, - { "name": "Lorestān", "shortCode": "20" }, - { "name": "Markazi", "shortCode": "22" }, - { "name": "Māzandarān", "shortCode": "21" }, - { "name": "Qazvīn", "shortCode": "28" }, - { "name": "Qom", "shortCode": "26" }, - { "name": "Semnān", "shortCode": "12" }, - { "name": "Sīstān va Balūchestān", "shortCode": "13" }, - { "name": "Tehrān", "shortCode": "07" }, - { "name": "Yazd", "shortCode": "25" }, - { "name": "Zanjān", "shortCode": "11" } - ] - }, - { - "countryName": "Iraq", - "countryShortCode": "IQ", - "phoneCode": "+964", - "currencyCode": "IQD", - "latitude": "33.00000000", - "longitude": "44.00000000", - "timezones": [ + "name": "Aceh", + "shortCode": "AC" + }, { - "zoneName": "Asia/Baghdad", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "AST", - "tzName": "Arabia Standard Time" - } - ], - "regions": [ - { "name": "Al Anbār", "shortCode": "AN" }, - { "name": "Al Başrah", "shortCode": "BA" }, - { "name": "Al Muthanná", "shortCode": "MU" }, - { "name": "Al Qādisīyah", "shortCode": "QA" }, - { "name": "An Najaf", "shortCode": "NA" }, - { "name": "Arbīl", "shortCode": "AR" }, - { "name": "As Sulaymānīyah", "shortCode": "SU" }, - { "name": "Bābil", "shortCode": "BB" }, - { "name": "Baghdād", "shortCode": "BG" }, - { "name": "Dohuk", "shortCode": "DA" }, - { "name": "Dhī Qār", "shortCode": "DQ" }, - { "name": "Diyālá", "shortCode": "DI" }, - { "name": "Karbalā'", "shortCode": "KA" }, - { "name": "Kirkuk", "shortCode": "KI" }, - { "name": "Maysān", "shortCode": "MA" }, - { "name": "Nīnawá", "shortCode": "NI" }, - { "name": "Şalāḩ ad Dīn", "shortCode": "SD" }, - { "name": "Wāsiţ", "shortCode": "WA" } - ] - }, - { - "countryName": "Ireland", - "countryShortCode": "IE", - "phoneCode": "+353", - "currencyCode": "EUR", - "latitude": "53.00000000", - "longitude": "-8.00000000", - "timezones": [ + "name": "Bali", + "shortCode": "BA" + }, { - "zoneName": "Europe/Dublin", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [ - { "name": "Carlow", "shortCode": "CW" }, - { "name": "Cavan", "shortCode": "CN" }, - { "name": "Clare", "shortCode": "CE" }, - { "name": "Cork", "shortCode": "CO" }, - { "name": "Donegal", "shortCode": "DL" }, - { "name": "Dublin", "shortCode": "D" }, - { "name": "Galway", "shortCode": "G" }, - { "name": "Kerry", "shortCode": "KY" }, - { "name": "Kildare", "shortCode": "KE" }, - { "name": "Kilkenny", "shortCode": "KK" }, - { "name": "Laois", "shortCode": "LS" }, - { "name": "Leitrim", "shortCode": "LM" }, - { "name": "Limerick", "shortCode": "LK" }, - { "name": "Longford", "shortCode": "LD" }, - { "name": "Louth", "shortCode": "LH" }, - { "name": "Mayo", "shortCode": "MO" }, - { "name": "Meath", "shortCode": "MH" }, - { "name": "Monaghan", "shortCode": "MN" }, - { "name": "Offaly", "shortCode": "OY" }, - { "name": "Roscommon", "shortCode": "RN" }, - { "name": "Sligo", "shortCode": "SO" }, - { "name": "Tipperary", "shortCode": "TA" }, - { "name": "Waterford", "shortCode": "WD" }, - { "name": "Westmeath", "shortCode": "WH" }, - { "name": "Wexford", "shortCode": "WX" }, - { "name": "Wicklow", "shortCode": "WW" } - ] - }, - { - "countryName": "Isle of Man", - "countryShortCode": "IM", - "phoneCode": "+44", - "currencyCode": "GBP", - "latitude": "54.25000000", - "longitude": "-4.50000000", - "timezones": [ + "name": "Bangka Belitung", + "shortCode": "BB" + }, { - "zoneName": "Europe/Isle_of_Man", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [{ "name": "Isle of Man" }] - }, - { - "countryName": "Israel", - "countryShortCode": "IL", - "phoneCode": "+972", - "currencyCode": "ILS", - "latitude": "31.50000000", - "longitude": "34.75000000", - "timezones": [ + "name": "Banten", + "shortCode": "BT" + }, { - "zoneName": "Asia/Jerusalem", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "IST", - "tzName": "Israel Standard Time" - } - ], - "regions": [ - { "name": "HaDarom", "shortCode": "D" }, - { "name": "HaMerkaz", "shortCode": "M" }, - { "name": "HaTsafon", "shortCode": "Z" }, - { "name": "H̱efa", "shortCode": "HA" }, - { "name": "Tel-Aviv", "shortCode": "TA" }, - { "name": "Yerushalayim", "shortCode": "JM" } - ] - }, - { - "countryName": "Italy", - "countryShortCode": "IT", - "phoneCode": "+39", - "currencyCode": "EUR", - "latitude": "42.83333333", - "longitude": "12.83333333", - "timezones": [ + "name": "Bengkulu", + "shortCode": "BE" + }, { - "zoneName": "Europe/Rome", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } - ], - "regions": [ - { "name": "Abruzzo", "shortCode": "65" }, - { "name": "Basilicata", "shortCode": "77" }, - { "name": "Calabria", "shortCode": "78" }, - { "name": "Campania", "shortCode": "72" }, - { "name": "Emilia-Romagna", "shortCode": "45" }, - { "name": "Friuli-Venezia Giulia", "shortCode": "36" }, - { "name": "Lazio", "shortCode": "62" }, - { "name": "Liguria", "shortCode": "42" }, - { "name": "Lombardia", "shortCode": "25" }, - { "name": "Marche", "shortCode": "57" }, - { "name": "Molise", "shortCode": "67" }, - { "name": "Piemonte", "shortCode": "21" }, - { "name": "Puglia", "shortCode": "75" }, - { "name": "Sardegna", "shortCode": "88" }, - { "name": "Sicilia", "shortCode": "82" }, - { "name": "Toscana", "shortCode": "52" }, - { "name": "Trentino-Alto Adige", "shortCode": "32" }, - { "name": "Umbria", "shortCode": "55" }, - { "name": "Valle d'Aosta", "shortCode": "23" }, - { "name": "Veneto", "shortCode": "34" } - ] - }, - { - "countryName": "Jamaica", - "countryShortCode": "JM", - "phoneCode": "+1876", - "currencyCode": "JMD", - "latitude": "18.25000000", - "longitude": "-77.50000000", - "timezones": [ + "name": "Gorontalo", + "shortCode": "GO" + }, { - "zoneName": "America/Jamaica", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" - } - ], - "regions": [ - { "name": "Clarendon", "shortCode": "13" }, - { "name": "Hanover", "shortCode": "09" }, - { "name": "Kingston", "shortCode": "01" }, - { "name": "Manchester", "shortCode": "12" }, - { "name": "Portland", "shortCode": "04" }, - { "name": "Saint Andrew", "shortCode": "02" }, - { "name": "Saint Ann", "shortCode": "06" }, - { "name": "Saint Catherine", "shortCode": "14" }, - { "name": "Saint Elizabeth", "shortCode": "11" }, - { "name": "Saint James", "shortCode": "08" }, - { "name": "Saint Mary", "shortCode": "05" }, - { "name": "Saint Thomas", "shortCode": "03" }, - { "name": "Trelawny", "shortCode": "07" }, - { "name": "Westmoreland", "shortCode": "10" } - ] - }, - { - "countryName": "Japan", - "countryShortCode": "JP", - "phoneCode": "+81", - "currencyCode": "JPY", - "latitude": "36.00000000", - "longitude": "138.00000000", - "timezones": [ + "name": "Jakarta Raya", + "shortCode": "JK" + }, { - "zoneName": "Asia/Tokyo", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "JST", - "tzName": "Japan Standard Time" - } - ], - "regions": [ - { "name": "Aichi", "shortCode": "23" }, - { "name": "Akita", "shortCode": "05" }, - { "name": "Aomori", "shortCode": "02" }, - { "name": "Chiba", "shortCode": "12" }, - { "name": "Ehime", "shortCode": "38" }, - { "name": "Fukui", "shortCode": "18" }, - { "name": "Fukuoka", "shortCode": "40" }, - { "name": "Fukushima", "shortCode": "07" }, - { "name": "Gifu", "shortCode": "21" }, - { "name": "Gunma", "shortCode": "10" }, - { "name": "Hiroshima", "shortCode": "34" }, - { "name": "Hokkaido", "shortCode": "01" }, - { "name": "Hyogo", "shortCode": "28" }, - { "name": "Ibaraki", "shortCode": "08" }, - { "name": "Ishikawa", "shortCode": "17" }, - { "name": "Iwate", "shortCode": "03" }, - { "name": "Kagawa", "shortCode": "37" }, - { "name": "Kagoshima", "shortCode": "46" }, - { "name": "Kanagawa", "shortCode": "14" }, - { "name": "Kochi", "shortCode": "39" }, - { "name": "Kumamoto", "shortCode": "43" }, - { "name": "Kyoto", "shortCode": "26" }, - { "name": "Mie", "shortCode": "24" }, - { "name": "Miyagi", "shortCode": "04" }, - { "name": "Miyazaki", "shortCode": "45" }, - { "name": "Nagano", "shortCode": "20" }, - { "name": "Nagasaki", "shortCode": "42" }, - { "name": "Nara", "shortCode": "29" }, - { "name": "Niigata", "shortCode": "15" }, - { "name": "Oita", "shortCode": "44" }, - { "name": "Okayama", "shortCode": "33" }, - { "name": "Okinawa", "shortCode": "47" }, - { "name": "Osaka", "shortCode": "27" }, - { "name": "Saga", "shortCode": "41" }, - { "name": "Saitama", "shortCode": "11" }, - { "name": "Shiga", "shortCode": "25" }, - { "name": "Shimane", "shortCode": "32" }, - { "name": "Shizuoka", "shortCode": "22" }, - { "name": "Tochigi", "shortCode": "09" }, - { "name": "Tokushima", "shortCode": "36" }, - { "name": "Tokyo", "shortCode": "13" }, - { "name": "Tottori", "shortCode": "31" }, - { "name": "Toyama", "shortCode": "16" }, - { "name": "Wakayama", "shortCode": "30" }, - { "name": "Yamagata", "shortCode": "06" }, - { "name": "Yamaguchi", "shortCode": "35" }, - { "name": "Yamanashi", "shortCode": "19" } - ] - }, - { - "countryName": "Jersey", - "countryShortCode": "JE", - "phoneCode": "+44", - "currencyCode": "GBP", - "latitude": "49.25000000", - "longitude": "-2.16666666", - "timezones": [ + "name": "Jambi", + "shortCode": "JA" + }, { - "zoneName": "Europe/Jersey", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [{ "name": "Jersey" }] - }, - { - "countryName": "Jordan", - "countryShortCode": "JO", - "phoneCode": "+962", - "currencyCode": "JOD", - "latitude": "31.00000000", - "longitude": "36.00000000", - "timezones": [ + "name": "Jawa Barat", + "shortCode": "JB" + }, { - "zoneName": "Asia/Amman", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" - } - ], - "regions": [ - { "name": "‘Ajlūn", "shortCode": "AJ" }, - { "name": "Al 'Aqabah", "shortCode": "AQ" }, - { "name": "Al Balqā’", "shortCode": "BA" }, - { "name": "Al Karak", "shortCode": "KA" }, - { "name": "Al Mafraq", "shortCode": "MA" }, - { "name": "Al ‘A̅şimah", "shortCode": "AM" }, - { "name": "Aţ Ţafīlah", "shortCode": "AT" }, - { "name": "Az Zarqā’", "shortCode": "AZ" }, - { "name": "Irbid", "shortCode": "IR" }, - { "name": "Jarash", "shortCode": "JA" }, - { "name": "Ma‘ān", "shortCode": "MN" }, - { "name": "Mādabā", "shortCode": "MD" } - ] - }, - { - "countryName": "Kazakhstan", - "countryShortCode": "KZ", - "phoneCode": "+77", - "currencyCode": "KZT", - "latitude": "48.00000000", - "longitude": "68.00000000", - "timezones": [ + "name": "Jawa Tengah", + "shortCode": "JT" + }, { - "zoneName": "Asia/Almaty", - "gmtOffset": 21600, - "gmtOffsetName": "UTC+06:00", - "abbreviation": "ALMT", - "tzName": "Alma-Ata Time[1" + "name": "Jawa Timur", + "shortCode": "JI" }, { - "zoneName": "Asia/Aqtau", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "AQTT", - "tzName": "Aqtobe Time" + "name": "Kalimantan Barat", + "shortCode": "KB" }, { - "zoneName": "Asia/Aqtobe", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "AQTT", - "tzName": "Aqtobe Time" + "name": "Kalimantan Selatan", + "shortCode": "KS" }, { - "zoneName": "Asia/Atyrau", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "MSD+1", - "tzName": "Moscow Daylight Time+1" + "name": "Kalimantan Tengah", + "shortCode": "KT" }, { - "zoneName": "Asia/Oral", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "ORAT", - "tzName": "Oral Time" + "name": "Kalimantan Timur", + "shortCode": "KI" }, { - "zoneName": "Asia/Qostanay", - "gmtOffset": 21600, - "gmtOffsetName": "UTC+06:00", - "abbreviation": "QYZST", - "tzName": "Qyzylorda Summer Time" + "name": "Kalimantan Utara", + "shortCode": "KU" }, { - "zoneName": "Asia/Qyzylorda", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "QYZT", - "tzName": "Qyzylorda Summer Time" + "name": "Kepulauan Riau", + "shortCode": "KR" + }, + { + "name": "Lampung", + "shortCode": "LA" + }, + { + "name": "Maluku", + "shortCode": "MA" + }, + { + "name": "Maluku Utara", + "shortCode": "MU" + }, + { + "name": "Nusa Tenggara Barat", + "shortCode": "NB" + }, + { + "name": "Nusa Tenggara Timur", + "shortCode": "NT" + }, + { + "name": "Papua", + "shortCode": "PA" + }, + { + "name": "Papua Barat", + "shortCode": "PB" + }, + { + "name": "Riau", + "shortCode": "RI" + }, + { + "name": "Sulawesi Selatan", + "shortCode": "SR" + }, + { + "name": "Sulawesi Tengah", + "shortCode": "ST" + }, + { + "name": "Sulawesi Tenggara", + "shortCode": "SG" + }, + { + "name": "Sulawesi Utara", + "shortCode": "SA" + }, + { + "name": "Sumatera Barat", + "shortCode": "SB" + }, + { + "name": "Sumatera Selatan", + "shortCode": "SS" + }, + { + "name": "Sumatera Utara", + "shortCode": "SU" + }, + { + "name": "Yogyakarta", + "shortCode": "YO" } ], - "regions": [ - { "name": "Almaty", "shortCode": "ALA" }, - { "name": "Aqmola", "shortCode": "AKM" }, - { "name": "Aqtobe", "shortCode": "AKT" }, - { "name": "Astana", "shortCode": "AST" }, - { "name": "Atyrau", "shortCode": "ATY" }, - { "name": "Batys Qazaqstan", "shortCode": "ZAP" }, - { "name": "Bayqongyr" }, - { "name": "Mangghystau", "shortCode": "MAN" }, - { "name": "Ongtustik Qazaqstan", "shortCode": "YUZ" }, - { "name": "Pavlodar", "shortCode": "PAV" }, - { "name": "Qaraghandy", "shortCode": "KAR" }, - { "name": "Qostanay", "shortCode": "KUS" }, - { "name": "Qyzylorda", "shortCode": "KZY" }, - { "name": "Shyghys Qazaqstan", "shortCode": "VOS" }, - { "name": "Soltustik Qazaqstan", "shortCode": "SEV" }, - { "name": "Zhambyl", "shortCode": "ZHA" } - ] + "capital": "Jakarta", + "population": 275439000, + "area": 1904570, + "continent": "Asia", + "nativeName": "Indonesia", + "demonym": "Indonesian", + "languages": [ + "Indonesian" + ], + "tld": [ + ".id" + ], + "borders": [ + "SG", + "AU", + "TL", + "IN", + "PG", + "PW", + "MY", + "TH", + "VN", + "PH" + ], + "unMember": true, + "independent": true }, { - "countryName": "Kenya", - "countryShortCode": "KE", - "phoneCode": "+254", - "currencyCode": "KES", - "latitude": "1.00000000", - "longitude": "38.00000000", + "countryName": "Iran, Islamic Republic of", + "countryShortCode": "IR", + "phoneCode": "+98", + "currencyCode": "IRR", + "latitude": "32.00000000", + "longitude": "53.00000000", "timezones": [ { - "zoneName": "Africa/Nairobi", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EAT", - "tzName": "East Africa Time" + "zoneName": "Asia/Tehran", + "gmtOffset": 12600, + "gmtOffsetName": "UTC+03:30", + "abbreviation": "IRDT", + "tzName": "Iran Daylight Time" } ], "regions": [ - { "name": "Baringo", "shortCode": "01" }, - { "name": "Bomet", "shortCode": "02" }, - { "name": "Bungoma", "shortCode": "03" }, - { "name": "Busia", "shortCode": "04" }, - { "name": "Eleyo/Marakwet", "shortCode": "05" }, - { "name": "Embu", "shortCode": "06" }, - { "name": "Garissa", "shortCode": "07" }, - { "name": "Homa Bay", "shortCode": "08" }, - { "name": "Isiolo", "shortCode": "09" }, - { "name": "Kajiado", "shortCode": "10" }, - { "name": "Kakamega", "shortCode": "11" }, - { "name": "Kericho", "shortCode": "12" }, - { "name": "Kiambu", "shortCode": "13" }, - { "name": "Kilifi", "shortCode": "14" }, - { "name": "Kirinyaga", "shortCode": "15" }, - { "name": "Kisii", "shortCode": "16" }, - { "name": "Kisumu", "shortCode": "17" }, - { "name": "Kitui", "shortCode": "18" }, - { "name": "Kwale", "shortCode": "19" }, - { "name": "Laikipia", "shortCode": "20" }, - { "name": "Lamu", "shortCode": "21" }, - { "name": "Machakos", "shortCode": "22" }, - { "name": "Makueni", "shortCode": "23" }, - { "name": "Mandera", "shortCode": "24" }, - { "name": "Marsabit", "shortCode": "25" }, - { "name": "Meru", "shortCode": "26" }, - { "name": "Migori", "shortCode": "27" }, - { "name": "Mombasa", "shortCode": "28" }, - { "name": "Murang'a", "shortCode": "29" }, - { "name": "Nairobi City", "shortCode": "30" }, - { "name": "Nakuru", "shortCode": "31" }, - { "name": "Nandi", "shortCode": "32" }, - { "name": "Narok", "shortCode": "33" }, - { "name": "Nyamira", "shortCode": "34" }, - { "name": "Nyandarua", "shortCode": "35" }, - { "name": "Nyeri", "shortCode": "36" }, - { "name": "Samburu", "shortCode": "37" }, - { "name": "Siaya", "shortCode": "38" }, - { "name": "Taita/Taveta", "shortCode": "39" }, - { "name": "Tana River", "shortCode": "40" }, - { "name": "Tharaka-Nithi", "shortCode": "41" }, - { "name": "Trans Nzoia", "shortCode": "42" }, - { "name": "Turkana", "shortCode": "43" }, - { "name": "Uasin Gishu", "shortCode": "44" }, - { "name": "Vihiga", "shortCode": "45" }, - { "name": "Wajir", "shortCode": "46" }, - { "name": "West Pokot", "shortCode": "47" } - ] - }, - { - "countryName": "Kiribati", - "countryShortCode": "KI", - "phoneCode": "+686", - "currencyCode": "AUD", - "latitude": "1.41666666", - "longitude": "173.00000000", - "timezones": [ { - "zoneName": "Pacific/Enderbury", - "gmtOffset": 46800, - "gmtOffsetName": "UTC+13:00", - "abbreviation": "PHOT", - "tzName": "Phoenix Island Time" + "name": "Alborz", + "shortCode": "32" }, { - "zoneName": "Pacific/Kiritimati", - "gmtOffset": 50400, - "gmtOffsetName": "UTC+14:00", - "abbreviation": "LINT", - "tzName": "Line Islands Time" + "name": "Ardabīl", + "shortCode": "03" }, { - "zoneName": "Pacific/Tarawa", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "GILT", - "tzName": "Gilbert Island Time" - } - ], - "regions": [ - { "name": "Abaiang" }, - { "name": "Abemama" }, - { "name": "Aranuka" }, - { "name": "Arorae" }, - { "name": "Banaba" }, - { "name": "Beru" }, - { "name": "Butaritari" }, - { "name": "Central Gilberts" }, - { "name": "Gilbert Islands", "shortCode": "G" }, - { "name": "Kanton" }, - { "name": "Kiritimati" }, - { "name": "Kuria" }, - { "name": "Line Islands", "shortCode": "L" }, - { "name": "Maiana" }, - { "name": "Makin" }, - { "name": "Marakei" }, - { "name": "Nikunau" }, - { "name": "Nonouti" }, - { "name": "Northern Gilberts" }, - { "name": "Onotoa" }, - { "name": "Phoenix Islands", "shortCode": "P" }, - { "name": "Southern Gilberts" }, - { "name": "Tabiteuea" }, - { "name": "Tabuaeran" }, - { "name": "Tamana" }, - { "name": "Tarawa" }, - { "name": "Teraina" } - ] - }, - { - "countryName": "Korea, Democratic People's Republic of", - "countryShortCode": "KP", - "phoneCode": "+850", - "currencyCode": "KPW", - "latitude": "40.00000000", - "longitude": "127.00000000", - "timezones": [ + "name": "Āz̄arbāyjān-e Gharbī", + "shortCode": "02" + }, { - "zoneName": "Asia/Pyongyang", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "KST", - "tzName": "Korea Standard Time" - } - ], - "regions": [ - { "name": "Chagang-do (Chagang Province)", "shortCode": "04" }, - { "name": "Hamgyong-bukto (North Hamgyong Province)", "shortCode": "09" }, - { "name": "Hamgyong-namdo (South Hamgyong Province)", "shortCode": "08" }, - { "name": "Hwanghae-bukto (North Hwanghae Province)", "shortCode": "06" }, - { "name": "Hwanghae-namdo (South Hwanghae Province)", "shortCode": "05" }, - { "name": "Kangwon-do (Kangwon Province)", "shortCode": "07" }, - { "name": "Nasŏn (Najin-Sŏnbong)", "shortCode": "13" }, - { "name": "P'yongan-bukto (North P'yongan Province)", "shortCode": "03" }, - { "name": "P'yongan-namdo (South P'yongan Province)", "shortCode": "02" }, - { "name": "P'yongyang-si (P'yongyang City)", "shortCode": "01" }, - { "name": "Yanggang-do (Yanggang Province)", "shortCode": "10" } - ] - }, - { - "countryName": "Korea, Republic of", - "countryShortCode": "KR", - "phoneCode": "+82", - "currencyCode": "KRW", - "latitude": "37.00000000", - "longitude": "127.50000000", - "timezones": [ + "name": "Āz̄arbāyjān-e Sharqī", + "shortCode": "01" + }, { - "zoneName": "Asia/Seoul", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "KST", - "tzName": "Korea Standard Time" - } - ], - "regions": [ - { "name": "Ch'ungch'ongbuk-do", "shortCode": "43" }, - { "name": "Ch'ungch'ongnam-do", "shortCode": "44" }, - { "name": "Cheju-do", "shortCode": "49" }, - { "name": "Chollabuk-do", "shortCode": "45" }, - { "name": "Chollanam-do", "shortCode": "46" }, - { "name": "Inch'on-Kwangyokhi", "shortCode": "28" }, - { "name": "Kang-won-do", "shortCode": "42" }, - { "name": "Kwangju-Kwangyokshi", "shortCode": "28" }, - { "name": "Kyonggi-do", "shortCode": "41" }, - { "name": "Kyongsangbuk-do", "shortCode": "47" }, - { "name": "Kyongsangnam-do", "shortCode": "48" }, - { "name": "Pusan-Kwangyokshi", "shortCode": "26" }, - { "name": "Seoul-T'ukpyolshi", "shortCode": "11" }, - { "name": "Sejong", "shortCode": "50" }, - { "name": "Taegu-Kwangyokshi", "shortCode": "27" }, - { "name": "Taejon-Kwangyokshi", "shortCode": "30" }, - { "name": "Ulsan-Kwangyokshi", "shortCode": "31" } - ] - }, - { - "countryName": "Kosovo", - "countryShortCode": "XK", - "phoneCode": "+383", - "currencyCode": "EUR", - "latitude": "42.56129090", - "longitude": "20.34030350", - "timezones": [ + "name": "Būshehr", + "shortCode": "06" + }, { - "zoneName": "Europe/Belgrade", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "name": "Chahār Maḩāl va Bakhtīārī", + "shortCode": "08" + }, + { + "name": "Eşfahān", + "shortCode": "04" + }, + { + "name": "Fārs", + "shortCode": "14" + }, + { + "name": "Gīlān", + "shortCode": "19" + }, + { + "name": "Golestān", + "shortCode": "27" + }, + { + "name": "Hamadān", + "shortCode": "24" + }, + { + "name": "Hormozgān", + "shortCode": "23" + }, + { + "name": "Īlām", + "shortCode": "05" + }, + { + "name": "Kermān", + "shortCode": "15" + }, + { + "name": "Kermānshāh", + "shortCode": "17" + }, + { + "name": "Khorāsān-e Jonūbī", + "shortCode": "29" + }, + { + "name": "Khorāsān-e Raẕavī", + "shortCode": "30" + }, + { + "name": "Khorāsān-e Shomālī", + "shortCode": "61" + }, + { + "name": "Khūzestān", + "shortCode": "10" + }, + { + "name": "Kohgīlūyeh va Bowyer Aḩmad", + "shortCode": "18" + }, + { + "name": "Kordestān", + "shortCode": "16" + }, + { + "name": "Lorestān", + "shortCode": "20" + }, + { + "name": "Markazi", + "shortCode": "22" + }, + { + "name": "Māzandarān", + "shortCode": "21" + }, + { + "name": "Qazvīn", + "shortCode": "28" + }, + { + "name": "Qom", + "shortCode": "26" + }, + { + "name": "Semnān", + "shortCode": "12" + }, + { + "name": "Sīstān va Balūchestān", + "shortCode": "13" + }, + { + "name": "Tehrān", + "shortCode": "07" + }, + { + "name": "Yazd", + "shortCode": "25" + }, + { + "name": "Zanjān", + "shortCode": "11" } ], - "regions": [] + "capital": "Tehran", + "area": 1648195, + "continent": "Asia", + "nativeName": "ایران", + "demonym": "Persian", + "languages": [ + "Persian" + ], + "tld": [ + "ایران.", + ".ir" + ], + "borders": [ + "TR", + "AZ", + "BH", + "AM", + "IQ", + "KW", + "OM", + "PK", + "QA", + "SA", + "TM", + "AE", + "AF" + ], + "unMember": true, + "independent": true }, { - "countryName": "Kuwait", - "countryShortCode": "KW", - "phoneCode": "+965", - "currencyCode": "KWD", - "latitude": "29.50000000", - "longitude": "45.75000000", + "countryName": "Iraq", + "countryShortCode": "IQ", + "phoneCode": "+964", + "currencyCode": "IQD", + "latitude": "33.00000000", + "longitude": "44.00000000", "timezones": [ { - "zoneName": "Asia/Kuwait", + "zoneName": "Asia/Baghdad", "gmtOffset": 10800, "gmtOffsetName": "UTC+03:00", "abbreviation": "AST", @@ -4657,281 +10441,114 @@ } ], "regions": [ - { "name": "Al Aḩmadi", "shortCode": "AH" }, - { "name": "Al Farwānīyah", "shortCode": "FA" }, - { "name": "Al Jahrā’", "shortCode": "JA" }, - { "name": "Al ‘Āşimah", "shortCode": "KU" }, - { "name": "Ḩawallī", "shortCode": "HA" }, - { "name": "Mubārak al Kabir", "shortCode": "MU" } - ] - }, - { - "countryName": "Kyrgyzstan", - "countryShortCode": "KG", - "phoneCode": "+996", - "currencyCode": "KGS", - "latitude": "41.00000000", - "longitude": "75.00000000", - "timezones": [ { - "zoneName": "Asia/Bishkek", - "gmtOffset": 21600, - "gmtOffsetName": "UTC+06:00", - "abbreviation": "KGT", - "tzName": "Kyrgyzstan Time" - } - ], - "regions": [ - { "name": "Batken Oblasty", "shortCode": "B" }, - { "name": "Bishkek Shaary", "shortCode": "GB" }, - { "name": "Chuy Oblasty (Bishkek)", "shortCode": "C" }, - { "name": "Jalal-Abad Oblasty", "shortCode": "J" }, - { "name": "Naryn Oblasty", "shortCode": "N" }, - { "name": "Osh Oblasty", "shortCode": "O" }, - { "name": "Talas Oblasty", "shortCode": "T" }, - { "name": "Ysyk-Kol Oblasty (Karakol)", "shortCode": "Y" } - ] - }, - { - "countryName": "Laos", - "countryShortCode": "LA", - "phoneCode": "+856", - "currencyCode": "LAK", - "latitude": "18.00000000", - "longitude": "105.00000000", - "timezones": [ + "name": "Al Anbār", + "shortCode": "AN" + }, { - "zoneName": "Asia/Vientiane", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "ICT", - "tzName": "Indochina Time" - } - ], - "regions": [ - { "name": "Attapu", "shortCode": "AT" }, - { "name": "Bokèo", "shortCode": "BK" }, - { "name": "Bolikhamxai", "shortCode": "BL" }, - { "name": "Champasak", "shortCode": "CH" }, - { "name": "Houaphan", "shortCode": "HO" }, - { "name": "Khammouan", "shortCode": "KH" }, - { "name": "Louang Namtha", "shortCode": "LM" }, - { "name": "Louangphabang", "shortCode": "LP" }, - { "name": "Oudômxai", "shortCode": "OU" }, - { "name": "Phôngsali", "shortCode": "PH" }, - { "name": "Salavan", "shortCode": "SL" }, - { "name": "Savannakhét", "shortCode": "SV" }, - { "name": "Vientiane", "shortCode": "VI" }, - { "name": "Xaignabouli", "shortCode": "XA" }, - { "name": "Xékong", "shortCode": "XE" }, - { "name": "Xaisomboun", "shortCode": "XS" }, - { "name": "Xiangkhouang", "shortCode": "XI" } - ] - }, - { - "countryName": "Latvia", - "countryShortCode": "LV", - "phoneCode": "+371", - "currencyCode": "EUR", - "latitude": "57.00000000", - "longitude": "25.00000000", - "timezones": [ + "name": "Al Başrah", + "shortCode": "BA" + }, { - "zoneName": "Europe/Riga", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" - } - ], - "regions": [ - { "name": "Aglona", "shortCode": "001" }, - { "name": "Aizkraukle", "shortCode": "002" }, - { "name": "Aizpute", "shortCode": "003" }, - { "name": "Aknīste", "shortCode": "004" }, - { "name": "Aloja", "shortCode": "005" }, - { "name": "Alsunga", "shortCode": "06" }, - { "name": "Alūksne", "shortCode": "007" }, - { "name": "Amata", "shortCode": "008" }, - { "name": "Ape", "shortCode": "009" }, - { "name": "Auce", "shortCode": "010" }, - { "name": "Ādaži", "shortCode": "011" }, - { "name": "Babīte", "shortCode": "012" }, - { "name": "Baldone", "shortCode": "013" }, - { "name": "Baltinava", "shortCode": "014" }, - { "name": "Balvi", "shortCode": "015" }, - { "name": "Bauska", "shortCode": "016" }, - { "name": "Beverīna", "shortCode": "017" }, - { "name": "Brocēni", "shortCode": "018" }, - { "name": "Burtnieki", "shortCode": "019" }, - { "name": "Carnikava", "shortCode": "020" }, - { "name": "Cesvaine", "shortCode": "021" }, - { "name": "Cēsis", "shortCode": "022" }, - { "name": "Cibla", "shortCode": "023" }, - { "name": "Dagda", "shortCode": "024" }, - { "name": "Daugavpils", "shortCode": "025" }, - { "name": "Daugavpils (City)", "shortCode": "DGV" }, - { "name": "Dobele", "shortCode": "026" }, - { "name": "Dundaga", "shortCode": "027" }, - { "name": "Durbe", "shortCode": "028" }, - { "name": "Engure", "shortCode": "029" }, - { "name": "Ērgļi", "shortCode": "030" }, - { "name": "Garkalne", "shortCode": "031" }, - { "name": "Grobiņa", "shortCode": "032" }, - { "name": "Gulbene", "shortCode": "033" }, - { "name": "Iecava", "shortCode": "034" }, - { "name": "Ikšķile", "shortCode": "035" }, - { "name": "Ilūkste", "shortCode": "036" }, - { "name": "Inčukalns", "shortCode": "037" }, - { "name": "Jaunjelgava", "shortCode": "038" }, - { "name": "Jaunpiebalga", "shortCode": "039" }, - { "name": "Jaunpils", "shortCode": "040" }, - { "name": "Jelgava", "shortCode": "041" }, - { "name": "Jelgava (City)", "shortCode": "JEL" }, - { "name": "Jēkabpils", "shortCode": "042" }, - { "name": "Jēkabpils (City)", "shortCode": "JKB" }, - { "name": "Jūrmala (City)", "shortCode": "JUR" }, - { "name": "Kandava", "shortCode": "043" }, - { "name": "Kārsava", "shortCode": "044" }, - { "name": "Kocēni", "shortCode": "045" }, - { "name": "Koknese", "shortCode": "046" }, - { "name": "Krāslava", "shortCode": "047" }, - { "name": "Krimulda", "shortCode": "048" }, - { "name": "Krustpils", "shortCode": "049" }, - { "name": "Kuldīga", "shortCode": "050" }, - { "name": "Ķegums", "shortCode": "051" }, - { "name": "Ķekava", "shortCode": "052" }, - { "name": "Lielvārde", "shortCode": "053" }, - { "name": "Liepāja", "shortCode": "LPX" }, - { "name": "Limbaži", "shortCode": "054" }, - { "name": "Līgatne", "shortCode": "055" }, - { "name": "Līvāni", "shortCode": "056" }, - { "name": "Lubāna", "shortCode": "057" }, - { "name": "Ludza", "shortCode": "058" }, - { "name": "Madona", "shortCode": "059" }, - { "name": "Mazsalaca", "shortCode": "060" }, - { "name": "Mālpils", "shortCode": "061" }, - { "name": "Mārupe", "shortCode": "062" }, - { "name": "Mērsrags", "shortCode": "063" }, - { "name": "Naukšēni", "shortCode": "064" }, - { "name": "Nereta", "shortCode": "065" }, - { "name": "Nīca", "shortCode": "066" }, - { "name": "Ogre", "shortCode": "067" }, - { "name": "Olaine", "shortCode": "068" }, - { "name": "Ozolnieki", "shortCode": "069" }, - { "name": "Pārgauja", "shortCode": "070" }, - { "name": "Pāvilosta", "shortCode": "071" }, - { "name": "Pļaviņas", "shortCode": "072" }, - { "name": "Preiļi", "shortCode": "073" }, - { "name": "Priekule", "shortCode": "074" }, - { "name": "Priekuļi", "shortCode": "075" }, - { "name": "Rauna", "shortCode": "076" }, - { "name": "Rēzekne", "shortCode": "077" }, - { "name": "Rēzekne (City)", "shortCode": "REZ" }, - { "name": "Riebiņi", "shortCode": "078" }, - { "name": "Rīga", "shortCode": "RIX" }, - { "name": "Roja", "shortCode": "079" }, - { "name": "Ropaži", "shortCode": "080" }, - { "name": "Rucava", "shortCode": "081" }, - { "name": "Rugāji", "shortCode": "082" }, - { "name": "Rundāle", "shortCode": "083" }, - { "name": "Rūjiena", "shortCode": "084" }, - { "name": "Sala", "shortCode": "085" }, - { "name": "Salacgrīva", "shortCode": "086" }, - { "name": "Salaspils", "shortCode": "087" }, - { "name": "Saldus", "shortCode": "088" }, - { "name": "Saulkrasti", "shortCode": "089" }, - { "name": "Sēja", "shortCode": "090" }, - { "name": "Sigulda", "shortCode": "091" }, - { "name": "Skrīveri", "shortCode": "092" }, - { "name": "Skrunda", "shortCode": "093" }, - { "name": "Smiltene", "shortCode": "094" }, - { "name": "Stopiņi", "shortCode": "095" }, - { "name": "Strenči", "shortCode": "096" }, - { "name": "Talsi", "shortCode": "097" }, - { "name": "Tērvete", "shortCode": "098" }, - { "name": "Tukums", "shortCode": "099" }, - { "name": "Vaiņode", "shortCode": "100" }, - { "name": "Valka", "shortCode": "101" }, - { "name": "Valmiera", "shortCode": "VMR" }, - { "name": "Varakļāni", "shortCode": "102" }, - { "name": "Vārkava", "shortCode": "103" }, - { "name": "Vecpiebalga", "shortCode": "104" }, - { "name": "Vecumnieki", "shortCode": "105" }, - { "name": "Ventspils", "shortCode": "106" }, - { "name": "Ventspils (City)", "shortCode": "VEN" }, - { "name": "Viesīte", "shortCode": "107" }, - { "name": "Viļaka", "shortCode": "108" }, - { "name": "Viļāni", "shortCode": "109" }, - { "name": "Zilupe", "shortCode": "110" } - ] - }, - { - "countryName": "Lebanon", - "countryShortCode": "LB", - "phoneCode": "+961", - "currencyCode": "LBP", - "latitude": "33.83333333", - "longitude": "35.83333333", - "timezones": [ + "name": "Al Muthanná", + "shortCode": "MU" + }, { - "zoneName": "Asia/Beirut", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" - } - ], - "regions": [ - { "name": "Aakkâr", "shortCode": "AK" }, - { "name": "Baalbelk-Hermel", "shortCode": "BH" }, - { "name": "Béqaa", "shortCode": "BI" }, - { "name": "Beyrouth", "shortCode": "BA" }, - { "name": "Liban-Nord", "shortCode": "AS" }, - { "name": "Liban-Sud", "shortCode": "JA" }, - { "name": "Mont-Liban", "shortCode": "JL" }, - { "name": "Nabatîyé", "shortCode": "NA" } - ] - }, - { - "countryName": "Lesotho", - "countryShortCode": "LS", - "phoneCode": "+266", - "currencyCode": "LSL", - "latitude": "-29.50000000", - "longitude": "28.50000000", - "timezones": [ + "name": "Al Qādisīyah", + "shortCode": "QA" + }, { - "zoneName": "Africa/Maseru", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "SAST", - "tzName": "South African Standard Time" + "name": "An Najaf", + "shortCode": "NA" + }, + { + "name": "Arbīl", + "shortCode": "AR" + }, + { + "name": "As Sulaymānīyah", + "shortCode": "SU" + }, + { + "name": "Bābil", + "shortCode": "BB" + }, + { + "name": "Baghdād", + "shortCode": "BG" + }, + { + "name": "Dohuk", + "shortCode": "DA" + }, + { + "name": "Dhī Qār", + "shortCode": "DQ" + }, + { + "name": "Diyālá", + "shortCode": "DI" + }, + { + "name": "Karbalā'", + "shortCode": "KA" + }, + { + "name": "Kirkuk", + "shortCode": "KI" + }, + { + "name": "Maysān", + "shortCode": "MA" + }, + { + "name": "Nīnawá", + "shortCode": "NI" + }, + { + "name": "Şalāḩ ad Dīn", + "shortCode": "SD" + }, + { + "name": "Wāsiţ", + "shortCode": "WA" } ], - "regions": [ - { "name": "Berea", "shortCode": "D" }, - { "name": "Butha-Buthe", "shortCode": "B" }, - { "name": "Leribe", "shortCode": "C" }, - { "name": "Mafeteng", "shortCode": "E" }, - { "name": "Maseru", "shortCode": "A" }, - { "name": "Mohales Hoek", "shortCode": "F" }, - { "name": "Mokhotlong", "shortCode": "J" }, - { "name": "Qacha's Nek", "shortCode": "H" }, - { "name": "Quthing", "shortCode": "G" }, - { "name": "Thaba-Tseka", "shortCode": "K" } - ] + "capital": "Baghdad", + "population": 38274618, + "area": 437072, + "continent": "Asia", + "officialName": "Republic of Iraq", + "nativeName": "Iraq", + "demonym": "Iraqi", + "languages": [ + "Kurdish", + "Arabic" + ], + "tld": [ + ".iq" + ], + "borders": [ + "KW", + "SA", + "SY", + "TR", + "IR", + "JO" + ], + "unMember": true, + "independent": true }, { - "countryName": "Liberia", - "countryShortCode": "LR", - "phoneCode": "+231", - "currencyCode": "LRD", - "latitude": "6.50000000", - "longitude": "-9.50000000", + "countryName": "Ireland", + "countryShortCode": "IE", + "phoneCode": "+353", + "currencyCode": "EUR", + "latitude": "53.00000000", + "longitude": "-8.00000000", "timezones": [ { - "zoneName": "Africa/Monrovia", + "zoneName": "Europe/Dublin", "gmtOffset": 0, "gmtOffsetName": "UTC±00", "abbreviation": "GMT", @@ -4939,182 +10556,243 @@ } ], "regions": [ - { "name": "Bomi", "shortCode": "BM" }, - { "name": "Bong", "shortCode": "BG" }, - { "name": "Gbarpolu", "shortCode": "GP" }, - { "name": "Grand Bassa", "shortCode": "GB" }, - { "name": "Grand Cape Mount", "shortCode": "CM" }, - { "name": "Grand Gedeh", "shortCode": "GG" }, - { "name": "Grand Kru", "shortCode": "GK" }, - { "name": "Lofa", "shortCode": "LO" }, - { "name": "Margibi", "shortCode": "MG" }, - { "name": "Maryland", "shortCode": "MY" }, - { "name": "Montserrado", "shortCode": "MO" }, - { "name": "Nimba", "shortCode": "NI" }, - { "name": "River Cess", "shortCode": "RI" }, - { "name": "River Geee", "shortCode": "RG" }, - { "name": "Sinoe", "shortCode": "SI" } - ] - }, - { - "countryName": "Libya", - "countryShortCode": "LY", - "phoneCode": "+218", - "currencyCode": "LYD", - "latitude": "25.00000000", - "longitude": "17.00000000", - "timezones": [ { - "zoneName": "Africa/Tripoli", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Carlow", + "shortCode": "CW" + }, + { + "name": "Cavan", + "shortCode": "CN" + }, + { + "name": "Clare", + "shortCode": "CE" + }, + { + "name": "Cork", + "shortCode": "CO" + }, + { + "name": "Donegal", + "shortCode": "DL" + }, + { + "name": "Dublin", + "shortCode": "D" + }, + { + "name": "Galway", + "shortCode": "G" + }, + { + "name": "Kerry", + "shortCode": "KY" + }, + { + "name": "Kildare", + "shortCode": "KE" + }, + { + "name": "Kilkenny", + "shortCode": "KK" + }, + { + "name": "Laois", + "shortCode": "LS" + }, + { + "name": "Leitrim", + "shortCode": "LM" + }, + { + "name": "Limerick", + "shortCode": "LK" + }, + { + "name": "Longford", + "shortCode": "LD" + }, + { + "name": "Louth", + "shortCode": "LH" + }, + { + "name": "Mayo", + "shortCode": "MO" + }, + { + "name": "Meath", + "shortCode": "MH" + }, + { + "name": "Monaghan", + "shortCode": "MN" + }, + { + "name": "Offaly", + "shortCode": "OY" + }, + { + "name": "Roscommon", + "shortCode": "RN" + }, + { + "name": "Sligo", + "shortCode": "SO" + }, + { + "name": "Tipperary", + "shortCode": "TA" + }, + { + "name": "Waterford", + "shortCode": "WD" + }, + { + "name": "Westmeath", + "shortCode": "WH" + }, + { + "name": "Wexford", + "shortCode": "WX" + }, + { + "name": "Wicklow", + "shortCode": "WW" } ], - "regions": [ - { "name": "Al Buţnān", "shortCode": "BU" }, - { "name": "Al Jabal al Akhḑar", "shortCode": "JA" }, - { "name": "Al Jabal al Gharbī", "shortCode": "JG" }, - { "name": "Al Jafārah", "shortCode": "JA" }, - { "name": "Al Jufrah", "shortCode": "JU" }, - { "name": "Al Kufrah", "shortCode": "FK" }, - { "name": "Al Marj", "shortCode": "MJ" }, - { "name": "Al Marquab", "shortCode": "MB" }, - { "name": "Al Wāḩāt", "shortCode": "WA" }, - { "name": "An Nuqaţ al Khams", "shortCode": "NQ" }, - { "name": "Az Zāwiyah", "shortCode": "ZA" }, - { "name": "Banghāzī", "shortCode": "BA" }, - { "name": "Darnah", "shortCode": "DR" }, - { "name": "Ghāt", "shortCode": "GH" }, - { "name": "Mişrātah", "shortCode": "MI" }, - { "name": "Murzuq", "shortCode": "MQ" }, - { "name": "Nālūt", "shortCode": "NL" }, - { "name": "Sabhā", "shortCode": "SB" }, - { "name": "Surt", "shortCode": "SR" }, - { "name": "Ţarābulus", "shortCode": "TB" }, - { "name": "Yafran", "shortCode": "WD" }, - { "name": "Wādī ash Shāţiʾ", "shortCode": "WS" } - ] + "capital": "Dublin", + "population": 5149139, + "area": 69797, + "continent": "Europe", + "officialName": "Ireland", + "nativeName": "Ireland", + "demonym": "Irish", + "languages": [ + "English", + "Irish" + ], + "tld": [ + ".ie" + ], + "borders": [ + "GB" + ], + "unMember": true, + "independent": true }, { - "countryName": "Liechtenstein", - "countryShortCode": "LI", - "phoneCode": "+423", - "currencyCode": "CHF", - "latitude": "47.26666666", - "longitude": "9.53333333", + "countryName": "Isle of Man", + "countryShortCode": "IM", + "phoneCode": "+44", + "currencyCode": "GBP", + "latitude": "54.25000000", + "longitude": "-4.50000000", "timezones": [ { - "zoneName": "Europe/Vaduz", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "zoneName": "Europe/Isle_of_Man", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" } ], "regions": [ - { "name": "Balzers", "shortCode": "01" }, - { "name": "Eschen", "shortCode": "02" }, - { "name": "Gamprin", "shortCode": "03" }, - { "name": "Mauren", "shortCode": "04" }, - { "name": "Planken", "shortCode": "05" }, - { "name": "Ruggell", "shortCode": "06" }, - { "name": "Schaan", "shortCode": "07" }, - { "name": "Schellenberg", "shortCode": "08" }, - { "name": "Triesen", "shortCode": "09" }, - { "name": "Triesenberg", "shortCode": "10" }, - { "name": "Vaduz", "shortCode": "11" } - ] - }, - { - "countryName": "Lithuania", - "countryShortCode": "LT", - "phoneCode": "+370", - "currencyCode": "EUR", - "latitude": "56.00000000", - "longitude": "24.00000000", - "timezones": [ { - "zoneName": "Europe/Vilnius", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Isle of Man" } ], - "regions": [ - { "name": "Alytaus", "shortCode": "AL" }, - { "name": "Kauno", "shortCode": "KU" }, - { "name": "Klaipėdos", "shortCode": "KL" }, - { "name": "Marijampolės", "shortCode": "MR" }, - { "name": "Panevėžio", "shortCode": "PN" }, - { "name": "Šiaulių", "shortCode": "SA" }, - { "name": "Tauragės", "shortCode": "TA" }, - { "name": "Telšių", "shortCode": "TE" }, - { "name": "Utenos", "shortCode": "UT" }, - { "name": "Vilniaus", "shortCode": "VL" } - ] + "capital": "Douglas", + "population": 84523, + "area": 572, + "continent": "Europe", + "officialName": "Isle of Man", + "nativeName": "Isle of Man", + "demonym": "Manx", + "languages": [ + "English", + "Manx" + ], + "tld": [ + ".im" + ], + "unMember": false, + "independent": false }, { - "countryName": "Luxembourg", - "countryShortCode": "LU", - "phoneCode": "+352", - "currencyCode": "EUR", - "latitude": "49.75000000", - "longitude": "6.16666666", + "countryName": "Israel", + "countryShortCode": "IL", + "phoneCode": "+972", + "currencyCode": "ILS", + "latitude": "31.50000000", + "longitude": "34.75000000", "timezones": [ { - "zoneName": "Europe/Luxembourg", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "zoneName": "Asia/Jerusalem", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "IST", + "tzName": "Israel Standard Time" } ], "regions": [ - { "name": "Capellen", "shortCode": "CA" }, - { "name": "Clevaux", "shortCode": "CL" }, - { "name": "Diekirch", "shortCode": "DI" }, - { "name": "Echternach", "shortCode": "EC" }, - { "name": "Esch-sur-Alzette", "shortCode": "ES" }, - { "name": "Grevenmacher", "shortCode": "GR" }, - { "name": "Luxembourg", "shortCode": "LU" }, - { "name": "Mersch", "shortCode": "ME" }, - { "name": "Redange", "shortCode": "RD" }, - { "name": "Remich", "shortCode": "RM" }, - { "name": "Vianden", "shortCode": "VD" }, - { "name": "Wiltz", "shortCode": "WI" } - ] - }, - { - "countryName": "Macao", - "countryShortCode": "MO", - "phoneCode": "+853", - "currencyCode": "MOP", - "latitude": "22.16666666", - "longitude": "113.55000000", - "timezones": [ { - "zoneName": "Asia/Macau", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "CST", - "tzName": "China Standard Time" + "name": "HaDarom", + "shortCode": "D" + }, + { + "name": "HaMerkaz", + "shortCode": "M" + }, + { + "name": "HaTsafon", + "shortCode": "Z" + }, + { + "name": "H̱efa", + "shortCode": "HA" + }, + { + "name": "Tel-Aviv", + "shortCode": "TA" + }, + { + "name": "Yerushalayim", + "shortCode": "JM" } ], - "regions": [{ "name": "Macao" }] + "capital": "Jerusalem", + "population": 9840000, + "area": 20770, + "continent": "Asia", + "nativeName": "دَوْلَة إِسْرَائِيل", + "demonym": "Israelis", + "languages": [ + "Hebrew" + ], + "tld": [ + "ישראל.", + ".il" + ], + "borders": [ + "EG", + "JO", + "LB", + "SY" + ], + "unMember": true, + "independent": true }, { - "countryName": "Macedonia, Republic of", - "countryShortCode": "MK", - "phoneCode": "+389", - "currencyCode": "MKD", - "latitude": "41.83333333", - "longitude": "22.00000000", + "countryName": "Italy", + "countryShortCode": "IT", + "phoneCode": "+39", + "currencyCode": "EUR", + "latitude": "42.83333333", + "longitude": "12.83333333", "timezones": [ { - "zoneName": "Europe/Skopje", + "zoneName": "Europe/Rome", "gmtOffset": 3600, "gmtOffsetName": "UTC+01:00", "abbreviation": "CET", @@ -5122,2587 +10800,2449 @@ } ], "regions": [ - { "name": "Aračinovo", "shortCode": "02" }, - { "name": "Berovo", "shortCode": "03" }, - { "name": "Bitola", "shortCode": "04" }, - { "name": "Bogdanci", "shortCode": "05" }, - { "name": "Bogovinje", "shortCode": "06" }, - { "name": "Bosilovo", "shortCode": "07" }, - { "name": "Brvenica", "shortCode": "08" }, - { "name": "Centar Župa", "shortCode": "78" }, - { "name": "Čaška", "shortCode": "08" }, - { "name": "Češinovo-Obleševo", "shortCode": "81" }, - { "name": "Čučer Sandevo", "shortCode": "82" }, - { "name": "Debar", "shortCode": "21" }, - { "name": "Debarca", "shortCode": "22" }, - { "name": "Delčevo", "shortCode": "23" }, - { "name": "Demir Hisar", "shortCode": "25" }, - { "name": "Demir Kapija", "shortCode": "24" }, - { "name": "Doran", "shortCode": "26" }, - { "name": "Dolneni", "shortCode": "27" }, - { "name": "Gevgelija", "shortCode": "18" }, - { "name": "Gostivar", "shortCode": "19" }, - { "name": "Gradsko", "shortCode": "20" }, - { "name": "Ilinden", "shortCode": "34" }, - { "name": "Jegunovce", "shortCode": "35" }, - { "name": "Karbinci", "shortCode": "37" }, - { "name": "Kavadarci", "shortCode": "36" }, - { "name": "Kičevo", "shortCode": "40" }, - { "name": "Kočani", "shortCode": "42" }, - { "name": "Konče", "shortCode": "41" }, - { "name": "Kratovo", "shortCode": "43" }, - { "name": "Kriva Palanka", "shortCode": "44" }, - { "name": "Krivogaštani", "shortCode": "45" }, - { "name": "Kruševo", "shortCode": "46" }, - { "name": "Kumanovo", "shortCode": "47" }, - { "name": "Lipkovo", "shortCode": "48" }, - { "name": "Lozovo", "shortCode": "49" }, - { "name": "Makedonska Kamenica", "shortCode": "51" }, - { "name": "Makedonski Brod", "shortCode": "52" }, - { "name": "Mavrovo i Rostuša", "shortCode": "50" }, - { "name": "Mogila", "shortCode": "53" }, - { "name": "Negotino", "shortCode": "54" }, - { "name": "Novaci", "shortCode": "55" }, - { "name": "Novo Selo", "shortCode": "56" }, - { "name": "Ohrid", "shortCode": "58" }, - { "name": "Pehčevo", "shortCode": "60" }, - { "name": "Petrovec", "shortCode": "59" }, - { "name": "Plasnica", "shortCode": "61" }, - { "name": "Prilep", "shortCode": "62" }, - { "name": "Probištip", "shortCode": "63" }, - { "name": "Radoviš", "shortCode": "" }, - { "name": "Rankovce", "shortCode": "65" }, - { "name": "Resen", "shortCode": "66" }, - { "name": "Rosoman", "shortCode": "67" }, - { "name": "Skopje", "shortCode": "85" }, - { "name": "Sopište", "shortCode": "70" }, - { "name": "Staro Nagoričane", "shortCode": "71" }, - { "name": "Struga", "shortCode": "72" }, - { "name": "Strumica", "shortCode": "73" }, - { "name": "Studeničani", "shortCode": "74" }, - { "name": "Sveti Nikole", "shortCode": "69" }, - { "name": "Štip", "shortCode": "83" }, - { "name": "Tearce", "shortCode": "75" }, - { "name": "Tetovo", "shortCode": "76" }, - { "name": "Valandovo", "shortCode": "10" }, - { "name": "Vasilevo", "shortCode": "11" }, - { "name": "Veles", "shortCode": "13" }, - { "name": "Vevčani", "shortCode": "12" }, - { "name": "Vinica", "shortCode": "14" }, - { "name": "Vrapčište", "shortCode": "16" }, - { "name": "Zelenikovo", "shortCode": "32" }, - { "name": "Zrnovci", "shortCode": "33" }, - { "name": "Želino", "shortCode": "30" } - ] - }, - { - "countryName": "Madagascar", - "countryShortCode": "MG", - "phoneCode": "+261", - "currencyCode": "MGA", - "latitude": "-20.00000000", - "longitude": "47.00000000", - "timezones": [ { - "zoneName": "Indian/Antananarivo", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EAT", - "tzName": "East Africa Time" + "name": "Abruzzo", + "shortCode": "65" + }, + { + "name": "Basilicata", + "shortCode": "77" + }, + { + "name": "Calabria", + "shortCode": "78" + }, + { + "name": "Campania", + "shortCode": "72" + }, + { + "name": "Emilia-Romagna", + "shortCode": "45" + }, + { + "name": "Friuli-Venezia Giulia", + "shortCode": "36" + }, + { + "name": "Lazio", + "shortCode": "62" + }, + { + "name": "Liguria", + "shortCode": "42" + }, + { + "name": "Lombardia", + "shortCode": "25" + }, + { + "name": "Marche", + "shortCode": "57" + }, + { + "name": "Molise", + "shortCode": "67" + }, + { + "name": "Piemonte", + "shortCode": "21" + }, + { + "name": "Puglia", + "shortCode": "75" + }, + { + "name": "Sardegna", + "shortCode": "88" + }, + { + "name": "Sicilia", + "shortCode": "82" + }, + { + "name": "Toscana", + "shortCode": "52" + }, + { + "name": "Trentino-Alto Adige", + "shortCode": "32" + }, + { + "name": "Umbria", + "shortCode": "55" + }, + { + "name": "Valle d'Aosta", + "shortCode": "23" + }, + { + "name": "Veneto", + "shortCode": "34" } ], - "regions": [ - { "name": "Antananarivo", "shortCode": "T" }, - { "name": "Antsiranana", "shortCode": "D" }, - { "name": "Fianarantsoa", "shortCode": "F" }, - { "name": "Mahajanga", "shortCode": "M" }, - { "name": "Toamasina", "shortCode": "A" }, - { "name": "Toliara", "shortCode": "U" } - ] + "capital": "Rome", + "population": 58850717, + "area": 302068, + "continent": "Europe", + "nativeName": "Italia", + "demonym": "Italian", + "languages": [ + "Italian" + ], + "tld": [ + ".it" + ], + "borders": [ + "CH", + "AT", + "FR", + "SI", + "MT", + "VA", + "SM" + ], + "unMember": true, + "independent": true }, { - "countryName": "Malawi", - "countryShortCode": "MW", - "phoneCode": "+265", - "currencyCode": "MWK", - "latitude": "-13.50000000", - "longitude": "34.00000000", + "countryName": "Jamaica", + "countryShortCode": "JM", + "phoneCode": "+1876", + "currencyCode": "JMD", + "latitude": "18.25000000", + "longitude": "-77.50000000", "timezones": [ { - "zoneName": "Africa/Blantyre", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "CAT", - "tzName": "Central Africa Time" + "zoneName": "America/Jamaica", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" } ], "regions": [ - { "name": "Balaka", "shortCode": "BA" }, - { "name": "Blantyre", "shortCode": "BL" }, - { "name": "Chikwawa", "shortCode": "CK" }, - { "name": "Chiradzulu", "shortCode": "CR" }, - { "name": "Chitipa", "shortCode": "CT" }, - { "name": "Dedza", "shortCode": "DE" }, - { "name": "Dowa", "shortCode": "DO" }, - { "name": "Karonga", "shortCode": "KR" }, - { "name": "Kasungu", "shortCode": "KS" }, - { "name": "Likoma", "shortCode": "LK" }, - { "name": "Lilongwe", "shortCode": "LI" }, - { "name": "Machinga", "shortCode": "MH" }, - { "name": "Mangochi", "shortCode": "MG" }, - { "name": "Mchinji", "shortCode": "MC" }, - { "name": "Mulanje", "shortCode": "MU" }, - { "name": "Mwanza", "shortCode": "MW" }, - { "name": "Mzimba", "shortCode": "MZ" }, - { "name": "Nkhata Bay", "shortCode": "NE" }, - { "name": "Nkhotakota", "shortCode": "NB" }, - { "name": "Nsanje", "shortCode": "NS" }, - { "name": "Ntcheu", "shortCode": "NU" }, - { "name": "Ntchisi", "shortCode": "NI" }, - { "name": "Phalombe", "shortCode": "PH" }, - { "name": "Rumphi", "shortCode": "RU" }, - { "name": "Salima", "shortCode": "SA" }, - { "name": "Thyolo", "shortCode": "TH" }, - { "name": "Zomba", "shortCode": "ZO" } - ] - }, - { - "countryName": "Malaysia", - "countryShortCode": "MY", - "phoneCode": "+60", - "currencyCode": "MYR", - "latitude": "2.50000000", - "longitude": "112.50000000", - "timezones": [ { - "zoneName": "Asia/Kuala_Lumpur", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "MYT", - "tzName": "Malaysia Time" + "name": "Clarendon", + "shortCode": "13" }, { - "zoneName": "Asia/Kuching", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "MYT", - "tzName": "Malaysia Time" - } - ], - "regions": [ - { "name": "Johor", "shortCode": "01" }, - { "name": "Kedah", "shortCode": "02" }, - { "name": "Kelantan", "shortCode": "03" }, - { "name": "Melaka", "shortCode": "04" }, - { "name": "Negeri Sembilan", "shortCode": "05" }, - { "name": "Pahang", "shortCode": "06" }, - { "name": "Perak", "shortCode": "08" }, - { "name": "Perlis", "shortCode": "09" }, - { "name": "Pulau Pinang", "shortCode": "07" }, - { "name": "Sabah", "shortCode": "12" }, - { "name": "Sarawak", "shortCode": "13" }, - { "name": "Selangor", "shortCode": "10" }, - { "name": "Terengganu", "shortCode": "11" }, - { "name": "Wilayah Persekutuan (Kuala Lumpur)", "shortCode": "14" }, - { "name": "Wilayah Persekutuan (Labuan)", "shortCode": "15" }, - { "name": "Wilayah Persekutuan (Putrajaya)", "shortCode": "16" } - ] - }, - { - "countryName": "Maldives", - "countryShortCode": "MV", - "phoneCode": "+960", - "currencyCode": "MVR", - "latitude": "3.25000000", - "longitude": "73.00000000", - "timezones": [ + "name": "Hanover", + "shortCode": "09" + }, { - "zoneName": "Indian/Maldives", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "MVT", - "tzName": "Maldives Time" - } - ], - "regions": [ - { "name": "Alifu Alifu", "shortCode": "02" }, - { "name": "Alifu Dhaalu", "shortCode": "00" }, - { "name": "Baa", "shortCode": "20" }, - { "name": "Dhaalu", "shortCode": "17" }, - { "name": "Faafu", "shortCode": "14" }, - { "name": "Gaafu Alifu", "shortCode": "27" }, - { "name": "Gaafu Dhaalu", "shortCode": "28" }, - { "name": "Gnaviyani", "shortCode": "29" }, - { "name": "Haa Alifu", "shortCode": "07" }, - { "name": "Haa Dhaalu", "shortCode": "23" }, - { "name": "Kaafu", "shortCode": "29" }, - { "name": "Laamu", "shortCode": "05" }, - { "name": "Lhaviyani", "shortCode": "03" }, - { "name": "Malé", "shortCode": "MLE" }, - { "name": "Meemu", "shortCode": "12" }, - { "name": "Noonu", "shortCode": "25" }, - { "name": "Raa", "shortCode": "13" }, - { "name": "Seenu", "shortCode": "01" }, - { "name": "Shaviyani", "shortCode": "24" }, - { "name": "Thaa", "shortCode": "08" }, - { "name": "Vaavu", "shortCode": "04" } - ] - }, - { - "countryName": "Mali", - "countryShortCode": "ML", - "phoneCode": "+223", - "currencyCode": "XOF", - "latitude": "17.00000000", - "longitude": "-4.00000000", - "timezones": [ + "name": "Kingston", + "shortCode": "01" + }, { - "zoneName": "Africa/Bamako", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [ - { "name": "Bamako", "shortCode": "BKO" }, - { "name": "Gao", "shortCode": "7" }, - { "name": "Kayes", "shortCode": "1" }, - { "name": "Kidal", "shortCode": "8" }, - { "name": "Koulikoro", "shortCode": "2" }, - { "name": "Mopti", "shortCode": "5" }, - { "name": "Segou", "shortCode": "4" }, - { "name": "Sikasso", "shortCode": "3" }, - { "name": "Tombouctou", "shortCode": "6" } - ] - }, - { - "countryName": "Malta", - "countryShortCode": "MT", - "phoneCode": "+356", - "currencyCode": "EUR", - "latitude": "35.83333333", - "longitude": "14.58333333", - "timezones": [ + "name": "Manchester", + "shortCode": "12" + }, { - "zoneName": "Europe/Malta", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } - ], - "regions": [ - { "name": "Attard", "shortCode": "01" }, - { "name": "Balzan", "shortCode": "02" }, - { "name": "Birgu", "shortCode": "03" }, - { "name": "Birkirkara", "shortCode": "04" }, - { "name": "Birżebbuġa", "shortCode": "05" }, - { "name": "Bormla", "shortCode": "06" }, - { "name": "Dingli", "shortCode": "07" }, - { "name": "Fgura", "shortCode": "08" }, - { "name": "Floriana", "shortCode": "09" }, - { "name": "Fontana", "shortCode": "10" }, - { "name": "Guda", "shortCode": "11" }, - { "name": "Gżira", "shortCode": "12" }, - { "name": "Għajnsielem", "shortCode": "13" }, - { "name": "Għarb", "shortCode": "14" }, - { "name": "Għargħur", "shortCode": "15" }, - { "name": "Għasri", "shortCode": "16" }, - { "name": "Għaxaq", "shortCode": "17" }, - { "name": "Ħamrun", "shortCode": "18" }, - { "name": "Iklin", "shortCode": "19" }, - { "name": "Isla", "shortCode": "20" }, - { "name": "Kalkara", "shortCode": "21" }, - { "name": "Kerċem", "shortCode": "22" }, - { "name": "Kirkop", "shortCode": "23" }, - { "name": "Lija", "shortCode": "24" }, - { "name": "Luqa", "shortCode": "25" }, - { "name": "Marsa", "shortCode": "26" }, - { "name": "Marsaskala", "shortCode": "27" }, - { "name": "Marsaxlokk", "shortCode": "28" }, - { "name": "Mdina", "shortCode": "29" }, - { "name": "Mellieħa", "shortCode": "30" }, - { "name": "Mġarr", "shortCode": "31" }, - { "name": "Mosta", "shortCode": "32" }, - { "name": "Mqabba", "shortCode": "33" }, - { "name": "Msida", "shortCode": "34" }, - { "name": "Mtarfa", "shortCode": "35" }, - { "name": "Munxar", "shortCode": "36" }, - { "name": "Nadur", "shortCode": "37" }, - { "name": "Naxxar", "shortCode": "38" }, - { "name": "Paola", "shortCode": "39" }, - { "name": "Pembroke", "shortCode": "40" }, - { "name": "Pietà", "shortCode": "41" }, - { "name": "Qala", "shortCode": "42" }, - { "name": "Qormi", "shortCode": "43" }, - { "name": "Qrendi", "shortCode": "44" }, - { "name": "Rabat Għawdex", "shortCode": "45" }, - { "name": "Rabat Malta", "shortCode": "46" }, - { "name": "Safi", "shortCode": "47" }, - { "name": "San Ġiljan", "shortCode": "48" }, - { "name": "San Ġwann", "shortCode": "49" }, - { "name": "San Lawrenz", "shortCode": "50" }, - { "name": "San Pawl il-Baħar", "shortCode": "51" }, - { "name": "Sannat", "shortCode": "52" }, - { "name": "Santa Luċija", "shortCode": "53" }, - { "name": "Santa Venera", "shortCode": "54" }, - { "name": "Siġġiewi", "shortCode": "55" }, - { "name": "Sliema", "shortCode": "56" }, - { "name": "Swieqi", "shortCode": "57" }, - { "name": "Tai Xbiex", "shortCode": "58" }, - { "name": "Tarzien", "shortCode": "59" }, - { "name": "Valletta", "shortCode": "60" }, - { "name": "Xagħra", "shortCode": "61" }, - { "name": "Xewkija", "shortCode": "62" }, - { "name": "Xgħajra", "shortCode": "63" }, - { "name": "Żabbar", "shortCode": "64" }, - { "name": "Żebbuġ Għawde", "shortCode": "65" }, - { "name": "Żebbuġ Malta", "shortCode": "66" }, - { "name": "Żejtun", "shortCode": "67" }, - { "name": "Żurrieq", "shortCode": "68" } - ] - }, - { - "countryName": "Marshall Islands", - "countryShortCode": "MH", - "phoneCode": "+692", - "currencyCode": "USD", - "latitude": "9.00000000", - "longitude": "168.00000000", - "timezones": [ + "name": "Portland", + "shortCode": "04" + }, { - "zoneName": "Pacific/Kwajalein", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "MHT", - "tzName": "Marshall Islands Time" + "name": "Saint Andrew", + "shortCode": "02" }, { - "zoneName": "Pacific/Majuro", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "MHT", - "tzName": "Marshall Islands Time" - } - ], - "regions": [ - { "name": "Ailinglaplap", "shortCode": "ALL" }, - { "name": "Ailuk", "shortCode": "ALK" }, - { "name": "Arno", "shortCode": "ARN" }, - { "name": "Aur", "shortCode": "AUR" }, - { "name": "Bikini and Kili", "shortCode": "KIL" }, - { "name": "Ebon", "shortCode": "EBO" }, - { "name": "Jabat", "shortCode": "JAB" }, - { "name": "Jaluit", "shortCode": "JAL" }, - { "name": "Kwajalein", "shortCode": "KWA" }, - { "name": "Lae", "shortCode": "LAE" }, - { "name": "Lib", "shortCode": "LIB" }, - { "name": "Likiep", "shortCode": "LIK" }, - { "name": "Majuro", "shortCode": "MAJ" }, - { "name": "Maloelap", "shortCode": "MAL" }, - { "name": "Mejit", "shortCode": "MEJ" }, - { "name": "Namdrik", "shortCode": "NMK" }, - { "name": "Namu", "shortCode": "NMU" }, - { "name": "Rongelap", "shortCode": "RON" }, - { "name": "Ujae", "shortCode": "UJA" }, - { "name": "Utrik", "shortCode": "UTI" }, - { "name": "Wotho", "shortCode": "WTH" }, - { "name": "Wotje", "shortCode": "WTJ" } - ] - }, - { - "countryName": "Martinique", - "countryShortCode": "MQ", - "phoneCode": "+596", - "currencyCode": "EUR", - "latitude": "14.66666700", - "longitude": "-61.00000000", - "timezones": [ + "name": "Saint Ann", + "shortCode": "06" + }, { - "zoneName": "America/Martinique", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" - } - ], - "regions": [{ "name": "Martinique" }] - }, - { - "countryName": "Mauritania", - "countryShortCode": "MR", - "phoneCode": "+222", - "currencyCode": "MRO", - "latitude": "20.00000000", - "longitude": "-12.00000000", - "timezones": [ + "name": "Saint Catherine", + "shortCode": "14" + }, { - "zoneName": "Africa/Nouakchott", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [ - { "name": "Adrar", "shortCode": "07" }, - { "name": "Assaba", "shortCode": "03" }, - { "name": "Brakna", "shortCode": "05" }, - { "name": "Dakhlet Nouadhibou", "shortCode": "08" }, - { "name": "Gorgol", "shortCode": "04" }, - { "name": "Guidimaka", "shortCode": "10" }, - { "name": "Hodh Ech Chargui", "shortCode": "01" }, - { "name": "Hodh El Gharbi", "shortCode": "02" }, - { "name": "Inchiri", "shortCode": "12" }, - { "name": "Nouakchott Nord", "shortCode": "14" }, - { "name": "Nouakchott Ouest", "shortCode": "13" }, - { "name": "Nouakchott Sud", "shortCode": "15" }, - { "name": "Tagant", "shortCode": "09" }, - { "name": "Tiris Zemmour", "shortCode": "11" }, - { "name": "Trarza", "shortCode": "06" } - ] - }, - { - "countryName": "Mauritius", - "countryShortCode": "MU", - "phoneCode": "+230", - "currencyCode": "MUR", - "latitude": "-20.28333333", - "longitude": "57.55000000", - "timezones": [ + "name": "Saint Elizabeth", + "shortCode": "11" + }, { - "zoneName": "Indian/Mauritius", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "MUT", - "tzName": "Mauritius Time" + "name": "Saint James", + "shortCode": "08" + }, + { + "name": "Saint Mary", + "shortCode": "05" + }, + { + "name": "Saint Thomas", + "shortCode": "03" + }, + { + "name": "Trelawny", + "shortCode": "07" + }, + { + "name": "Westmoreland", + "shortCode": "10" } ], - "regions": [ - { "name": "Agalega Islands", "shortCode": "AG" }, - { "name": "Beau Bassin-Rose Hill", "shortCode": "BR" }, - { "name": "Black River", "shortCode": "BL" }, - { "name": "Cargados Carajos Shoals", "shortCode": "CC" }, - { "name": "Curepipe", "shortCode": "CU" }, - { "name": "Flacq", "shortCode": "FL" }, - { "name": "Grand Port", "shortCode": "GP" }, - { "name": "Moka", "shortCode": "MO" }, - { "name": "Pamplemousses", "shortCode": "PA" }, - { "name": "Plaines Wilhems", "shortCode": "PW" }, - { "name": "Port Louis (City)", "shortCode": "PU" }, - { "name": "Port Louis", "shortCode": "PL" }, - { "name": "Riviere du Rempart", "shortCode": "RR" }, - { "name": "Rodrigues Island", "shortCode": "RO" }, - { "name": "Savanne", "shortCode": "SA" }, - { "name": "Vacoas-Phoenix", "shortCode": "CP" } - ] + "capital": "Kingston", + "population": 2734093, + "area": 10991.90954, + "continent": "North America", + "officialName": "Jamaica", + "nativeName": "Jamaica", + "demonym": "Jamaican", + "languages": [ + "English", + "Jamaican Patois" + ], + "tld": [ + ".jm" + ], + "borders": [ + "GB" + ], + "unMember": true, + "independent": true }, { - "countryName": "Mayotte", - "countryShortCode": "YT", - "phoneCode": "+262", - "currencyCode": "EUR", - "latitude": "-12.83333333", - "longitude": "45.16666666", + "countryName": "Japan", + "countryShortCode": "JP", + "phoneCode": "+81", + "currencyCode": "JPY", + "latitude": "36.00000000", + "longitude": "138.00000000", "timezones": [ { - "zoneName": "Indian/Mayotte", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EAT", - "tzName": "East Africa Time" + "zoneName": "Asia/Tokyo", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "JST", + "tzName": "Japan Standard Time" } ], "regions": [ - { "name": "Dzaoudzi", "shortCode": "01" }, - { "name": "Pamandzi", "shortCode": "02" }, - { "name": "Mamoudzou", "shortCode": "03" }, - { "name": "Dembeni", "shortCode": "04" }, - { "name": "Bandrélé", "shortCode": "05" }, - { "name": "Kani-Kéli", "shortCode": "06" }, - { "name": "Bouéni", "shortCode": "07" }, - { "name": "Chirongui", "shortCode": "08" }, - { "name": "Sada", "shortCode": "09" }, - { "name": "Ouangani", "shortCode": "10" }, - { "name": "Chiconi", "shortCode": "11" }, - { "name": "Tsingoni", "shortCode": "12" }, - { "name": "M'Tsangamouji", "shortCode": "13" }, - { "name": "Acoua", "shortCode": "14" }, - { "name": "Mtsamboro", "shortCode": "15" }, - { "name": "Bandraboua", "shortCode": "16" }, - { "name": "Koungou", "shortCode": "17" } - ] - }, - { - "countryName": "Mexico", - "countryShortCode": "MX", - "phoneCode": "+52", - "currencyCode": "MXN", - "latitude": "23.00000000", - "longitude": "-102.00000000", - "timezones": [ { - "zoneName": "America/Bahia_Banderas", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Aichi", + "shortCode": "23" }, { - "zoneName": "America/Cancun", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "name": "Akita", + "shortCode": "05" }, { - "zoneName": "America/Chihuahua", - "gmtOffset": -25200, - "gmtOffsetName": "UTC-07:00", - "abbreviation": "MST", - "tzName": "Mountain Standard Time (North America" + "name": "Aomori", + "shortCode": "02" }, { - "zoneName": "America/Hermosillo", - "gmtOffset": -25200, - "gmtOffsetName": "UTC-07:00", - "abbreviation": "MST", - "tzName": "Mountain Standard Time (North America" + "name": "Chiba", + "shortCode": "12" }, { - "zoneName": "America/Matamoros", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Ehime", + "shortCode": "38" }, { - "zoneName": "America/Mazatlan", - "gmtOffset": -25200, - "gmtOffsetName": "UTC-07:00", - "abbreviation": "MST", - "tzName": "Mountain Standard Time (North America" + "name": "Fukui", + "shortCode": "18" }, { - "zoneName": "America/Merida", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Fukuoka", + "shortCode": "40" }, { - "zoneName": "America/Mexico_City", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Fukushima", + "shortCode": "07" }, { - "zoneName": "America/Monterrey", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Gifu", + "shortCode": "21" }, { - "zoneName": "America/Ojinaga", - "gmtOffset": -25200, - "gmtOffsetName": "UTC-07:00", - "abbreviation": "MST", - "tzName": "Mountain Standard Time (North America" + "name": "Gunma", + "shortCode": "10" }, { - "zoneName": "America/Tijuana", - "gmtOffset": -28800, - "gmtOffsetName": "UTC-08:00", - "abbreviation": "PST", - "tzName": "Pacific Standard Time (North America" - } - ], - "regions": [ - { "name": "Aguascalientes", "shortCode": "AGU" }, - { "name": "Baja California", "shortCode": "BCN" }, - { "name": "Baja California Sur", "shortCode": "BCS" }, - { "name": "Campeche", "shortCode": "CAM" }, - { "name": "Ciudad de México", "shortCode": "DIF" }, - { "name": "Chiapas", "shortCode": "CHP" }, - { "name": "Chihuahua", "shortCode": "CHH" }, - { "name": "Coahuila de Zaragoza", "shortCode": "COA" }, - { "name": "Colima", "shortCode": "COL" }, - { "name": "Durango", "shortCode": "DUR" }, - { "name": "Estado de México", "shortCode": "MEX" }, - { "name": "Guanajuato", "shortCode": "GUA" }, - { "name": "Guerrero", "shortCode": "GRO" }, - { "name": "Hidalgo", "shortCode": "HID" }, - { "name": "Jalisco", "shortCode": "JAL" }, - { "name": "Michoacán de Ocampo", "shortCode": "MIC" }, - { "name": "Morelos", "shortCode": "MOR" }, - { "name": "Nayarit", "shortCode": "NAY" }, - { "name": "Nuevo León", "shortCode": "NLE" }, - { "name": "Oaxaca", "shortCode": "OAX" }, - { "name": "Puebla", "shortCode": "PUE" }, - { "name": "Querétaro de Arteaga", "shortCode": "QUE" }, - { "name": "Quintana Roo", "shortCode": "ROO" }, - { "name": "San Luis Potosí", "shortCode": "SLP" }, - { "name": "Sinaloa", "shortCode": "SIN" }, - { "name": "Sonora", "shortCode": "SON" }, - { "name": "Tabasco", "shortCode": "TAB" }, - { "name": "Tamaulipas", "shortCode": "TAM" }, - { "name": "Tlaxcala", "shortCode": "TLA" }, - { "name": "Veracruz", "shortCode": "VER" }, - { "name": "Yucatán", "shortCode": "YUC" }, - { "name": "Zacatecas", "shortCode": "ZAC" } - ] - }, - { - "countryName": "Micronesia, Federated States of", - "countryShortCode": "FM", - "phoneCode": "+691", - "currencyCode": "USD", - "latitude": "6.91666666", - "longitude": "158.25000000", - "timezones": [ + "name": "Hiroshima", + "shortCode": "34" + }, { - "zoneName": "Pacific/Chuuk", - "gmtOffset": 36000, - "gmtOffsetName": "UTC+10:00", - "abbreviation": "CHUT", - "tzName": "Chuuk Time" + "name": "Hokkaido", + "shortCode": "01" }, { - "zoneName": "Pacific/Kosrae", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "KOST", - "tzName": "Kosrae Time" + "name": "Hyogo", + "shortCode": "28" }, { - "zoneName": "Pacific/Pohnpei", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "PONT", - "tzName": "Pohnpei Standard Time" - } - ], - "regions": [ - { "name": "Chuuk (Truk)", "shortCode": "TRK" }, - { "name": "Kosrae", "shortCode": "KSA" }, - { "name": "Pohnpei", "shortCode": "PNI" }, - { "name": "Yap", "shortCode": "YAP" } - ] - }, - { - "countryName": "Moldova", - "countryShortCode": "MD", - "phoneCode": "+373", - "currencyCode": "MDL", - "latitude": "47.00000000", - "longitude": "29.00000000", - "timezones": [ + "name": "Ibaraki", + "shortCode": "08" + }, { - "zoneName": "Europe/Chisinau", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" - } - ], - "regions": [ - { "name": "Aenii Noi", "shortCode": "AN" }, - { "name": "Basarabeasca", "shortCode": "BS" }, - { "name": "Bălți", "shortCode": "BA" }, - { "name": "Bender", "shortCode": "BD" }, - { "name": "Briceni", "shortCode": "BR" }, - { "name": "Cahul", "shortCode": "CA" }, - { "name": "Cantemir", "shortCode": "CT" }, - { "name": "Călărași", "shortCode": "CL" }, - { "name": "Căușeni", "shortCode": "CS" }, - { "name": "Chișinău", "shortCode": "CU" }, - { "name": "Cimișlia", "shortCode": "CM" }, - { "name": "Criuleni", "shortCode": "CR" }, - { "name": "Dondușeni", "shortCode": "DO" }, - { "name": "Drochia", "shortCode": "DR" }, - { "name": "Dubăsari", "shortCode": "DU" }, - { "name": "Edineț", "shortCode": "ED" }, - { "name": "Fălești", "shortCode": "FA" }, - { "name": "Florești", "shortCode": "FL" }, - { "name": "Găgăuzia", "shortCode": "GA" }, - { "name": "Glodeni", "shortCode": "GL" }, - { "name": "Hîncești", "shortCode": "HI" }, - { "name": "Ialoveni", "shortCode": "IA" }, - { "name": "Leova", "shortCode": "LE" }, - { "name": "Nisporeni", "shortCode": "NI" }, - { "name": "Ocnița", "shortCode": "OC" }, - { "name": "Orhei", "shortCode": "OR" }, - { "name": "Rezina", "shortCode": "RE" }, - { "name": "Rîșcani", "shortCode": "RI" }, - { "name": "Sîngerei", "shortCode": "SI" }, - { "name": "Soroca", "shortCode": "SO" }, - { "name": "Stînga Nistrului", "shortCode": "SN" }, - { "name": "Strășeni", "shortCode": "ST" }, - { "name": "Șoldănești", "shortCode": "SD" }, - { "name": "Ștefan Vodă", "shortCode": "SV" }, - { "name": "Taraclia", "shortCode": "TA" }, - { "name": "Telenești", "shortCode": "TE" }, - { "name": "Ungheni", "shortCode": "UN" } - ] - }, - { - "countryName": "Monaco", - "countryShortCode": "MC", - "phoneCode": "+377", - "currencyCode": "EUR", - "latitude": "43.73333333", - "longitude": "7.40000000", - "timezones": [ + "name": "Ishikawa", + "shortCode": "17" + }, { - "zoneName": "Europe/Monaco", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } - ], - "regions": [ - { "name": "Colle", "shortCode": "CL" }, - { "name": "Condamine", "shortCode": "CO" }, - { "name": "Fontvieille", "shortCode": "FO" }, - { "name": "Gare", "shortCode": "GA" }, - { "name": "Jardin Exotique", "shortCode": "JE" }, - { "name": "Larvotto", "shortCode": "LA" }, - { "name": "Malbousquet", "shortCode": "MA" }, - { "name": "Monaco-Ville", "shortCode": "MO" }, - { "name": "Moneghetti", "shortCode": "MG" }, - { "name": "Monte-Carlo", "shortCode": "MC" }, - { "name": "Moulins", "shortCode": "MU" }, - { "name": "Port-Hercule", "shortCode": "PH" }, - { "name": "Saint-Roman", "shortCode": "SR" }, - { "name": "Sainte-Dévote", "shortCode": "SD" }, - { "name": "Source", "shortCode": "SO" }, - { "name": "Spélugues", "shortCode": "SP" }, - { "name": "Vallon de la Rousse", "shortCode": "VR" } - ] - }, - { - "countryName": "Mongolia", - "countryShortCode": "MN", - "phoneCode": "+976", - "currencyCode": "MNT", - "latitude": "46.00000000", - "longitude": "105.00000000", - "timezones": [ + "name": "Iwate", + "shortCode": "03" + }, { - "zoneName": "Asia/Choibalsan", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "CHOT", - "tzName": "Choibalsan Standard Time" + "name": "Kagawa", + "shortCode": "37" }, { - "zoneName": "Asia/Hovd", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "HOVT", - "tzName": "Hovd Time" + "name": "Kagoshima", + "shortCode": "46" }, { - "zoneName": "Asia/Ulaanbaatar", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "ULAT", - "tzName": "Ulaanbaatar Standard Time" - } - ], - "regions": [ - { "name": "Arhangay", "shortCode": "073" }, - { "name": "Bayan-Olgiy", "shortCode": "071" }, - { "name": "Bayanhongor", "shortCode": "069" }, - { "name": "Bulgan", "shortCode": "067" }, - { "name": "Darhan", "shortCode": "037" }, - { "name": "Dornod", "shortCode": "061" }, - { "name": "Dornogovi", "shortCode": "063" }, - { "name": "Dundgovi", "shortCode": "059" }, - { "name": "Dzavhan", "shortCode": "065" }, - { "name": "Govi-Altay", "shortCode": "065" }, - { "name": "Govi-Sumber", "shortCode": "064" }, - { "name": "Hovd", "shortCode": "043" }, - { "name": "Hovsgol", "shortCode": "041" }, - { "name": "Omnogovi", "shortCode": "053" }, - { "name": "Ovorhangay", "shortCode": "055" }, - { "name": "Selenge", "shortCode": "049" }, - { "name": "Suhbaatar", "shortCode": "051" }, - { "name": "Tov", "shortCode": "047" }, - { "name": "Ulaanbaatar", "shortCode": "1" }, - { "name": "Uvs", "shortCode": "046" } - ] - }, - { - "countryName": "Montenegro", - "countryShortCode": "ME", - "phoneCode": "+382", - "currencyCode": "EUR", - "latitude": "42.50000000", - "longitude": "19.30000000", - "timezones": [ + "name": "Kanagawa", + "shortCode": "14" + }, { - "zoneName": "Europe/Podgorica", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "name": "Kochi", + "shortCode": "39" + }, + { + "name": "Kumamoto", + "shortCode": "43" + }, + { + "name": "Kyoto", + "shortCode": "26" + }, + { + "name": "Mie", + "shortCode": "24" + }, + { + "name": "Miyagi", + "shortCode": "04" + }, + { + "name": "Miyazaki", + "shortCode": "45" + }, + { + "name": "Nagano", + "shortCode": "20" + }, + { + "name": "Nagasaki", + "shortCode": "42" + }, + { + "name": "Nara", + "shortCode": "29" + }, + { + "name": "Niigata", + "shortCode": "15" + }, + { + "name": "Oita", + "shortCode": "44" + }, + { + "name": "Okayama", + "shortCode": "33" + }, + { + "name": "Okinawa", + "shortCode": "47" + }, + { + "name": "Osaka", + "shortCode": "27" + }, + { + "name": "Saga", + "shortCode": "41" + }, + { + "name": "Saitama", + "shortCode": "11" + }, + { + "name": "Shiga", + "shortCode": "25" + }, + { + "name": "Shimane", + "shortCode": "32" + }, + { + "name": "Shizuoka", + "shortCode": "22" + }, + { + "name": "Tochigi", + "shortCode": "09" + }, + { + "name": "Tokushima", + "shortCode": "36" + }, + { + "name": "Tokyo", + "shortCode": "13" + }, + { + "name": "Tottori", + "shortCode": "31" + }, + { + "name": "Toyama", + "shortCode": "16" + }, + { + "name": "Wakayama", + "shortCode": "30" + }, + { + "name": "Yamagata", + "shortCode": "06" + }, + { + "name": "Yamaguchi", + "shortCode": "35" + }, + { + "name": "Yamanashi", + "shortCode": "19" } ], - "regions": [ - { "name": "Andrijevica", "shortCode": "01" }, - { "name": "Bar", "shortCode": "02" }, - { "name": "Berane", "shortCode": "03" }, - { "name": "Bijelo Polje", "shortCode": "04" }, - { "name": "Budva", "shortCode": "05" }, - { "name": "Cetinje", "shortCode": "06" }, - { "name": "Danilovgrad", "shortCode": "07" }, - { "name": "Gusinje", "shortCode": "22" }, - { "name": "Herceg Novi", "shortCode": "08" }, - { "name": "Kolašin", "shortCode": "09" }, - { "name": "Kotor", "shortCode": "10" }, - { "name": "Mojkovac", "shortCode": "11" }, - { "name": "Nikšić", "shortCode": "12" }, - { "name": "Petnica", "shortCode": "23" }, - { "name": "Plav", "shortCode": "13" }, - { "name": "Plužine", "shortCode": "14" }, - { "name": "Pljevlja", "shortCode": "15" }, - { "name": "Podgorica", "shortCode": "16" }, - { "name": "Rožaje", "shortCode": "17" }, - { "name": "Šavnik", "shortCode": "18" }, - { "name": "Tivat", "shortCode": "19" }, - { "name": "Ulcinj", "shortCode": "20" }, - { "name": "Žabljak", "shortCode": "21" } - ] + "capital": "Tokyo", + "population": 123802000, + "area": 377972.28, + "continent": "Asia", + "nativeName": "日本", + "demonym": "Japanese", + "languages": [ + "Japanese" + ], + "tld": [ + ".jp" + ], + "borders": [ + "US", + "CN", + "RU", + "TW", + "KR", + "PH" + ], + "unMember": true, + "independent": true }, { - "countryName": "Montserrat", - "countryShortCode": "MS", - "phoneCode": "+1664", - "currencyCode": "XCD", - "latitude": "16.75000000", - "longitude": "-62.20000000", + "countryName": "Jersey", + "countryShortCode": "JE", + "phoneCode": "+44", + "currencyCode": "GBP", + "latitude": "49.25000000", + "longitude": "-2.16666666", "timezones": [ { - "zoneName": "America/Montserrat", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "zoneName": "Europe/Jersey", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" } ], "regions": [ - { "name": "Saint Anthony" }, - { "name": "Saint Georges" }, - { "name": "Saint Peter's" } - ] - }, - { - "countryName": "Morocco", - "countryShortCode": "MA", - "phoneCode": "+212", - "currencyCode": "MAD", - "latitude": "32.00000000", - "longitude": "-5.00000000", - "timezones": [ { - "zoneName": "Africa/Casablanca", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "WEST", - "tzName": "Western European Summer Time" + "name": "Jersey" } ], - "regions": [ - { "name": "Chaouia-Ouardigha", "shortCode": "09" }, - { "name": "Doukhala-Abda", "shortCode": "10" }, - { "name": "Fès-Boulemane", "shortCode": "05" }, - { "name": "Gharb-Chrarda-Beni Hssen", "shortCode": "02" }, - { "name": "Grand Casablanca", "shortCode": "08" }, - { "name": "Guelmim-Es Semara", "shortCode": "14" }, - { "name": "Laâyoune-Boujdour-Sakia el Hamra", "shortCode": "15" }, - { "name": "Marrakech-Tensift-Al Haouz", "shortCode": "11" }, - { "name": "Meknès-Tafilalet", "shortCode": "06" }, - { "name": "Oriental", "shortCode": "04" }, - { "name": "Oued ed Dahab-Lagouira", "shortCode": "16" }, - { "name": "Souss-Massa-Drâa", "shortCode": "13" }, - { "name": "Tadla-Azilal", "shortCode": "12" }, - { "name": "Tanger-Tétouan", "shortCode": "01" }, - { "name": "Taza-Al Hoceima-Taounate", "shortCode": "03" } - ] + "capital": "Saint Helier", + "population": 103267, + "area": 118.2, + "continent": "Europe", + "officialName": "Jersey", + "nativeName": "Jersey", + "demonym": "Jerseywoman", + "languages": [ + "English", + "Jersey Legal French", + "Jèrriais" + ], + "tld": [ + ".je" + ], + "unMember": false, + "independent": false }, { - "countryName": "Mozambique", - "countryShortCode": "MZ", - "phoneCode": "+258", - "currencyCode": "MZN", - "latitude": "-18.25000000", - "longitude": "35.00000000", + "countryName": "Jordan", + "countryShortCode": "JO", + "phoneCode": "+962", + "currencyCode": "JOD", + "latitude": "31.00000000", + "longitude": "36.00000000", "timezones": [ { - "zoneName": "Africa/Maputo", + "zoneName": "Asia/Amman", "gmtOffset": 7200, "gmtOffsetName": "UTC+02:00", - "abbreviation": "CAT", - "tzName": "Central Africa Time" + "abbreviation": "EET", + "tzName": "Eastern European Time" } ], "regions": [ - { "name": "Cabo Delgado", "shortCode": "P" }, - { "name": "Gaza", "shortCode": "G" }, - { "name": "Inhambane", "shortCode": "I" }, - { "name": "Manica", "shortCode": "B" }, - { "name": "Maputo", "shortCode": "L" }, - { "name": "Maputo (City)", "shortCode": "MPM" }, - { "name": "Nampula", "shortCode": "N" }, - { "name": "Niassa", "shortCode": "A" }, - { "name": "Sofala", "shortCode": "S" }, - { "name": "Tete", "shortCode": "T" }, - { "name": "Zambezia", "shortCode": "Q" } - ] - }, - { - "countryName": "Myanmar", - "countryShortCode": "MM", - "phoneCode": "+95", - "currencyCode": "MMK", - "latitude": "22.00000000", - "longitude": "98.00000000", - "timezones": [ { - "zoneName": "Asia/Yangon", - "gmtOffset": 23400, - "gmtOffsetName": "UTC+06:30", - "abbreviation": "MMT", - "tzName": "Myanmar Standard Time" + "name": "‘Ajlūn", + "shortCode": "AJ" + }, + { + "name": "Al 'Aqabah", + "shortCode": "AQ" + }, + { + "name": "Al Balqā’", + "shortCode": "BA" + }, + { + "name": "Al Karak", + "shortCode": "KA" + }, + { + "name": "Al Mafraq", + "shortCode": "MA" + }, + { + "name": "Al ‘A̅şimah", + "shortCode": "AM" + }, + { + "name": "Aţ Ţafīlah", + "shortCode": "AT" + }, + { + "name": "Az Zarqā’", + "shortCode": "AZ" + }, + { + "name": "Irbid", + "shortCode": "IR" + }, + { + "name": "Jarash", + "shortCode": "JA" + }, + { + "name": "Ma‘ān", + "shortCode": "MN" + }, + { + "name": "Mādabā", + "shortCode": "MD" } ], - "regions": [ - { "name": "Ayeyarwady", "shortCode": "07" }, - { "name": "Bago", "shortCode": "02" }, - { "name": "Chin", "shortCode": "14" }, - { "name": "Kachin", "shortCode": "11" }, - { "name": "Kayah", "shortCode": "12" }, - { "name": "Kayin", "shortCode": "13" }, - { "name": "Magway", "shortCode": "03" }, - { "name": "Mandalay", "shortCode": "04" }, - { "name": "Mon", "shortCode": "15" }, - { "name": "Nay Pyi Taw", "shortCode": "18" }, - { "name": "Rakhine", "shortCode": "16" }, - { "name": "Sagaing", "shortCode": "01" }, - { "name": "Shan", "shortCode": "17" }, - { "name": "Tanintharyi", "shortCode": "05" }, - { "name": "Yangon", "shortCode": "06" } - ] + "capital": "Amman", + "population": 10428241, + "area": 89341, + "continent": "Asia", + "nativeName": "االْمَمْلَكَةُ الْأُرْدُنِيَةُ الْهَاشِمِيَة", + "demonym": "Jordanian", + "languages": [ + "Arabic" + ], + "tld": [ + ".الاردن", + ".jo" + ], + "borders": [ + "IQ", + "IL", + "SA", + "SY", + "PS" + ], + "unMember": true, + "independent": true }, { - "countryName": "Namibia", - "countryShortCode": "NA", - "phoneCode": "+264", - "currencyCode": "NAD", - "latitude": "-22.00000000", - "longitude": "17.00000000", + "countryName": "Kazakhstan", + "countryShortCode": "KZ", + "phoneCode": "+77", + "currencyCode": "KZT", + "latitude": "48.00000000", + "longitude": "68.00000000", "timezones": [ { - "zoneName": "Africa/Windhoek", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "WAST", - "tzName": "West Africa Summer Time" - } - ], - "regions": [ - { "name": "Erongo", "shortCode": "ER" }, - { "name": "Hardap", "shortCode": "HA" }, - { "name": "Kavango East", "shortCode": "KE" }, - { "name": "Kavango West", "shortCode": "KW" }, - { "name": "Karas", "shortCode": "KA" }, - { "name": "Khomas", "shortCode": "KH" }, - { "name": "Kunene", "shortCode": "KU" }, - { "name": "Ohangwena", "shortCode": "OW" }, - { "name": "Omaheke", "shortCode": "OH" }, - { "name": "Omusati", "shortCode": "OS" }, - { "name": "Oshana", "shortCode": "ON" }, - { "name": "Oshikoto", "shortCode": "OT" }, - { "name": "Otjozondjupa", "shortCode": "OD" }, - { "name": "Zambezi", "shortCode": "CA" } - ] - }, - { - "countryName": "Nauru", - "countryShortCode": "NR", - "phoneCode": "+674", - "currencyCode": "AUD", - "latitude": "-0.53333333", - "longitude": "166.91666666", - "timezones": [ + "zoneName": "Asia/Almaty", + "gmtOffset": 21600, + "gmtOffsetName": "UTC+06:00", + "abbreviation": "ALMT", + "tzName": "Alma-Ata Time[1" + }, { - "zoneName": "Pacific/Nauru", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "NRT", - "tzName": "Nauru Time" + "zoneName": "Asia/Aqtau", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "AQTT", + "tzName": "Aqtobe Time" + }, + { + "zoneName": "Asia/Aqtobe", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "AQTT", + "tzName": "Aqtobe Time" + }, + { + "zoneName": "Asia/Atyrau", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "MSD+1", + "tzName": "Moscow Daylight Time+1" + }, + { + "zoneName": "Asia/Oral", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "ORAT", + "tzName": "Oral Time" + }, + { + "zoneName": "Asia/Qostanay", + "gmtOffset": 21600, + "gmtOffsetName": "UTC+06:00", + "abbreviation": "QYZST", + "tzName": "Qyzylorda Summer Time" + }, + { + "zoneName": "Asia/Qyzylorda", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "QYZT", + "tzName": "Qyzylorda Summer Time" } ], "regions": [ - { "name": "Aiwo", "shortCode": "01" }, - { "name": "Anabar", "shortCode": "02" }, - { "name": "Anetan", "shortCode": "03" }, - { "name": "Anibare", "shortCode": "04" }, - { "name": "Baiti", "shortCode": "05" }, - { "name": "Boe", "shortCode": "06" }, - { "name": "Buada", "shortCode": "07" }, - { "name": "Denigomodu", "shortCode": "08" }, - { "name": "Ewa", "shortCode": "09" }, - { "name": "Ijuw", "shortCode": "10" }, - { "name": "Meneng", "shortCode": "11" }, - { "name": "Nibok", "shortCode": "12" }, - { "name": "Uaboe", "shortCode": "13" }, - { "name": "Yaren", "shortCode": "14" } - ] - }, - { - "countryName": "Nepal", - "countryShortCode": "NP", - "phoneCode": "+977", - "currencyCode": "NPR", - "latitude": "28.00000000", - "longitude": "84.00000000", - "timezones": [ { - "zoneName": "Asia/Kathmandu", - "gmtOffset": 20700, - "gmtOffsetName": "UTC+05:45", - "abbreviation": "NPT", - "tzName": "Nepal Time" + "name": "Almaty", + "shortCode": "ALA" + }, + { + "name": "Aqmola", + "shortCode": "AKM" + }, + { + "name": "Aqtobe", + "shortCode": "AKT" + }, + { + "name": "Astana", + "shortCode": "AST" + }, + { + "name": "Atyrau", + "shortCode": "ATY" + }, + { + "name": "Batys Qazaqstan", + "shortCode": "ZAP" + }, + { + "name": "Bayqongyr" + }, + { + "name": "Mangghystau", + "shortCode": "MAN" + }, + { + "name": "Ongtustik Qazaqstan", + "shortCode": "YUZ" + }, + { + "name": "Pavlodar", + "shortCode": "PAV" + }, + { + "name": "Qaraghandy", + "shortCode": "KAR" + }, + { + "name": "Qostanay", + "shortCode": "KUS" + }, + { + "name": "Qyzylorda", + "shortCode": "KZY" + }, + { + "name": "Shyghys Qazaqstan", + "shortCode": "VOS" + }, + { + "name": "Soltustik Qazaqstan", + "shortCode": "SEV" + }, + { + "name": "Zhambyl", + "shortCode": "ZHA" } ], - "regions": [ - { "name": "Bagmati", "shortCode": "BA" }, - { "name": "Bheri", "shortCode": "BH" }, - { "name": "Dhawalagiri", "shortCode": "DH" }, - { "name": "Gandaki", "shortCode": "GA" }, - { "name": "Janakpur", "shortCode": "JA" }, - { "name": "Karnali", "shortCode": "KA" }, - { "name": "Kosi", "shortCode": "KO" }, - { "name": "Lumbini", "shortCode": "LU" }, - { "name": "Mahakali", "shortCode": "MA" }, - { "name": "Mechi", "shortCode": "ME" }, - { "name": "Narayani", "shortCode": "NA" }, - { "name": "Rapti", "shortCode": "RA" }, - { "name": "Sagarmatha", "shortCode": "SA" }, - { "name": "Seti", "shortCode": "SE" } - ] + "capital": "Astana", + "population": 20139914, + "area": 2724900, + "continent": "Asia", + "nativeName": "Қазақстан", + "demonym": "Kazakhstani", + "languages": [ + "Russian", + "Kazakh" + ], + "tld": [ + ".қаз", + ".kz" + ], + "borders": [ + "TM", + "CN", + "RU", + "UZ", + "KG" + ], + "unMember": true, + "independent": true }, { - "countryName": "Netherlands", - "countryShortCode": "NL", - "phoneCode": "+31", - "currencyCode": "EUR", - "latitude": "52.50000000", - "longitude": "5.75000000", + "countryName": "Kenya", + "countryShortCode": "KE", + "phoneCode": "+254", + "currencyCode": "KES", + "latitude": "1.00000000", + "longitude": "38.00000000", "timezones": [ { - "zoneName": "Europe/Amsterdam", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "zoneName": "Africa/Nairobi", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EAT", + "tzName": "East Africa Time" } ], "regions": [ - { "name": "Drenthe", "shortCode": "DR" }, - { "name": "Flevoland", "shortCode": "FL" }, - { "name": "Friesland", "shortCode": "FR" }, - { "name": "Gelderland", "shortCode": "GE" }, - { "name": "Groningen", "shortCode": "GR" }, - { "name": "Limburg", "shortCode": "LI" }, - { "name": "Noord-Brabant", "shortCode": "NB" }, - { "name": "Noord-Holland", "shortCode": "NH" }, - { "name": "Overijssel", "shortCode": "OV" }, - { "name": "Utrecht", "shortCode": "UT" }, - { "name": "Zeeland", "shortCode": "ZE" }, - { "name": "Zuid-Holland", "shortCode": "ZH" } - ] - }, - { - "countryName": "New Caledonia", - "countryShortCode": "NC", - "phoneCode": "+687", - "currencyCode": "XPF", - "latitude": "-21.50000000", - "longitude": "165.50000000", - "timezones": [ { - "zoneName": "Pacific/Noumea", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "NCT", - "tzName": "New Caledonia Time" + "name": "Baringo", + "shortCode": "01" + }, + { + "name": "Bomet", + "shortCode": "02" + }, + { + "name": "Bungoma", + "shortCode": "03" + }, + { + "name": "Busia", + "shortCode": "04" + }, + { + "name": "Eleyo/Marakwet", + "shortCode": "05" + }, + { + "name": "Embu", + "shortCode": "06" + }, + { + "name": "Garissa", + "shortCode": "07" + }, + { + "name": "Homa Bay", + "shortCode": "08" + }, + { + "name": "Isiolo", + "shortCode": "09" + }, + { + "name": "Kajiado", + "shortCode": "10" + }, + { + "name": "Kakamega", + "shortCode": "11" + }, + { + "name": "Kericho", + "shortCode": "12" + }, + { + "name": "Kiambu", + "shortCode": "13" + }, + { + "name": "Kilifi", + "shortCode": "14" + }, + { + "name": "Kirinyaga", + "shortCode": "15" + }, + { + "name": "Kisii", + "shortCode": "16" + }, + { + "name": "Kisumu", + "shortCode": "17" + }, + { + "name": "Kitui", + "shortCode": "18" + }, + { + "name": "Kwale", + "shortCode": "19" + }, + { + "name": "Laikipia", + "shortCode": "20" + }, + { + "name": "Lamu", + "shortCode": "21" + }, + { + "name": "Machakos", + "shortCode": "22" + }, + { + "name": "Makueni", + "shortCode": "23" + }, + { + "name": "Mandera", + "shortCode": "24" + }, + { + "name": "Marsabit", + "shortCode": "25" + }, + { + "name": "Meru", + "shortCode": "26" + }, + { + "name": "Migori", + "shortCode": "27" + }, + { + "name": "Mombasa", + "shortCode": "28" + }, + { + "name": "Murang'a", + "shortCode": "29" + }, + { + "name": "Nairobi City", + "shortCode": "30" + }, + { + "name": "Nakuru", + "shortCode": "31" + }, + { + "name": "Nandi", + "shortCode": "32" + }, + { + "name": "Narok", + "shortCode": "33" + }, + { + "name": "Nyamira", + "shortCode": "34" + }, + { + "name": "Nyandarua", + "shortCode": "35" + }, + { + "name": "Nyeri", + "shortCode": "36" + }, + { + "name": "Samburu", + "shortCode": "37" + }, + { + "name": "Siaya", + "shortCode": "38" + }, + { + "name": "Taita/Taveta", + "shortCode": "39" + }, + { + "name": "Tana River", + "shortCode": "40" + }, + { + "name": "Tharaka-Nithi", + "shortCode": "41" + }, + { + "name": "Trans Nzoia", + "shortCode": "42" + }, + { + "name": "Turkana", + "shortCode": "43" + }, + { + "name": "Uasin Gishu", + "shortCode": "44" + }, + { + "name": "Vihiga", + "shortCode": "45" + }, + { + "name": "Wajir", + "shortCode": "46" + }, + { + "name": "West Pokot", + "shortCode": "47" } ], - "regions": [ - { "name": "Iles Loyaute" }, - { "name": "Nord" }, - { "name": "Sud" } - ] + "capital": "Nairobi", + "population": 47564296, + "area": 581309, + "continent": "Africa", + "officialName": "Republic of Kenya", + "nativeName": "Republic of Kenya", + "demonym": "Kenyan", + "languages": [ + "English", + "Swahili" + ], + "tld": [ + ".ke" + ], + "borders": [ + "ET", + "TZ", + "SS", + "UG", + "SO", + "SD" + ], + "unMember": true, + "independent": true }, { - "countryName": "New Zealand", - "countryShortCode": "NZ", - "phoneCode": "+64", - "currencyCode": "NZD", - "latitude": "-41.00000000", - "longitude": "174.00000000", + "countryName": "Kiribati", + "countryShortCode": "KI", + "phoneCode": "+686", + "currencyCode": "AUD", + "latitude": "1.41666666", + "longitude": "173.00000000", "timezones": [ { - "zoneName": "Pacific/Auckland", + "zoneName": "Pacific/Enderbury", "gmtOffset": 46800, "gmtOffsetName": "UTC+13:00", - "abbreviation": "NZDT", - "tzName": "New Zealand Daylight Time" + "abbreviation": "PHOT", + "tzName": "Phoenix Island Time" }, { - "zoneName": "Pacific/Chatham", - "gmtOffset": 49500, - "gmtOffsetName": "UTC+13:45", - "abbreviation": "CHAST", - "tzName": "Chatham Standard Time" - } - ], - "regions": [ - { "name": "Auckland", "shortCode": "AUK" }, - { "name": "Bay of Plenty", "shortCode": "BOP" }, - { "name": "Canterbury", "shortCode": "CAN" }, - { "name": "Gisborne", "shortCode": "GIS" }, - { "name": "Hawke's Bay", "shortCode": "HKB" }, - { "name": "Marlborough", "shortCode": "MBH" }, - { "name": "Manawatu-Wanganui", "shortCode": "MWT" }, - { "name": "Northland", "shortCode": "NTL" }, - { "name": "Nelson", "shortCode": "NSN" }, - { "name": "Otago", "shortCode": "OTA" }, - { "name": "Southland", "shortCode": "STL" }, - { "name": "Taranaki", "shortCode": "TKI" }, - { "name": "Tasman", "shortCode": "TAS" }, - { "name": "Waikato", "shortCode": "WKO" }, - { "name": "Wellington", "shortCode": "WGN" }, - { "name": "West Coast", "shortCode": "WTC" }, - { "name": "Chatham Islands Territory", "shortCode": "CIT" } - ] - }, - { - "countryName": "Nicaragua", - "countryShortCode": "NI", - "phoneCode": "+505", - "currencyCode": "NIO", - "latitude": "13.00000000", - "longitude": "-85.00000000", - "timezones": [ + "zoneName": "Pacific/Kiritimati", + "gmtOffset": 50400, + "gmtOffsetName": "UTC+14:00", + "abbreviation": "LINT", + "tzName": "Line Islands Time" + }, { - "zoneName": "America/Managua", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "zoneName": "Pacific/Tarawa", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "GILT", + "tzName": "Gilbert Island Time" } ], "regions": [ - { "name": "Boaco", "shortCode": "BO" }, - { "name": "Carazo", "shortCode": "CA" }, - { "name": "Chinandega", "shortCode": "CI" }, - { "name": "Chontales", "shortCode": "CO" }, - { "name": "Estelí", "shortCode": "ES" }, - { "name": "Granada", "shortCode": "GR" }, - { "name": "Jinotega", "shortCode": "JI" }, - { "name": "León", "shortCode": "LE" }, - { "name": "Madriz", "shortCode": "MD" }, - { "name": "Managua", "shortCode": "MN" }, - { "name": "Masaya", "shortCode": "MS" }, - { "name": "Matagalpa", "shortCode": "MT" }, - { "name": "Nueva Segovia", "shortCode": "NS" }, - { "name": "Río San Juan", "shortCode": "SJ" }, - { "name": "Rivas", "shortCode": "RI" }, - { "name": "Atlántico Norte", "shortCode": "AN" }, - { "name": "Atlántico Sur", "shortCode": "AS" } - ] - }, - { - "countryName": "Niger", - "countryShortCode": "NE", - "phoneCode": "+227", - "currencyCode": "XOF", - "latitude": "16.00000000", - "longitude": "8.00000000", - "timezones": [ { - "zoneName": "Africa/Niamey", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "WAT", - "tzName": "West Africa Time" + "name": "Abaiang" + }, + { + "name": "Abemama" + }, + { + "name": "Aranuka" + }, + { + "name": "Arorae" + }, + { + "name": "Banaba" + }, + { + "name": "Beru" + }, + { + "name": "Butaritari" + }, + { + "name": "Central Gilberts" + }, + { + "name": "Gilbert Islands", + "shortCode": "G" + }, + { + "name": "Kanton" + }, + { + "name": "Kiritimati" + }, + { + "name": "Kuria" + }, + { + "name": "Line Islands", + "shortCode": "L" + }, + { + "name": "Maiana" + }, + { + "name": "Makin" + }, + { + "name": "Marakei" + }, + { + "name": "Nikunau" + }, + { + "name": "Nonouti" + }, + { + "name": "Northern Gilberts" + }, + { + "name": "Onotoa" + }, + { + "name": "Phoenix Islands", + "shortCode": "P" + }, + { + "name": "Southern Gilberts" + }, + { + "name": "Tabiteuea" + }, + { + "name": "Tabuaeran" + }, + { + "name": "Tamana" + }, + { + "name": "Tarawa" + }, + { + "name": "Teraina" } ], - "regions": [ - { "name": "Agadez", "shortCode": "1" }, - { "name": "Diffa", "shortCode": "2" }, - { "name": "Dosso", "shortCode": "3" }, - { "name": "Maradi", "shortCode": "4" }, - { "name": "Niamey", "shortCode": "8" }, - { "name": "Tahoua", "shortCode": "5" }, - { "name": "Tillabéri", "shortCode": "6" }, - { "name": "Zinder", "shortCode": "7" } - ] + "capital": "South Tarawa", + "population": 134518, + "area": 811, + "continent": "Oceania", + "officialName": "Republic of Kiribati", + "nativeName": "Ribaberiki ni Kiribati", + "demonym": "I-Kiribati", + "languages": [ + "English", + "Gilbertese" + ], + "tld": [ + ".ki" + ], + "borders": [ + "US", + "FR" + ], + "unMember": true, + "independent": true }, { - "countryName": "Nigeria", - "countryShortCode": "NG", - "phoneCode": "+234", - "currencyCode": "NGN", - "latitude": "10.00000000", - "longitude": "8.00000000", + "countryName": "Korea, Democratic People's Republic of", + "countryShortCode": "KP", + "phoneCode": "+850", + "currencyCode": "KPW", + "latitude": "40.00000000", + "longitude": "127.00000000", "timezones": [ { - "zoneName": "Africa/Lagos", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "WAT", - "tzName": "West Africa Time" + "zoneName": "Asia/Pyongyang", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "KST", + "tzName": "Korea Standard Time" } ], "regions": [ - { "name": "Abia", "shortCode": "AB" }, - { "name": "Abuja Federal Capital Territory", "shortCode": "FC" }, - { "name": "Adamawa", "shortCode": "AD" }, - { "name": "Akwa Ibom", "shortCode": "AK" }, - { "name": "Anambra", "shortCode": "AN" }, - { "name": "Bauchi", "shortCode": "BA" }, - { "name": "Bayelsa", "shortCode": "BY" }, - { "name": "Benue", "shortCode": "BE" }, - { "name": "Borno", "shortCode": "BO" }, - { "name": "Cross River", "shortCode": "CR" }, - { "name": "Delta", "shortCode": "DE" }, - { "name": "Ebonyi", "shortCode": "EB" }, - { "name": "Edo", "shortCode": "ED" }, - { "name": "Ekiti", "shortCode": "EK" }, - { "name": "Enugu", "shortCode": "EN" }, - { "name": "Gombe", "shortCode": "GO" }, - { "name": "Imo", "shortCode": "IM" }, - { "name": "Jigawa", "shortCode": "JI" }, - { "name": "Kaduna", "shortCode": "KD" }, - { "name": "Kano", "shortCode": "KN" }, - { "name": "Katsina", "shortCode": "KT" }, - { "name": "Kebbi", "shortCode": "KE" }, - { "name": "Kogi", "shortCode": "KO" }, - { "name": "Kwara", "shortCode": "KW" }, - { "name": "Lagos", "shortCode": "LA" }, - { "name": "Nassarawa", "shortCode": "NA" }, - { "name": "Niger", "shortCode": "NI" }, - { "name": "Ogun", "shortCode": "OG" }, - { "name": "Ondo", "shortCode": "ON" }, - { "name": "Osun", "shortCode": "OS" }, - { "name": "Oyo", "shortCode": "OY" }, - { "name": "Plateau", "shortCode": "PL" }, - { "name": "Rivers", "shortCode": "RI" }, - { "name": "Sokoto", "shortCode": "SO" }, - { "name": "Taraba", "shortCode": "TA" }, - { "name": "Yobe", "shortCode": "YO" }, - { "name": "Zamfara", "shortCode": "ZA" } - ] - }, - { - "countryName": "Niue", - "countryShortCode": "NU", - "phoneCode": "+683", - "currencyCode": "NZD", - "latitude": "-19.03333333", - "longitude": "-169.86666666", - "timezones": [ { - "zoneName": "Pacific/Niue", - "gmtOffset": -39600, - "gmtOffsetName": "UTC-11:00", - "abbreviation": "NUT", - "tzName": "Niue Time" + "name": "Chagang-do (Chagang Province)", + "shortCode": "04" + }, + { + "name": "Hamgyong-bukto (North Hamgyong Province)", + "shortCode": "09" + }, + { + "name": "Hamgyong-namdo (South Hamgyong Province)", + "shortCode": "08" + }, + { + "name": "Hwanghae-bukto (North Hwanghae Province)", + "shortCode": "06" + }, + { + "name": "Hwanghae-namdo (South Hwanghae Province)", + "shortCode": "05" + }, + { + "name": "Kangwon-do (Kangwon Province)", + "shortCode": "07" + }, + { + "name": "Nasŏn (Najin-Sŏnbong)", + "shortCode": "13" + }, + { + "name": "P'yongan-bukto (North P'yongan Province)", + "shortCode": "03" + }, + { + "name": "P'yongan-namdo (South P'yongan Province)", + "shortCode": "02" + }, + { + "name": "P'yongyang-si (P'yongyang City)", + "shortCode": "01" + }, + { + "name": "Yanggang-do (Yanggang Province)", + "shortCode": "10" } ], - "regions": [{ "name": "Niue" }] + "capital": "Pyongyang", + "population": 26418204, + "area": 120540, + "continent": "Asia", + "nativeName": "조선민주주의인민공화국", + "demonym": "North Korean", + "languages": [ + "Korean", + "North Korean standard language" + ], + "tld": [ + ".kp" + ], + "borders": [ + "CN", + "RU", + "KR" + ], + "unMember": true, + "independent": true }, { - "countryName": "Norfolk Island", - "countryShortCode": "NF", - "phoneCode": "+672", - "currencyCode": "AUD", - "latitude": "-29.03333333", - "longitude": "167.95000000", + "countryName": "Korea, Republic of", + "countryShortCode": "KR", + "phoneCode": "+82", + "currencyCode": "KRW", + "latitude": "37.00000000", + "longitude": "127.50000000", "timezones": [ { - "zoneName": "Pacific/Norfolk", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "NFT", - "tzName": "Norfolk Time" + "zoneName": "Asia/Seoul", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "KST", + "tzName": "Korea Standard Time" } ], - "regions": [{ "name": "Norfolk Island" }] - }, - { - "countryName": "Northern Mariana Islands", - "countryShortCode": "MP", - "phoneCode": "+1670", - "currencyCode": "USD", - "latitude": "15.20000000", - "longitude": "145.75000000", - "timezones": [ + "regions": [ { - "zoneName": "Pacific/Saipan", - "gmtOffset": 36000, - "gmtOffsetName": "UTC+10:00", - "abbreviation": "ChST", - "tzName": "Chamorro Standard Time" + "name": "Ch'ungch'ongbuk-do", + "shortCode": "43" + }, + { + "name": "Ch'ungch'ongnam-do", + "shortCode": "44" + }, + { + "name": "Cheju-do", + "shortCode": "49" + }, + { + "name": "Chollabuk-do", + "shortCode": "45" + }, + { + "name": "Chollanam-do", + "shortCode": "46" + }, + { + "name": "Inch'on-Kwangyokhi", + "shortCode": "28" + }, + { + "name": "Kang-won-do", + "shortCode": "42" + }, + { + "name": "Kwangju-Kwangyokshi", + "shortCode": "28" + }, + { + "name": "Kyonggi-do", + "shortCode": "41" + }, + { + "name": "Kyongsangbuk-do", + "shortCode": "47" + }, + { + "name": "Kyongsangnam-do", + "shortCode": "48" + }, + { + "name": "Pusan-Kwangyokshi", + "shortCode": "26" + }, + { + "name": "Seoul-T'ukpyolshi", + "shortCode": "11" + }, + { + "name": "Sejong", + "shortCode": "50" + }, + { + "name": "Taegu-Kwangyokshi", + "shortCode": "27" + }, + { + "name": "Taejon-Kwangyokshi", + "shortCode": "30" + }, + { + "name": "Ulsan-Kwangyokshi", + "shortCode": "31" } ], - "regions": [ - { "name": "Northern Islands" }, - { "name": "Rota" }, - { "name": "Saipan" }, - { "name": "Tinian" } - ] + "capital": "Seoul", + "population": 51628117, + "area": 100295, + "continent": "Asia", + "officialName": "Republic of Korea", + "nativeName": "대한민국", + "demonym": "South Korean", + "languages": [ + "Korean", + "Korean Sign Language" + ], + "tld": [ + ".한국", + ".kr" + ], + "borders": [ + "JP", + "CN", + "KP" + ], + "unMember": true, + "independent": true }, { - "countryName": "Norway", - "countryShortCode": "NO", - "phoneCode": "+47", - "currencyCode": "NOK", - "latitude": "62.00000000", - "longitude": "10.00000000", + "countryName": "Kosovo", + "countryShortCode": "XK", + "phoneCode": "+383", + "currencyCode": "EUR", + "latitude": "42.56129090", + "longitude": "20.34030350", "timezones": [ { - "zoneName": "Europe/Oslo", + "zoneName": "Europe/Belgrade", "gmtOffset": 3600, "gmtOffsetName": "UTC+01:00", "abbreviation": "CET", "tzName": "Central European Time" } ], - "regions": [ - { "name": "Akershus", "shortCode": "02" }, - { "name": "Aust-Agder", "shortCode": "09" }, - { "name": "Buskerud", "shortCode": "06" }, - { "name": "Finnmark", "shortCode": "20" }, - { "name": "Hedmark", "shortCode": "04" }, - { "name": "Hordaland", "shortCode": "12" }, - { "name": "Møre og Romsdal", "shortCode": "15" }, - { "name": "Nordland", "shortCode": "18" }, - { "name": "Nord-Trøndelag", "shortCode": "17" }, - { "name": "Oppland", "shortCode": "05" }, - { "name": "Oslo", "shortCode": "03" }, - { "name": "Rogaland", "shortCode": "11" }, - { "name": "Sogn og Fjordane", "shortCode": "14" }, - { "name": "Sør-Trøndelag", "shortCode": "16" }, - { "name": "Telemark", "shortCode": "08" }, - { "name": "Troms", "shortCode": "19" }, - { "name": "Vest-Agder", "shortCode": "10" }, - { "name": "Vestfold", "shortCode": "07" }, - { "name": "Østfold", "shortCode": "01" }, - { "name": "Jan Mayen", "shortCode": "22" }, - { "name": "Svalbard", "shortCode": "21" } - ] + "regions": [], + "capital": "Pristina", + "population": 1586659, + "area": 10909, + "continent": "Europe", + "nativeName": "Republika e Kosovës", + "demonym": "Kosovar", + "languages": [ + "Albanian", + "Serbian" + ], + "borders": [ + "MK", + "AL", + "ME", + "RS" + ], + "unMember": false, + "independent": true }, { - "countryName": "Oman", - "countryShortCode": "OM", - "phoneCode": "+968", - "currencyCode": "OMR", - "latitude": "21.00000000", - "longitude": "57.00000000", + "countryName": "Kuwait", + "countryShortCode": "KW", + "phoneCode": "+965", + "currencyCode": "KWD", + "latitude": "29.50000000", + "longitude": "45.75000000", "timezones": [ { - "zoneName": "Asia/Muscat", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "GST", - "tzName": "Gulf Standard Time" + "zoneName": "Asia/Kuwait", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "AST", + "tzName": "Arabia Standard Time" } ], "regions": [ - { "name": "Ad Dakhiliyah", "shortCode": "DA" }, - { "name": "Al Buraymi", "shortCode": "BU" }, - { "name": "Al Wusta", "shortCode": "WU" }, - { "name": "Az Zahirah", "shortCode": "ZA" }, - { "name": "Janub al Batinah", "shortCode": "BS" }, - { "name": "Janub ash Sharqiyah", "shortCode": "SS" }, - { "name": "Masqat", "shortCode": "MA" }, - { "name": "Musandam", "shortCode": "MU" }, - { "name": "Shamal al Batinah", "shortCode": "BJ" }, - { "name": "Shamal ash Sharqiyah", "shortCode": "SJ" }, - { "name": "Zufar", "shortCode": "ZU" } - ] - }, - { - "countryName": "Pakistan", - "countryShortCode": "PK", - "phoneCode": "+92", - "currencyCode": "PKR", - "latitude": "30.00000000", - "longitude": "70.00000000", - "timezones": [ { - "zoneName": "Asia/Karachi", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "PKT", - "tzName": "Pakistan Standard Time" - } - ], - "regions": [ - { "name": "Āzād Kashmīr", "shortCode": "JK" }, - { "name": "Balōchistān", "shortCode": "BA" }, - { "name": "Gilgit-Baltistān", "shortCode": "GB" }, - { "name": "Islāmābād", "shortCode": "IS" }, - { "name": "Khaībar Pakhtūnkhwās", "shortCode": "KP" }, - { "name": "Punjāb", "shortCode": "PB" }, - { "name": "Sindh", "shortCode": "SD" }, - { "name": "Federally Administered Tribal Areas", "shortCode": "TA" } - ] - }, - { - "countryName": "Palau", - "countryShortCode": "PW", - "phoneCode": "+680", - "currencyCode": "USD", - "latitude": "7.50000000", - "longitude": "134.50000000", - "timezones": [ + "name": "Al Aḩmadi", + "shortCode": "AH" + }, { - "zoneName": "Pacific/Palau", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "PWT", - "tzName": "Palau Time" - } - ], - "regions": [ - { "name": "Aimeliik", "shortCode": "002" }, - { "name": "Airai", "shortCode": "004" }, - { "name": "Angaur", "shortCode": "010" }, - { "name": "Hatobohei", "shortCode": "050" }, - { "name": "Kayangel", "shortCode": "100" }, - { "name": "Koror", "shortCode": "150" }, - { "name": "Melekeok", "shortCode": "212" }, - { "name": "Ngaraard", "shortCode": "214" }, - { "name": "Ngarchelong", "shortCode": "218" }, - { "name": "Ngardmau", "shortCode": "222" }, - { "name": "Ngatpang", "shortCode": "224" }, - { "name": "Ngchesar", "shortCode": "226" }, - { "name": "Ngeremlengui", "shortCode": "227" }, - { "name": "Ngiwal", "shortCode": "228" }, - { "name": "Peleliu", "shortCode": "350" }, - { "name": "Sonsoral", "shortCode": "350" } - ] - }, - { - "countryName": "Palestine, State of", - "countryShortCode": "PS", - "phoneCode": "+970", - "currencyCode": "ILS", - "latitude": "31.90000000", - "longitude": "35.20000000", - "timezones": [ + "name": "Al Farwānīyah", + "shortCode": "FA" + }, { - "zoneName": "Asia/Gaza", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Al Jahrā’", + "shortCode": "JA" }, { - "zoneName": "Asia/Hebron", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Al ‘Āşimah", + "shortCode": "KU" + }, + { + "name": "Ḩawallī", + "shortCode": "HA" + }, + { + "name": "Mubārak al Kabir", + "shortCode": "MU" } ], - "regions": [ - { "name": "Ak Khalīl", "shortCode": "HBN" }, - { "name": "Al Quds", "shortCode": "JEM" }, - { "name": "Arīḩā wal Aghwār", "shortCode": "JRH" }, - { "name": "Bayt Laḩm", "shortCode": "BTH" }, - { "name": "Dayr al Balaḩ", "shortCode": "DEB" }, - { "name": "Ghazzah", "shortCode": "GZA" }, - { "name": "Janīn", "shortCode": "JEN" }, - { "name": "Khān Yūnis", "shortCode": "KYS" }, - { "name": "Nāblus", "shortCode": "NBS" }, - { "name": "Qalqīyah", "shortCode": "QQA" }, - { "name": "Rafaḩ", "shortCode": "RFH" }, - { "name": "Rām Allāh wal Bīrah", "shortCode": "RBH" }, - { "name": "Salfīt", "shortCode": "SLT" }, - { "name": "Shamāl Ghazzah", "shortCode": "NGZ" }, - { "name": "Ţūbās", "shortCode": "TBS" }, - { "name": "Ţūlkarm", "shortCode": "TKM" } - ] + "capital": "Kuwait City", + "population": 4464000, + "area": 17818, + "continent": "Asia", + "nativeName": "الكويت", + "demonym": "Kuwaiti", + "languages": [ + "Arabic" + ], + "tld": [ + ".kw" + ], + "borders": [ + "IR", + "IQ", + "SA" + ], + "unMember": true, + "independent": true }, { - "countryName": "Panama", - "countryShortCode": "PA", - "phoneCode": "+507", - "currencyCode": "PAB", - "latitude": "9.00000000", - "longitude": "-80.00000000", + "countryName": "Kyrgyzstan", + "countryShortCode": "KG", + "phoneCode": "+996", + "currencyCode": "KGS", + "latitude": "41.00000000", + "longitude": "75.00000000", "timezones": [ { - "zoneName": "America/Panama", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "zoneName": "Asia/Bishkek", + "gmtOffset": 21600, + "gmtOffsetName": "UTC+06:00", + "abbreviation": "KGT", + "tzName": "Kyrgyzstan Time" } ], "regions": [ - { "name": "Bocas del Toro", "shortCode": "1" }, - { "name": "Chiriquí", "shortCode": "4" }, - { "name": "Coclé", "shortCode": "2" }, - { "name": "Colón", "shortCode": "3" }, - { "name": "Darién", "shortCode": "5" }, - { "name": "Emberá", "shortCode": "EM" }, - { "name": "Herrera", "shortCode": "6" }, - { "name": "Kuna Yala", "shortCode": "KY" }, - { "name": "Los Santos", "shortCode": "7" }, - { "name": "Ngäbe-Buglé", "shortCode": "NB" }, - { "name": "Panamá", "shortCode": "8" }, - { "name": "Panamá Oeste", "shortCode": "10" }, - { "name": "Veraguas", "shortCode": "9" } - ] - }, - { - "countryName": "Papua New Guinea", - "countryShortCode": "PG", - "phoneCode": "+675", - "currencyCode": "PGK", - "latitude": "-6.00000000", - "longitude": "147.00000000", - "timezones": [ { - "zoneName": "Pacific/Bougainville", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "BST", - "tzName": "Bougainville Standard Time[6" + "name": "Batken Oblasty", + "shortCode": "B" }, { - "zoneName": "Pacific/Port_Moresby", - "gmtOffset": 36000, - "gmtOffsetName": "UTC+10:00", - "abbreviation": "PGT", - "tzName": "Papua New Guinea Time" + "name": "Bishkek Shaary", + "shortCode": "GB" + }, + { + "name": "Chuy Oblasty (Bishkek)", + "shortCode": "C" + }, + { + "name": "Jalal-Abad Oblasty", + "shortCode": "J" + }, + { + "name": "Naryn Oblasty", + "shortCode": "N" + }, + { + "name": "Osh Oblasty", + "shortCode": "O" + }, + { + "name": "Talas Oblasty", + "shortCode": "T" + }, + { + "name": "Ysyk-Kol Oblasty (Karakol)", + "shortCode": "Y" } ], - "regions": [ - { "name": "Bougainville", "shortCode": "NSB" }, - { "name": "Central", "shortCode": "CPM" }, - { "name": "Chimbu", "shortCode": "CPK" }, - { "name": "East New Britain", "shortCode": "EBR" }, - { "name": "East Sepik", "shortCode": "ESW" }, - { "name": "Eastern Highlands", "shortCode": "EHG" }, - { "name": "Enga", "shortCode": "EPW" }, - { "name": "Gulf", "shortCode": "GPK" }, - { "name": "Hela", "shortCode": "HLA" }, - { "name": "Jiwaka", "shortCode": "JWK" }, - { "name": "Madang", "shortCode": "MOM" }, - { "name": "Manus", "shortCode": "MRL" }, - { "name": "Milne Bay", "shortCode": "MBA" }, - { "name": "Morobe", "shortCode": "MPL" }, - { "name": "Port Moresby", "shortCode": "NCD" }, - { "name": "New Ireland", "shortCode": "NIK" }, - { "name": "Northern", "shortCode": "NPP" }, - { "name": "Southern Highlands", "shortCode": "SHM" }, - { "name": "West New Britain", "shortCode": "WBK" }, - { "name": "West Sepik", "shortCode": "SAN" }, - { "name": "Western", "shortCode": "WPD" }, - { "name": "Western Highlands", "shortCode": "WHM" } - ] + "capital": "Bishkek", + "population": 7281800, + "area": 199951, + "continent": "Asia", + "nativeName": "Кыргызстан", + "demonym": "Kyrgyz", + "languages": [ + "Kyrgyz" + ], + "tld": [ + ".kg" + ], + "borders": [ + "CN", + "KZ", + "UZ", + "TJ" + ], + "unMember": true, + "independent": true }, { - "countryName": "Paraguay", - "countryShortCode": "PY", - "phoneCode": "+595", - "currencyCode": "PYG", - "latitude": "-23.00000000", - "longitude": "-58.00000000", + "countryName": "Laos", + "countryShortCode": "LA", + "phoneCode": "+856", + "currencyCode": "LAK", + "latitude": "18.00000000", + "longitude": "105.00000000", "timezones": [ { - "zoneName": "America/Asuncion", - "gmtOffset": -10800, - "gmtOffsetName": "UTC-03:00", - "abbreviation": "PYST", - "tzName": "Paraguay Summer Time" + "zoneName": "Asia/Vientiane", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "ICT", + "tzName": "Indochina Time" } ], "regions": [ - { "name": "Alto Paraguay", "shortCode": "16" }, - { "name": "Alto Parana", "shortCode": "10" }, - { "name": "Amambay", "shortCode": "13" }, - { "name": "Asuncion", "shortCode": "ASU" }, - { "name": "Caaguazu", "shortCode": "5" }, - { "name": "Caazapa", "shortCode": "6" }, - { "name": "Canindeyu", "shortCode": "14" }, - { "name": "Central", "shortCode": "11" }, - { "name": "Concepcion", "shortCode": "1" }, - { "name": "Cordillera", "shortCode": "3" }, - { "name": "Guaira", "shortCode": "4" }, - { "name": "Itapua", "shortCode": "7" }, - { "name": "Misiones", "shortCode": "8" }, - { "name": "Neembucu", "shortCode": "12" }, - { "name": "Paraguari", "shortCode": "9" }, - { "name": "Presidente Hayes", "shortCode": "15" }, - { "name": "San Pedro", "shortCode": "2" } - ] - }, - { - "countryName": "Peru", - "countryShortCode": "PE", - "phoneCode": "+51", - "currencyCode": "PEN", - "latitude": "-10.00000000", - "longitude": "-76.00000000", - "timezones": [ { - "zoneName": "America/Lima", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "PET", - "tzName": "Peru Time" + "name": "Attapu", + "shortCode": "AT" + }, + { + "name": "Bokèo", + "shortCode": "BK" + }, + { + "name": "Bolikhamxai", + "shortCode": "BL" + }, + { + "name": "Champasak", + "shortCode": "CH" + }, + { + "name": "Houaphan", + "shortCode": "HO" + }, + { + "name": "Khammouan", + "shortCode": "KH" + }, + { + "name": "Louang Namtha", + "shortCode": "LM" + }, + { + "name": "Louangphabang", + "shortCode": "LP" + }, + { + "name": "Oudômxai", + "shortCode": "OU" + }, + { + "name": "Phôngsali", + "shortCode": "PH" + }, + { + "name": "Salavan", + "shortCode": "SL" + }, + { + "name": "Savannakhét", + "shortCode": "SV" + }, + { + "name": "Vientiane", + "shortCode": "VI" + }, + { + "name": "Xaignabouli", + "shortCode": "XA" + }, + { + "name": "Xékong", + "shortCode": "XE" + }, + { + "name": "Xaisomboun", + "shortCode": "XS" + }, + { + "name": "Xiangkhouang", + "shortCode": "XI" } ], - "regions": [ - { "name": "Amazonas", "shortCode": "AMA" }, - { "name": "Ancash", "shortCode": "ANC" }, - { "name": "Apurimac", "shortCode": "APU" }, - { "name": "Arequipa", "shortCode": "ARE" }, - { "name": "Ayacucho", "shortCode": "AYA" }, - { "name": "Cajamarca", "shortCode": "CAJ" }, - { "name": "Callao", "shortCode": "CAL" }, - { "name": "Cusco", "shortCode": "CUS" }, - { "name": "Huancavelica", "shortCode": "HUV" }, - { "name": "Huanuco", "shortCode": "HUC" }, - { "name": "Ica", "shortCode": "ICA" }, - { "name": "Junin", "shortCode": "JUN" }, - { "name": "La Libertad", "shortCode": "LAL" }, - { "name": "Lambayeque", "shortCode": "LAM" }, - { "name": "Lima", "shortCode": "LIM" }, - { "name": "Loreto", "shortCode": "LOR" }, - { "name": "Madre de Dios", "shortCode": "MDD" }, - { "name": "Moquegua", "shortCode": "MOQ" }, - { "name": "Municipalidad Metropolitana de Lima", "shortCode": "LMA" }, - { "name": "Pasco", "shortCode": "PAS" }, - { "name": "Piura", "shortCode": "PIU" }, - { "name": "Puno", "shortCode": "PUN" }, - { "name": "San Martin", "shortCode": "SAM" }, - { "name": "Tacna", "shortCode": "TAC" }, - { "name": "Tumbes", "shortCode": "TUM" }, - { "name": "Ucayali", "shortCode": "UCA" } - ] + "capital": "Vientiane", + "population": 6858160, + "area": 236800, + "continent": "Asia", + "nativeName": "ສາທາລະນະລັດ ປະຊາທິປະໄຕ ປະຊາຊົນລາວ", + "demonym": "Lao", + "languages": [ + "Lao" + ], + "tld": [ + ".la" + ], + "borders": [ + "CN", + "KH", + "MM", + "TH", + "VN" + ], + "unMember": true, + "independent": true }, { - "countryName": "Philippines", - "countryShortCode": "PH", - "phoneCode": "+63", - "currencyCode": "PHP", - "latitude": "13.00000000", - "longitude": "122.00000000", + "countryName": "Latvia", + "countryShortCode": "LV", + "phoneCode": "+371", + "currencyCode": "EUR", + "latitude": "57.00000000", + "longitude": "25.00000000", "timezones": [ { - "zoneName": "Asia/Manila", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "PHT", - "tzName": "Philippine Time" + "zoneName": "Europe/Riga", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" } ], "regions": [ - { "name": "Abra", "shortCode": "ABR" }, - { "name": "Agusan del Norte", "shortCode": "AGN" }, - { "name": "Agusan del Sur", "shortCode": "AGS" }, - { "name": "Aklan", "shortCode": "AKL" }, - { "name": "Albay", "shortCode": "ALB" }, - { "name": "Antique", "shortCode": "ANT" }, - { "name": "Apayao", "shortCode": "APA" }, - { "name": "Aurora", "shortCode": "AUR" }, - { "name": "Basilan", "shortCode": "BAS" }, - { "name": "Bataan", "shortCode": "BAN" }, - { "name": "Batanes", "shortCode": "BTN" }, - { "name": "Batangas", "shortCode": "BTG" }, - { "name": "Benguet", "shortCode": "BEN" }, - { "name": "Biliran", "shortCode": "BIL" }, - { "name": "Bohol", "shortCode": "BOH" }, - { "name": "Bukidnon", "shortCode": "BUK" }, - { "name": "Bulacan", "shortCode": "BUL" }, - { "name": "Cagayan", "shortCode": "CAG" }, - { "name": "Camarines Norte", "shortCode": "CAN" }, - { "name": "Camarines Sur", "shortCode": "CAS" }, - { "name": "Camiguin", "shortCode": "CAM" }, - { "name": "Capiz", "shortCode": "CAP" }, - { "name": "Catanduanes", "shortCode": "CAT" }, - { "name": "Cavite", "shortCode": "CAV" }, - { "name": "Cebu", "shortCode": "CEB" }, - { "name": "Compostela", "shortCode": "COM" }, - { "name": "Cotabato", "shortCode": "NCO" }, - { "name": "Davao del Norte", "shortCode": "DAV" }, - { "name": "Davao del Sur", "shortCode": "DAS" }, - { "name": "Davao Occidental", "shortCode": "DVO" }, - { "name": "Davao Oriental", "shortCode": "DAO" }, - { "name": "Dinagat Islands", "shortCode": "DIN" }, - { "name": "Eastern Samar", "shortCode": "EAS" }, - { "name": "Guimaras", "shortCode": "GUI" }, - { "name": "Ifugao", "shortCode": "IFU" }, - { "name": "Ilocos Norte", "shortCode": "ILN" }, - { "name": "Ilocos Sur", "shortCode": "ILS" }, - { "name": "Iloilo", "shortCode": "ILI" }, - { "name": "Isabela", "shortCode": "ISA" }, - { "name": "Kalinga", "shortCode": "KAL" }, - { "name": "La Union", "shortCode": "LUN" }, - { "name": "Laguna", "shortCode": "LAG" }, - { "name": "Lanao del Norte", "shortCode": "LAN" }, - { "name": "Lanao del Sur", "shortCode": "LAS" }, - { "name": "Leyte", "shortCode": "LEY" }, - { "name": "Maguindanao", "shortCode": "MAG" }, - { "name": "Masbate", "shortCode": "MAS" }, - { "name": "Metro Manila", "shortCode": "00" }, - { "name": "Mindoro Occidental", "shortCode": "MDC" }, - { "name": "Mindoro Oriental", "shortCode": "MDR" }, - { "name": "Misamis Occidental", "shortCode": "MSC" }, - { "name": "Misamis Oriental", "shortCode": "MSR" }, - { "name": "Mountain Province", "shortCode": "MOU" }, - { "name": "Negros Occidental", "shortCode": "NEC" }, - { "name": "Negros Oriental", "shortCode": "NER" }, - { "name": "Northern Samar", "shortCode": "NSA" }, - { "name": "Nueva Ecija", "shortCode": "NUE" }, - { "name": "Nueva Vizcaya", "shortCode": "NUV" }, - { "name": "Palawan", "shortCode": "PLW" }, - { "name": "Pampanga", "shortCode": "PAM" }, - { "name": "Pangasinan", "shortCode": "PAN" }, - { "name": "Quezon", "shortCode": "QUE" }, - { "name": "Quirino", "shortCode": "QUI" }, - { "name": "Rizal", "shortCode": "RIZ" }, - { "name": "Romblon", "shortCode": "ROM" }, - { "name": "Samar", "shortCode": "WSA" }, - { "name": "Sarangani", "shortCode": "SAR" }, - { "name": "Siquijor", "shortCode": "SIG" }, - { "name": "Sorsogon", "shortCode": "SOR" }, - { "name": "Southern Leyte", "shortCode": "SLE" }, - { "name": "Sultan Kudarat", "shortCode": "AUK" }, - { "name": "Sulu", "shortCode": "SLU" }, - { "name": "Surigao del Norte", "shortCode": "SUN" }, - { "name": "Surigao del Sur", "shortCode": "SUR" }, - { "name": "Tarlac", "shortCode": "TAR" }, - { "name": "Tawi-Tawi", "shortCode": "TAW" }, - { "name": "Zambales", "shortCode": "ZMB" }, - { "name": "Zamboanga del Norte", "shortCode": "ZAN" }, - { "name": "Zamboanga del Sur", "shortCode": "ZAS" }, - { "name": "Zamboanga Sibugay", "shortCode": "ZSI" } - ] - }, - { - "countryName": "Pitcairn", - "countryShortCode": "PN", - "phoneCode": "+872", - "currencyCode": "NZD", - "latitude": "-25.06666666", - "longitude": "-130.10000000", - "timezones": [ { - "zoneName": "Pacific/Pitcairn", - "gmtOffset": -28800, - "gmtOffsetName": "UTC-08:00", - "abbreviation": "PST", - "tzName": "Pacific Standard Time (North America" - } - ], - "regions": [{ "name": "Pitcairn Islands" }] - }, - { - "countryName": "Poland", - "countryShortCode": "PL", - "phoneCode": "+48", - "currencyCode": "PLN", - "latitude": "52.00000000", - "longitude": "20.00000000", - "timezones": [ + "name": "Aglona", + "shortCode": "001" + }, { - "zoneName": "Europe/Warsaw", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } - ], - "regions": [ - { "name": "Dolnośląskie", "shortCode": "DS" }, - { "name": "Kujawsko-pomorskie", "shortCode": "KP" }, - { "name": "Łódzkie", "shortCode": "LD" }, - { "name": "Lubelskie", "shortCode": "LU" }, - { "name": "Lubuskie", "shortCode": "LB" }, - { "name": "Małopolskie", "shortCode": "MA" }, - { "name": "Mazowieckie", "shortCode": "MZ" }, - { "name": "Opolskie", "shortCode": "OP" }, - { "name": "Podkarpackie", "shortCode": "PK" }, - { "name": "Podlaskie", "shortCode": "PD" }, - { "name": "Pomorskie", "shortCode": "PM" }, - { "name": "Śląskie", "shortCode": "SL" }, - { "name": "Świętokrzyskie", "shortCode": "SK" }, - { "name": "Warmińsko-mazurskie", "shortCode": "WN" }, - { "name": "Wielkopolskie", "shortCode": "WP" }, - { "name": "Zachodniopomorskie", "shortCode": "ZP" } - ] - }, - { - "countryName": "Portugal", - "countryShortCode": "PT", - "phoneCode": "+351", - "currencyCode": "EUR", - "latitude": "39.50000000", - "longitude": "-8.00000000", - "timezones": [ + "name": "Aizkraukle", + "shortCode": "002" + }, { - "zoneName": "Atlantic/Azores", - "gmtOffset": -3600, - "gmtOffsetName": "UTC-01:00", - "abbreviation": "AZOT", - "tzName": "Azores Standard Time" + "name": "Aizpute", + "shortCode": "003" }, { - "zoneName": "Atlantic/Madeira", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "WET", - "tzName": "Western European Time" + "name": "Aknīste", + "shortCode": "004" }, { - "zoneName": "Europe/Lisbon", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "WET", - "tzName": "Western European Time" - } - ], - "regions": [ - { "name": "Açores", "shortCode": "20" }, - { "name": "Aveiro", "shortCode": "01" }, - { "name": "Beja", "shortCode": "02" }, - { "name": "Braga", "shortCode": "03" }, - { "name": "Bragança", "shortCode": "04" }, - { "name": "Castelo Branco", "shortCode": "05" }, - { "name": "Coimbra", "shortCode": "06" }, - { "name": "Évora", "shortCode": "07" }, - { "name": "Faro", "shortCode": "08" }, - { "name": "Guarda", "shortCode": "09" }, - { "name": "Leiria", "shortCode": "10" }, - { "name": "Lisboa", "shortCode": "11" }, - { "name": "Madeira", "shortCode": "30" }, - { "name": "Portalegre", "shortCode": "12" }, - { "name": "Porto", "shortCode": "13" }, - { "name": "Santarém", "shortCode": "14" }, - { "name": "Setúbal", "shortCode": "15" }, - { "name": "Viana do Castelo", "shortCode": "16" }, - { "name": "Vila Real", "shortCode": "17" }, - { "name": "Viseu", "shortCode": "18" } - ] - }, - { - "countryName": "Puerto Rico", - "countryShortCode": "PR", - "phoneCode": "+1939", - "currencyCode": "USD", - "latitude": "18.25000000", - "longitude": "-66.50000000", - "timezones": [ + "name": "Aloja", + "shortCode": "005" + }, { - "zoneName": "America/Puerto_Rico", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" - } - ], - "regions": [ - { "name": "Adjuntas" }, - { "name": "Aguada" }, - { "name": "Aguadilla" }, - { "name": "Aguas Buenas" }, - { "name": "Aibonito" }, - { "name": "Anasco" }, - { "name": "Arecibo" }, - { "name": "Arroyo" }, - { "name": "Barceloneta" }, - { "name": "Barranquitas" }, - { "name": "Bayamon" }, - { "name": "Cabo Rojo" }, - { "name": "Caguas" }, - { "name": "Camuy" }, - { "name": "Canovanas" }, - { "name": "Carolina" }, - { "name": "Cat" }, - { "name": "Ceiba" }, - { "name": "Ciales" }, - { "name": "Cidra" }, - { "name": "Coamo" }, - { "name": "Comerio" }, - { "name": "Corozal" }, - { "name": "Culebra" }, - { "name": "Dorado" }, - { "name": "Fajardo" }, - { "name": "Florida" }, - { "name": "Guanica" }, - { "name": "Guayama" }, - { "name": "Guayanilla" }, - { "name": "Guaynabo" }, - { "name": "Gurabo" }, - { "name": "Hatillo" }, - { "name": "Hormigueros" }, - { "name": "Humacao" }, - { "name": "Isabe" }, - { "name": "Juana Diaz" }, - { "name": "Juncos" }, - { "name": "Lajas" }, - { "name": "Lares" }, - { "name": "Las Marias" }, - { "name": "Las oiza" }, - { "name": "Luquillo" }, - { "name": "Manati" }, - { "name": "Maricao" }, - { "name": "Maunabo" }, - { "name": "Mayaguez" }, - { "name": "Moca" }, - { "name": "Morovis" }, - { "name": "Naguabo" }, - { "name": "Naranjito" }, - { "name": "Orocovis" }, - { "name": "Patillas" }, - { "name": "Penuelas" }, - { "name": "Ponce" }, - { "name": "Quebradillas" }, - { "name": "Rincon" }, - { "name": "Rio Grande" }, - { "name": "Sabana linas" }, - { "name": "San German" }, - { "name": "San Juan" }, - { "name": "San Lorenzo" }, - { "name": "San Sebastian" }, - { "name": "Santa Isabel" }, - { "name": "Toa Alta" }, - { "name": "Toa Baja" }, - { "name": "Trujillo Alto" }, - { "name": "Utuado" }, - { "name": "Vega Alta" }, - { "name": "Vega ues" }, - { "name": "Villalba" }, - { "name": "Yabucoa" }, - { "name": "Yauco" } - ] - }, - { - "countryName": "Qatar", - "countryShortCode": "QA", - "phoneCode": "+974", - "currencyCode": "QAR", - "latitude": "25.50000000", - "longitude": "51.25000000", - "timezones": [ + "name": "Alsunga", + "shortCode": "06" + }, { - "zoneName": "Asia/Qatar", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "AST", - "tzName": "Arabia Standard Time" - } - ], - "regions": [ - { "name": "Ad Dawḩah", "shortCode": "DA" }, - { "name": "Al Khawr wa adh Dhakhīrah", "shortCode": "KH" }, - { "name": "Al Wakrah", "shortCode": "WA" }, - { "name": "Ar Rayyān", "shortCode": "RA" }, - { "name": "Ash Shamāl", "shortCode": "MS" }, - { "name": "Az̧ Za̧`āyin", "shortCode": "ZA" }, - { "name": "Umm Şalāl", "shortCode": "US" } - ] - }, - { - "countryName": "Réunion", - "countryShortCode": "RE", - "phoneCode": "+262", - "currencyCode": "EUR", - "latitude": "-21.15000000", - "longitude": "55.50000000", - "timezones": [ + "name": "Alūksne", + "shortCode": "007" + }, { - "zoneName": "Indian/Reunion", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "RET", - "tzName": "Réunion Time" - } - ], - "regions": [{ "name": "Réunion" }] - }, - { - "countryName": "Romania", - "countryShortCode": "RO", - "phoneCode": "+40", - "currencyCode": "RON", - "latitude": "46.00000000", - "longitude": "25.00000000", - "timezones": [ + "name": "Amata", + "shortCode": "008" + }, { - "zoneName": "Europe/Bucharest", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" - } - ], - "regions": [ - { "name": "Alba", "shortCode": "AB" }, - { "name": "Arad", "shortCode": "AR" }, - { "name": "Arges", "shortCode": "AG" }, - { "name": "Bacau", "shortCode": "BC" }, - { "name": "Bihor", "shortCode": "BH" }, - { "name": "Bistrita-Nasaud", "shortCode": "BN" }, - { "name": "Botosani", "shortCode": "BT" }, - { "name": "Braila", "shortCode": "BR" }, - { "name": "Brasov", "shortCode": "BV" }, - { "name": "Bucuresti", "shortCode": "B" }, - { "name": "Buzau", "shortCode": "BZ" }, - { "name": "Calarasi", "shortCode": "CL" }, - { "name": "Caras-Severin", "shortCode": "CS" }, - { "name": "Cluj", "shortCode": "CJ" }, - { "name": "Constanta", "shortCode": "CT" }, - { "name": "Covasna", "shortCode": "CV" }, - { "name": "Dambovita", "shortCode": "DB" }, - { "name": "Dolj", "shortCode": "DJ" }, - { "name": "Galati", "shortCode": "GL" }, - { "name": "Giurgiu", "shortCode": "GR" }, - { "name": "Gorj", "shortCode": "GJ" }, - { "name": "Harghita", "shortCode": "HR" }, - { "name": "Hunedoara", "shortCode": "HD" }, - { "name": "Ialomita", "shortCode": "IL" }, - { "name": "Iasi", "shortCode": "IS" }, - { "name": "Maramures", "shortCode": "MM" }, - { "name": "Mehedinti", "shortCode": "MH" }, - { "name": "Mures", "shortCode": "MS" }, - { "name": "Neamt", "shortCode": "NT" }, - { "name": "Olt", "shortCode": "OT" }, - { "name": "Prahova", "shortCode": "PH" }, - { "name": "Salaj", "shortCode": "SJ" }, - { "name": "Satu Mare", "shortCode": "SM" }, - { "name": "Sibiu", "shortCode": "SB" }, - { "name": "Suceava", "shortCode": "SV" }, - { "name": "Teleorman", "shortCode": "TR" }, - { "name": "Timis", "shortCode": "TM" }, - { "name": "Tulcea", "shortCode": "TL" }, - { "name": "Valcea", "shortCode": "VL" }, - { "name": "Vaslui", "shortCode": "VS" }, - { "name": "Vrancea", "shortCode": "VN" } - ] - }, - { - "countryName": "Russian Federation", - "countryShortCode": "RU", - "phoneCode": "+7", - "currencyCode": "RUB", - "latitude": "60.00000000", - "longitude": "100.00000000", - "timezones": [ + "name": "Ape", + "shortCode": "009" + }, { - "zoneName": "Asia/Anadyr", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "ANAT", - "tzName": "Anadyr Time[4" + "name": "Auce", + "shortCode": "010" }, { - "zoneName": "Asia/Barnaul", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "KRAT", - "tzName": "Krasnoyarsk Time" + "name": "Ādaži", + "shortCode": "011" }, { - "zoneName": "Asia/Chita", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "YAKT", - "tzName": "Yakutsk Time" + "name": "Babīte", + "shortCode": "012" }, { - "zoneName": "Asia/Irkutsk", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "IRKT", - "tzName": "Irkutsk Time" + "name": "Baldone", + "shortCode": "013" }, { - "zoneName": "Asia/Kamchatka", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "PETT", - "tzName": "Kamchatka Time" + "name": "Baltinava", + "shortCode": "014" }, { - "zoneName": "Asia/Khandyga", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "YAKT", - "tzName": "Yakutsk Time" + "name": "Balvi", + "shortCode": "015" }, { - "zoneName": "Asia/Krasnoyarsk", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "KRAT", - "tzName": "Krasnoyarsk Time" + "name": "Bauska", + "shortCode": "016" }, { - "zoneName": "Asia/Magadan", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "MAGT", - "tzName": "Magadan Time" + "name": "Beverīna", + "shortCode": "017" }, { - "zoneName": "Asia/Novokuznetsk", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "KRAT", - "tzName": "Krasnoyarsk Time" + "name": "Brocēni", + "shortCode": "018" }, { - "zoneName": "Asia/Novosibirsk", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "NOVT", - "tzName": "Novosibirsk Time" + "name": "Burtnieki", + "shortCode": "019" }, { - "zoneName": "Asia/Omsk", - "gmtOffset": 21600, - "gmtOffsetName": "UTC+06:00", - "abbreviation": "OMST", - "tzName": "Omsk Time" + "name": "Carnikava", + "shortCode": "020" }, { - "zoneName": "Asia/Sakhalin", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "SAKT", - "tzName": "Sakhalin Island Time" + "name": "Cesvaine", + "shortCode": "021" }, { - "zoneName": "Asia/Srednekolymsk", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "SRET", - "tzName": "Srednekolymsk Time" + "name": "Cēsis", + "shortCode": "022" }, { - "zoneName": "Asia/Tomsk", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "MSD+3", - "tzName": "Moscow Daylight Time+3" + "name": "Cibla", + "shortCode": "023" }, { - "zoneName": "Asia/Ust-Nera", - "gmtOffset": 36000, - "gmtOffsetName": "UTC+10:00", - "abbreviation": "VLAT", - "tzName": "Vladivostok Time" + "name": "Dagda", + "shortCode": "024" }, { - "zoneName": "Asia/Vladivostok", - "gmtOffset": 36000, - "gmtOffsetName": "UTC+10:00", - "abbreviation": "VLAT", - "tzName": "Vladivostok Time" + "name": "Daugavpils", + "shortCode": "025" }, { - "zoneName": "Asia/Yakutsk", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "YAKT", - "tzName": "Yakutsk Time" + "name": "Daugavpils (City)", + "shortCode": "DGV" }, { - "zoneName": "Asia/Yekaterinburg", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "YEKT", - "tzName": "Yekaterinburg Time" + "name": "Dobele", + "shortCode": "026" }, { - "zoneName": "Europe/Astrakhan", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "SAMT", - "tzName": "Samara Time" + "name": "Dundaga", + "shortCode": "027" }, { - "zoneName": "Europe/Kaliningrad", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Durbe", + "shortCode": "028" }, { - "zoneName": "Europe/Kirov", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "MSK", - "tzName": "Moscow Time" + "name": "Engure", + "shortCode": "029" }, { - "zoneName": "Europe/Moscow", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "MSK", - "tzName": "Moscow Time" + "name": "Ērgļi", + "shortCode": "030" }, { - "zoneName": "Europe/Samara", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "SAMT", - "tzName": "Samara Time" + "name": "Garkalne", + "shortCode": "031" }, { - "zoneName": "Europe/Saratov", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "MSD", - "tzName": "Moscow Daylight Time+4" + "name": "Grobiņa", + "shortCode": "032" }, { - "zoneName": "Europe/Ulyanovsk", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "SAMT", - "tzName": "Samara Time" + "name": "Gulbene", + "shortCode": "033" }, { - "zoneName": "Europe/Volgograd", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "MSK", - "tzName": "Moscow Standard Time" - } - ], - "regions": [ - { "name": "Republic of Adygea", "shortCode": "AD" }, - { "name": "Republic of Altai (Gorno-Altaysk)", "shortCode": "AL" }, - { "name": "Altai Krai", "shortCode": "ALT" }, - { "name": "Amur Oblast", "shortCode": "AMU" }, - { "name": "Arkhangelsk Oblast", "shortCode": "ARK" }, - { "name": "Astrakhan Oblast", "shortCode": "AST" }, - { "name": "Republic of Bashkortostan", "shortCode": "BA" }, - { "name": "Belgorod Oblast", "shortCode": "BEL" }, - { "name": "Bryansk Oblast", "shortCode": "BRY" }, - { "name": "Republic of Buryatia", "shortCode": "BU" }, - { "name": "Chechen Republic", "shortCode": "CE" }, - { "name": "Chelyabinsk Oblast", "shortCode": "CHE" }, - { "name": "Chukotka Autonomous Okrug", "shortCode": "CHU" }, - { "name": "Chuvash Republic", "shortCode": "CU" }, - { "name": "Republic of Dagestan", "shortCode": "DA" }, - { "name": "Republic of Ingushetia", "shortCode": "IN" }, - { "name": "Irkutsk Oblast", "shortCode": "IRK" }, - { "name": "Ivanovo Oblast", "shortCode": "IVA" }, - { "name": "Jewish Autonomous Oblast", "shortCode": "JEW" }, - { "name": "Kabardino-Balkar Republic", "shortCode": "KB" }, - { "name": "Kaliningrad Oblast", "shortCode": "KLN" }, - { "name": "Republic of Kalmykia", "shortCode": "KL" }, - { "name": "Kaluga Oblast", "shortCode": "KLU" }, - { "name": "Kamchatka Krai", "shortCode": "KAM" }, - { "name": "Karachay-Cherkess Republic", "shortCode": "KC" }, - { "name": "Republic of Karelia", "shortCode": "KR" }, - { "name": "Khabarovsk Krai", "shortCode": "KHA" }, - { "name": "Republic of Khakassia", "shortCode": "KK" }, - { "name": "Khanty-Mansi Autonomous Okrug - Yugra", "shortCode": "KHM" }, - { "name": "Kemerovo Oblast", "shortCode": "KEM" }, - { "name": "Kirov Oblast", "shortCode": "KIR" }, - { "name": "Komi Republic", "shortCode": "KO" }, - { "name": "Kostroma Oblast", "shortCode": "KOS" }, - { "name": "Krasnodar Krai", "shortCode": "KDA" }, - { "name": "Krasnoyarsk Krai", "shortCode": "KYA" }, - { "name": "Kurgan Oblast", "shortCode": "KGN" }, - { "name": "Kursk Oblast", "shortCode": "KRS" }, - { "name": "Leningrad Oblast", "shortCode": "LEN" }, - { "name": "Lipetsk Oblast", "shortCode": "LIP" }, - { "name": "Magadan Oblast", "shortCode": "MAG" }, - { "name": "Mari El Republic", "shortCode": "ME" }, - { "name": "Republic of Mordovia", "shortCode": "MO" }, - { "name": "Moscow Oblast", "shortCode": "MOS" }, - { "name": "Moscow", "shortCode": "MOW" }, - { "name": "Murmansk Oblast", "shortCode": "MU" }, - { "name": "Nenets Autonomous Okrug", "shortCode": "NEN" }, - { "name": "Nizhny Novgorod Oblast", "shortCode": "NIZ" }, - { "name": "Novgorod Oblast", "shortCode": "NGR" }, - { "name": "Novosibirsk Oblast", "shortCode": "NVS" }, - { "name": "Omsk Oblast", "shortCode": "OMS" }, - { "name": "Orenburg Oblast", "shortCode": "ORE" }, - { "name": "Oryol Oblast", "shortCode": "ORL" }, - { "name": "Penza Oblast", "shortCode": "PNZ" }, - { "name": "Perm Krai", "shortCode": "PER" }, - { "name": "Primorsky Krai", "shortCode": "PRI" }, - { "name": "Pskov Oblast", "shortCode": "PSK" }, - { "name": "Rostov Oblast", "shortCode": "ROS" }, - { "name": "Ryazan Oblast", "shortCode": "RYA" }, - { "name": "Saint Petersburg", "shortCode": "SPE" }, - { "name": "Sakha (Yakutia) Republic", "shortCode": "SA" }, - { "name": "Sakhalin Oblast", "shortCode": "SAK" }, - { "name": "Samara Oblast", "shortCode": "SAM" }, - { "name": "Saratov Oblast", "shortCode": "SAR" }, - { "name": "Republic of North Ossetia-Alania", "shortCode": "NOA" }, - { "name": "Smolensk Oblast", "shortCode": "SMO" }, - { "name": "Stavropol Krai", "shortCode": "STA" }, - { "name": "Sverdlovsk Oblast", "shortCode": "SVE" }, - { "name": "Tambov Oblast", "shortCode": "TAM" }, - { "name": "Republic of Tatarstan", "shortCode": "TA" }, - { "name": "Tomsk Oblast", "shortCode": "TOM" }, - { "name": "Tuva Republic", "shortCode": "TU" }, - { "name": "Tula Oblast", "shortCode": "TUL" }, - { "name": "Tver Oblast", "shortCode": "TVE" }, - { "name": "Tyumen Oblast", "shortCode": "TYU" }, - { "name": "Udmurt Republic", "shortCode": "UD" }, - { "name": "Ulyanovsk Oblast", "shortCode": "ULY" }, - { "name": "Vladimir Oblast", "shortCode": "VLA" }, - { "name": "Volgograd Oblast", "shortCode": "VGG" }, - { "name": "Vologda Oblast", "shortCode": "VLG" }, - { "name": "Voronezh Oblast", "shortCode": "VOR" }, - { "name": "Yamalo-Nenets Autonomous Okrug", "shortCode": "YAN" }, - { "name": "Yaroslavl Oblast", "shortCode": "YAR" }, - { "name": "Zabaykalsky Krai", "shortCode": "ZAB" } - ] - }, - { - "countryName": "Rwanda", - "countryShortCode": "RW", - "phoneCode": "+250", - "currencyCode": "RWF", - "latitude": "-2.00000000", - "longitude": "30.00000000", - "timezones": [ + "name": "Iecava", + "shortCode": "034" + }, { - "zoneName": "Africa/Kigali", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "CAT", - "tzName": "Central Africa Time" + "name": "Ikšķile", + "shortCode": "035" + }, + { + "name": "Ilūkste", + "shortCode": "036" + }, + { + "name": "Inčukalns", + "shortCode": "037" + }, + { + "name": "Jaunjelgava", + "shortCode": "038" + }, + { + "name": "Jaunpiebalga", + "shortCode": "039" + }, + { + "name": "Jaunpils", + "shortCode": "040" + }, + { + "name": "Jelgava", + "shortCode": "041" + }, + { + "name": "Jelgava (City)", + "shortCode": "JEL" + }, + { + "name": "Jēkabpils", + "shortCode": "042" + }, + { + "name": "Jēkabpils (City)", + "shortCode": "JKB" + }, + { + "name": "Jūrmala (City)", + "shortCode": "JUR" + }, + { + "name": "Kandava", + "shortCode": "043" + }, + { + "name": "Kārsava", + "shortCode": "044" + }, + { + "name": "Kocēni", + "shortCode": "045" + }, + { + "name": "Koknese", + "shortCode": "046" + }, + { + "name": "Krāslava", + "shortCode": "047" + }, + { + "name": "Krimulda", + "shortCode": "048" + }, + { + "name": "Krustpils", + "shortCode": "049" + }, + { + "name": "Kuldīga", + "shortCode": "050" + }, + { + "name": "Ķegums", + "shortCode": "051" + }, + { + "name": "Ķekava", + "shortCode": "052" + }, + { + "name": "Lielvārde", + "shortCode": "053" + }, + { + "name": "Liepāja", + "shortCode": "LPX" + }, + { + "name": "Limbaži", + "shortCode": "054" + }, + { + "name": "Līgatne", + "shortCode": "055" + }, + { + "name": "Līvāni", + "shortCode": "056" + }, + { + "name": "Lubāna", + "shortCode": "057" + }, + { + "name": "Ludza", + "shortCode": "058" + }, + { + "name": "Madona", + "shortCode": "059" + }, + { + "name": "Mazsalaca", + "shortCode": "060" + }, + { + "name": "Mālpils", + "shortCode": "061" + }, + { + "name": "Mārupe", + "shortCode": "062" + }, + { + "name": "Mērsrags", + "shortCode": "063" + }, + { + "name": "Naukšēni", + "shortCode": "064" + }, + { + "name": "Nereta", + "shortCode": "065" + }, + { + "name": "Nīca", + "shortCode": "066" + }, + { + "name": "Ogre", + "shortCode": "067" + }, + { + "name": "Olaine", + "shortCode": "068" + }, + { + "name": "Ozolnieki", + "shortCode": "069" + }, + { + "name": "Pārgauja", + "shortCode": "070" + }, + { + "name": "Pāvilosta", + "shortCode": "071" + }, + { + "name": "Pļaviņas", + "shortCode": "072" + }, + { + "name": "Preiļi", + "shortCode": "073" + }, + { + "name": "Priekule", + "shortCode": "074" + }, + { + "name": "Priekuļi", + "shortCode": "075" + }, + { + "name": "Rauna", + "shortCode": "076" + }, + { + "name": "Rēzekne", + "shortCode": "077" + }, + { + "name": "Rēzekne (City)", + "shortCode": "REZ" + }, + { + "name": "Riebiņi", + "shortCode": "078" + }, + { + "name": "Rīga", + "shortCode": "RIX" + }, + { + "name": "Roja", + "shortCode": "079" + }, + { + "name": "Ropaži", + "shortCode": "080" + }, + { + "name": "Rucava", + "shortCode": "081" + }, + { + "name": "Rugāji", + "shortCode": "082" + }, + { + "name": "Rundāle", + "shortCode": "083" + }, + { + "name": "Rūjiena", + "shortCode": "084" + }, + { + "name": "Sala", + "shortCode": "085" + }, + { + "name": "Salacgrīva", + "shortCode": "086" + }, + { + "name": "Salaspils", + "shortCode": "087" + }, + { + "name": "Saldus", + "shortCode": "088" + }, + { + "name": "Saulkrasti", + "shortCode": "089" + }, + { + "name": "Sēja", + "shortCode": "090" + }, + { + "name": "Sigulda", + "shortCode": "091" + }, + { + "name": "Skrīveri", + "shortCode": "092" + }, + { + "name": "Skrunda", + "shortCode": "093" + }, + { + "name": "Smiltene", + "shortCode": "094" + }, + { + "name": "Stopiņi", + "shortCode": "095" + }, + { + "name": "Strenči", + "shortCode": "096" + }, + { + "name": "Talsi", + "shortCode": "097" + }, + { + "name": "Tērvete", + "shortCode": "098" + }, + { + "name": "Tukums", + "shortCode": "099" + }, + { + "name": "Vaiņode", + "shortCode": "100" + }, + { + "name": "Valka", + "shortCode": "101" + }, + { + "name": "Valmiera", + "shortCode": "VMR" + }, + { + "name": "Varakļāni", + "shortCode": "102" + }, + { + "name": "Vārkava", + "shortCode": "103" + }, + { + "name": "Vecpiebalga", + "shortCode": "104" + }, + { + "name": "Vecumnieki", + "shortCode": "105" + }, + { + "name": "Ventspils", + "shortCode": "106" + }, + { + "name": "Ventspils (City)", + "shortCode": "VEN" + }, + { + "name": "Viesīte", + "shortCode": "107" + }, + { + "name": "Viļaka", + "shortCode": "108" + }, + { + "name": "Viļāni", + "shortCode": "109" + }, + { + "name": "Zilupe", + "shortCode": "110" } ], - "regions": [ - { "name": "Kigali", "shortCode": "01" }, - { "name": "Eastern", "shortCode": "02" }, - { "name": "Northern", "shortCode": "03" }, - { "name": "Western", "shortCode": "04" }, - { "name": "Southern", "shortCode": "05" } - ] + "capital": "Riga", + "population": 1845096, + "area": 64593.77, + "continent": "Europe", + "nativeName": "Latvija", + "demonym": "Latvians", + "languages": [ + "Latvian" + ], + "tld": [ + ".lv" + ], + "borders": [ + "SE", + "LT", + "RU", + "BY", + "EE" + ], + "unMember": true, + "independent": true }, { - "countryName": "Saint Barthélemy", - "countryShortCode": "BL", - "phoneCode": "+590", - "currencyCode": "EUR", - "latitude": "18.50000000", - "longitude": "-63.41666666", + "countryName": "Lebanon", + "countryShortCode": "LB", + "phoneCode": "+961", + "currencyCode": "LBP", + "latitude": "33.83333333", + "longitude": "35.83333333", "timezones": [ { - "zoneName": "America/St_Barthelemy", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "zoneName": "Asia/Beirut", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" } ], "regions": [ - { "name": "Au Vent", "shortCode": "02" }, - { "name": "Sous le Vent", "shortCode": "01" } - ] + { + "name": "Aakkâr", + "shortCode": "AK" + }, + { + "name": "Baalbelk-Hermel", + "shortCode": "BH" + }, + { + "name": "Béqaa", + "shortCode": "BI" + }, + { + "name": "Beyrouth", + "shortCode": "BA" + }, + { + "name": "Liban-Nord", + "shortCode": "AS" + }, + { + "name": "Liban-Sud", + "shortCode": "JA" + }, + { + "name": "Mont-Liban", + "shortCode": "JL" + }, + { + "name": "Nabatîyé", + "shortCode": "NA" + } + ], + "capital": "Beirut", + "population": 5261372, + "area": 10452, + "continent": "Asia", + "officialName": "Lebanese Republic", + "nativeName": "Lebanon", + "demonym": "Lebanese", + "languages": [ + "Arabic" + ], + "tld": [ + ".lb" + ], + "borders": [ + "IL", + "SY" + ], + "unMember": true, + "independent": true }, { - "countryName": "Saint Helena, Ascension and Tristan da Cunha", - "countryShortCode": "SH", - "phoneCode": "+290", - "currencyCode": "SHP", - "latitude": "-15.95000000", - "longitude": "-5.70000000", + "countryName": "Lesotho", + "countryShortCode": "LS", + "phoneCode": "+266", + "currencyCode": "LSL", + "latitude": "-29.50000000", + "longitude": "28.50000000", "timezones": [ { - "zoneName": "Atlantic/St_Helena", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" + "zoneName": "Africa/Maseru", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "SAST", + "tzName": "South African Standard Time" } ], "regions": [ - { "name": "Ascension", "shortCode": "AC" }, - { "name": "Saint Helena", "shortCode": "HL" }, - { "name": "Tristan da Cunha", "shortCode": "TA" } - ] - }, - { - "countryName": "Saint Kitts and Nevis", - "countryShortCode": "KN", - "phoneCode": "+1869", - "currencyCode": "XCD", - "latitude": "17.33333333", - "longitude": "-62.75000000", - "timezones": [ { - "zoneName": "America/St_Kitts", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "name": "Berea", + "shortCode": "D" + }, + { + "name": "Butha-Buthe", + "shortCode": "B" + }, + { + "name": "Leribe", + "shortCode": "C" + }, + { + "name": "Mafeteng", + "shortCode": "E" + }, + { + "name": "Maseru", + "shortCode": "A" + }, + { + "name": "Mohales Hoek", + "shortCode": "F" + }, + { + "name": "Mokhotlong", + "shortCode": "J" + }, + { + "name": "Qacha's Nek", + "shortCode": "H" + }, + { + "name": "Quthing", + "shortCode": "G" + }, + { + "name": "Thaba-Tseka", + "shortCode": "K" } ], - "regions": [ - { "name": "Saint Kitts", "shortCode": "K" }, - { "name": "Nevis", "shortCode": "N" } - ] + "capital": "Maseru", + "population": 2233339, + "area": 30355, + "continent": "Africa", + "officialName": "Kingdom of Lesotho", + "nativeName": "Lesotho", + "demonym": "Mosotho", + "languages": [ + "English", + "Sesotho" + ], + "tld": [ + ".ls" + ], + "borders": [ + "ZA" + ], + "unMember": true, + "independent": true }, { - "countryName": "Saint Lucia", - "countryShortCode": "LC", - "phoneCode": "+1758", - "currencyCode": "XCD", - "latitude": "13.88333333", - "longitude": "-60.96666666", + "countryName": "Liberia", + "countryShortCode": "LR", + "phoneCode": "+231", + "currencyCode": "LRD", + "latitude": "6.50000000", + "longitude": "-9.50000000", "timezones": [ { - "zoneName": "America/St_Lucia", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "zoneName": "Africa/Monrovia", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" } ], "regions": [ - { "name": "Anse-la-Raye", "shortCode": "01" }, - { "name": "Canaries", "shortCode": "12" }, - { "name": "Castries", "shortCode": "02" }, - { "name": "Choiseul", "shortCode": "03" }, - { "name": "Dennery", "shortCode": "05" }, - { "name": "Gros Islet", "shortCode": "06" }, - { "name": "Laborie", "shortCode": "07" }, - { "name": "Micoud", "shortCode": "08" }, - { "name": "Soufriere", "shortCode": "10" }, - { "name": "Vieux Fort", "shortCode": "11" } - ] - }, - { - "countryName": "Saint Martin", - "countryShortCode": "MF", - "phoneCode": "+590", - "currencyCode": "EUR", - "latitude": "18.08333333", - "longitude": "-63.95000000", - "timezones": [ { - "zoneName": "America/Marigot", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" - } - ], - "regions": [{ "name": "Saint Martin" }] - }, - { - "countryName": "Saint Pierre and Miquelon", - "countryShortCode": "PM", - "phoneCode": "+508", - "currencyCode": "EUR", - "latitude": "46.83333333", - "longitude": "-56.33333333", - "timezones": [ + "name": "Bomi", + "shortCode": "BM" + }, { - "zoneName": "America/Miquelon", - "gmtOffset": -10800, - "gmtOffsetName": "UTC-03:00", - "abbreviation": "PMDT", - "tzName": "Pierre & Miquelon Daylight Time" + "name": "Bong", + "shortCode": "BG" + }, + { + "name": "Gbarpolu", + "shortCode": "GP" + }, + { + "name": "Grand Bassa", + "shortCode": "GB" + }, + { + "name": "Grand Cape Mount", + "shortCode": "CM" + }, + { + "name": "Grand Gedeh", + "shortCode": "GG" + }, + { + "name": "Grand Kru", + "shortCode": "GK" + }, + { + "name": "Lofa", + "shortCode": "LO" + }, + { + "name": "Margibi", + "shortCode": "MG" + }, + { + "name": "Maryland", + "shortCode": "MY" + }, + { + "name": "Montserrado", + "shortCode": "MO" + }, + { + "name": "Nimba", + "shortCode": "NI" + }, + { + "name": "River Cess", + "shortCode": "RI" + }, + { + "name": "River Geee", + "shortCode": "RG" + }, + { + "name": "Sinoe", + "shortCode": "SI" } ], - "regions": [{ "name": "Miquelon" }, { "name": "Saint Pierre" }] + "capital": "Monrovia", + "population": 5214030, + "area": 111369, + "continent": "Africa", + "officialName": "Liberia", + "nativeName": "Republic of Liberia", + "demonym": "Liberian", + "languages": [ + "English" + ], + "tld": [ + ".lr" + ], + "borders": [ + "GN", + "CI", + "SL" + ], + "unMember": true, + "independent": true }, { - "countryName": "Saint Vincent and the Grenadines", - "countryShortCode": "VC", - "phoneCode": "+1784", - "currencyCode": "XCD", - "latitude": "13.25000000", - "longitude": "-61.20000000", + "countryName": "Libya", + "countryShortCode": "LY", + "phoneCode": "+218", + "currencyCode": "LYD", + "latitude": "25.00000000", + "longitude": "17.00000000", "timezones": [ { - "zoneName": "America/St_Vincent", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "zoneName": "Africa/Tripoli", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" } ], "regions": [ - { "name": "Charlotte", "shortCode": "01" }, - { "name": "Grenadines", "shortCode": "06" }, - { "name": "Saint Andrew", "shortCode": "02" }, - { "name": "Saint David", "shortCode": "03" }, - { "name": "Saint George", "shortCode": "04" }, - { "name": "Saint Patrick", "shortCode": "05" } - ] - }, - { - "countryName": "Samoa", - "countryShortCode": "WS", - "phoneCode": "+685", - "currencyCode": "WST", - "latitude": "-13.58333333", - "longitude": "-172.33333333", - "timezones": [ { - "zoneName": "Pacific/Apia", - "gmtOffset": 50400, - "gmtOffsetName": "UTC+14:00", - "abbreviation": "WST", - "tzName": "West Samoa Time" + "name": "Al Buţnān", + "shortCode": "BU" + }, + { + "name": "Al Jabal al Akhḑar", + "shortCode": "JA" + }, + { + "name": "Al Jabal al Gharbī", + "shortCode": "JG" + }, + { + "name": "Al Jafārah", + "shortCode": "JA" + }, + { + "name": "Al Jufrah", + "shortCode": "JU" + }, + { + "name": "Al Kufrah", + "shortCode": "FK" + }, + { + "name": "Al Marj", + "shortCode": "MJ" + }, + { + "name": "Al Marquab", + "shortCode": "MB" + }, + { + "name": "Al Wāḩāt", + "shortCode": "WA" + }, + { + "name": "An Nuqaţ al Khams", + "shortCode": "NQ" + }, + { + "name": "Az Zāwiyah", + "shortCode": "ZA" + }, + { + "name": "Banghāzī", + "shortCode": "BA" + }, + { + "name": "Darnah", + "shortCode": "DR" + }, + { + "name": "Ghāt", + "shortCode": "GH" + }, + { + "name": "Mişrātah", + "shortCode": "MI" + }, + { + "name": "Murzuq", + "shortCode": "MQ" + }, + { + "name": "Nālūt", + "shortCode": "NL" + }, + { + "name": "Sabhā", + "shortCode": "SB" + }, + { + "name": "Surt", + "shortCode": "SR" + }, + { + "name": "Ţarābulus", + "shortCode": "TB" + }, + { + "name": "Yafran", + "shortCode": "WD" + }, + { + "name": "Wādī ash Shāţiʾ", + "shortCode": "WS" } ], - "regions": [ - { "name": "A'ana", "shortCode": "AA" }, - { "name": "Aiga-i-le-Tai", "shortCode": "AL" }, - { "name": "Atua", "shortCode": "AT" }, - { "name": "Fa'asaleleaga", "shortCode": "FA" }, - { "name": "Gaga'emauga", "shortCode": "GE" }, - { "name": "Gagaifomauga", "shortCode": "GI" }, - { "name": "Palauli", "shortCode": "PA" }, - { "name": "Satupa'itea", "shortCode": "SA" }, - { "name": "Tuamasaga", "shortCode": "TU" }, - { "name": "Va'a-o-Fonoti", "shortCode": "VF" }, - { "name": "Vaisigano", "shortCode": "VS" } - ] + "capital": "Tripoli", + "population": 7381023, + "area": 1759541, + "continent": "Africa", + "officialName": "State of Libya", + "nativeName": "دولة ليبيا", + "demonym": "Libyan", + "languages": [ + "Arabic" + ], + "tld": [ + ".ly" + ], + "borders": [ + "EG", + "DZ", + "TD", + "TN", + "NE", + "SD" + ], + "unMember": true, + "independent": true }, { - "countryName": "San Marino", - "countryShortCode": "SM", - "phoneCode": "+378", - "currencyCode": "EUR", - "latitude": "43.76666666", - "longitude": "12.41666666", + "countryName": "Liechtenstein", + "countryShortCode": "LI", + "phoneCode": "+423", + "currencyCode": "CHF", + "latitude": "47.26666666", + "longitude": "9.53333333", "timezones": [ { - "zoneName": "Europe/San_Marino", + "zoneName": "Europe/Vaduz", "gmtOffset": 3600, "gmtOffsetName": "UTC+01:00", "abbreviation": "CET", @@ -7710,113 +13250,160 @@ } ], "regions": [ - { "name": "Acquaviva", "shortCode": "01" }, - { "name": "Borgo Maggiore", "shortCode": "06" }, - { "name": "Chiesanuova", "shortCode": "02" }, - { "name": "Domagnano", "shortCode": "03" }, - { "name": "Faetano", "shortCode": "04" }, - { "name": "Fiorentino", "shortCode": "05" }, - { "name": "Montegiardino", "shortCode": "08" }, - { "name": "San Marino", "shortCode": "07" }, - { "name": "Serravalle", "shortCode": "09" } - ] - }, - { - "countryName": "Sao Tome and Principe", - "countryShortCode": "ST", - "phoneCode": "+239", - "currencyCode": "STD", - "latitude": "1.00000000", - "longitude": "7.00000000", - "timezones": [ { - "zoneName": "Africa/Sao_Tome", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" + "name": "Balzers", + "shortCode": "01" + }, + { + "name": "Eschen", + "shortCode": "02" + }, + { + "name": "Gamprin", + "shortCode": "03" + }, + { + "name": "Mauren", + "shortCode": "04" + }, + { + "name": "Planken", + "shortCode": "05" + }, + { + "name": "Ruggell", + "shortCode": "06" + }, + { + "name": "Schaan", + "shortCode": "07" + }, + { + "name": "Schellenberg", + "shortCode": "08" + }, + { + "name": "Triesen", + "shortCode": "09" + }, + { + "name": "Triesenberg", + "shortCode": "10" + }, + { + "name": "Vaduz", + "shortCode": "11" } ], - "regions": [ - { "name": "Principe", "shortCode": "P" }, - { "name": "Sao Tome", "shortCode": "S" } - ] + "capital": "Vaduz", + "population": 38020, + "area": 160, + "continent": "Europe", + "nativeName": "Liechtenstein", + "demonym": "Liechtensteiner", + "languages": [ + "German" + ], + "tld": [ + ".li" + ], + "borders": [ + "CH", + "AT" + ], + "unMember": true, + "independent": true }, { - "countryName": "Saudi Arabia", - "countryShortCode": "SA", - "phoneCode": "+966", - "currencyCode": "SAR", - "latitude": "25.00000000", - "longitude": "45.00000000", + "countryName": "Lithuania", + "countryShortCode": "LT", + "phoneCode": "+370", + "currencyCode": "EUR", + "latitude": "56.00000000", + "longitude": "24.00000000", "timezones": [ { - "zoneName": "Asia/Riyadh", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "AST", - "tzName": "Arabia Standard Time" + "zoneName": "Europe/Vilnius", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" } ], "regions": [ - { "name": "'Asir", "shortCode": "14" }, - { "name": "Al Bahah", "shortCode": "11" }, - { "name": "Al Hudud ash Shamaliyah", "shortCode": "08" }, - { "name": "Al Jawf", "shortCode": "12" }, - { "name": "Al Madinah al Munawwarah", "shortCode": "03" }, - { "name": "Al Qasim", "shortCode": "05" }, - { "name": "Ar Riyad", "shortCode": "01" }, - { "name": "Ash Sharqiyah", "shortCode": "04" }, - { "name": "Ha'il", "shortCode": "06" }, - { "name": "Jazan", "shortCode": "09" }, - { "name": "Makkah al Mukarramah", "shortCode": "02" }, - { "name": "Najran", "shortCode": "10" }, - { "name": "Tabuk", "shortCode": "07" } - ] - }, - { - "countryName": "Senegal", - "countryShortCode": "SN", - "phoneCode": "+221", - "currencyCode": "XOF", - "latitude": "14.00000000", - "longitude": "-14.00000000", - "timezones": [ { - "zoneName": "Africa/Dakar", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" + "name": "Alytaus", + "shortCode": "AL" + }, + { + "name": "Kauno", + "shortCode": "KU" + }, + { + "name": "Klaipėdos", + "shortCode": "KL" + }, + { + "name": "Marijampolės", + "shortCode": "MR" + }, + { + "name": "Panevėžio", + "shortCode": "PN" + }, + { + "name": "Šiaulių", + "shortCode": "SA" + }, + { + "name": "Tauragės", + "shortCode": "TA" + }, + { + "name": "Telšių", + "shortCode": "TE" + }, + { + "name": "Utenos", + "shortCode": "UT" + }, + { + "name": "Vilniaus", + "shortCode": "VL" } ], - "regions": [ - { "name": "Dakar", "shortCode": "DK" }, - { "name": "Diourbel", "shortCode": "DB" }, - { "name": "Fatick", "shortCode": "FK" }, - { "name": "Kaffrine", "shortCode": "KA" }, - { "name": "Kaolack", "shortCode": "KL" }, - { "name": "Kedougou", "shortCode": "KE" }, - { "name": "Kolda", "shortCode": "KD" }, - { "name": "Louga", "shortCode": "LG" }, - { "name": "Matam", "shortCode": "MT" }, - { "name": "Saint-Louis", "shortCode": "SL" }, - { "name": "Sedhiou", "shortCode": "SE" }, - { "name": "Tambacounda", "shortCode": "TC" }, - { "name": "Thies", "shortCode": "TH" }, - { "name": "Ziguinchor", "shortCode": "ZG" } - ] + "capital": "Vilnius", + "population": 2860002, + "area": 65300, + "continent": "Europe", + "nativeName": "Lietuva", + "demonym": "Lithuanian", + "languages": [ + "Lithuanian" + ], + "tld": [ + ".lt" + ], + "borders": [ + "SE", + "PL", + "RU", + "BY", + "LV" + ], + "unMember": true, + "independent": true }, { - "countryName": "Serbia", - "countryShortCode": "RS", - "phoneCode": "+381", - "currencyCode": "RSD", - "latitude": "44.00000000", - "longitude": "21.00000000", + "countryName": "Luxembourg", + "countryShortCode": "LU", + "phoneCode": "+352", + "currencyCode": "EUR", + "latitude": "49.75000000", + "longitude": "6.16666666", "timezones": [ { - "zoneName": "Europe/Belgrade", + "zoneName": "Europe/Luxembourg", "gmtOffset": 3600, "gmtOffsetName": "UTC+01:00", "abbreviation": "CET", @@ -7824,184 +13411,124 @@ } ], "regions": [ - { "name": "Beograd (Belgrade)", "shortCode": "00" }, - { "name": "Borski", "shortCode": "14" }, - { "name": "Braničevski", "shortCode": "11" }, - { "name": "Jablanički", "shortCode": "23" }, - { "name": "Južnobački", "shortCode": "06" }, - { "name": "Južnobanatski", "shortCode": "04" }, - { "name": "Kolubarski", "shortCode": "09" }, - { "name": "Kosovski", "shortCode": "25" }, - { "name": "Kosovsko-Mitrovački", "shortCode": "28" }, - { "name": "Kosovsko-Pomoravski", "shortCode": "29" }, - { "name": "Mačvanski", "shortCode": "08" }, - { "name": "Moravički", "shortCode": "17" }, - { "name": "Nišavski", "shortCode": "20" }, - { "name": "Pčinjski", "shortCode": "24" }, - { "name": "Pećki", "shortCode": "26" }, - { "name": "Pirotski", "shortCode": "22" }, - { "name": "Podunavski", "shortCode": "10" }, - { "name": "Pomoravski", "shortCode": "13" }, - { "name": "Prizrenski", "shortCode": "27" }, - { "name": "Rasinski", "shortCode": "19" }, - { "name": "Raški", "shortCode": "18" }, - { "name": "Severnobački", "shortCode": "01" }, - { "name": "Severnobanatski", "shortCode": "03" }, - { "name": "Srednjebanatski", "shortCode": "02" }, - { "name": "Sremski", "shortCode": "07" }, - { "name": "Šumadijski", "shortCode": "12" }, - { "name": "Toplički", "shortCode": "21" }, - { "name": "Zaječarski", "shortCode": "15" }, - { "name": "Zapadnobački", "shortCode": "05" }, - { "name": "Zlatiborski", "shortCode": "16" } - ] - }, - { - "countryName": "Seychelles", - "countryShortCode": "SC", - "phoneCode": "+248", - "currencyCode": "SCR", - "latitude": "-4.58333333", - "longitude": "55.66666666", - "timezones": [ { - "zoneName": "Indian/Mahe", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "SCT", - "tzName": "Seychelles Time" - } - ], - "regions": [ - { "name": "Anse aux Pins", "shortCode": "01" }, - { "name": "Anse Boileau", "shortCode": "02" }, - { "name": "Anse Etoile", "shortCode": "03" }, - { "name": "Anse Royale", "shortCode": "05" }, - { "name": "Anu Cap", "shortCode": "04" }, - { "name": "Baie Lazare", "shortCode": "06" }, - { "name": "Baie Sainte Anne", "shortCode": "07" }, - { "name": "Beau Vallon", "shortCode": "08" }, - { "name": "Bel Air", "shortCode": "09" }, - { "name": "Bel Ombre", "shortCode": "10" }, - { "name": "Cascade", "shortCode": "11" }, - { "name": "Glacis", "shortCode": "12" }, - { "name": "Grand'Anse Mahe", "shortCode": "13" }, - { "name": "Grand'Anse Praslin", "shortCode": "14" }, - { "name": "La Digue", "shortCode": "15" }, - { "name": "La Riviere Anglaise", "shortCode": "16" }, - { "name": "Les Mamelles", "shortCode": "24" }, - { "name": "Mont Buxton", "shortCode": "17" }, - { "name": "Mont Fleuri", "shortCode": "18" }, - { "name": "Plaisance", "shortCode": "19" }, - { "name": "Pointe La Rue", "shortCode": "20" }, - { "name": "Port Glaud", "shortCode": "21" }, - { "name": "Roche Caiman", "shortCode": "25" }, - { "name": "Saint Louis", "shortCode": "22" }, - { "name": "Takamaka", "shortCode": "23" } - ] - }, - { - "countryName": "Sierra Leone", - "countryShortCode": "SL", - "phoneCode": "+232", - "currencyCode": "SLL", - "latitude": "8.50000000", - "longitude": "-11.50000000", - "timezones": [ + "name": "Capellen", + "shortCode": "CA" + }, { - "zoneName": "Africa/Freetown", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" + "name": "Clevaux", + "shortCode": "CL" + }, + { + "name": "Diekirch", + "shortCode": "DI" + }, + { + "name": "Echternach", + "shortCode": "EC" + }, + { + "name": "Esch-sur-Alzette", + "shortCode": "ES" + }, + { + "name": "Grevenmacher", + "shortCode": "GR" + }, + { + "name": "Luxembourg", + "shortCode": "LU" + }, + { + "name": "Mersch", + "shortCode": "ME" + }, + { + "name": "Redange", + "shortCode": "RD" + }, + { + "name": "Remich", + "shortCode": "RM" + }, + { + "name": "Vianden", + "shortCode": "VD" + }, + { + "name": "Wiltz", + "shortCode": "WI" } ], - "regions": [ - { "name": "Eastern", "shortCode": "E" }, - { "name": "Northern", "shortCode": "N" }, - { "name": "Southern", "shortCode": "S" }, - { "name": "Western", "shortCode": "W" } - ] + "capital": "Luxembourg", + "population": 681973, + "area": 2586.36, + "continent": "Europe", + "officialName": "Grand Duchy of Luxembourg", + "nativeName": "Luxembourg", + "demonym": "Luxembourgian", + "languages": [ + "French", + "German", + "Luxembourgish" + ], + "tld": [ + ".lu" + ], + "borders": [ + "BE", + "FR", + "DE" + ], + "unMember": true, + "independent": true }, { - "countryName": "Singapore", - "countryShortCode": "SG", - "phoneCode": "+65", - "currencyCode": "SGD", - "latitude": "1.36666666", - "longitude": "103.80000000", + "countryName": "Macao", + "countryShortCode": "MO", + "phoneCode": "+853", + "currencyCode": "MOP", + "latitude": "22.16666666", + "longitude": "113.55000000", "timezones": [ { - "zoneName": "Asia/Singapore", + "zoneName": "Asia/Macau", "gmtOffset": 28800, "gmtOffsetName": "UTC+08:00", - "abbreviation": "SGT", - "tzName": "Singapore Time" + "abbreviation": "CST", + "tzName": "China Standard Time" } ], "regions": [ - { "name": "Central Singapore", "shortCode": "01" }, - { "name": "North East", "shortCode": "02" }, - { "name": "North West", "shortCode": "03" }, - { "name": "South East", "shortCode": "04" }, - { "name": "South West", "shortCode": "05" } - ] - }, - { - "countryName": "Sint Maarten (Dutch part)", - "countryShortCode": "SX", - "phoneCode": "+1721", - "currencyCode": "ANG", - "latitude": "18.03333300", - "longitude": "-63.05000000", - "timezones": [ { - "zoneName": "America/Anguilla", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "name": "Macao" } ], - "regions": [{ "name": "Sint Maarten" }] - }, - { - "countryName": "Slovakia", - "countryShortCode": "SK", - "phoneCode": "+421", - "currencyCode": "EUR", - "latitude": "48.66666666", - "longitude": "19.50000000", - "timezones": [ - { - "zoneName": "Europe/Bratislava", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } + "population": 682100, + "area": 115.3, + "continent": "Asia", + "nativeName": "澳门", + "languages": [ + "Portuguese", + "Cantonese", + "Standard Chinese" ], - "regions": [ - { "name": "Banskobystricky", "shortCode": "BC" }, - { "name": "Bratislavsky", "shortCode": "BL" }, - { "name": "Kosicky", "shortCode": "KI" }, - { "name": "Nitriansky", "shortCode": "NI" }, - { "name": "Presovsky", "shortCode": "PV" }, - { "name": "Trenciansky", "shortCode": "TC" }, - { "name": "Trnavsky", "shortCode": "TA" }, - { "name": "Zilinsky", "shortCode": "ZI" } - ] + "tld": [ + ".mo" + ], + "unMember": false, + "independent": false }, { - "countryName": "Slovenia", - "countryShortCode": "SI", - "phoneCode": "+386", - "currencyCode": "EUR", - "latitude": "46.11666666", - "longitude": "14.81666666", + "countryName": "Macedonia, Republic of", + "countryShortCode": "MK", + "phoneCode": "+389", + "currencyCode": "MKD", + "latitude": "41.83333333", + "longitude": "22.00000000", "timezones": [ { - "zoneName": "Europe/Ljubljana", + "zoneName": "Europe/Skopje", "gmtOffset": 3600, "gmtOffsetName": "UTC+01:00", "abbreviation": "CET", @@ -8009,345 +13536,324 @@ } ], "regions": [ - { "name": "Ajdovscina", "shortCode": "001" }, - { "name": "Apace", "shortCode": "195" }, - { "name": "Beltinci", "shortCode": "002" }, - { "name": "Benedikt", "shortCode": "148" }, - { "name": "Bistrica ob Sotli", "shortCode": "149" }, - { "name": "Bled", "shortCode": "003" }, - { "name": "Bloke", "shortCode": "150" }, - { "name": "Bohinj", "shortCode": "004" }, - { "name": "Borovnica", "shortCode": "005" }, - { "name": "Bovec", "shortCode": "006" }, - { "name": "Braslovce", "shortCode": "151" }, - { "name": "Brda", "shortCode": "007" }, - { "name": "Brezice", "shortCode": "009" }, - { "name": "Brezovica", "shortCode": "008" }, - { "name": "Cankova", "shortCode": "152" }, - { "name": "Celje", "shortCode": "011" }, - { "name": "Cerklje na Gorenjskem", "shortCode": "012" }, - { "name": "Cerknica", "shortCode": "013" }, - { "name": "Cerkno", "shortCode": "014" }, - { "name": "Cerkvenjak", "shortCode": "153" }, - { "name": "Cirkulane", "shortCode": "196" }, - { "name": "Crensovci", "shortCode": "015" }, - { "name": "Crna na Koroskem", "shortCode": "016" }, - { "name": "Crnomelj", "shortCode": "017" }, - { "name": "Destrnik", "shortCode": "018" }, - { "name": "Divaca", "shortCode": "019" }, - { "name": "Dobje", "shortCode": "154" }, - { "name": "Dobrepolje", "shortCode": "020" }, - { "name": "Dobrna", "shortCode": "155" }, - { "name": "Dobrova-Polhov Gradec", "shortCode": "021" }, - { "name": "Dobrovnik", "shortCode": "156" }, - { "name": "Dol pri Ljubljani", "shortCode": "022" }, - { "name": "Dolenjske Toplice", "shortCode": "157" }, - { "name": "Domzale", "shortCode": "023" }, - { "name": "Dornava", "shortCode": "024" }, - { "name": "Dravograd", "shortCode": "025" }, - { "name": "Duplek", "shortCode": "026" }, - { "name": "Gorenja Vas-Poljane", "shortCode": "027" }, - { "name": "Gorisnica", "shortCode": "028" }, - { "name": "Gorje", "shortCode": "207" }, - { "name": "Gornja Radgona", "shortCode": "029" }, - { "name": "Gornji Grad", "shortCode": "030" }, - { "name": "Gornji Petrovci", "shortCode": "031" }, - { "name": "Grad", "shortCode": "158" }, - { "name": "Grosuplje", "shortCode": "032" }, - { "name": "Hajdina", "shortCode": "159" }, - { "name": "Hoce-Slivnica", "shortCode": "160" }, - { "name": "Hodos", "shortCode": "161" }, - { "name": "Horjul", "shortCode": "162" }, - { "name": "Hrastnik", "shortCode": "034" }, - { "name": "Hrpelje-Kozina", "shortCode": "035" }, - { "name": "Idrija", "shortCode": "036" }, - { "name": "Ig", "shortCode": "037" }, - { "name": "Ilirska Bistrica", "shortCode": "038" }, - { "name": "Ivancna Gorica", "shortCode": "039" }, - { "name": "Izola", "shortCode": "040s" }, - { "name": "Jesenice", "shortCode": "041" }, - { "name": "Jursinci", "shortCode": "042" }, - { "name": "Kamnik", "shortCode": "043" }, - { "name": "Kanal", "shortCode": "044" }, - { "name": "Kidricevo", "shortCode": "045" }, - { "name": "Kobarid", "shortCode": "046" }, - { "name": "Kobilje", "shortCode": "047" }, - { "name": "Kocevje", "shortCode": "048" }, - { "name": "Komen", "shortCode": "049" }, - { "name": "Komenda", "shortCode": "164" }, - { "name": "Koper", "shortCode": "050" }, - { "name": "Kodanjevica na Krki", "shortCode": "197" }, - { "name": "Kostel", "shortCode": "165" }, - { "name": "Kozje", "shortCode": "051" }, - { "name": "Kranj", "shortCode": "052" }, - { "name": "Kranjska Gora", "shortCode": "053" }, - { "name": "Krizevci", "shortCode": "166" }, - { "name": "Krsko", "shortCode": "054" }, - { "name": "Kungota", "shortCode": "055" }, - { "name": "Kuzma", "shortCode": "056" }, - { "name": "Lasko", "shortCode": "057" }, - { "name": "Lenart", "shortCode": "058" }, - { "name": "Lendava", "shortCode": "059" }, - { "name": "Litija", "shortCode": "068" }, - { "name": "Ljubljana", "shortCode": "061" }, - { "name": "Ljubno", "shortCode": "062" }, - { "name": "Ljutomer", "shortCode": "063" }, - { "name": "Log-Dragomer", "shortCode": "208" }, - { "name": "Logatec", "shortCode": "064" }, - { "name": "Loska Dolina", "shortCode": "065" }, - { "name": "Loski Potok", "shortCode": "066" }, - { "name": "Lovrenc na Pohorju", "shortCode": "167" }, - { "name": "Lukovica", "shortCode": "068" }, - { "name": "Luce", "shortCode": "067" }, - { "name": "Majsperk", "shortCode": "069" }, - { "name": "Makole", "shortCode": "198" }, - { "name": "Maribor", "shortCode": "070" }, - { "name": "Markovci", "shortCode": "168" }, - { "name": "Medvode", "shortCode": "071" }, - { "name": "Menges", "shortCode": "072" }, - { "name": "Metlika", "shortCode": "073" }, - { "name": "Mezica", "shortCode": "074" }, - { "name": "Miklavz na Dravskem Polju", "shortCode": "169" }, - { "name": "Miren-Kostanjevica", "shortCode": "075" }, - { "name": "Mirna", "shortCode": "212" }, - { "name": "Mirna Pec", "shortCode": "170" }, - { "name": "Mislinja", "shortCode": "076" }, - { "name": "Mokronog-Trebelno", "shortCode": "199" }, - { "name": "Moravce", "shortCode": "077" }, - { "name": "Moravske Toplice", "shortCode": "078" }, - { "name": "Mozirje", "shortCode": "079" }, - { "name": "Murska Sobota", "shortCode": "080" }, - { "name": "Naklo", "shortCode": "082" }, - { "name": "Nazarje", "shortCode": "083" }, - { "name": "Nova Gorica", "shortCode": "084" }, - { "name": "Novo Mesto", "shortCode": "085" }, - { "name": "Odranci", "shortCode": "086" }, - { "name": "Ormoz", "shortCode": "087" }, - { "name": "Osilnica", "shortCode": "088" }, - { "name": "Pesnica", "shortCode": "089" }, - { "name": "Piran", "shortCode": "090" }, - { "name": "Pivka", "shortCode": "091" }, - { "name": "Podcetrtek", "shortCode": "092" }, - { "name": "Podlehnik", "shortCode": "172" }, - { "name": "Podvelka", "shortCode": "093" }, - { "name": "Poljcane", "shortCode": "200" }, - { "name": "Postojna", "shortCode": "094" }, - { "name": "Prebold", "shortCode": "174" }, - { "name": "Preddvor", "shortCode": "095" }, - { "name": "Prevalje", "shortCode": "175" }, - { "name": "Ptuj", "shortCode": "096" }, - { "name": "Race-Fram", "shortCode": "098" }, - { "name": "Radece", "shortCode": "099" }, - { "name": "Radenci", "shortCode": "100" }, - { "name": "Radlje ob Dravi", "shortCode": "101" }, - { "name": "Radovljica", "shortCode": "102" }, - { "name": "Ravne na Koroskem", "shortCode": "103" }, - { "name": "Razkrizje", "shortCode": "176" }, - { "name": "Recica ob Savinji", "shortCode": "209" }, - { "name": "Rence-Vogrsko", "shortCode": "201" }, - { "name": "Ribnica", "shortCode": "104" }, - { "name": "Ribnica na Poboriu", "shortCode": "177" }, - { "name": "Rogaska Slatina", "shortCode": "106" }, - { "name": "Rogasovci", "shortCode": "105" }, - { "name": "Rogatec", "shortCode": "107" }, - { "name": "Ruse", "shortCode": "108" }, - { "name": "Salovci", "shortCode": "033" }, - { "name": "Selnica ob Dravi", "shortCode": "178" }, - { "name": "Semic", "shortCode": "109" }, - { "name": "Sempeter-Vrtojba", "shortCode": "183" }, - { "name": "Sencur", "shortCode": "117" }, - { "name": "Sentilj", "shortCode": "118" }, - { "name": "Sentjernej", "shortCode": "119" }, - { "name": "Sentjur", "shortCode": "120" }, - { "name": "Sentrupert", "shortCode": "211" }, - { "name": "Sevnica", "shortCode": "110" }, - { "name": "Sezana", "shortCode": "111" }, - { "name": "Skocjan", "shortCode": "121" }, - { "name": "Skofja Loka", "shortCode": "122" }, - { "name": "Skofljica", "shortCode": "123" }, - { "name": "Slovenj Gradec", "shortCode": "112" }, - { "name": "Slovenska Bistrica", "shortCode": "113" }, - { "name": "Slovenske Konjice", "shortCode": "114" }, - { "name": "Smarje pri elsah", "shortCode": "124" }, - { "name": "Smarjeske Toplice", "shortCode": "206" }, - { "name": "Smartno ob Paki", "shortCode": "125" }, - { "name": "Smartno pri Litiji", "shortCode": "194" }, - { "name": "Sodrazica", "shortCode": "179" }, - { "name": "Solcava", "shortCode": "180" }, - { "name": "Sostanj", "shortCode": "126" }, - { "name": "Sredisce ob Dravi", "shortCode": "202" }, - { "name": "Starse", "shortCode": "115" }, - { "name": "Store", "shortCode": "127" }, - { "name": "Straza", "shortCode": "203" }, - { "name": "Sveta Ana", "shortCode": "181" }, - { "name": "Sveta Trojica v Slovenskih Goricah", "shortCode": "204" }, - { "name": "Sveta Andraz v Slovenskih Goricah", "shortCode": "182" }, - { "name": "Sveti Jurij", "shortCode": "116" }, - { "name": "Sveti Jurij v Slovenskih Goricah", "shortCode": "210" }, - { "name": "Sveti Tomaz", "shortCode": "205" }, - { "name": "Tabor", "shortCode": "184" }, - { "name": "Tisina", "shortCode": "128" }, - { "name": "Tolmin", "shortCode": "128" }, - { "name": "Trbovlje", "shortCode": "129" }, - { "name": "Trebnje", "shortCode": "130" }, - { "name": "Trnovska Vas", "shortCode": "185" }, - { "name": "Trzin", "shortCode": "186" }, - { "name": "Trzic", "shortCode": "131" }, - { "name": "Turnisce", "shortCode": "132" }, - { "name": "Velenje", "shortCode": "133" }, - { "name": "Velika Polana", "shortCode": "187" }, - { "name": "Velike Lasce", "shortCode": "134" }, - { "name": "Verzej", "shortCode": "188" }, - { "name": "Videm", "shortCode": "135" }, - { "name": "Vipava", "shortCode": "136" }, - { "name": "Vitanje", "shortCode": "137" }, - { "name": "Vodice", "shortCode": "138" }, - { "name": "Vojnik", "shortCode": "139" }, - { "name": "Vransko", "shortCode": "189" }, - { "name": "Vrhnika", "shortCode": "140" }, - { "name": "Vuzenica", "shortCode": "141" }, - { "name": "Zagorje ob Savi", "shortCode": "142" }, - { "name": "Zavrc", "shortCode": "143" }, - { "name": "Zrece", "shortCode": "144" }, - { "name": "Zalec", "shortCode": "190" }, - { "name": "Zelezniki", "shortCode": "146" }, - { "name": "Zetale", "shortCode": "191" }, - { "name": "Ziri", "shortCode": "147" }, - { "name": "Zirovnica", "shortCode": "192" }, - { "name": "Zuzemberk", "shortCode": "193" } - ] - }, - { - "countryName": "Solomon Islands", - "countryShortCode": "SB", - "phoneCode": "+677", - "currencyCode": "SBD", - "latitude": "-8.00000000", - "longitude": "159.00000000", - "timezones": [ { - "zoneName": "Pacific/Guadalcanal", - "gmtOffset": 39600, - "gmtOffsetName": "UTC+11:00", - "abbreviation": "SBT", - "tzName": "Solomon Islands Time" - } - ], - "regions": [ - { "name": "Central", "shortCode": "CE" }, - { "name": "Choiseul", "shortCode": "CH" }, - { "name": "Guadalcanal", "shortCode": "GU" }, - { "name": "Honiara", "shortCode": "CT" }, - { "name": "Isabel", "shortCode": "IS" }, - { "name": "Makira-Ulawa", "shortCode": "MK" }, - { "name": "Malaita", "shortCode": "ML" }, - { "name": "Rennell and Bellona", "shortCode": "RB" }, - { "name": "Temotu", "shortCode": "TE" }, - { "name": "Western", "shortCode": "WE" } - ] - }, - { - "countryName": "Somalia", - "countryShortCode": "SO", - "phoneCode": "+252", - "currencyCode": "SOS", - "latitude": "10.00000000", - "longitude": "49.00000000", - "timezones": [ + "name": "Aračinovo", + "shortCode": "02" + }, { - "zoneName": "Africa/Mogadishu", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EAT", - "tzName": "East Africa Time" - } - ], - "regions": [ - { "name": "Awdal", "shortCode": "AW" }, - { "name": "Bakool", "shortCode": "BK" }, - { "name": "Banaadir", "shortCode": "BN" }, - { "name": "Bari", "shortCode": "BR" }, - { "name": "Bay", "shortCode": "BY" }, - { "name": "Galguduud", "shortCode": "GA" }, - { "name": "Gedo", "shortCode": "GE" }, - { "name": "Hiiraan", "shortCode": "HI" }, - { "name": "Jubbada Dhexe", "shortCode": "JD" }, - { "name": "Jubbada Hoose", "shortCode": "JH" }, - { "name": "Mudug", "shortCode": "MU" }, - { "name": "Nugaal", "shortCode": "NU" }, - { "name": "Sanaag", "shortCode": "SA" }, - { "name": "Shabeellaha Dhexe", "shortCode": "SD" }, - { "name": "Shabeellaha Hoose", "shortCode": "SH" }, - { "name": "Sool", "shortCode": "SO" }, - { "name": "Togdheer", "shortCode": "TO" }, - { "name": "Woqooyi Galbeed", "shortCode": "WO" } - ] - }, - { - "countryName": "South Africa", - "countryShortCode": "ZA", - "phoneCode": "+27", - "currencyCode": "ZAR", - "latitude": "-29.00000000", - "longitude": "24.00000000", - "timezones": [ + "name": "Berovo", + "shortCode": "03" + }, { - "zoneName": "Africa/Johannesburg", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "SAST", - "tzName": "South African Standard Time" - } - ], - "regions": [ - { "name": "Eastern Cape", "shortCode": "EC" }, - { "name": "Free State", "shortCode": "FS" }, - { "name": "Gauteng", "shortCode": "GT" }, - { "name": "KwaZulu-Natal", "shortCode": "NL" }, - { "name": "Limpopo", "shortCode": "LP" }, - { "name": "Mpumalanga", "shortCode": "MP" }, - { "name": "Northern Cape", "shortCode": "NC" }, - { "name": "North West", "shortCode": "NW" }, - { "name": "Western Cape", "shortCode": "WC" } - ] - }, - { - "countryName": "South Georgia and South Sandwich Islands", - "countryShortCode": "GS", - "phoneCode": "+500", - "currencyCode": "GBP", - "latitude": "-54.50000000", - "longitude": "-37.00000000", - "timezones": [ + "name": "Bitola", + "shortCode": "04" + }, { - "zoneName": "Atlantic/South_Georgia", - "gmtOffset": -7200, - "gmtOffsetName": "UTC-02:00", - "abbreviation": "GST", - "tzName": "South Georgia and the South Sandwich Islands Time" - } - ], - "regions": [ - { "name": "Bird Island" }, - { "name": "Bristol Island" }, - { "name": "Clerke Rocks" }, - { "name": "Montagu Island" }, - { "name": "Saunders Island" }, - { "name": "South Georgia" }, - { "name": "Southern Thule" }, - { "name": "Traversay Islands" } - ] - }, - { - "countryName": "South Sudan", - "countryShortCode": "SS", - "phoneCode": "+211", - "currencyCode": "SSP", - "latitude": "7.00000000", - "longitude": "30.00000000", + "name": "Bogdanci", + "shortCode": "05" + }, + { + "name": "Bogovinje", + "shortCode": "06" + }, + { + "name": "Bosilovo", + "shortCode": "07" + }, + { + "name": "Brvenica", + "shortCode": "08" + }, + { + "name": "Centar Župa", + "shortCode": "78" + }, + { + "name": "Čaška", + "shortCode": "08" + }, + { + "name": "Češinovo-Obleševo", + "shortCode": "81" + }, + { + "name": "Čučer Sandevo", + "shortCode": "82" + }, + { + "name": "Debar", + "shortCode": "21" + }, + { + "name": "Debarca", + "shortCode": "22" + }, + { + "name": "Delčevo", + "shortCode": "23" + }, + { + "name": "Demir Hisar", + "shortCode": "25" + }, + { + "name": "Demir Kapija", + "shortCode": "24" + }, + { + "name": "Doran", + "shortCode": "26" + }, + { + "name": "Dolneni", + "shortCode": "27" + }, + { + "name": "Gevgelija", + "shortCode": "18" + }, + { + "name": "Gostivar", + "shortCode": "19" + }, + { + "name": "Gradsko", + "shortCode": "20" + }, + { + "name": "Ilinden", + "shortCode": "34" + }, + { + "name": "Jegunovce", + "shortCode": "35" + }, + { + "name": "Karbinci", + "shortCode": "37" + }, + { + "name": "Kavadarci", + "shortCode": "36" + }, + { + "name": "Kičevo", + "shortCode": "40" + }, + { + "name": "Kočani", + "shortCode": "42" + }, + { + "name": "Konče", + "shortCode": "41" + }, + { + "name": "Kratovo", + "shortCode": "43" + }, + { + "name": "Kriva Palanka", + "shortCode": "44" + }, + { + "name": "Krivogaštani", + "shortCode": "45" + }, + { + "name": "Kruševo", + "shortCode": "46" + }, + { + "name": "Kumanovo", + "shortCode": "47" + }, + { + "name": "Lipkovo", + "shortCode": "48" + }, + { + "name": "Lozovo", + "shortCode": "49" + }, + { + "name": "Makedonska Kamenica", + "shortCode": "51" + }, + { + "name": "Makedonski Brod", + "shortCode": "52" + }, + { + "name": "Mavrovo i Rostuša", + "shortCode": "50" + }, + { + "name": "Mogila", + "shortCode": "53" + }, + { + "name": "Negotino", + "shortCode": "54" + }, + { + "name": "Novaci", + "shortCode": "55" + }, + { + "name": "Novo Selo", + "shortCode": "56" + }, + { + "name": "Ohrid", + "shortCode": "58" + }, + { + "name": "Pehčevo", + "shortCode": "60" + }, + { + "name": "Petrovec", + "shortCode": "59" + }, + { + "name": "Plasnica", + "shortCode": "61" + }, + { + "name": "Prilep", + "shortCode": "62" + }, + { + "name": "Probištip", + "shortCode": "63" + }, + { + "name": "Radoviš", + "shortCode": "" + }, + { + "name": "Rankovce", + "shortCode": "65" + }, + { + "name": "Resen", + "shortCode": "66" + }, + { + "name": "Rosoman", + "shortCode": "67" + }, + { + "name": "Skopje", + "shortCode": "85" + }, + { + "name": "Sopište", + "shortCode": "70" + }, + { + "name": "Staro Nagoričane", + "shortCode": "71" + }, + { + "name": "Struga", + "shortCode": "72" + }, + { + "name": "Strumica", + "shortCode": "73" + }, + { + "name": "Studeničani", + "shortCode": "74" + }, + { + "name": "Sveti Nikole", + "shortCode": "69" + }, + { + "name": "Štip", + "shortCode": "83" + }, + { + "name": "Tearce", + "shortCode": "75" + }, + { + "name": "Tetovo", + "shortCode": "76" + }, + { + "name": "Valandovo", + "shortCode": "10" + }, + { + "name": "Vasilevo", + "shortCode": "11" + }, + { + "name": "Veles", + "shortCode": "13" + }, + { + "name": "Vevčani", + "shortCode": "12" + }, + { + "name": "Vinica", + "shortCode": "14" + }, + { + "name": "Vrapčište", + "shortCode": "16" + }, + { + "name": "Zelenikovo", + "shortCode": "32" + }, + { + "name": "Zrnovci", + "shortCode": "33" + }, + { + "name": "Želino", + "shortCode": "30" + } + ], + "capital": "Skopje", + "population": 1836713, + "area": 25713, + "continent": "Europe", + "nativeName": "Република Северна Македонија", + "demonym": "Macedonian", + "languages": [ + "Albanian", + "Macedonian" + ], + "tld": [ + ".mk" + ], + "borders": [ + "GR", + "BG", + "AL", + "RS", + "XK" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Madagascar", + "countryShortCode": "MG", + "phoneCode": "+261", + "currencyCode": "MGA", + "latitude": "-20.00000000", + "longitude": "47.00000000", "timezones": [ { - "zoneName": "Africa/Juba", + "zoneName": "Indian/Antananarivo", "gmtOffset": 10800, "gmtOffsetName": "UTC+03:00", "abbreviation": "EAT", @@ -8355,705 +13861,533 @@ } ], "regions": [ - { "name": "Central Equatoria", "shortCode": "CE" }, - { "name": "Eastern Equatoria", "shortCode": "EE" }, - { "name": "Jonglei", "shortCode": "JG" }, - { "name": "Lakes", "shortCode": "LK" }, - { "name": "Northern Bahr el Ghazal", "shortCode": "BN" }, - { "name": "Unity", "shortCode": "UY" }, - { "name": "Upper Nile", "shortCode": "NU" }, - { "name": "Warrap", "shortCode": "WR" }, - { "name": "Western Bahr el Ghazal", "shortCode": "BW" }, - { "name": "Western Equatoria", "shortCode": "EW" } - ] - }, - { - "countryName": "Spain", - "countryShortCode": "ES", - "phoneCode": "+34", - "currencyCode": "EUR", - "latitude": "40.00000000", - "longitude": "-4.00000000", - "timezones": [ { - "zoneName": "Africa/Ceuta", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "name": "Antananarivo", + "shortCode": "T" }, { - "zoneName": "Atlantic/Canary", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "WET", - "tzName": "Western European Time" + "name": "Antsiranana", + "shortCode": "D" }, { - "zoneName": "Europe/Madrid", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } - ], - "regions": [ - { "name": "Albacete", "shortCode": "CM" }, - { "name": "Alicante", "shortCode": "VC" }, - { "name": "Almería", "shortCode": "AN" }, - { "name": "Araba/Álava", "shortCode": "VI" }, - { "name": "Asturias", "shortCode": "O" }, - { "name": "Ávila", "shortCode": "AV" }, - { "name": "Badajoz", "shortCode": "BA" }, - { "name": "Barcelona", "shortCode": "B" }, - { "name": "Bizkaia", "shortCode": "BI" }, - { "name": "Burgos", "shortCode": "BU" }, - { "name": "Cáceres", "shortCode": "CC" }, - { "name": "Cádiz", "shortCode": "CA" }, - { "name": "Cantabria", "shortCode": "S" }, - { "name": "Castellón", "shortCode": "CS" }, - { "name": "Cueta", "shortCode": "CU" }, - { "name": "Ciudad Real", "shortCode": "CR" }, - { "name": "Córdoba", "shortCode": "CO" }, - { "name": "A Coruña", "shortCode": "C" }, - { "name": "Cuenca", "shortCode": "CU" }, - { "name": "Gipuzkoa", "shortCode": "SS" }, - { "name": "Girona", "shortCode": "GI" }, - { "name": "Granada", "shortCode": "GR" }, - { "name": "Guadalajara", "shortCode": "GU" }, - { "name": "Huelva", "shortCode": "H" }, - { "name": "Huesca", "shortCode": "HU" }, - { "name": "Illes Balears", "shortCode": "PM" }, - { "name": "Jaén", "shortCode": "J" }, - { "name": "León", "shortCode": "LE" }, - { "name": "Lleida", "shortCode": "L" }, - { "name": "Lugo", "shortCode": "LU" }, - { "name": "Madrid", "shortCode": "M" }, - { "name": "Málaga", "shortCode": "MA" }, - { "name": "Melilla", "shortCode": "ML" }, - { "name": "Murcia", "shortCode": "MU" }, - { "name": "Navarre", "shortCode": "NA" }, - { "name": "Ourense", "shortCode": "OR" }, - { "name": "Palencia", "shortCode": "P" }, - { "name": "Las Palmas", "shortCode": "GC" }, - { "name": "Pontevedra", "shortCode": "PO" }, - { "name": "La Rioja", "shortCode": "LO" }, - { "name": "Salamanca", "shortCode": "SA" }, - { "name": "Santa Cruz de Tenerife", "shortCode": "TF" }, - { "name": "Segovia", "shortCode": "SG" }, - { "name": "Sevilla", "shortCode": "SE" }, - { "name": "Soria", "shortCode": "SO" }, - { "name": "Tarragona", "shortCode": "T" }, - { "name": "Teruel", "shortCode": "TE" }, - { "name": "Toledo", "shortCode": "TO" }, - { "name": "Valencia", "shortCode": "V" }, - { "name": "Valladolid", "shortCode": "VA" }, - { "name": "Zamora", "shortCode": "ZA" }, - { "name": "Zaragoza", "shortCode": "Z" } - ] - }, - { - "countryName": "Sri Lanka", - "countryShortCode": "LK", - "phoneCode": "+94", - "currencyCode": "LKR", - "latitude": "7.00000000", - "longitude": "81.00000000", - "timezones": [ + "name": "Fianarantsoa", + "shortCode": "F" + }, { - "zoneName": "Asia/Colombo", - "gmtOffset": 19800, - "gmtOffsetName": "UTC+05:30", - "abbreviation": "IST", - "tzName": "Indian Standard Time" + "name": "Mahajanga", + "shortCode": "M" + }, + { + "name": "Toamasina", + "shortCode": "A" + }, + { + "name": "Toliara", + "shortCode": "U" } ], - "regions": [ - { "name": "Basnahira", "shortCode": "1" }, - { "name": "Dakunu", "shortCode": "3" }, - { "name": "Madhyama", "shortCode": "2" }, - { "name": "Naegenahira", "shortCode": "5" }, - { "name": "Sabaragamuwa", "shortCode": "9" }, - { "name": "Uturu", "shortCode": "4" }, - { "name": "Uturumaeda", "shortCode": "7" }, - { "name": "Vayamba", "shortCode": "6" }, - { "name": "Uva", "shortCode": "8" } - ] + "capital": "Antananarivo", + "population": 31964956, + "area": 587295, + "continent": "Africa", + "nativeName": "République de Madagascar", + "demonym": "Malagasy", + "languages": [ + "French", + "Malagasy" + ], + "tld": [ + ".mg" + ], + "borders": [ + "FR", + "KM", + "MZ", + "SC" + ], + "unMember": true, + "independent": true }, { - "countryName": "Sudan", - "countryShortCode": "SD", - "phoneCode": "+249", - "currencyCode": "SDG", - "latitude": "15.00000000", - "longitude": "30.00000000", + "countryName": "Malawi", + "countryShortCode": "MW", + "phoneCode": "+265", + "currencyCode": "MWK", + "latitude": "-13.50000000", + "longitude": "34.00000000", "timezones": [ { - "zoneName": "Africa/Khartoum", + "zoneName": "Africa/Blantyre", "gmtOffset": 7200, "gmtOffsetName": "UTC+02:00", - "abbreviation": "EAT", - "tzName": "Eastern African Time" + "abbreviation": "CAT", + "tzName": "Central Africa Time" } ], "regions": [ - { "name": "Al Bahr al Ahmar", "shortCode": "RS" }, - { "name": "Al Jazirah", "shortCode": "GZ" }, - { "name": "Al Khartum", "shortCode": "KH" }, - { "name": "Al Qadarif", "shortCode": "GD" }, - { "name": "An Nil al Abyad", "shortCode": "NW" }, - { "name": "An Nil al Azraq", "shortCode": "NB" }, - { "name": "Ash Shamaliyah", "shortCode": "NO" }, - { "name": "Gharb Darfur", "shortCode": "DW" }, - { "name": "Gharb Kurdufan", "shortCode": "GK" }, - { "name": "Janub Darfur", "shortCode": "DS" }, - { "name": "Janub Kurdufan", "shortCode": "KS" }, - { "name": "Kassala", "shortCode": "KA" }, - { "name": "Nahr an Nil", "shortCode": "NR" }, - { "name": "Shamal Darfur", "shortCode": "DN" }, - { "name": "Sharq Darfur", "shortCode": "DE" }, - { "name": "Shiamal Kurdufan", "shortCode": "KN" }, - { "name": "Sinnar", "shortCode": "SI" }, - { "name": "Wasat Darfur Zalinjay", "shortCode": "DC" } - ] - }, - { - "countryName": "Suriname", - "countryShortCode": "SR", - "phoneCode": "+597", - "currencyCode": "SRD", - "latitude": "4.00000000", - "longitude": "-56.00000000", - "timezones": [ { - "zoneName": "America/Paramaribo", - "gmtOffset": -10800, - "gmtOffsetName": "UTC-03:00", - "abbreviation": "SRT", - "tzName": "Suriname Time" - } - ], - "regions": [ - { "name": "Brokopondo", "shortCode": "BR" }, - { "name": "Commewijne", "shortCode": "CM" }, - { "name": "Coronie", "shortCode": "CR" }, - { "name": "Marowijne", "shortCode": "MA" }, - { "name": "Nickerie", "shortCode": "NI" }, - { "name": "Para", "shortCode": "PR" }, - { "name": "Paramaribo", "shortCode": "PM" }, - { "name": "Saramacca", "shortCode": "SA" }, - { "name": "Sipaliwini", "shortCode": "SI" }, - { "name": "Wanica", "shortCode": "WA" } - ] - }, - { - "countryName": "Svalbard And Jan Mayen Islands", - "countryShortCode": "SJ", - "phoneCode": "+47", - "currencyCode": "NOK", - "latitude": "78.00000000", - "longitude": "20.00000000", - "timezones": [ + "name": "Balaka", + "shortCode": "BA" + }, { - "zoneName": "Arctic/Longyearbyen", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" - } - ], - "regions": [] - }, - { - "countryName": "Swaziland", - "countryShortCode": "SZ", - "phoneCode": "+268", - "currencyCode": "SZL", - "latitude": "-26.50000000", - "longitude": "31.50000000", - "timezones": [ + "name": "Blantyre", + "shortCode": "BL" + }, { - "zoneName": "Africa/Mbabane", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "SAST", - "tzName": "South African Standard Time" + "name": "Chikwawa", + "shortCode": "CK" + }, + { + "name": "Chiradzulu", + "shortCode": "CR" + }, + { + "name": "Chitipa", + "shortCode": "CT" + }, + { + "name": "Dedza", + "shortCode": "DE" + }, + { + "name": "Dowa", + "shortCode": "DO" + }, + { + "name": "Karonga", + "shortCode": "KR" + }, + { + "name": "Kasungu", + "shortCode": "KS" + }, + { + "name": "Likoma", + "shortCode": "LK" + }, + { + "name": "Lilongwe", + "shortCode": "LI" + }, + { + "name": "Machinga", + "shortCode": "MH" + }, + { + "name": "Mangochi", + "shortCode": "MG" + }, + { + "name": "Mchinji", + "shortCode": "MC" + }, + { + "name": "Mulanje", + "shortCode": "MU" + }, + { + "name": "Mwanza", + "shortCode": "MW" + }, + { + "name": "Mzimba", + "shortCode": "MZ" + }, + { + "name": "Nkhata Bay", + "shortCode": "NE" + }, + { + "name": "Nkhotakota", + "shortCode": "NB" + }, + { + "name": "Nsanje", + "shortCode": "NS" + }, + { + "name": "Ntcheu", + "shortCode": "NU" + }, + { + "name": "Ntchisi", + "shortCode": "NI" + }, + { + "name": "Phalombe", + "shortCode": "PH" + }, + { + "name": "Rumphi", + "shortCode": "RU" + }, + { + "name": "Salima", + "shortCode": "SA" + }, + { + "name": "Thyolo", + "shortCode": "TH" + }, + { + "name": "Zomba", + "shortCode": "ZO" } ], - "regions": [ - { "name": "Hhohho", "shortCode": "HH" }, - { "name": "Lubombo", "shortCode": "LU" }, - { "name": "Manzini", "shortCode": "MA" }, - { "name": "Shiselweni", "shortCode": "SH" } - ] + "capital": "Lilongwe", + "population": 17563749, + "area": 118484, + "continent": "Africa", + "officialName": "Malawi", + "nativeName": "Republic of Malawi", + "demonym": "Malawian", + "languages": [ + "English", + "Chewa", + "Tumbuka" + ], + "tld": [ + ".mw" + ], + "borders": [ + "MZ", + "TZ", + "ZM" + ], + "unMember": true, + "independent": true }, { - "countryName": "Sweden", - "countryShortCode": "SE", - "phoneCode": "+46", - "currencyCode": "SEK", - "latitude": "62.00000000", - "longitude": "15.00000000", + "countryName": "Malaysia", + "countryShortCode": "MY", + "phoneCode": "+60", + "currencyCode": "MYR", + "latitude": "2.50000000", + "longitude": "112.50000000", "timezones": [ { - "zoneName": "Europe/Stockholm", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "zoneName": "Asia/Kuala_Lumpur", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "MYT", + "tzName": "Malaysia Time" + }, + { + "zoneName": "Asia/Kuching", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "MYT", + "tzName": "Malaysia Time" } ], "regions": [ - { "name": "Blekinge", "shortCode": "K" }, - { "name": "Dalarna", "shortCode": "W" }, - { "name": "Gävleborg", "shortCode": "X" }, - { "name": "Gotland", "shortCode": "I" }, - { "name": "Halland", "shortCode": "N" }, - { "name": "Jämtland", "shortCode": "Z" }, - { "name": "Jönköping", "shortCode": "F" }, - { "name": "Kalmar", "shortCode": "H" }, - { "name": "Kronoberg", "shortCode": "G" }, - { "name": "Norrbotten", "shortCode": "BD" }, - { "name": "Örebro", "shortCode": "T" }, - { "name": "Östergötland", "shortCode": "E" }, - { "name": "Skåne", "shortCode": "M" }, - { "name": "Södermanland", "shortCode": "D" }, - { "name": "Stockholm", "shortCode": "AB" }, - { "name": "Uppsala", "shortCode": "C" }, - { "name": "Värmland", "shortCode": "S" }, - { "name": "Västerbotten", "shortCode": "AC" }, - { "name": "Västernorrland", "shortCode": "Y" }, - { "name": "Västmanland", "shortCode": "U" }, - { "name": "Västra Götaland", "shortCode": "O" } - ] - }, - { - "countryName": "Switzerland", - "countryShortCode": "CH", - "phoneCode": "+41", - "currencyCode": "CHF", - "latitude": "47.00000000", - "longitude": "8.00000000", - "timezones": [ { - "zoneName": "Europe/Zurich", - "gmtOffset": 3600, - "gmtOffsetName": "UTC+01:00", - "abbreviation": "CET", - "tzName": "Central European Time" + "name": "Johor", + "shortCode": "01" + }, + { + "name": "Kedah", + "shortCode": "02" + }, + { + "name": "Kelantan", + "shortCode": "03" + }, + { + "name": "Melaka", + "shortCode": "04" + }, + { + "name": "Negeri Sembilan", + "shortCode": "05" + }, + { + "name": "Pahang", + "shortCode": "06" + }, + { + "name": "Perak", + "shortCode": "08" + }, + { + "name": "Perlis", + "shortCode": "09" + }, + { + "name": "Pulau Pinang", + "shortCode": "07" + }, + { + "name": "Sabah", + "shortCode": "12" + }, + { + "name": "Sarawak", + "shortCode": "13" + }, + { + "name": "Selangor", + "shortCode": "10" + }, + { + "name": "Terengganu", + "shortCode": "11" + }, + { + "name": "Wilayah Persekutuan (Kuala Lumpur)", + "shortCode": "14" + }, + { + "name": "Wilayah Persekutuan (Labuan)", + "shortCode": "15" + }, + { + "name": "Wilayah Persekutuan (Putrajaya)", + "shortCode": "16" } ], - "regions": [ - { "name": "Aargau", "shortCode": "AG" }, - { "name": "Appenzell Ausserrhoden", "shortCode": "AR" }, - { "name": "Appenzell Innerhoden", "shortCode": "AI" }, - { "name": "Basel-Landschaft", "shortCode": "BL" }, - { "name": "Basel-Stadt", "shortCode": "BS" }, - { "name": "Bern", "shortCode": "BE" }, - { "name": "Fribourg", "shortCode": "FR" }, - { "name": "Genève", "shortCode": "GE" }, - { "name": "Glarus", "shortCode": "GL" }, - { "name": "Graubünden", "shortCode": "GR" }, - { "name": "Jura", "shortCode": "JU" }, - { "name": "Luzern", "shortCode": "LU" }, - { "name": "Neuchâtel", "shortCode": "NE" }, - { "name": "Nidwalden", "shortCode": "NW" }, - { "name": "Obwalden", "shortCode": "OW" }, - { "name": "Sankt Gallen", "shortCode": "SG" }, - { "name": "Schaffhausen", "shortCode": "SH" }, - { "name": "Schwyz", "shortCode": "SZ" }, - { "name": "Solothurn", "shortCode": "SO" }, - { "name": "Thurgau", "shortCode": "TG" }, - { "name": "Ticino", "shortCode": "TI" }, - { "name": "Uri", "shortCode": "UR" }, - { "name": "Valais", "shortCode": "VS" }, - { "name": "Vaud", "shortCode": "VD" }, - { "name": "Zug", "shortCode": "ZG" }, - { "name": "Zürich", "shortCode": "ZH" } - ] + "capital": "Kuala Lumpur", + "population": 34231700, + "area": 330803, + "continent": "Asia", + "nativeName": "Malaysia", + "demonym": "Malaysian", + "languages": [ + "Malay" + ], + "tld": [ + ".my" + ], + "borders": [ + "ID", + "SG", + "TH", + "BN", + "PH" + ], + "unMember": true, + "independent": true }, { - "countryName": "Syrian Arab Republic", - "countryShortCode": "SY", - "phoneCode": "+963", - "currencyCode": "SYP", - "latitude": "35.00000000", - "longitude": "38.00000000", + "countryName": "Maldives", + "countryShortCode": "MV", + "phoneCode": "+960", + "currencyCode": "MVR", + "latitude": "3.25000000", + "longitude": "73.00000000", "timezones": [ { - "zoneName": "Asia/Damascus", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "zoneName": "Indian/Maldives", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "MVT", + "tzName": "Maldives Time" } ], "regions": [ - { "name": "Al Hasakah", "shortCode": "HA" }, - { "name": "Al Ladhiqiyah", "shortCode": "LA" }, - { "name": "Al Qunaytirah", "shortCode": "QU" }, - { "name": "Ar Raqqah", "shortCode": "RA" }, - { "name": "As Suwayda'", "shortCode": "SU" }, - { "name": "Dar'a", "shortCode": "DR" }, - { "name": "Dayr az Zawr", "shortCode": "DY" }, - { "name": "Dimashq", "shortCode": "DI" }, - { "name": "Halab", "shortCode": "HL" }, - { "name": "Hamah", "shortCode": "HM" }, - { "name": "Hims", "shortCode": "HI" }, - { "name": "Idlib", "shortCode": "ID" }, - { "name": "Rif Dimashq", "shortCode": "RD" }, - { "name": "Tartus", "shortCode": "TA" } - ] - }, - { - "countryName": "Taiwan", - "countryShortCode": "TW", - "phoneCode": "+886", - "currencyCode": "TWD", - "latitude": "23.50000000", - "longitude": "121.00000000", - "timezones": [ { - "zoneName": "Asia/Taipei", - "gmtOffset": 28800, - "gmtOffsetName": "UTC+08:00", - "abbreviation": "CST", - "tzName": "China Standard Time" + "name": "Alifu Alifu", + "shortCode": "02" + }, + { + "name": "Alifu Dhaalu", + "shortCode": "00" + }, + { + "name": "Baa", + "shortCode": "20" + }, + { + "name": "Dhaalu", + "shortCode": "17" + }, + { + "name": "Faafu", + "shortCode": "14" + }, + { + "name": "Gaafu Alifu", + "shortCode": "27" + }, + { + "name": "Gaafu Dhaalu", + "shortCode": "28" + }, + { + "name": "Gnaviyani", + "shortCode": "29" + }, + { + "name": "Haa Alifu", + "shortCode": "07" + }, + { + "name": "Haa Dhaalu", + "shortCode": "23" + }, + { + "name": "Kaafu", + "shortCode": "29" + }, + { + "name": "Laamu", + "shortCode": "05" + }, + { + "name": "Lhaviyani", + "shortCode": "03" + }, + { + "name": "Malé", + "shortCode": "MLE" + }, + { + "name": "Meemu", + "shortCode": "12" + }, + { + "name": "Noonu", + "shortCode": "25" + }, + { + "name": "Raa", + "shortCode": "13" + }, + { + "name": "Seenu", + "shortCode": "01" + }, + { + "name": "Shaviyani", + "shortCode": "24" + }, + { + "name": "Thaa", + "shortCode": "08" + }, + { + "name": "Vaavu", + "shortCode": "04" } ], - "regions": [ - { "name": "Chang-hua", "shortCode": "CHA" }, - { "name": "Chia-i", "shortCode": "CYQ" }, - { "name": "Hsin-chu", "shortCode": "HSQ" }, - { "name": "Hua-lien", "shortCode": "HUA" }, - { "name": "Kao-hsiung", "shortCode": "KHH" }, - { "name": "Keelung", "shortCode": "KEE" }, - { "name": "Kinmen", "shortCode": "KIN" }, - { "name": "Lienchiang", "shortCode": "LIE" }, - { "name": "Miao-li", "shortCode": "MIA" }, - { "name": "Nan-t'ou", "shortCode": "NAN" }, - { "name": "P'eng-hu", "shortCode": "PEN" }, - { "name": "New Taipei", "shortCode": "NWT" }, - { "name": "P'ing-chung", "shortCode": "PIF" }, - { "name": "T'ai-chung", "shortCode": "TXG" }, - { "name": "T'ai-nan", "shortCode": "TNN" }, - { "name": "T'ai-pei", "shortCode": "TPE" }, - { "name": "T'ai-tung", "shortCode": "TTT" }, - { "name": "T'ao-yuan", "shortCode": "TAO" }, - { "name": "Yi-lan", "shortCode": "ILA" }, - { "name": "Yun-lin", "shortCode": "YUN" } - ] + "capital": "Malé", + "population": 436330, + "area": 298, + "continent": "Asia", + "nativeName": "ދިވެހިރާއްޖެ", + "demonym": "Maldivian", + "languages": [ + "Maldivian" + ], + "tld": [ + ".mv" + ], + "borders": [ + "GB" + ], + "unMember": true, + "independent": true }, { - "countryName": "Tajikistan", - "countryShortCode": "TJ", - "phoneCode": "+992", - "currencyCode": "TJS", - "latitude": "39.00000000", - "longitude": "71.00000000", + "countryName": "Mali", + "countryShortCode": "ML", + "phoneCode": "+223", + "currencyCode": "XOF", + "latitude": "17.00000000", + "longitude": "-4.00000000", "timezones": [ { - "zoneName": "Asia/Dushanbe", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "TJT", - "tzName": "Tajikistan Time" + "zoneName": "Africa/Bamako", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" } ], "regions": [ - { "name": "Dushanbe", "shortCode": "DU" }, - { "name": "Kŭhistoni Badakhshon", "shortCode": "GB" }, - { "name": "Khatlon", "shortCode": "KT" }, - { "name": "Sughd", "shortCode": "SU" } - ] - }, - { - "countryName": "Tanzania, United Republic of", - "countryShortCode": "TZ", - "phoneCode": "+255", - "currencyCode": "TZS", - "latitude": "-6.00000000", - "longitude": "35.00000000", - "timezones": [ { - "zoneName": "Africa/Dar_es_Salaam", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EAT", - "tzName": "East Africa Time" - } - ], - "regions": [ - { "name": "Arusha", "shortCode": "01" }, - { "name": "Coast", "shortCode": "19" }, - { "name": "Dar es Salaam", "shortCode": "02" }, - { "name": "Dodoma", "shortCode": "03" }, - { "name": "Iringa", "shortCode": "04" }, - { "name": "Kagera", "shortCode": "05" }, - { "name": "Kigoma", "shortCode": "08" }, - { "name": "Kilimanjaro", "shortCode": "09" }, - { "name": "Lindi", "shortCode": "12" }, - { "name": "Manyara", "shortCode": "26" }, - { "name": "Mara", "shortCode": "13" }, - { "name": "Mbeya", "shortCode": "14" }, - { "name": "Morogoro", "shortCode": "16" }, - { "name": "Mtwara", "shortCode": "17" }, - { "name": "Mwanza", "shortCode": "18" }, - { "name": "Pemba North", "shortCode": "06" }, - { "name": "Pemba South", "shortCode": "10" }, - { "name": "Rukwa", "shortCode": "20" }, - { "name": "Ruvuma", "shortCode": "21" }, - { "name": "Shinyanga", "shortCode": "22" }, - { "name": "Singida", "shortCode": "23" }, - { "name": "Tabora", "shortCode": "24" }, - { "name": "Tanga", "shortCode": "25" }, - { "name": "Zanzibar North", "shortCode": "07" }, - { "name": "Zanzibar Central/South", "shortCode": "11" }, - { "name": "Zanzibar Urban/West", "shortCode": "15" } - ] - }, - { - "countryName": "Thailand", - "countryShortCode": "TH", - "phoneCode": "+66", - "currencyCode": "THB", - "latitude": "15.00000000", - "longitude": "100.00000000", - "timezones": [ + "name": "Bamako", + "shortCode": "BKO" + }, { - "zoneName": "Asia/Bangkok", - "gmtOffset": 25200, - "gmtOffsetName": "UTC+07:00", - "abbreviation": "ICT", - "tzName": "Indochina Time" - } - ], - "regions": [ - { "name": "Amnat Charoen", "shortCode": "37" }, - { "name": "Ang Thong", "shortCode": "15" }, - { "name": "Bueng Kan", "shortCode": "38" }, - { "name": "Buri Ram", "shortCode": "31" }, - { "name": "Chachoengsao", "shortCode": "24" }, - { "name": "Chai Nat", "shortCode": "18" }, - { "name": "Chaiyaphum", "shortCode": "36" }, - { "name": "Chanthaburi", "shortCode": "22" }, - { "name": "Chiang Mai", "shortCode": "50" }, - { "name": "Chiang Rai", "shortCode": "57" }, - { "name": "Chon Buri", "shortCode": "20" }, - { "name": "Chumphon", "shortCode": "86" }, - { "name": "Kalasin", "shortCode": "46" }, - { "name": "Kamphaeng Phet", "shortCode": "62" }, - { "name": "Kanchanaburi", "shortCode": "71" }, - { "name": "Khon Kaen", "shortCode": "40" }, - { "name": "Krabi", "shortCode": "81" }, - { "name": "Krung Thep Mahanakhon (Bangkok)", "shortCode": "10" }, - { "name": "Lampang", "shortCode": "52" }, - { "name": "Lamphun", "shortCode": "51" }, - { "name": "Loei", "shortCode": "42" }, - { "name": "Lop Buri", "shortCode": "16" }, - { "name": "Mae Hong Son", "shortCode": "58" }, - { "name": "Maha Sarakham", "shortCode": "44" }, - { "name": "Mukdahan", "shortCode": "49" }, - { "name": "Nakhon Nayok", "shortCode": "26" }, - { "name": "Nakhon Phathom", "shortCode": "73" }, - { "name": "Nakhon Phanom", "shortCode": "48" }, - { "name": "Nakhon Ratchasima", "shortCode": "30" }, - { "name": "Nakhon Sawan", "shortCode": "60" }, - { "name": "Nakhon Si Thammarat", "shortCode": "80" }, - { "name": "Nan", "shortCode": "55" }, - { "name": "Narathiwat", "shortCode": "96" }, - { "name": "Nong Bua Lam Phu", "shortCode": "39" }, - { "name": "Nong Khai", "shortCode": "43" }, - { "name": "Nonthaburi", "shortCode": "12" }, - { "name": "Pathum Thani", "shortCode": "13" }, - { "name": "Pattani", "shortCode": "94" }, - { "name": "Phangnga", "shortCode": "82" }, - { "name": "Phatthalung", "shortCode": "93" }, - { "name": "Phayao", "shortCode": "56" }, - { "name": "Phetchabun", "shortCode": "76" }, - { "name": "Phetchaburi", "shortCode": "76" }, - { "name": "Phichit", "shortCode": "66" }, - { "name": "Phitsanulok", "shortCode": "65" }, - { "name": "Phra Nakhon Si Ayutthaya", "shortCode": "14" }, - { "name": "Phrae", "shortCode": "54" }, - { "name": "Phuket", "shortCode": "83" }, - { "name": "Prachin Buri", "shortCode": "25" }, - { "name": "Prachuap Khiri Khan", "shortCode": "77" }, - { "name": "Ranong", "shortCode": "85" }, - { "name": "Ratchaburi", "shortCode": "70" }, - { "name": "Rayong", "shortCode": "21" }, - { "name": "Roi Et", "shortCode": "45" }, - { "name": "Sa Kaeo", "shortCode": "27" }, - { "name": "Sakon Nakhon", "shortCode": "47" }, - { "name": "Samut Prakan", "shortCode": "11" }, - { "name": "Samut Sakhon", "shortCode": "74" }, - { "name": "Samut Songkhram", "shortCode": "75" }, - { "name": "Saraburi", "shortCode": "19" }, - { "name": "Satun", "shortCode": "91" }, - { "name": "Sing Buri", "shortCode": "17" }, - { "name": "Si Sa ket", "shortCode": "33" }, - { "name": "Songkhla", "shortCode": "90" }, - { "name": "Sukhothai", "shortCode": "64" }, - { "name": "Suphan Buri", "shortCode": "72" }, - { "name": "Surat Thani", "shortCode": "84" }, - { "name": "Surin", "shortCode": "32" }, - { "name": "Tak", "shortCode": "63" }, - { "name": "Trang", "shortCode": "92" }, - { "name": "Trat", "shortCode": "23" }, - { "name": "Ubon Ratchathani", "shortCode": "34" }, - { "name": "Udon Thani", "shortCode": "41" }, - { "name": "Uthai Thani", "shortCode": "61" }, - { "name": "Uttaradit", "shortCode": "53" }, - { "name": "Yala", "shortCode": "95" }, - { "name": "Yasothon", "shortCode": "35" } - ] - }, - { - "countryName": "Timor-Leste", - "countryShortCode": "TL", - "phoneCode": "+670", - "currencyCode": "USD", - "latitude": "-8.83333333", - "longitude": "125.91666666", - "timezones": [ + "name": "Gao", + "shortCode": "7" + }, { - "zoneName": "Asia/Dili", - "gmtOffset": 32400, - "gmtOffsetName": "UTC+09:00", - "abbreviation": "TLT", - "tzName": "Timor Leste Time" - } - ], - "regions": [ - { "name": "Aileu", "shortCode": "AL" }, - { "name": "Ainaro", "shortCode": "AN" }, - { "name": "Baucau", "shortCode": "BA" }, - { "name": "Bobonaro", "shortCode": "BO" }, - { "name": "Cova Lima", "shortCode": "CO" }, - { "name": "Dili", "shortCode": "DI" }, - { "name": "Ermera", "shortCode": "ER" }, - { "name": "Lautem", "shortCode": "LA" }, - { "name": "Liquica", "shortCode": "LI" }, - { "name": "Manatuto", "shortCode": "MT" }, - { "name": "Manufahi", "shortCode": "MF" }, - { "name": "Oecussi", "shortCode": "OE" }, - { "name": "Viqueque", "shortCode": "VI" } - ] - }, - { - "countryName": "Togo", - "countryShortCode": "TG", - "phoneCode": "+228", - "currencyCode": "XOF", - "latitude": "8.00000000", - "longitude": "1.16666666", - "timezones": [ + "name": "Kayes", + "shortCode": "1" + }, { - "zoneName": "Africa/Lome", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } - ], - "regions": [ - { "name": "Centre", "shortCode": "C" }, - { "name": "Kara", "shortCode": "K" }, - { "name": "Maritime", "shortCode": "M" }, - { "name": "Plateaux", "shortCode": "P" }, - { "name": "Savannes", "shortCode": "S" } - ] - }, - { - "countryName": "Tokelau", - "countryShortCode": "TK", - "phoneCode": "+690", - "currencyCode": "NZD", - "latitude": "-9.00000000", - "longitude": "-172.00000000", - "timezones": [ + "name": "Kidal", + "shortCode": "8" + }, { - "zoneName": "Pacific/Fakaofo", - "gmtOffset": 46800, - "gmtOffsetName": "UTC+13:00", - "abbreviation": "TKT", - "tzName": "Tokelau Time" - } - ], - "regions": [ - { "name": "Atafu" }, - { "name": "Fakaofo" }, - { "name": "Nukunonu" } - ] - }, - { - "countryName": "Tonga", - "countryShortCode": "TO", - "phoneCode": "+676", - "currencyCode": "TOP", - "latitude": "-20.00000000", - "longitude": "-175.00000000", - "timezones": [ + "name": "Koulikoro", + "shortCode": "2" + }, { - "zoneName": "Pacific/Tongatapu", - "gmtOffset": 46800, - "gmtOffsetName": "UTC+13:00", - "abbreviation": "TOT", - "tzName": "Tonga Time" - } - ], - "regions": [ - { "name": "'Eua", "shortCode": "01" }, - { "name": "Ha'apai", "shortCode": "02" }, - { "name": "Niuas", "shortCode": "03" }, - { "name": "Tongatapu", "shortCode": "04" }, - { "name": "Vava'u", "shortCode": "05" } - ] - }, - { - "countryName": "Trinidad and Tobago", - "countryShortCode": "TT", - "phoneCode": "+1868", - "currencyCode": "TTD", - "latitude": "11.00000000", - "longitude": "-61.00000000", - "timezones": [ + "name": "Mopti", + "shortCode": "5" + }, { - "zoneName": "America/Port_of_Spain", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "AST", - "tzName": "Atlantic Standard Time" + "name": "Segou", + "shortCode": "4" + }, + { + "name": "Sikasso", + "shortCode": "3" + }, + { + "name": "Tombouctou", + "shortCode": "6" } ], - "regions": [ - { "name": "Arima", "shortCode": "ARI" }, - { "name": "Chaguanas", "shortCode": "CHA" }, - { "name": "Couva-Tabaquite-Talparo", "shortCode": "CTT" }, - { "name": "Diefo Martin", "shortCode": "DMN" }, - { "name": "Mayaro-Rio Claro", "shortCode": "MRC" }, - { "name": "Penal-Debe", "shortCode": "PED" }, - { "name": "Point Fortin", "shortCode": "PTF" }, - { "name": "Port-of-Spain", "shortCode": "POS" }, - { "name": "Princes Town", "shortCode": "PRT" }, - { "name": "San Fernando", "shortCode": "SFO" }, - { "name": "San Juan-Laventille", "shortCode": "SJL" }, - { "name": "Sangre Grande", "shortCode": "SGE" }, - { "name": "Siparia", "shortCode": "SIP" }, - { "name": "Tobago", "shortCode": "TOB" }, - { "name": "Tunapuna-Piarco", "shortCode": "TUP" } - ] + "capital": "Bamako", + "population": 22395489, + "area": 1240192, + "continent": "Africa", + "nativeName": "Mali", + "demonym": "Malian", + "languages": [ + "Bambara", + "Senufo", + "Fula", + "Bozo", + "Kassonke", + "Hassaniya Arabic", + "Songhay", + "Soninke", + "Maninka", + "Minyanka", + "Dogon", + "Tamasheq", + "Bobo" + ], + "tld": [ + ".ml" + ], + "borders": [ + "DZ", + "BF", + "GN", + "CI", + "MR", + "NE", + "SN" + ], + "unMember": true, + "independent": true }, { - "countryName": "Tunisia", - "countryShortCode": "TN", - "phoneCode": "+216", - "currencyCode": "TND", - "latitude": "34.00000000", - "longitude": "9.00000000", + "countryName": "Malta", + "countryShortCode": "MT", + "phoneCode": "+356", + "currencyCode": "EUR", + "latitude": "35.83333333", + "longitude": "14.58333333", "timezones": [ { - "zoneName": "Africa/Tunis", + "zoneName": "Europe/Malta", "gmtOffset": 3600, "gmtOffsetName": "UTC+01:00", "abbreviation": "CET", @@ -9061,628 +14395,12535 @@ } ], "regions": [ - { "name": "Ariana", "shortCode": "12" }, - { "name": "Beja", "shortCode": "31" }, - { "name": "Ben Arous", "shortCode": "13" }, - { "name": "Bizerte", "shortCode": "23" }, - { "name": "Gabes", "shortCode": "81" }, - { "name": "Gafsa", "shortCode": "71" }, - { "name": "Jendouba", "shortCode": "32" }, - { "name": "Kairouan", "shortCode": "41" }, - { "name": "Kasserine", "shortCode": "42" }, - { "name": "Kebili", "shortCode": "73" }, - { "name": "Kef", "shortCode": "33" }, - { "name": "Mahdia", "shortCode": "53" }, - { "name": "Medenine", "shortCode": "82" }, - { "name": "Monastir", "shortCode": "52" }, - { "name": "Nabeul", "shortCode": "21" }, - { "name": "Sfax", "shortCode": "61" }, - { "name": "Sidi Bouzid", "shortCode": "43" }, - { "name": "Siliana", "shortCode": "34" }, - { "name": "Sousse", "shortCode": "51" }, - { "name": "Tataouine", "shortCode": "83" }, - { "name": "Tozeur", "shortCode": "72" }, - { "name": "Tunis", "shortCode": "11" }, - { "name": "Zaghouan", "shortCode": "22" } - ] - }, - { - "countryName": "Turkey", - "countryShortCode": "TR", - "phoneCode": "+90", - "currencyCode": "TRY", - "latitude": "39.00000000", - "longitude": "35.00000000", - "timezones": [ { - "zoneName": "Europe/Istanbul", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" - } - ], - "regions": [ - { "name": "Adana", "shortCode": "01" }, - { "name": "Adiyaman", "shortCode": "02" }, - { "name": "Afyonkarahisar", "shortCode": "03" }, - { "name": "Agri", "shortCode": "04" }, - { "name": "Aksaray", "shortCode": "68" }, - { "name": "Amasya", "shortCode": "05" }, - { "name": "Ankara", "shortCode": "06" }, - { "name": "Antalya", "shortCode": "07" }, - { "name": "Ardahan", "shortCode": "75" }, - { "name": "Artvin", "shortCode": "08" }, - { "name": "Aydin", "shortCode": "09" }, - { "name": "Balikesir", "shortCode": "10" }, - { "name": "Bartin", "shortCode": "74" }, - { "name": "Batman", "shortCode": "72" }, - { "name": "Bayburt", "shortCode": "69" }, - { "name": "Bilecik", "shortCode": "11" }, - { "name": "Bingol", "shortCode": "12" }, - { "name": "Bitlis", "shortCode": "13" }, - { "name": "Bolu", "shortCode": "14" }, - { "name": "Burdur", "shortCode": "15" }, - { "name": "Bursa", "shortCode": "16" }, - { "name": "Canakkale", "shortCode": "17" }, - { "name": "Cankiri", "shortCode": "18" }, - { "name": "Corum", "shortCode": "19" }, - { "name": "Denizli", "shortCode": "20" }, - { "name": "Diyarbakir", "shortCode": "21" }, - { "name": "Duzce", "shortCode": "81" }, - { "name": "Edirne", "shortCode": "22" }, - { "name": "Elazig", "shortCode": "23" }, - { "name": "Erzincan", "shortCode": "24" }, - { "name": "Erzurum", "shortCode": "25" }, - { "name": "Eskisehir", "shortCode": "26" }, - { "name": "Gaziantep", "shortCode": "27" }, - { "name": "Giresun", "shortCode": "28" }, - { "name": "Gumushane", "shortCode": "29" }, - { "name": "Hakkari", "shortCode": "30" }, - { "name": "Hatay", "shortCode": "31" }, - { "name": "Igdir", "shortCode": "76" }, - { "name": "Isparta", "shortCode": "32" }, - { "name": "Istanbul", "shortCode": "34" }, - { "name": "Izmir", "shortCode": "35" }, - { "name": "Kahramanmaras", "shortCode": "46" }, - { "name": "Karabuk", "shortCode": "78" }, - { "name": "Karaman", "shortCode": "70" }, - { "name": "Kars", "shortCode": "36" }, - { "name": "Kastamonu", "shortCode": "37" }, - { "name": "Kayseri", "shortCode": "38" }, - { "name": "Kilis", "shortCode": "79" }, - { "name": "Kirikkale", "shortCode": "71" }, - { "name": "Kirklareli", "shortCode": "39" }, - { "name": "Kirsehir", "shortCode": "40" }, - { "name": "Kocaeli", "shortCode": "41" }, - { "name": "Konya", "shortCode": "42" }, - { "name": "Kutahya", "shortCode": "43" }, - { "name": "Malatya", "shortCode": "44" }, - { "name": "Manisa", "shortCode": "45" }, - { "name": "Mardin", "shortCode": "47" }, - { "name": "Mersin", "shortCode": "33" }, - { "name": "Mugla", "shortCode": "48" }, - { "name": "Mus", "shortCode": "49" }, - { "name": "Nevsehir", "shortCode": "50" }, - { "name": "Nigde", "shortCode": "51" }, - { "name": "Ordu", "shortCode": "52" }, - { "name": "Osmaniye", "shortCode": "80" }, - { "name": "Rize", "shortCode": "53" }, - { "name": "Sakarya", "shortCode": "54" }, - { "name": "Samsun", "shortCode": "55" }, - { "name": "Sanliurfa", "shortCode": "63" }, - { "name": "Siirt", "shortCode": "56" }, - { "name": "Sinop", "shortCode": "57" }, - { "name": "Sirnak", "shortCode": "73" }, - { "name": "Sivas", "shortCode": "58" }, - { "name": "Tekirdag", "shortCode": "59" }, - { "name": "Tokat", "shortCode": "60" }, - { "name": "Trabzon", "shortCode": "61" }, - { "name": "Tunceli", "shortCode": "62" }, - { "name": "Usak", "shortCode": "64" }, - { "name": "Van", "shortCode": "65" }, - { "name": "Yalova", "shortCode": "77" }, - { "name": "Yozgat", "shortCode": "66" }, - { "name": "Zonguldak", "shortCode": "67" } - ] - }, - { - "countryName": "Turkmenistan", - "countryShortCode": "TM", - "phoneCode": "+993", - "currencyCode": "TMT", - "latitude": "40.00000000", - "longitude": "60.00000000", - "timezones": [ + "name": "Attard", + "shortCode": "01" + }, { - "zoneName": "Asia/Ashgabat", - "gmtOffset": 18000, - "gmtOffsetName": "UTC+05:00", - "abbreviation": "TMT", - "tzName": "Turkmenistan Time" - } - ], - "regions": [ - { "name": "Ahal", "shortCode": "A" }, - { "name": "Asgabat", "shortCode": "S" }, - { "name": "Balkan", "shortCode": "B" }, - { "name": "Dashoguz", "shortCode": "D" }, - { "name": "Lebap", "shortCode": "L" }, - { "name": "Mary", "shortCode": "M" } - ] - }, - { - "countryName": "Turks and Caicos Islands", - "countryShortCode": "TC", - "phoneCode": "+1649", - "currencyCode": "USD", - "latitude": "21.75000000", - "longitude": "-71.58333333", - "timezones": [ + "name": "Balzan", + "shortCode": "02" + }, { - "zoneName": "America/Grand_Turk", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" - } - ], - "regions": [{ "name": "Turks and Caicos Islands" }] - }, - { - "countryName": "Tuvalu", - "countryShortCode": "TV", - "phoneCode": "+688", - "currencyCode": "AUD", - "latitude": "-8.00000000", - "longitude": "178.00000000", - "timezones": [ + "name": "Birgu", + "shortCode": "03" + }, { - "zoneName": "Pacific/Funafuti", - "gmtOffset": 43200, - "gmtOffsetName": "UTC+12:00", - "abbreviation": "TVT", - "tzName": "Tuvalu Time" - } - ], - "regions": [ - { "name": "Funafuti", "shortCode": "FUN" }, - { "name": "Nanumanga", "shortCode": "NMG" }, - { "name": "Nanumea", "shortCode": "NMA" }, - { "name": "Niutao", "shortCode": "NIT" }, - { "name": "Nui", "shortCode": "NUI" }, - { "name": "Nukufetau", "shortCode": "NKF" }, - { "name": "Nukulaelae", "shortCode": "NKL" }, - { "name": "Vaitupu", "shortCode": "VAU" } - ] - }, - { - "countryName": "Uganda", - "countryShortCode": "UG", - "phoneCode": "+256", - "currencyCode": "UGX", - "latitude": "1.00000000", - "longitude": "32.00000000", - "timezones": [ + "name": "Birkirkara", + "shortCode": "04" + }, { - "zoneName": "Africa/Kampala", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "EAT", - "tzName": "East Africa Time" - } - ], - "regions": [ - { "name": "Abim", "shortCode": "317" }, - { "name": "Adjumani", "shortCode": "301" }, - { "name": "Amolatar", "shortCode": "314" }, - { "name": "Amuria", "shortCode": "216" }, - { "name": "Amuru", "shortCode": "319" }, - { "name": "Apac", "shortCode": "302" }, - { "name": "Arua", "shortCode": "303" }, - { "name": "Budaka", "shortCode": "217" }, - { "name": "Bududa", "shortCode": "223" }, - { "name": "Bugiri", "shortCode": "201" }, - { "name": "Bukedea", "shortCode": "224" }, - { "name": "Bukwa", "shortCode": "218" }, - { "name": "Buliisa", "shortCode": "419" }, - { "name": "Bundibugyo", "shortCode": "401" }, - { "name": "Bushenyi", "shortCode": "402" }, - { "name": "Busia", "shortCode": "202" }, - { "name": "Butaleja", "shortCode": "219" }, - { "name": "Dokolo", "shortCode": "318" }, - { "name": "Gulu", "shortCode": "304" }, - { "name": "Hoima", "shortCode": "403" }, - { "name": "Ibanda", "shortCode": "416" }, - { "name": "Iganga", "shortCode": "203" }, - { "name": "Isingiro", "shortCode": "417" }, - { "name": "Jinja", "shortCode": "204" }, - { "name": "Kaabong", "shortCode": "315" }, - { "name": "Kabale", "shortCode": "404" }, - { "name": "Kabarole", "shortCode": "405" }, - { "name": "Kaberamaido", "shortCode": "213" }, - { "name": "Kalangala", "shortCode": "101" }, - { "name": "Kaliro", "shortCode": "220" }, - { "name": "Kampala", "shortCode": "102" }, - { "name": "Kamuli", "shortCode": "205" }, - { "name": "Kamwenge", "shortCode": "413" }, - { "name": "Kanungu", "shortCode": "414" }, - { "name": "Kapchorwa", "shortCode": "206" }, - { "name": "Kasese", "shortCode": "406" }, - { "name": "Katakwi", "shortCode": "207" }, - { "name": "Kayunga", "shortCode": "112" }, - { "name": "Kibaale", "shortCode": "407" }, - { "name": "Kiboga", "shortCode": "103" }, - { "name": "Kiruhura", "shortCode": "418" }, - { "name": "Kisoro", "shortCode": "408" }, - { "name": "Kitgum", "shortCode": "305" }, - { "name": "Koboko", "shortCode": "316" }, - { "name": "Kotido", "shortCode": "306" }, - { "name": "Kumi", "shortCode": "208" }, - { "name": "Kyenjojo", "shortCode": "415" }, - { "name": "Lira", "shortCode": "307" }, - { "name": "Luwero", "shortCode": "104" }, - { "name": "Lyantonde", "shortCode": "116" }, - { "name": "Manafwa", "shortCode": "221" }, - { "name": "Maracha", "shortCode": "320" }, - { "name": "Masaka", "shortCode": "105" }, - { "name": "Masindi", "shortCode": "409" }, - { "name": "Mayuge", "shortCode": "214" }, - { "name": "Mbale", "shortCode": "209" }, - { "name": "Mbarara", "shortCode": "410" }, - { "name": "Mityana", "shortCode": "114" }, - { "name": "Moroto", "shortCode": "308" }, - { "name": "Moyo", "shortCode": "309" }, - { "name": "Mpigi", "shortCode": "106" }, - { "name": "Mubende", "shortCode": "107" }, - { "name": "Mukono", "shortCode": "108" }, - { "name": "Nakapiripirit", "shortCode": "311" }, - { "name": "Nakaseke", "shortCode": "115" }, - { "name": "Nakasongola", "shortCode": "109" }, - { "name": "Namutumba", "shortCode": "222" }, - { "name": "Nebbi", "shortCode": "310" }, - { "name": "Ntungamo", "shortCode": "411" }, - { "name": "Oyam", "shortCode": "321" }, - { "name": "Pader", "shortCode": "312" }, - { "name": "Pallisa", "shortCode": "210" }, - { "name": "Rakai", "shortCode": "110" }, - { "name": "Rukungiri", "shortCode": "412" }, - { "name": "Sembabule", "shortCode": "111" }, - { "name": "Sironko", "shortCode": "215" }, - { "name": "Soroti", "shortCode": "211" }, - { "name": "Tororo", "shortCode": "212" }, - { "name": "Wakiso", "shortCode": "113" }, - { "name": "Yumbe", "shortCode": "313" } - ] - }, - { - "countryName": "Ukraine", - "countryShortCode": "UA", - "phoneCode": "+380", - "currencyCode": "UAH", - "latitude": "49.00000000", - "longitude": "32.00000000", - "timezones": [ + "name": "Birżebbuġa", + "shortCode": "05" + }, { - "zoneName": "Europe/Kiev", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Bormla", + "shortCode": "06" + }, + { + "name": "Dingli", + "shortCode": "07" + }, + { + "name": "Fgura", + "shortCode": "08" + }, + { + "name": "Floriana", + "shortCode": "09" + }, + { + "name": "Fontana", + "shortCode": "10" + }, + { + "name": "Guda", + "shortCode": "11" + }, + { + "name": "Gżira", + "shortCode": "12" + }, + { + "name": "Għajnsielem", + "shortCode": "13" + }, + { + "name": "Għarb", + "shortCode": "14" + }, + { + "name": "Għargħur", + "shortCode": "15" + }, + { + "name": "Għasri", + "shortCode": "16" + }, + { + "name": "Għaxaq", + "shortCode": "17" + }, + { + "name": "Ħamrun", + "shortCode": "18" + }, + { + "name": "Iklin", + "shortCode": "19" + }, + { + "name": "Isla", + "shortCode": "20" + }, + { + "name": "Kalkara", + "shortCode": "21" + }, + { + "name": "Kerċem", + "shortCode": "22" + }, + { + "name": "Kirkop", + "shortCode": "23" + }, + { + "name": "Lija", + "shortCode": "24" + }, + { + "name": "Luqa", + "shortCode": "25" + }, + { + "name": "Marsa", + "shortCode": "26" + }, + { + "name": "Marsaskala", + "shortCode": "27" + }, + { + "name": "Marsaxlokk", + "shortCode": "28" + }, + { + "name": "Mdina", + "shortCode": "29" + }, + { + "name": "Mellieħa", + "shortCode": "30" + }, + { + "name": "Mġarr", + "shortCode": "31" + }, + { + "name": "Mosta", + "shortCode": "32" + }, + { + "name": "Mqabba", + "shortCode": "33" + }, + { + "name": "Msida", + "shortCode": "34" + }, + { + "name": "Mtarfa", + "shortCode": "35" + }, + { + "name": "Munxar", + "shortCode": "36" + }, + { + "name": "Nadur", + "shortCode": "37" + }, + { + "name": "Naxxar", + "shortCode": "38" + }, + { + "name": "Paola", + "shortCode": "39" + }, + { + "name": "Pembroke", + "shortCode": "40" + }, + { + "name": "Pietà", + "shortCode": "41" + }, + { + "name": "Qala", + "shortCode": "42" + }, + { + "name": "Qormi", + "shortCode": "43" + }, + { + "name": "Qrendi", + "shortCode": "44" + }, + { + "name": "Rabat Għawdex", + "shortCode": "45" + }, + { + "name": "Rabat Malta", + "shortCode": "46" + }, + { + "name": "Safi", + "shortCode": "47" + }, + { + "name": "San Ġiljan", + "shortCode": "48" + }, + { + "name": "San Ġwann", + "shortCode": "49" + }, + { + "name": "San Lawrenz", + "shortCode": "50" + }, + { + "name": "San Pawl il-Baħar", + "shortCode": "51" + }, + { + "name": "Sannat", + "shortCode": "52" + }, + { + "name": "Santa Luċija", + "shortCode": "53" + }, + { + "name": "Santa Venera", + "shortCode": "54" + }, + { + "name": "Siġġiewi", + "shortCode": "55" + }, + { + "name": "Sliema", + "shortCode": "56" + }, + { + "name": "Swieqi", + "shortCode": "57" + }, + { + "name": "Tai Xbiex", + "shortCode": "58" + }, + { + "name": "Tarzien", + "shortCode": "59" + }, + { + "name": "Valletta", + "shortCode": "60" + }, + { + "name": "Xagħra", + "shortCode": "61" + }, + { + "name": "Xewkija", + "shortCode": "62" + }, + { + "name": "Xgħajra", + "shortCode": "63" + }, + { + "name": "Żabbar", + "shortCode": "64" + }, + { + "name": "Żebbuġ Għawde", + "shortCode": "65" + }, + { + "name": "Żebbuġ Malta", + "shortCode": "66" + }, + { + "name": "Żejtun", + "shortCode": "67" + }, + { + "name": "Żurrieq", + "shortCode": "68" + } + ], + "capital": "Valletta", + "population": 553214, + "area": 316, + "continent": "Europe", + "nativeName": "Malta", + "demonym": "Maltese", + "languages": [ + "English", + "Maltese" + ], + "tld": [ + ".mt" + ], + "borders": [ + "IT" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Marshall Islands", + "countryShortCode": "MH", + "phoneCode": "+692", + "currencyCode": "USD", + "latitude": "9.00000000", + "longitude": "168.00000000", + "timezones": [ + { + "zoneName": "Pacific/Kwajalein", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "MHT", + "tzName": "Marshall Islands Time" + }, + { + "zoneName": "Pacific/Majuro", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "MHT", + "tzName": "Marshall Islands Time" + } + ], + "regions": [ + { + "name": "Ailinglaplap", + "shortCode": "ALL" + }, + { + "name": "Ailuk", + "shortCode": "ALK" + }, + { + "name": "Arno", + "shortCode": "ARN" + }, + { + "name": "Aur", + "shortCode": "AUR" + }, + { + "name": "Bikini and Kili", + "shortCode": "KIL" + }, + { + "name": "Ebon", + "shortCode": "EBO" + }, + { + "name": "Jabat", + "shortCode": "JAB" + }, + { + "name": "Jaluit", + "shortCode": "JAL" + }, + { + "name": "Kwajalein", + "shortCode": "KWA" + }, + { + "name": "Lae", + "shortCode": "LAE" + }, + { + "name": "Lib", + "shortCode": "LIB" + }, + { + "name": "Likiep", + "shortCode": "LIK" + }, + { + "name": "Majuro", + "shortCode": "MAJ" + }, + { + "name": "Maloelap", + "shortCode": "MAL" + }, + { + "name": "Mejit", + "shortCode": "MEJ" + }, + { + "name": "Namdrik", + "shortCode": "NMK" + }, + { + "name": "Namu", + "shortCode": "NMU" + }, + { + "name": "Rongelap", + "shortCode": "RON" + }, + { + "name": "Ujae", + "shortCode": "UJA" + }, + { + "name": "Utrik", + "shortCode": "UTI" + }, + { + "name": "Wotho", + "shortCode": "WTH" + }, + { + "name": "Wotje", + "shortCode": "WTJ" + } + ], + "capital": "Majuro", + "population": 54366, + "area": 181.43, + "continent": "Oceania", + "officialName": "Marshall Islands", + "nativeName": "Aolepān Aorōkin M̧ajeļ", + "demonym": "Marshallese", + "languages": [ + "English", + "Marshallese" + ], + "tld": [ + ".mh" + ], + "borders": [ + "US", + "NR", + "FM", + "KI" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Martinique", + "countryShortCode": "MQ", + "phoneCode": "+596", + "currencyCode": "EUR", + "latitude": "14.66666700", + "longitude": "-61.00000000", + "timezones": [ + { + "zoneName": "America/Martinique", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Martinique" + } + ], + "capital": "Fort-de-France", + "population": 360630, + "area": 1128, + "continent": "North America", + "nativeName": "Martinique", + "tld": [ + ".mq" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Mauritania", + "countryShortCode": "MR", + "phoneCode": "+222", + "currencyCode": "MRO", + "latitude": "20.00000000", + "longitude": "-12.00000000", + "timezones": [ + { + "zoneName": "Africa/Nouakchott", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Adrar", + "shortCode": "07" + }, + { + "name": "Assaba", + "shortCode": "03" + }, + { + "name": "Brakna", + "shortCode": "05" + }, + { + "name": "Dakhlet Nouadhibou", + "shortCode": "08" + }, + { + "name": "Gorgol", + "shortCode": "04" + }, + { + "name": "Guidimaka", + "shortCode": "10" + }, + { + "name": "Hodh Ech Chargui", + "shortCode": "01" + }, + { + "name": "Hodh El Gharbi", + "shortCode": "02" + }, + { + "name": "Inchiri", + "shortCode": "12" + }, + { + "name": "Nouakchott Nord", + "shortCode": "14" + }, + { + "name": "Nouakchott Ouest", + "shortCode": "13" + }, + { + "name": "Nouakchott Sud", + "shortCode": "15" + }, + { + "name": "Tagant", + "shortCode": "09" + }, + { + "name": "Tiris Zemmour", + "shortCode": "11" + }, + { + "name": "Trarza", + "shortCode": "06" + } + ], + "capital": "Nouakchott", + "population": 4736139, + "area": 1030700, + "continent": "Africa", + "nativeName": "الجمهورية الإسلامية الموريتانية", + "demonym": "Mauritanian", + "languages": [ + "Arabic" + ], + "tld": [ + ".mr" + ], + "borders": [ + "SN", + "EH", + "DZ", + "ML" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Mauritius", + "countryShortCode": "MU", + "phoneCode": "+230", + "currencyCode": "MUR", + "latitude": "-20.28333333", + "longitude": "57.55000000", + "timezones": [ + { + "zoneName": "Indian/Mauritius", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "MUT", + "tzName": "Mauritius Time" + } + ], + "regions": [ + { + "name": "Agalega Islands", + "shortCode": "AG" + }, + { + "name": "Beau Bassin-Rose Hill", + "shortCode": "BR" + }, + { + "name": "Black River", + "shortCode": "BL" + }, + { + "name": "Cargados Carajos Shoals", + "shortCode": "CC" + }, + { + "name": "Curepipe", + "shortCode": "CU" + }, + { + "name": "Flacq", + "shortCode": "FL" + }, + { + "name": "Grand Port", + "shortCode": "GP" + }, + { + "name": "Moka", + "shortCode": "MO" + }, + { + "name": "Pamplemousses", + "shortCode": "PA" + }, + { + "name": "Plaines Wilhems", + "shortCode": "PW" + }, + { + "name": "Port Louis (City)", + "shortCode": "PU" + }, + { + "name": "Port Louis", + "shortCode": "PL" + }, + { + "name": "Riviere du Rempart", + "shortCode": "RR" + }, + { + "name": "Rodrigues Island", + "shortCode": "RO" + }, + { + "name": "Savanne", + "shortCode": "SA" + }, + { + "name": "Vacoas-Phoenix", + "shortCode": "CP" + } + ], + "capital": "Port Louis", + "population": 1264613, + "area": 2040, + "continent": "Africa", + "officialName": "Mauritius", + "nativeName": "République de Maurice", + "demonym": "Mauritian", + "languages": [ + "French", + "English" + ], + "tld": [ + ".mu" + ], + "borders": [ + "FR", + "MV", + "SC" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Mayotte", + "countryShortCode": "YT", + "phoneCode": "+262", + "currencyCode": "EUR", + "latitude": "-12.83333333", + "longitude": "45.16666666", + "timezones": [ + { + "zoneName": "Indian/Mayotte", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EAT", + "tzName": "East Africa Time" + } + ], + "regions": [ + { + "name": "Dzaoudzi", + "shortCode": "01" + }, + { + "name": "Pamandzi", + "shortCode": "02" + }, + { + "name": "Mamoudzou", + "shortCode": "03" + }, + { + "name": "Dembeni", + "shortCode": "04" + }, + { + "name": "Bandrélé", + "shortCode": "05" + }, + { + "name": "Kani-Kéli", + "shortCode": "06" + }, + { + "name": "Bouéni", + "shortCode": "07" + }, + { + "name": "Chirongui", + "shortCode": "08" + }, + { + "name": "Sada", + "shortCode": "09" + }, + { + "name": "Ouangani", + "shortCode": "10" + }, + { + "name": "Chiconi", + "shortCode": "11" + }, + { + "name": "Tsingoni", + "shortCode": "12" + }, + { + "name": "M'Tsangamouji", + "shortCode": "13" + }, + { + "name": "Acoua", + "shortCode": "14" + }, + { + "name": "Mtsamboro", + "shortCode": "15" + }, + { + "name": "Bandraboua", + "shortCode": "16" + }, + { + "name": "Koungou", + "shortCode": "17" + } + ], + "capital": "Dzaoudzi", + "population": 320901, + "area": 374, + "continent": "Africa", + "languages": [ + "French", + "Maore", + "Bushi" + ], + "tld": [ + ".yt" + ], + "borders": [ + "KM", + "MG" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Mexico", + "countryShortCode": "MX", + "phoneCode": "+52", + "currencyCode": "MXN", + "latitude": "23.00000000", + "longitude": "-102.00000000", + "timezones": [ + { + "zoneName": "America/Bahia_Banderas", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Cancun", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + }, + { + "zoneName": "America/Chihuahua", + "gmtOffset": -25200, + "gmtOffsetName": "UTC-07:00", + "abbreviation": "MST", + "tzName": "Mountain Standard Time (North America" + }, + { + "zoneName": "America/Hermosillo", + "gmtOffset": -25200, + "gmtOffsetName": "UTC-07:00", + "abbreviation": "MST", + "tzName": "Mountain Standard Time (North America" + }, + { + "zoneName": "America/Matamoros", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Mazatlan", + "gmtOffset": -25200, + "gmtOffsetName": "UTC-07:00", + "abbreviation": "MST", + "tzName": "Mountain Standard Time (North America" + }, + { + "zoneName": "America/Merida", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Mexico_City", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Monterrey", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Ojinaga", + "gmtOffset": -25200, + "gmtOffsetName": "UTC-07:00", + "abbreviation": "MST", + "tzName": "Mountain Standard Time (North America" + }, + { + "zoneName": "America/Tijuana", + "gmtOffset": -28800, + "gmtOffsetName": "UTC-08:00", + "abbreviation": "PST", + "tzName": "Pacific Standard Time (North America" + } + ], + "regions": [ + { + "name": "Aguascalientes", + "shortCode": "AGU" + }, + { + "name": "Baja California", + "shortCode": "BCN" + }, + { + "name": "Baja California Sur", + "shortCode": "BCS" + }, + { + "name": "Campeche", + "shortCode": "CAM" + }, + { + "name": "Ciudad de México", + "shortCode": "DIF" + }, + { + "name": "Chiapas", + "shortCode": "CHP" + }, + { + "name": "Chihuahua", + "shortCode": "CHH" + }, + { + "name": "Coahuila de Zaragoza", + "shortCode": "COA" + }, + { + "name": "Colima", + "shortCode": "COL" + }, + { + "name": "Durango", + "shortCode": "DUR" + }, + { + "name": "Estado de México", + "shortCode": "MEX" + }, + { + "name": "Guanajuato", + "shortCode": "GUA" + }, + { + "name": "Guerrero", + "shortCode": "GRO" + }, + { + "name": "Hidalgo", + "shortCode": "HID" + }, + { + "name": "Jalisco", + "shortCode": "JAL" + }, + { + "name": "Michoacán de Ocampo", + "shortCode": "MIC" + }, + { + "name": "Morelos", + "shortCode": "MOR" + }, + { + "name": "Nayarit", + "shortCode": "NAY" + }, + { + "name": "Nuevo León", + "shortCode": "NLE" + }, + { + "name": "Oaxaca", + "shortCode": "OAX" + }, + { + "name": "Puebla", + "shortCode": "PUE" + }, + { + "name": "Querétaro de Arteaga", + "shortCode": "QUE" + }, + { + "name": "Quintana Roo", + "shortCode": "ROO" + }, + { + "name": "San Luis Potosí", + "shortCode": "SLP" + }, + { + "name": "Sinaloa", + "shortCode": "SIN" + }, + { + "name": "Sonora", + "shortCode": "SON" + }, + { + "name": "Tabasco", + "shortCode": "TAB" + }, + { + "name": "Tamaulipas", + "shortCode": "TAM" + }, + { + "name": "Tlaxcala", + "shortCode": "TLA" + }, + { + "name": "Veracruz", + "shortCode": "VER" + }, + { + "name": "Yucatán", + "shortCode": "YUC" + }, + { + "name": "Zacatecas", + "shortCode": "ZAC" + } + ], + "capital": "Mexico City", + "population": 132274416, + "area": 1972550, + "continent": "North America", + "officialName": "United Mexican States", + "nativeName": "México", + "demonym": "Mexicans", + "languages": [ + "Spanish", + "nahuatl", + "Yucatec Maya" + ], + "tld": [ + ".mx" + ], + "borders": [ + "US", + "BZ", + "GT" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Micronesia, Federated States of", + "countryShortCode": "FM", + "phoneCode": "+691", + "currencyCode": "USD", + "latitude": "6.91666666", + "longitude": "158.25000000", + "timezones": [ + { + "zoneName": "Pacific/Chuuk", + "gmtOffset": 36000, + "gmtOffsetName": "UTC+10:00", + "abbreviation": "CHUT", + "tzName": "Chuuk Time" + }, + { + "zoneName": "Pacific/Kosrae", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "KOST", + "tzName": "Kosrae Time" + }, + { + "zoneName": "Pacific/Pohnpei", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "PONT", + "tzName": "Pohnpei Standard Time" + } + ], + "regions": [ + { + "name": "Chuuk (Truk)", + "shortCode": "TRK" + }, + { + "name": "Kosrae", + "shortCode": "KSA" + }, + { + "name": "Pohnpei", + "shortCode": "PNI" + }, + { + "name": "Yap", + "shortCode": "YAP" + } + ], + "capital": "Palikir", + "population": 75817, + "area": 702, + "continent": "Oceania", + "nativeName": "Federated States of Micronesia", + "demonym": "Micronesian", + "languages": [ + "English" + ], + "tld": [ + ".fm" + ], + "borders": [ + "US", + "PG", + "PW" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Moldova", + "countryShortCode": "MD", + "phoneCode": "+373", + "currencyCode": "MDL", + "latitude": "47.00000000", + "longitude": "29.00000000", + "timezones": [ + { + "zoneName": "Europe/Chisinau", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + } + ], + "regions": [ + { + "name": "Aenii Noi", + "shortCode": "AN" + }, + { + "name": "Basarabeasca", + "shortCode": "BS" + }, + { + "name": "Bălți", + "shortCode": "BA" + }, + { + "name": "Bender", + "shortCode": "BD" + }, + { + "name": "Briceni", + "shortCode": "BR" + }, + { + "name": "Cahul", + "shortCode": "CA" + }, + { + "name": "Cantemir", + "shortCode": "CT" + }, + { + "name": "Călărași", + "shortCode": "CL" + }, + { + "name": "Căușeni", + "shortCode": "CS" + }, + { + "name": "Chișinău", + "shortCode": "CU" + }, + { + "name": "Cimișlia", + "shortCode": "CM" + }, + { + "name": "Criuleni", + "shortCode": "CR" + }, + { + "name": "Dondușeni", + "shortCode": "DO" + }, + { + "name": "Drochia", + "shortCode": "DR" + }, + { + "name": "Dubăsari", + "shortCode": "DU" + }, + { + "name": "Edineț", + "shortCode": "ED" + }, + { + "name": "Fălești", + "shortCode": "FA" + }, + { + "name": "Florești", + "shortCode": "FL" + }, + { + "name": "Găgăuzia", + "shortCode": "GA" + }, + { + "name": "Glodeni", + "shortCode": "GL" + }, + { + "name": "Hîncești", + "shortCode": "HI" + }, + { + "name": "Ialoveni", + "shortCode": "IA" + }, + { + "name": "Leova", + "shortCode": "LE" + }, + { + "name": "Nisporeni", + "shortCode": "NI" + }, + { + "name": "Ocnița", + "shortCode": "OC" + }, + { + "name": "Orhei", + "shortCode": "OR" + }, + { + "name": "Rezina", + "shortCode": "RE" + }, + { + "name": "Rîșcani", + "shortCode": "RI" + }, + { + "name": "Sîngerei", + "shortCode": "SI" + }, + { + "name": "Soroca", + "shortCode": "SO" + }, + { + "name": "Stînga Nistrului", + "shortCode": "SN" + }, + { + "name": "Strășeni", + "shortCode": "ST" + }, + { + "name": "Șoldănești", + "shortCode": "SD" + }, + { + "name": "Ștefan Vodă", + "shortCode": "SV" + }, + { + "name": "Taraclia", + "shortCode": "TA" + }, + { + "name": "Telenești", + "shortCode": "TE" + }, + { + "name": "Ungheni", + "shortCode": "UN" + } + ], + "capital": "Chișinău", + "population": 2409207, + "area": 33843.5, + "continent": "Europe", + "nativeName": "Moldova", + "demonym": "Moldovan", + "languages": [ + "Romanian" + ], + "tld": [ + ".md" + ], + "borders": [ + "UA", + "RO" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Monaco", + "countryShortCode": "MC", + "phoneCode": "+377", + "currencyCode": "EUR", + "latitude": "43.73333333", + "longitude": "7.40000000", + "timezones": [ + { + "zoneName": "Europe/Monaco", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Colle", + "shortCode": "CL" + }, + { + "name": "Condamine", + "shortCode": "CO" + }, + { + "name": "Fontvieille", + "shortCode": "FO" + }, + { + "name": "Gare", + "shortCode": "GA" + }, + { + "name": "Jardin Exotique", + "shortCode": "JE" + }, + { + "name": "Larvotto", + "shortCode": "LA" + }, + { + "name": "Malbousquet", + "shortCode": "MA" + }, + { + "name": "Monaco-Ville", + "shortCode": "MO" + }, + { + "name": "Moneghetti", + "shortCode": "MG" + }, + { + "name": "Monte-Carlo", + "shortCode": "MC" + }, + { + "name": "Moulins", + "shortCode": "MU" + }, + { + "name": "Port-Hercule", + "shortCode": "PH" + }, + { + "name": "Saint-Roman", + "shortCode": "SR" + }, + { + "name": "Sainte-Dévote", + "shortCode": "SD" + }, + { + "name": "Source", + "shortCode": "SO" + }, + { + "name": "Spélugues", + "shortCode": "SP" + }, + { + "name": "Vallon de la Rousse", + "shortCode": "VR" + } + ], + "capital": "Monaco", + "population": 38857, + "area": 2.08, + "continent": "Europe", + "nativeName": "Monaco", + "demonym": "Monegasque", + "languages": [ + "French" + ], + "tld": [ + ".mc" + ], + "borders": [ + "FR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Mongolia", + "countryShortCode": "MN", + "phoneCode": "+976", + "currencyCode": "MNT", + "latitude": "46.00000000", + "longitude": "105.00000000", + "timezones": [ + { + "zoneName": "Asia/Choibalsan", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "CHOT", + "tzName": "Choibalsan Standard Time" + }, + { + "zoneName": "Asia/Hovd", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "HOVT", + "tzName": "Hovd Time" + }, + { + "zoneName": "Asia/Ulaanbaatar", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "ULAT", + "tzName": "Ulaanbaatar Standard Time" + } + ], + "regions": [ + { + "name": "Arhangay", + "shortCode": "073" + }, + { + "name": "Bayan-Olgiy", + "shortCode": "071" + }, + { + "name": "Bayanhongor", + "shortCode": "069" + }, + { + "name": "Bulgan", + "shortCode": "067" + }, + { + "name": "Darhan", + "shortCode": "037" + }, + { + "name": "Dornod", + "shortCode": "061" + }, + { + "name": "Dornogovi", + "shortCode": "063" + }, + { + "name": "Dundgovi", + "shortCode": "059" + }, + { + "name": "Dzavhan", + "shortCode": "065" + }, + { + "name": "Govi-Altay", + "shortCode": "065" + }, + { + "name": "Govi-Sumber", + "shortCode": "064" + }, + { + "name": "Hovd", + "shortCode": "043" + }, + { + "name": "Hovsgol", + "shortCode": "041" + }, + { + "name": "Omnogovi", + "shortCode": "053" + }, + { + "name": "Ovorhangay", + "shortCode": "055" + }, + { + "name": "Selenge", + "shortCode": "049" + }, + { + "name": "Suhbaatar", + "shortCode": "051" + }, + { + "name": "Tov", + "shortCode": "047" + }, + { + "name": "Ulaanbaatar", + "shortCode": "1" + }, + { + "name": "Uvs", + "shortCode": "046" + } + ], + "capital": "Ulaanbaatar", + "population": 3409939, + "area": 1564116, + "continent": "Asia", + "officialName": "Mongolia", + "nativeName": "Монгол Улс", + "demonym": "Mongol", + "languages": [ + "Mongolian" + ], + "tld": [ + ".mn" + ], + "borders": [ + "CN", + "RU" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Montenegro", + "countryShortCode": "ME", + "phoneCode": "+382", + "currencyCode": "EUR", + "latitude": "42.50000000", + "longitude": "19.30000000", + "timezones": [ + { + "zoneName": "Europe/Podgorica", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Andrijevica", + "shortCode": "01" + }, + { + "name": "Bar", + "shortCode": "02" + }, + { + "name": "Berane", + "shortCode": "03" + }, + { + "name": "Bijelo Polje", + "shortCode": "04" + }, + { + "name": "Budva", + "shortCode": "05" + }, + { + "name": "Cetinje", + "shortCode": "06" + }, + { + "name": "Danilovgrad", + "shortCode": "07" + }, + { + "name": "Gusinje", + "shortCode": "22" + }, + { + "name": "Herceg Novi", + "shortCode": "08" + }, + { + "name": "Kolašin", + "shortCode": "09" + }, + { + "name": "Kotor", + "shortCode": "10" + }, + { + "name": "Mojkovac", + "shortCode": "11" + }, + { + "name": "Nikšić", + "shortCode": "12" + }, + { + "name": "Petnica", + "shortCode": "23" + }, + { + "name": "Plav", + "shortCode": "13" + }, + { + "name": "Plužine", + "shortCode": "14" + }, + { + "name": "Pljevlja", + "shortCode": "15" + }, + { + "name": "Podgorica", + "shortCode": "16" + }, + { + "name": "Rožaje", + "shortCode": "17" + }, + { + "name": "Šavnik", + "shortCode": "18" + }, + { + "name": "Tivat", + "shortCode": "19" + }, + { + "name": "Ulcinj", + "shortCode": "20" + }, + { + "name": "Žabljak", + "shortCode": "21" + } + ], + "capital": "Podgorica", + "population": 617213, + "area": 13883, + "continent": "Europe", + "nativeName": "Crna Gora", + "demonym": "Montenegrin", + "languages": [ + "Montenegrin" + ], + "tld": [ + ".me" + ], + "borders": [ + "AL", + "HR", + "BA", + "RS", + "XK" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Montserrat", + "countryShortCode": "MS", + "phoneCode": "+1664", + "currencyCode": "XCD", + "latitude": "16.75000000", + "longitude": "-62.20000000", + "timezones": [ + { + "zoneName": "America/Montserrat", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Saint Anthony" + }, + { + "name": "Saint Georges" + }, + { + "name": "Saint Peter's" + } + ], + "capital": "Brades", + "population": 5440, + "area": 102, + "continent": "North America", + "officialName": "Montserrat", + "nativeName": "Montserrat", + "demonym": "Montserratian", + "languages": [ + "English" + ], + "tld": [ + ".ms" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Morocco", + "countryShortCode": "MA", + "phoneCode": "+212", + "currencyCode": "MAD", + "latitude": "32.00000000", + "longitude": "-5.00000000", + "timezones": [ + { + "zoneName": "Africa/Casablanca", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "WEST", + "tzName": "Western European Summer Time" + } + ], + "regions": [ + { + "name": "Chaouia-Ouardigha", + "shortCode": "09" + }, + { + "name": "Doukhala-Abda", + "shortCode": "10" + }, + { + "name": "Fès-Boulemane", + "shortCode": "05" + }, + { + "name": "Gharb-Chrarda-Beni Hssen", + "shortCode": "02" + }, + { + "name": "Grand Casablanca", + "shortCode": "08" + }, + { + "name": "Guelmim-Es Semara", + "shortCode": "14" + }, + { + "name": "Laâyoune-Boujdour-Sakia el Hamra", + "shortCode": "15" + }, + { + "name": "Marrakech-Tensift-Al Haouz", + "shortCode": "11" + }, + { + "name": "Meknès-Tafilalet", + "shortCode": "06" + }, + { + "name": "Oriental", + "shortCode": "04" + }, + { + "name": "Oued ed Dahab-Lagouira", + "shortCode": "16" + }, + { + "name": "Souss-Massa-Drâa", + "shortCode": "13" + }, + { + "name": "Tadla-Azilal", + "shortCode": "12" + }, + { + "name": "Tanger-Tétouan", + "shortCode": "01" + }, + { + "name": "Taza-Al Hoceima-Taounate", + "shortCode": "03" + } + ], + "capital": "Rabat", + "population": 36828330, + "area": 446550, + "continent": "Africa", + "officialName": "Kingdom of Morocco", + "nativeName": "المملكة المغربية", + "demonym": "Moroccan", + "languages": [ + "Arabic", + "Standard Moroccan Tamazight" + ], + "tld": [ + ".ma" + ], + "borders": [ + "ES", + "DZ", + "EH" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Mozambique", + "countryShortCode": "MZ", + "phoneCode": "+258", + "currencyCode": "MZN", + "latitude": "-18.25000000", + "longitude": "35.00000000", + "timezones": [ + { + "zoneName": "Africa/Maputo", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "CAT", + "tzName": "Central Africa Time" + } + ], + "regions": [ + { + "name": "Cabo Delgado", + "shortCode": "P" + }, + { + "name": "Gaza", + "shortCode": "G" + }, + { + "name": "Inhambane", + "shortCode": "I" + }, + { + "name": "Manica", + "shortCode": "B" + }, + { + "name": "Maputo", + "shortCode": "L" + }, + { + "name": "Maputo (City)", + "shortCode": "MPM" + }, + { + "name": "Nampula", + "shortCode": "N" + }, + { + "name": "Niassa", + "shortCode": "A" + }, + { + "name": "Sofala", + "shortCode": "S" + }, + { + "name": "Tete", + "shortCode": "T" + }, + { + "name": "Zambezia", + "shortCode": "Q" + } + ], + "capital": "Maputo", + "population": 29668834, + "area": 801590, + "continent": "Africa", + "nativeName": "República de Moçambique", + "demonym": "Mozambican", + "languages": [ + "Portuguese" + ], + "tld": [ + ".mz" + ], + "borders": [ + "ZA", + "TZ", + "ZM", + "ZW", + "KM", + "MW", + "SZ" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Myanmar", + "countryShortCode": "MM", + "phoneCode": "+95", + "currencyCode": "MMK", + "latitude": "22.00000000", + "longitude": "98.00000000", + "timezones": [ + { + "zoneName": "Asia/Yangon", + "gmtOffset": 23400, + "gmtOffsetName": "UTC+06:30", + "abbreviation": "MMT", + "tzName": "Myanmar Standard Time" + } + ], + "regions": [ + { + "name": "Ayeyarwady", + "shortCode": "07" + }, + { + "name": "Bago", + "shortCode": "02" + }, + { + "name": "Chin", + "shortCode": "14" + }, + { + "name": "Kachin", + "shortCode": "11" + }, + { + "name": "Kayah", + "shortCode": "12" + }, + { + "name": "Kayin", + "shortCode": "13" + }, + { + "name": "Magway", + "shortCode": "03" + }, + { + "name": "Mandalay", + "shortCode": "04" + }, + { + "name": "Mon", + "shortCode": "15" + }, + { + "name": "Nay Pyi Taw", + "shortCode": "18" + }, + { + "name": "Rakhine", + "shortCode": "16" + }, + { + "name": "Sagaing", + "shortCode": "01" + }, + { + "name": "Shan", + "shortCode": "17" + }, + { + "name": "Tanintharyi", + "shortCode": "05" + }, + { + "name": "Yangon", + "shortCode": "06" + } + ], + "capital": "Naypyidaw", + "population": 53370609, + "area": 676577.2, + "continent": "Asia", + "officialName": "Union of Myanmar", + "nativeName": "မြန်မာ", + "demonym": "Myanma", + "languages": [ + "Burmese" + ], + "tld": [ + ".mm" + ], + "borders": [ + "CN", + "IN", + "LA", + "TH", + "BD" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Namibia", + "countryShortCode": "NA", + "phoneCode": "+264", + "currencyCode": "NAD", + "latitude": "-22.00000000", + "longitude": "17.00000000", + "timezones": [ + { + "zoneName": "Africa/Windhoek", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "WAST", + "tzName": "West Africa Summer Time" + } + ], + "regions": [ + { + "name": "Erongo", + "shortCode": "ER" + }, + { + "name": "Hardap", + "shortCode": "HA" + }, + { + "name": "Kavango East", + "shortCode": "KE" + }, + { + "name": "Kavango West", + "shortCode": "KW" + }, + { + "name": "Karas", + "shortCode": "KA" + }, + { + "name": "Khomas", + "shortCode": "KH" + }, + { + "name": "Kunene", + "shortCode": "KU" + }, + { + "name": "Ohangwena", + "shortCode": "OW" + }, + { + "name": "Omaheke", + "shortCode": "OH" + }, + { + "name": "Omusati", + "shortCode": "OS" + }, + { + "name": "Oshana", + "shortCode": "ON" + }, + { + "name": "Oshikoto", + "shortCode": "OT" + }, + { + "name": "Otjozondjupa", + "shortCode": "OD" + }, + { + "name": "Zambezi", + "shortCode": "CA" + } + ], + "capital": "Windhoek", + "population": 2533794, + "area": 825615, + "continent": "Africa", + "officialName": "Namibia", + "nativeName": "Republiek van Namibië", + "demonym": "Namibian", + "languages": [ + "English" + ], + "tld": [ + ".na" + ], + "borders": [ + "ZA", + "AO", + "ZM", + "BW" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Nauru", + "countryShortCode": "NR", + "phoneCode": "+674", + "currencyCode": "AUD", + "latitude": "-0.53333333", + "longitude": "166.91666666", + "timezones": [ + { + "zoneName": "Pacific/Nauru", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "NRT", + "tzName": "Nauru Time" + } + ], + "regions": [ + { + "name": "Aiwo", + "shortCode": "01" + }, + { + "name": "Anabar", + "shortCode": "02" + }, + { + "name": "Anetan", + "shortCode": "03" + }, + { + "name": "Anibare", + "shortCode": "04" + }, + { + "name": "Baiti", + "shortCode": "05" + }, + { + "name": "Boe", + "shortCode": "06" + }, + { + "name": "Buada", + "shortCode": "07" + }, + { + "name": "Denigomodu", + "shortCode": "08" + }, + { + "name": "Ewa", + "shortCode": "09" + }, + { + "name": "Ijuw", + "shortCode": "10" + }, + { + "name": "Meneng", + "shortCode": "11" + }, + { + "name": "Nibok", + "shortCode": "12" + }, + { + "name": "Uaboe", + "shortCode": "13" + }, + { + "name": "Yaren", + "shortCode": "14" + } + ], + "capital": "Yaren District", + "population": 13650, + "area": 21, + "continent": "Oceania", + "officialName": "Republic of Nauru", + "nativeName": "Naoero", + "demonym": "Nauruan", + "languages": [ + "English", + "Nauruan" + ], + "tld": [ + ".nr" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Nepal", + "countryShortCode": "NP", + "phoneCode": "+977", + "currencyCode": "NPR", + "latitude": "28.00000000", + "longitude": "84.00000000", + "timezones": [ + { + "zoneName": "Asia/Kathmandu", + "gmtOffset": 20700, + "gmtOffsetName": "UTC+05:45", + "abbreviation": "NPT", + "tzName": "Nepal Time" + } + ], + "regions": [ + { + "name": "Bagmati", + "shortCode": "BA" + }, + { + "name": "Bheri", + "shortCode": "BH" + }, + { + "name": "Dhawalagiri", + "shortCode": "DH" + }, + { + "name": "Gandaki", + "shortCode": "GA" + }, + { + "name": "Janakpur", + "shortCode": "JA" + }, + { + "name": "Karnali", + "shortCode": "KA" + }, + { + "name": "Kosi", + "shortCode": "KO" + }, + { + "name": "Lumbini", + "shortCode": "LU" + }, + { + "name": "Mahakali", + "shortCode": "MA" + }, + { + "name": "Mechi", + "shortCode": "ME" + }, + { + "name": "Narayani", + "shortCode": "NA" + }, + { + "name": "Rapti", + "shortCode": "RA" + }, + { + "name": "Sagarmatha", + "shortCode": "SA" + }, + { + "name": "Seti", + "shortCode": "SE" + } + ], + "capital": "Kathmandu", + "population": 29164578, + "area": 147181.254346, + "continent": "Asia", + "nativeName": "नेपाल", + "demonym": "Nepalese", + "languages": [ + "Nepali" + ], + "tld": [ + ".np" + ], + "borders": [ + "CN", + "IN" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Netherlands", + "countryShortCode": "NL", + "phoneCode": "+31", + "currencyCode": "EUR", + "latitude": "52.50000000", + "longitude": "5.75000000", + "timezones": [ + { + "zoneName": "Europe/Amsterdam", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Drenthe", + "shortCode": "DR" + }, + { + "name": "Flevoland", + "shortCode": "FL" + }, + { + "name": "Friesland", + "shortCode": "FR" + }, + { + "name": "Gelderland", + "shortCode": "GE" + }, + { + "name": "Groningen", + "shortCode": "GR" + }, + { + "name": "Limburg", + "shortCode": "LI" + }, + { + "name": "Noord-Brabant", + "shortCode": "NB" + }, + { + "name": "Noord-Holland", + "shortCode": "NH" + }, + { + "name": "Overijssel", + "shortCode": "OV" + }, + { + "name": "Utrecht", + "shortCode": "UT" + }, + { + "name": "Zeeland", + "shortCode": "ZE" + }, + { + "name": "Zuid-Holland", + "shortCode": "ZH" + } + ], + "capital": "Amsterdam", + "population": 17100715, + "area": 42201, + "continent": "Europe", + "nativeName": "Koninkrijk der Nederlanden", + "demonym": "Dutch", + "languages": [ + "Dutch" + ], + "tld": [ + ".nl" + ], + "borders": [ + "BE", + "FR", + "DE", + "VE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "New Caledonia", + "countryShortCode": "NC", + "phoneCode": "+687", + "currencyCode": "XPF", + "latitude": "-21.50000000", + "longitude": "165.50000000", + "timezones": [ + { + "zoneName": "Pacific/Noumea", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "NCT", + "tzName": "New Caledonia Time" + } + ], + "regions": [ + { + "name": "Iles Loyaute" + }, + { + "name": "Nord" + }, + { + "name": "Sud" + } + ], + "capital": "Nouméa", + "population": 278500, + "area": 18576, + "continent": "Insular Oceania", + "nativeName": "Calédonie", + "demonym": "New Caledonians", + "languages": [ + "French" + ], + "tld": [ + ".nc" + ], + "borders": [ + "AU" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "New Zealand", + "countryShortCode": "NZ", + "phoneCode": "+64", + "currencyCode": "NZD", + "latitude": "-41.00000000", + "longitude": "174.00000000", + "timezones": [ + { + "zoneName": "Pacific/Auckland", + "gmtOffset": 46800, + "gmtOffsetName": "UTC+13:00", + "abbreviation": "NZDT", + "tzName": "New Zealand Daylight Time" + }, + { + "zoneName": "Pacific/Chatham", + "gmtOffset": 49500, + "gmtOffsetName": "UTC+13:45", + "abbreviation": "CHAST", + "tzName": "Chatham Standard Time" + } + ], + "regions": [ + { + "name": "Auckland", + "shortCode": "AUK" + }, + { + "name": "Bay of Plenty", + "shortCode": "BOP" + }, + { + "name": "Canterbury", + "shortCode": "CAN" + }, + { + "name": "Gisborne", + "shortCode": "GIS" + }, + { + "name": "Hawke's Bay", + "shortCode": "HKB" + }, + { + "name": "Marlborough", + "shortCode": "MBH" + }, + { + "name": "Manawatu-Wanganui", + "shortCode": "MWT" + }, + { + "name": "Northland", + "shortCode": "NTL" + }, + { + "name": "Nelson", + "shortCode": "NSN" + }, + { + "name": "Otago", + "shortCode": "OTA" + }, + { + "name": "Southland", + "shortCode": "STL" + }, + { + "name": "Taranaki", + "shortCode": "TKI" + }, + { + "name": "Tasman", + "shortCode": "TAS" + }, + { + "name": "Waikato", + "shortCode": "WKO" + }, + { + "name": "Wellington", + "shortCode": "WGN" + }, + { + "name": "West Coast", + "shortCode": "WTC" + }, + { + "name": "Chatham Islands Territory", + "shortCode": "CIT" + } + ], + "capital": "Wellington", + "population": 5307800, + "area": 268021, + "continent": "Oceania", + "officialName": "New Zealand", + "nativeName": "Aotearoa", + "demonym": "New Zealander", + "languages": [ + "English", + "New Zealand Sign Language", + "Māori" + ], + "tld": [ + ".nz" + ], + "borders": [ + "AU" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Nicaragua", + "countryShortCode": "NI", + "phoneCode": "+505", + "currencyCode": "NIO", + "latitude": "13.00000000", + "longitude": "-85.00000000", + "timezones": [ + { + "zoneName": "America/Managua", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + } + ], + "regions": [ + { + "name": "Boaco", + "shortCode": "BO" + }, + { + "name": "Carazo", + "shortCode": "CA" + }, + { + "name": "Chinandega", + "shortCode": "CI" + }, + { + "name": "Chontales", + "shortCode": "CO" + }, + { + "name": "Estelí", + "shortCode": "ES" + }, + { + "name": "Granada", + "shortCode": "GR" + }, + { + "name": "Jinotega", + "shortCode": "JI" + }, + { + "name": "León", + "shortCode": "LE" + }, + { + "name": "Madriz", + "shortCode": "MD" + }, + { + "name": "Managua", + "shortCode": "MN" + }, + { + "name": "Masaya", + "shortCode": "MS" + }, + { + "name": "Matagalpa", + "shortCode": "MT" + }, + { + "name": "Nueva Segovia", + "shortCode": "NS" + }, + { + "name": "Río San Juan", + "shortCode": "SJ" + }, + { + "name": "Rivas", + "shortCode": "RI" + }, + { + "name": "Atlántico Norte", + "shortCode": "AN" + }, + { + "name": "Atlántico Sur", + "shortCode": "AS" + } + ], + "capital": "Managua", + "population": 7005764, + "area": 120340, + "continent": "North America", + "nativeName": "República de Nicaragua", + "demonym": "Nicaraguan", + "languages": [ + "Spanish" + ], + "tld": [ + ".ni" + ], + "borders": [ + "CO", + "HN", + "CR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Niger", + "countryShortCode": "NE", + "phoneCode": "+227", + "currencyCode": "XOF", + "latitude": "16.00000000", + "longitude": "8.00000000", + "timezones": [ + { + "zoneName": "Africa/Niamey", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "WAT", + "tzName": "West Africa Time" + } + ], + "regions": [ + { + "name": "Agadez", + "shortCode": "1" + }, + { + "name": "Diffa", + "shortCode": "2" + }, + { + "name": "Dosso", + "shortCode": "3" + }, + { + "name": "Maradi", + "shortCode": "4" + }, + { + "name": "Niamey", + "shortCode": "8" + }, + { + "name": "Tahoua", + "shortCode": "5" + }, + { + "name": "Tillabéri", + "shortCode": "6" + }, + { + "name": "Zinder", + "shortCode": "7" + } + ], + "capital": "Niamey", + "population": 21477348, + "area": 1267000, + "continent": "Africa", + "nativeName": "Nijar", + "demonym": "Nigerien", + "languages": [ + "Hausa" + ], + "tld": [ + ".ne" + ], + "borders": [ + "DZ", + "TD", + "ML", + "BJ", + "BF", + "LY", + "NG" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Nigeria", + "countryShortCode": "NG", + "phoneCode": "+234", + "currencyCode": "NGN", + "latitude": "10.00000000", + "longitude": "8.00000000", + "timezones": [ + { + "zoneName": "Africa/Lagos", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "WAT", + "tzName": "West Africa Time" + } + ], + "regions": [ + { + "name": "Abia", + "shortCode": "AB" + }, + { + "name": "Abuja Federal Capital Territory", + "shortCode": "FC" + }, + { + "name": "Adamawa", + "shortCode": "AD" + }, + { + "name": "Akwa Ibom", + "shortCode": "AK" + }, + { + "name": "Anambra", + "shortCode": "AN" + }, + { + "name": "Bauchi", + "shortCode": "BA" + }, + { + "name": "Bayelsa", + "shortCode": "BY" + }, + { + "name": "Benue", + "shortCode": "BE" + }, + { + "name": "Borno", + "shortCode": "BO" + }, + { + "name": "Cross River", + "shortCode": "CR" + }, + { + "name": "Delta", + "shortCode": "DE" + }, + { + "name": "Ebonyi", + "shortCode": "EB" + }, + { + "name": "Edo", + "shortCode": "ED" + }, + { + "name": "Ekiti", + "shortCode": "EK" + }, + { + "name": "Enugu", + "shortCode": "EN" + }, + { + "name": "Gombe", + "shortCode": "GO" + }, + { + "name": "Imo", + "shortCode": "IM" + }, + { + "name": "Jigawa", + "shortCode": "JI" + }, + { + "name": "Kaduna", + "shortCode": "KD" + }, + { + "name": "Kano", + "shortCode": "KN" + }, + { + "name": "Katsina", + "shortCode": "KT" + }, + { + "name": "Kebbi", + "shortCode": "KE" + }, + { + "name": "Kogi", + "shortCode": "KO" + }, + { + "name": "Kwara", + "shortCode": "KW" + }, + { + "name": "Lagos", + "shortCode": "LA" + }, + { + "name": "Nassarawa", + "shortCode": "NA" + }, + { + "name": "Niger", + "shortCode": "NI" + }, + { + "name": "Ogun", + "shortCode": "OG" + }, + { + "name": "Ondo", + "shortCode": "ON" + }, + { + "name": "Osun", + "shortCode": "OS" + }, + { + "name": "Oyo", + "shortCode": "OY" + }, + { + "name": "Plateau", + "shortCode": "PL" + }, + { + "name": "Rivers", + "shortCode": "RI" + }, + { + "name": "Sokoto", + "shortCode": "SO" + }, + { + "name": "Taraba", + "shortCode": "TA" + }, + { + "name": "Yobe", + "shortCode": "YO" + }, + { + "name": "Zamfara", + "shortCode": "ZA" + } + ], + "population": 211400708, + "area": 923768, + "continent": "Africa", + "officialName": "Federal Republic of Nigeria", + "nativeName": "Nijeriya", + "demonym": "Nigerians", + "languages": [ + "English" + ], + "tld": [ + ".ng" + ], + "borders": [ + "TD", + "BJ", + "CM", + "NE", + "ST" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Niue", + "countryShortCode": "NU", + "phoneCode": "+683", + "currencyCode": "NZD", + "latitude": "-19.03333333", + "longitude": "-169.86666666", + "timezones": [ + { + "zoneName": "Pacific/Niue", + "gmtOffset": -39600, + "gmtOffsetName": "UTC-11:00", + "abbreviation": "NUT", + "tzName": "Niue Time" + } + ], + "regions": [ + { + "name": "Niue" + } + ], + "capital": "Alofi", + "population": 1821, + "area": 260, + "continent": "Insular Oceania", + "officialName": "Niue", + "nativeName": "Niue", + "demonym": "Niuean", + "languages": [ + "English", + "Niuean" + ], + "tld": [ + ".nu" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Norfolk Island", + "countryShortCode": "NF", + "phoneCode": "+672", + "currencyCode": "AUD", + "latitude": "-29.03333333", + "longitude": "167.95000000", + "timezones": [ + { + "zoneName": "Pacific/Norfolk", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "NFT", + "tzName": "Norfolk Time" + } + ], + "regions": [ + { + "name": "Norfolk Island" + } + ], + "capital": "Kingston", + "population": 1739, + "area": 34.6, + "continent": "Insular Oceania", + "officialName": "Territory of Norfolk Island", + "nativeName": "Norfolk Island", + "demonym": "Norfolk Islanders", + "languages": [ + "English", + "Norfuk" + ], + "tld": [ + ".nf" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Northern Mariana Islands", + "countryShortCode": "MP", + "phoneCode": "+1670", + "currencyCode": "USD", + "latitude": "15.20000000", + "longitude": "145.75000000", + "timezones": [ + { + "zoneName": "Pacific/Saipan", + "gmtOffset": 36000, + "gmtOffsetName": "UTC+10:00", + "abbreviation": "ChST", + "tzName": "Chamorro Standard Time" + } + ], + "regions": [ + { + "name": "Northern Islands" + }, + { + "name": "Rota" + }, + { + "name": "Saipan" + }, + { + "name": "Tinian" + } + ], + "capital": "Saipan", + "population": 51475, + "area": 464, + "continent": "Insular Oceania", + "officialName": "Commonwealth of the Northern Mariana Islands", + "nativeName": "Commonwealth Téél Falúw kka Efáng llól Marianas", + "demonym": "Northern Marianan", + "languages": [ + "English", + "Chamorro", + "Carolinian" + ], + "tld": [ + ".mp" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Norway", + "countryShortCode": "NO", + "phoneCode": "+47", + "currencyCode": "NOK", + "latitude": "62.00000000", + "longitude": "10.00000000", + "timezones": [ + { + "zoneName": "Europe/Oslo", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Akershus", + "shortCode": "02" + }, + { + "name": "Aust-Agder", + "shortCode": "09" + }, + { + "name": "Buskerud", + "shortCode": "06" + }, + { + "name": "Finnmark", + "shortCode": "20" + }, + { + "name": "Hedmark", + "shortCode": "04" + }, + { + "name": "Hordaland", + "shortCode": "12" + }, + { + "name": "Møre og Romsdal", + "shortCode": "15" + }, + { + "name": "Nordland", + "shortCode": "18" + }, + { + "name": "Nord-Trøndelag", + "shortCode": "17" + }, + { + "name": "Oppland", + "shortCode": "05" + }, + { + "name": "Oslo", + "shortCode": "03" + }, + { + "name": "Rogaland", + "shortCode": "11" + }, + { + "name": "Sogn og Fjordane", + "shortCode": "14" + }, + { + "name": "Sør-Trøndelag", + "shortCode": "16" + }, + { + "name": "Telemark", + "shortCode": "08" + }, + { + "name": "Troms", + "shortCode": "19" + }, + { + "name": "Vest-Agder", + "shortCode": "10" + }, + { + "name": "Vestfold", + "shortCode": "07" + }, + { + "name": "Østfold", + "shortCode": "01" + }, + { + "name": "Jan Mayen", + "shortCode": "22" + }, + { + "name": "Svalbard", + "shortCode": "21" + } + ], + "capital": "Oslo", + "population": 5627400, + "area": 385207, + "continent": "Europe", + "nativeName": "Kongeriket Norge", + "demonym": "Norwegian", + "languages": [ + "Nynorsk", + "Norwegian", + "Bokmål", + "Sámi" + ], + "tld": [ + ".no" + ], + "borders": [ + "FI", + "SE", + "RU" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Oman", + "countryShortCode": "OM", + "phoneCode": "+968", + "currencyCode": "OMR", + "latitude": "21.00000000", + "longitude": "57.00000000", + "timezones": [ + { + "zoneName": "Asia/Muscat", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "GST", + "tzName": "Gulf Standard Time" + } + ], + "regions": [ + { + "name": "Ad Dakhiliyah", + "shortCode": "DA" + }, + { + "name": "Al Buraymi", + "shortCode": "BU" + }, + { + "name": "Al Wusta", + "shortCode": "WU" + }, + { + "name": "Az Zahirah", + "shortCode": "ZA" + }, + { + "name": "Janub al Batinah", + "shortCode": "BS" + }, + { + "name": "Janub ash Sharqiyah", + "shortCode": "SS" + }, + { + "name": "Masqat", + "shortCode": "MA" + }, + { + "name": "Musandam", + "shortCode": "MU" + }, + { + "name": "Shamal al Batinah", + "shortCode": "BJ" + }, + { + "name": "Shamal ash Sharqiyah", + "shortCode": "SJ" + }, + { + "name": "Zufar", + "shortCode": "ZU" + } + ], + "capital": "Muscat", + "population": 4829480, + "area": 309500, + "continent": "Asia", + "nativeName": "سلطنة عُمان", + "demonym": "Omani", + "languages": [ + "Arabic" + ], + "tld": [ + ".om" + ], + "borders": [ + "IR", + "YE", + "SA", + "AE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Pakistan", + "countryShortCode": "PK", + "phoneCode": "+92", + "currencyCode": "PKR", + "latitude": "30.00000000", + "longitude": "70.00000000", + "timezones": [ + { + "zoneName": "Asia/Karachi", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "PKT", + "tzName": "Pakistan Standard Time" + } + ], + "regions": [ + { + "name": "Āzād Kashmīr", + "shortCode": "JK" + }, + { + "name": "Balōchistān", + "shortCode": "BA" + }, + { + "name": "Gilgit-Baltistān", + "shortCode": "GB" + }, + { + "name": "Islāmābād", + "shortCode": "IS" + }, + { + "name": "Khaībar Pakhtūnkhwās", + "shortCode": "KP" + }, + { + "name": "Punjāb", + "shortCode": "PB" + }, + { + "name": "Sindh", + "shortCode": "SD" + }, + { + "name": "Federally Administered Tribal Areas", + "shortCode": "TA" + } + ], + "capital": "Islamabad", + "population": 223773700, + "area": 881913, + "continent": "Asia", + "nativeName": "پاکستان", + "demonym": "Pakistani", + "languages": [ + "English", + "Urdu" + ], + "tld": [ + ".pk" + ], + "borders": [ + "IN", + "IR", + "AF", + "CN" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Palau", + "countryShortCode": "PW", + "phoneCode": "+680", + "currencyCode": "USD", + "latitude": "7.50000000", + "longitude": "134.50000000", + "timezones": [ + { + "zoneName": "Pacific/Palau", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "PWT", + "tzName": "Palau Time" + } + ], + "regions": [ + { + "name": "Aimeliik", + "shortCode": "002" + }, + { + "name": "Airai", + "shortCode": "004" + }, + { + "name": "Angaur", + "shortCode": "010" + }, + { + "name": "Hatobohei", + "shortCode": "050" + }, + { + "name": "Kayangel", + "shortCode": "100" + }, + { + "name": "Koror", + "shortCode": "150" + }, + { + "name": "Melekeok", + "shortCode": "212" + }, + { + "name": "Ngaraard", + "shortCode": "214" + }, + { + "name": "Ngarchelong", + "shortCode": "218" + }, + { + "name": "Ngardmau", + "shortCode": "222" + }, + { + "name": "Ngatpang", + "shortCode": "224" + }, + { + "name": "Ngchesar", + "shortCode": "226" + }, + { + "name": "Ngeremlengui", + "shortCode": "227" + }, + { + "name": "Ngiwal", + "shortCode": "228" + }, + { + "name": "Peleliu", + "shortCode": "350" + }, + { + "name": "Sonsoral", + "shortCode": "350" + } + ], + "capital": "Ngerulmud", + "population": 21729, + "area": 465.550362, + "continent": "Insular Oceania", + "officialName": "Palau", + "nativeName": "Republic of Palau", + "demonym": "Palauan", + "languages": [ + "Japanese", + "Palauan", + "English" + ], + "tld": [ + ".pw" + ], + "borders": [ + "FM", + "PH", + "ID" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Palestine, State of", + "countryShortCode": "PS", + "phoneCode": "+970", + "currencyCode": "ILS", + "latitude": "31.90000000", + "longitude": "35.20000000", + "timezones": [ + { + "zoneName": "Asia/Gaza", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + }, + { + "zoneName": "Asia/Hebron", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + } + ], + "regions": [ + { + "name": "Ak Khalīl", + "shortCode": "HBN" + }, + { + "name": "Al Quds", + "shortCode": "JEM" + }, + { + "name": "Arīḩā wal Aghwār", + "shortCode": "JRH" + }, + { + "name": "Bayt Laḩm", + "shortCode": "BTH" + }, + { + "name": "Dayr al Balaḩ", + "shortCode": "DEB" + }, + { + "name": "Ghazzah", + "shortCode": "GZA" + }, + { + "name": "Janīn", + "shortCode": "JEN" + }, + { + "name": "Khān Yūnis", + "shortCode": "KYS" + }, + { + "name": "Nāblus", + "shortCode": "NBS" + }, + { + "name": "Qalqīyah", + "shortCode": "QQA" + }, + { + "name": "Rafaḩ", + "shortCode": "RFH" + }, + { + "name": "Rām Allāh wal Bīrah", + "shortCode": "RBH" + }, + { + "name": "Salfīt", + "shortCode": "SLT" + }, + { + "name": "Shamāl Ghazzah", + "shortCode": "NGZ" + }, + { + "name": "Ţūbās", + "shortCode": "TBS" + }, + { + "name": "Ţūlkarm", + "shortCode": "TKM" + } + ], + "capital": "East Jerusalem", + "population": 5227193, + "area": 6020, + "continent": "Asia", + "nativeName": "دولة فلسطين", + "demonym": "Palestinian", + "languages": [ + "Arabic" + ], + "tld": [ + ".ps" + ], + "borders": [ + "EG", + "IL", + "JO" + ], + "unMember": false, + "independent": true + }, + { + "countryName": "Panama", + "countryShortCode": "PA", + "phoneCode": "+507", + "currencyCode": "PAB", + "latitude": "9.00000000", + "longitude": "-80.00000000", + "timezones": [ + { + "zoneName": "America/Panama", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + } + ], + "regions": [ + { + "name": "Bocas del Toro", + "shortCode": "1" + }, + { + "name": "Chiriquí", + "shortCode": "4" + }, + { + "name": "Coclé", + "shortCode": "2" + }, + { + "name": "Colón", + "shortCode": "3" + }, + { + "name": "Darién", + "shortCode": "5" + }, + { + "name": "Emberá", + "shortCode": "EM" + }, + { + "name": "Herrera", + "shortCode": "6" + }, + { + "name": "Kuna Yala", + "shortCode": "KY" + }, + { + "name": "Los Santos", + "shortCode": "7" + }, + { + "name": "Ngäbe-Buglé", + "shortCode": "NB" + }, + { + "name": "Panamá", + "shortCode": "8" + }, + { + "name": "Panamá Oeste", + "shortCode": "10" + }, + { + "name": "Veraguas", + "shortCode": "9" + } + ], + "capital": "Panama City", + "population": 4570133, + "area": 74177.3, + "continent": "North America", + "nativeName": "República de Panamá", + "demonym": "Panamanian", + "languages": [ + "Spanish" + ], + "tld": [ + ".pa" + ], + "borders": [ + "US", + "CO", + "CR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Papua New Guinea", + "countryShortCode": "PG", + "phoneCode": "+675", + "currencyCode": "PGK", + "latitude": "-6.00000000", + "longitude": "147.00000000", + "timezones": [ + { + "zoneName": "Pacific/Bougainville", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "BST", + "tzName": "Bougainville Standard Time[6" + }, + { + "zoneName": "Pacific/Port_Moresby", + "gmtOffset": 36000, + "gmtOffsetName": "UTC+10:00", + "abbreviation": "PGT", + "tzName": "Papua New Guinea Time" + } + ], + "regions": [ + { + "name": "Bougainville", + "shortCode": "NSB" + }, + { + "name": "Central", + "shortCode": "CPM" + }, + { + "name": "Chimbu", + "shortCode": "CPK" + }, + { + "name": "East New Britain", + "shortCode": "EBR" + }, + { + "name": "East Sepik", + "shortCode": "ESW" + }, + { + "name": "Eastern Highlands", + "shortCode": "EHG" + }, + { + "name": "Enga", + "shortCode": "EPW" + }, + { + "name": "Gulf", + "shortCode": "GPK" + }, + { + "name": "Hela", + "shortCode": "HLA" + }, + { + "name": "Jiwaka", + "shortCode": "JWK" + }, + { + "name": "Madang", + "shortCode": "MOM" + }, + { + "name": "Manus", + "shortCode": "MRL" + }, + { + "name": "Milne Bay", + "shortCode": "MBA" + }, + { + "name": "Morobe", + "shortCode": "MPL" + }, + { + "name": "Port Moresby", + "shortCode": "NCD" + }, + { + "name": "New Ireland", + "shortCode": "NIK" + }, + { + "name": "Northern", + "shortCode": "NPP" + }, + { + "name": "Southern Highlands", + "shortCode": "SHM" + }, + { + "name": "West New Britain", + "shortCode": "WBK" + }, + { + "name": "West Sepik", + "shortCode": "SAN" + }, + { + "name": "Western", + "shortCode": "WPD" + }, + { + "name": "Western Highlands", + "shortCode": "WHM" + } + ], + "capital": "Port Moresby", + "population": 8935000, + "area": 462840, + "continent": "Oceania", + "officialName": "Papua New Guinea", + "nativeName": "Independent State of Papua New Guinea", + "demonym": "Papua New Guinean", + "languages": [ + "English", + "Tok Pisin", + "Hiri Motu", + "Papua New Guinean Sign Language" + ], + "tld": [ + ".pg" + ], + "borders": [ + "ID", + "AU", + "SB", + "FM" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Paraguay", + "countryShortCode": "PY", + "phoneCode": "+595", + "currencyCode": "PYG", + "latitude": "-23.00000000", + "longitude": "-58.00000000", + "timezones": [ + { + "zoneName": "America/Asuncion", + "gmtOffset": -10800, + "gmtOffsetName": "UTC-03:00", + "abbreviation": "PYST", + "tzName": "Paraguay Summer Time" + } + ], + "regions": [ + { + "name": "Alto Paraguay", + "shortCode": "16" + }, + { + "name": "Alto Parana", + "shortCode": "10" + }, + { + "name": "Amambay", + "shortCode": "13" + }, + { + "name": "Asuncion", + "shortCode": "ASU" + }, + { + "name": "Caaguazu", + "shortCode": "5" + }, + { + "name": "Caazapa", + "shortCode": "6" + }, + { + "name": "Canindeyu", + "shortCode": "14" + }, + { + "name": "Central", + "shortCode": "11" + }, + { + "name": "Concepcion", + "shortCode": "1" + }, + { + "name": "Cordillera", + "shortCode": "3" + }, + { + "name": "Guaira", + "shortCode": "4" + }, + { + "name": "Itapua", + "shortCode": "7" + }, + { + "name": "Misiones", + "shortCode": "8" + }, + { + "name": "Neembucu", + "shortCode": "12" + }, + { + "name": "Paraguari", + "shortCode": "9" + }, + { + "name": "Presidente Hayes", + "shortCode": "15" + }, + { + "name": "San Pedro", + "shortCode": "2" + } + ], + "capital": "Asunción", + "population": 6811297, + "area": 406756, + "continent": "South America", + "nativeName": "República del Paraguay", + "demonym": "Paraguayan", + "languages": [ + "Spanish", + "Guarani" + ], + "tld": [ + ".py" + ], + "borders": [ + "BR", + "AR", + "BO" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Peru", + "countryShortCode": "PE", + "phoneCode": "+51", + "currencyCode": "PEN", + "latitude": "-10.00000000", + "longitude": "-76.00000000", + "timezones": [ + { + "zoneName": "America/Lima", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "PET", + "tzName": "Peru Time" + } + ], + "regions": [ + { + "name": "Amazonas", + "shortCode": "AMA" + }, + { + "name": "Ancash", + "shortCode": "ANC" + }, + { + "name": "Apurimac", + "shortCode": "APU" + }, + { + "name": "Arequipa", + "shortCode": "ARE" + }, + { + "name": "Ayacucho", + "shortCode": "AYA" + }, + { + "name": "Cajamarca", + "shortCode": "CAJ" + }, + { + "name": "Callao", + "shortCode": "CAL" + }, + { + "name": "Cusco", + "shortCode": "CUS" + }, + { + "name": "Huancavelica", + "shortCode": "HUV" + }, + { + "name": "Huanuco", + "shortCode": "HUC" + }, + { + "name": "Ica", + "shortCode": "ICA" + }, + { + "name": "Junin", + "shortCode": "JUN" + }, + { + "name": "La Libertad", + "shortCode": "LAL" + }, + { + "name": "Lambayeque", + "shortCode": "LAM" + }, + { + "name": "Lima", + "shortCode": "LIM" + }, + { + "name": "Loreto", + "shortCode": "LOR" + }, + { + "name": "Madre de Dios", + "shortCode": "MDD" + }, + { + "name": "Moquegua", + "shortCode": "MOQ" + }, + { + "name": "Municipalidad Metropolitana de Lima", + "shortCode": "LMA" + }, + { + "name": "Pasco", + "shortCode": "PAS" + }, + { + "name": "Piura", + "shortCode": "PIU" + }, + { + "name": "Puno", + "shortCode": "PUN" + }, + { + "name": "San Martin", + "shortCode": "SAM" + }, + { + "name": "Tacna", + "shortCode": "TAC" + }, + { + "name": "Tumbes", + "shortCode": "TUM" + }, + { + "name": "Ucayali", + "shortCode": "UCA" + } + ], + "capital": "Lima", + "population": 34157732, + "area": 1285216, + "continent": "South America", + "nativeName": "República del Perú", + "demonym": "Peruvian", + "languages": [ + "Spanish", + "Aymara", + "Quechua" + ], + "tld": [ + ".pe" + ], + "borders": [ + "BR", + "CL", + "EC", + "CO", + "BO" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Philippines", + "countryShortCode": "PH", + "phoneCode": "+63", + "currencyCode": "PHP", + "latitude": "13.00000000", + "longitude": "122.00000000", + "timezones": [ + { + "zoneName": "Asia/Manila", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "PHT", + "tzName": "Philippine Time" + } + ], + "regions": [ + { + "name": "Abra", + "shortCode": "ABR" + }, + { + "name": "Agusan del Norte", + "shortCode": "AGN" + }, + { + "name": "Agusan del Sur", + "shortCode": "AGS" + }, + { + "name": "Aklan", + "shortCode": "AKL" + }, + { + "name": "Albay", + "shortCode": "ALB" + }, + { + "name": "Antique", + "shortCode": "ANT" + }, + { + "name": "Apayao", + "shortCode": "APA" + }, + { + "name": "Aurora", + "shortCode": "AUR" + }, + { + "name": "Basilan", + "shortCode": "BAS" + }, + { + "name": "Bataan", + "shortCode": "BAN" + }, + { + "name": "Batanes", + "shortCode": "BTN" + }, + { + "name": "Batangas", + "shortCode": "BTG" + }, + { + "name": "Benguet", + "shortCode": "BEN" + }, + { + "name": "Biliran", + "shortCode": "BIL" + }, + { + "name": "Bohol", + "shortCode": "BOH" + }, + { + "name": "Bukidnon", + "shortCode": "BUK" + }, + { + "name": "Bulacan", + "shortCode": "BUL" + }, + { + "name": "Cagayan", + "shortCode": "CAG" + }, + { + "name": "Camarines Norte", + "shortCode": "CAN" + }, + { + "name": "Camarines Sur", + "shortCode": "CAS" + }, + { + "name": "Camiguin", + "shortCode": "CAM" + }, + { + "name": "Capiz", + "shortCode": "CAP" + }, + { + "name": "Catanduanes", + "shortCode": "CAT" + }, + { + "name": "Cavite", + "shortCode": "CAV" + }, + { + "name": "Cebu", + "shortCode": "CEB" + }, + { + "name": "Compostela", + "shortCode": "COM" + }, + { + "name": "Cotabato", + "shortCode": "NCO" + }, + { + "name": "Davao del Norte", + "shortCode": "DAV" + }, + { + "name": "Davao del Sur", + "shortCode": "DAS" + }, + { + "name": "Davao Occidental", + "shortCode": "DVO" + }, + { + "name": "Davao Oriental", + "shortCode": "DAO" + }, + { + "name": "Dinagat Islands", + "shortCode": "DIN" + }, + { + "name": "Eastern Samar", + "shortCode": "EAS" + }, + { + "name": "Guimaras", + "shortCode": "GUI" + }, + { + "name": "Ifugao", + "shortCode": "IFU" + }, + { + "name": "Ilocos Norte", + "shortCode": "ILN" + }, + { + "name": "Ilocos Sur", + "shortCode": "ILS" + }, + { + "name": "Iloilo", + "shortCode": "ILI" + }, + { + "name": "Isabela", + "shortCode": "ISA" + }, + { + "name": "Kalinga", + "shortCode": "KAL" + }, + { + "name": "La Union", + "shortCode": "LUN" + }, + { + "name": "Laguna", + "shortCode": "LAG" + }, + { + "name": "Lanao del Norte", + "shortCode": "LAN" + }, + { + "name": "Lanao del Sur", + "shortCode": "LAS" + }, + { + "name": "Leyte", + "shortCode": "LEY" + }, + { + "name": "Maguindanao", + "shortCode": "MAG" + }, + { + "name": "Masbate", + "shortCode": "MAS" + }, + { + "name": "Metro Manila", + "shortCode": "00" + }, + { + "name": "Mindoro Occidental", + "shortCode": "MDC" + }, + { + "name": "Mindoro Oriental", + "shortCode": "MDR" + }, + { + "name": "Misamis Occidental", + "shortCode": "MSC" + }, + { + "name": "Misamis Oriental", + "shortCode": "MSR" + }, + { + "name": "Mountain Province", + "shortCode": "MOU" + }, + { + "name": "Negros Occidental", + "shortCode": "NEC" + }, + { + "name": "Negros Oriental", + "shortCode": "NER" + }, + { + "name": "Northern Samar", + "shortCode": "NSA" + }, + { + "name": "Nueva Ecija", + "shortCode": "NUE" + }, + { + "name": "Nueva Vizcaya", + "shortCode": "NUV" + }, + { + "name": "Palawan", + "shortCode": "PLW" + }, + { + "name": "Pampanga", + "shortCode": "PAM" + }, + { + "name": "Pangasinan", + "shortCode": "PAN" + }, + { + "name": "Quezon", + "shortCode": "QUE" + }, + { + "name": "Quirino", + "shortCode": "QUI" + }, + { + "name": "Rizal", + "shortCode": "RIZ" + }, + { + "name": "Romblon", + "shortCode": "ROM" + }, + { + "name": "Samar", + "shortCode": "WSA" + }, + { + "name": "Sarangani", + "shortCode": "SAR" + }, + { + "name": "Siquijor", + "shortCode": "SIG" + }, + { + "name": "Sorsogon", + "shortCode": "SOR" + }, + { + "name": "Southern Leyte", + "shortCode": "SLE" + }, + { + "name": "Sultan Kudarat", + "shortCode": "AUK" + }, + { + "name": "Sulu", + "shortCode": "SLU" + }, + { + "name": "Surigao del Norte", + "shortCode": "SUN" + }, + { + "name": "Surigao del Sur", + "shortCode": "SUR" + }, + { + "name": "Tarlac", + "shortCode": "TAR" + }, + { + "name": "Tawi-Tawi", + "shortCode": "TAW" + }, + { + "name": "Zambales", + "shortCode": "ZMB" + }, + { + "name": "Zamboanga del Norte", + "shortCode": "ZAN" + }, + { + "name": "Zamboanga del Sur", + "shortCode": "ZAS" + }, + { + "name": "Zamboanga Sibugay", + "shortCode": "ZSI" + } + ], + "capital": "Manila", + "population": 112729484, + "area": 343448, + "continent": "Asia", + "officialName": "Republic of the Philippines", + "nativeName": "Philippines", + "demonym": "Filipina", + "languages": [ + "English", + "Filipino", + "Taglish" + ], + "tld": [ + ".ph" + ], + "borders": [ + "CN", + "ID", + "PW", + "MY", + "TW", + "JP" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Pitcairn", + "countryShortCode": "PN", + "phoneCode": "+872", + "currencyCode": "NZD", + "latitude": "-25.06666666", + "longitude": "-130.10000000", + "timezones": [ + { + "zoneName": "Pacific/Pitcairn", + "gmtOffset": -28800, + "gmtOffsetName": "UTC-08:00", + "abbreviation": "PST", + "tzName": "Pacific Standard Time (North America" + } + ], + "regions": [ + { + "name": "Pitcairn Islands" + } + ], + "capital": "Adamstown", + "population": 50, + "area": 47, + "continent": "Insular Oceania", + "officialName": "Pitcairn", + "nativeName": "Pitcairn Islands", + "demonym": "Pitcairn Islander", + "languages": [ + "English", + "Pitkern" + ], + "tld": [ + ".pn" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Poland", + "countryShortCode": "PL", + "phoneCode": "+48", + "currencyCode": "PLN", + "latitude": "52.00000000", + "longitude": "20.00000000", + "timezones": [ + { + "zoneName": "Europe/Warsaw", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Dolnośląskie", + "shortCode": "DS" + }, + { + "name": "Kujawsko-pomorskie", + "shortCode": "KP" + }, + { + "name": "Łódzkie", + "shortCode": "LD" + }, + { + "name": "Lubelskie", + "shortCode": "LU" + }, + { + "name": "Lubuskie", + "shortCode": "LB" + }, + { + "name": "Małopolskie", + "shortCode": "MA" + }, + { + "name": "Mazowieckie", + "shortCode": "MZ" + }, + { + "name": "Opolskie", + "shortCode": "OP" + }, + { + "name": "Podkarpackie", + "shortCode": "PK" + }, + { + "name": "Podlaskie", + "shortCode": "PD" + }, + { + "name": "Pomorskie", + "shortCode": "PM" + }, + { + "name": "Śląskie", + "shortCode": "SL" + }, + { + "name": "Świętokrzyskie", + "shortCode": "SK" + }, + { + "name": "Warmińsko-mazurskie", + "shortCode": "WN" + }, + { + "name": "Wielkopolskie", + "shortCode": "WP" + }, + { + "name": "Zachodniopomorskie", + "shortCode": "ZP" + } + ], + "capital": "Warsaw", + "population": 37563071, + "area": 312683, + "continent": "Europe", + "nativeName": "Polska", + "demonym": "Polish", + "languages": [ + "Polish" + ], + "tld": [ + ".pl" + ], + "borders": [ + "LT", + "RU", + "DE", + "BY", + "UA", + "CZ", + "SK" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Portugal", + "countryShortCode": "PT", + "phoneCode": "+351", + "currencyCode": "EUR", + "latitude": "39.50000000", + "longitude": "-8.00000000", + "timezones": [ + { + "zoneName": "Atlantic/Azores", + "gmtOffset": -3600, + "gmtOffsetName": "UTC-01:00", + "abbreviation": "AZOT", + "tzName": "Azores Standard Time" + }, + { + "zoneName": "Atlantic/Madeira", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "WET", + "tzName": "Western European Time" + }, + { + "zoneName": "Europe/Lisbon", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "WET", + "tzName": "Western European Time" + } + ], + "regions": [ + { + "name": "Açores", + "shortCode": "20" + }, + { + "name": "Aveiro", + "shortCode": "01" + }, + { + "name": "Beja", + "shortCode": "02" + }, + { + "name": "Braga", + "shortCode": "03" + }, + { + "name": "Bragança", + "shortCode": "04" + }, + { + "name": "Castelo Branco", + "shortCode": "05" + }, + { + "name": "Coimbra", + "shortCode": "06" + }, + { + "name": "Évora", + "shortCode": "07" + }, + { + "name": "Faro", + "shortCode": "08" + }, + { + "name": "Guarda", + "shortCode": "09" + }, + { + "name": "Leiria", + "shortCode": "10" + }, + { + "name": "Lisboa", + "shortCode": "11" + }, + { + "name": "Madeira", + "shortCode": "30" + }, + { + "name": "Portalegre", + "shortCode": "12" + }, + { + "name": "Porto", + "shortCode": "13" + }, + { + "name": "Santarém", + "shortCode": "14" + }, + { + "name": "Setúbal", + "shortCode": "15" + }, + { + "name": "Viana do Castelo", + "shortCode": "16" + }, + { + "name": "Vila Real", + "shortCode": "17" + }, + { + "name": "Viseu", + "shortCode": "18" + } + ], + "capital": "Lisbon", + "population": 10347892, + "area": 92225, + "continent": "Europe", + "nativeName": "Portugal", + "demonym": "Portuguese", + "languages": [ + "Portuguese" + ], + "tld": [ + ".pt" + ], + "borders": [ + "ES" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Puerto Rico", + "countryShortCode": "PR", + "phoneCode": "+1939", + "currencyCode": "USD", + "latitude": "18.25000000", + "longitude": "-66.50000000", + "timezones": [ + { + "zoneName": "America/Puerto_Rico", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Adjuntas" + }, + { + "name": "Aguada" + }, + { + "name": "Aguadilla" + }, + { + "name": "Aguas Buenas" + }, + { + "name": "Aibonito" + }, + { + "name": "Anasco" + }, + { + "name": "Arecibo" + }, + { + "name": "Arroyo" + }, + { + "name": "Barceloneta" + }, + { + "name": "Barranquitas" + }, + { + "name": "Bayamon" + }, + { + "name": "Cabo Rojo" + }, + { + "name": "Caguas" + }, + { + "name": "Camuy" + }, + { + "name": "Canovanas" + }, + { + "name": "Carolina" + }, + { + "name": "Cat" + }, + { + "name": "Ceiba" + }, + { + "name": "Ciales" + }, + { + "name": "Cidra" + }, + { + "name": "Coamo" + }, + { + "name": "Comerio" + }, + { + "name": "Corozal" + }, + { + "name": "Culebra" + }, + { + "name": "Dorado" + }, + { + "name": "Fajardo" + }, + { + "name": "Florida" + }, + { + "name": "Guanica" + }, + { + "name": "Guayama" + }, + { + "name": "Guayanilla" + }, + { + "name": "Guaynabo" + }, + { + "name": "Gurabo" + }, + { + "name": "Hatillo" + }, + { + "name": "Hormigueros" + }, + { + "name": "Humacao" + }, + { + "name": "Isabe" + }, + { + "name": "Juana Diaz" + }, + { + "name": "Juncos" + }, + { + "name": "Lajas" + }, + { + "name": "Lares" + }, + { + "name": "Las Marias" + }, + { + "name": "Las oiza" + }, + { + "name": "Luquillo" + }, + { + "name": "Manati" + }, + { + "name": "Maricao" + }, + { + "name": "Maunabo" + }, + { + "name": "Mayaguez" + }, + { + "name": "Moca" + }, + { + "name": "Morovis" + }, + { + "name": "Naguabo" + }, + { + "name": "Naranjito" + }, + { + "name": "Orocovis" + }, + { + "name": "Patillas" + }, + { + "name": "Penuelas" + }, + { + "name": "Ponce" + }, + { + "name": "Quebradillas" + }, + { + "name": "Rincon" + }, + { + "name": "Rio Grande" + }, + { + "name": "Sabana linas" + }, + { + "name": "San German" + }, + { + "name": "San Juan" + }, + { + "name": "San Lorenzo" + }, + { + "name": "San Sebastian" + }, + { + "name": "Santa Isabel" + }, + { + "name": "Toa Alta" + }, + { + "name": "Toa Baja" + }, + { + "name": "Trujillo Alto" + }, + { + "name": "Utuado" + }, + { + "name": "Vega Alta" + }, + { + "name": "Vega ues" + }, + { + "name": "Villalba" + }, + { + "name": "Yabucoa" + }, + { + "name": "Yauco" + } + ], + "capital": "San Juan", + "population": 3285874, + "area": 9104, + "continent": "North America", + "officialName": "Commonwealth of Puerto Rico", + "nativeName": "Puerto Rico", + "demonym": "Puerto Rican", + "languages": [ + "Spanish", + "English" + ], + "tld": [ + ".pr" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Qatar", + "countryShortCode": "QA", + "phoneCode": "+974", + "currencyCode": "QAR", + "latitude": "25.50000000", + "longitude": "51.25000000", + "timezones": [ + { + "zoneName": "Asia/Qatar", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "AST", + "tzName": "Arabia Standard Time" + } + ], + "regions": [ + { + "name": "Ad Dawḩah", + "shortCode": "DA" + }, + { + "name": "Al Khawr wa adh Dhakhīrah", + "shortCode": "KH" + }, + { + "name": "Al Wakrah", + "shortCode": "WA" + }, + { + "name": "Ar Rayyān", + "shortCode": "RA" + }, + { + "name": "Ash Shamāl", + "shortCode": "MS" + }, + { + "name": "Az̧ Za̧`āyin", + "shortCode": "ZA" + }, + { + "name": "Umm Şalāl", + "shortCode": "US" + } + ], + "capital": "Doha", + "population": 2639211, + "area": 11437, + "continent": "Asia", + "demonym": "Qatari", + "languages": [ + "Arabic" + ], + "tld": [ + ".qa" + ], + "borders": [ + "IR", + "SA" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Réunion", + "countryShortCode": "RE", + "phoneCode": "+262", + "currencyCode": "EUR", + "latitude": "-21.15000000", + "longitude": "55.50000000", + "timezones": [ + { + "zoneName": "Indian/Reunion", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "RET", + "tzName": "Réunion Time" + } + ], + "regions": [ + { + "name": "Réunion" + } + ], + "capital": "Saint-Denis", + "population": 889679, + "area": 2512, + "continent": "Africa", + "nativeName": "La Réunion", + "languages": [ + "French" + ], + "tld": [ + ".re" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Romania", + "countryShortCode": "RO", + "phoneCode": "+40", + "currencyCode": "RON", + "latitude": "46.00000000", + "longitude": "25.00000000", + "timezones": [ + { + "zoneName": "Europe/Bucharest", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + } + ], + "regions": [ + { + "name": "Alba", + "shortCode": "AB" + }, + { + "name": "Arad", + "shortCode": "AR" + }, + { + "name": "Arges", + "shortCode": "AG" + }, + { + "name": "Bacau", + "shortCode": "BC" + }, + { + "name": "Bihor", + "shortCode": "BH" + }, + { + "name": "Bistrita-Nasaud", + "shortCode": "BN" + }, + { + "name": "Botosani", + "shortCode": "BT" + }, + { + "name": "Braila", + "shortCode": "BR" + }, + { + "name": "Brasov", + "shortCode": "BV" + }, + { + "name": "Bucuresti", + "shortCode": "B" + }, + { + "name": "Buzau", + "shortCode": "BZ" + }, + { + "name": "Calarasi", + "shortCode": "CL" + }, + { + "name": "Caras-Severin", + "shortCode": "CS" + }, + { + "name": "Cluj", + "shortCode": "CJ" + }, + { + "name": "Constanta", + "shortCode": "CT" + }, + { + "name": "Covasna", + "shortCode": "CV" + }, + { + "name": "Dambovita", + "shortCode": "DB" + }, + { + "name": "Dolj", + "shortCode": "DJ" + }, + { + "name": "Galati", + "shortCode": "GL" + }, + { + "name": "Giurgiu", + "shortCode": "GR" + }, + { + "name": "Gorj", + "shortCode": "GJ" + }, + { + "name": "Harghita", + "shortCode": "HR" + }, + { + "name": "Hunedoara", + "shortCode": "HD" + }, + { + "name": "Ialomita", + "shortCode": "IL" + }, + { + "name": "Iasi", + "shortCode": "IS" + }, + { + "name": "Maramures", + "shortCode": "MM" + }, + { + "name": "Mehedinti", + "shortCode": "MH" + }, + { + "name": "Mures", + "shortCode": "MS" + }, + { + "name": "Neamt", + "shortCode": "NT" + }, + { + "name": "Olt", + "shortCode": "OT" + }, + { + "name": "Prahova", + "shortCode": "PH" + }, + { + "name": "Salaj", + "shortCode": "SJ" + }, + { + "name": "Satu Mare", + "shortCode": "SM" + }, + { + "name": "Sibiu", + "shortCode": "SB" + }, + { + "name": "Suceava", + "shortCode": "SV" + }, + { + "name": "Teleorman", + "shortCode": "TR" + }, + { + "name": "Timis", + "shortCode": "TM" + }, + { + "name": "Tulcea", + "shortCode": "TL" + }, + { + "name": "Valcea", + "shortCode": "VL" + }, + { + "name": "Vaslui", + "shortCode": "VS" + }, + { + "name": "Vrancea", + "shortCode": "VN" + } + ], + "capital": "Bucharest", + "population": 19053815, + "area": 238397, + "continent": "Europe", + "nativeName": "România", + "demonym": "Romanian", + "languages": [ + "Romanian" + ], + "tld": [ + ".ro" + ], + "borders": [ + "HU", + "UA", + "MD", + "BG", + "RS" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Russian Federation", + "countryShortCode": "RU", + "phoneCode": "+7", + "currencyCode": "RUB", + "latitude": "60.00000000", + "longitude": "100.00000000", + "timezones": [ + { + "zoneName": "Asia/Anadyr", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "ANAT", + "tzName": "Anadyr Time[4" + }, + { + "zoneName": "Asia/Barnaul", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "KRAT", + "tzName": "Krasnoyarsk Time" + }, + { + "zoneName": "Asia/Chita", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "YAKT", + "tzName": "Yakutsk Time" + }, + { + "zoneName": "Asia/Irkutsk", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "IRKT", + "tzName": "Irkutsk Time" + }, + { + "zoneName": "Asia/Kamchatka", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "PETT", + "tzName": "Kamchatka Time" + }, + { + "zoneName": "Asia/Khandyga", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "YAKT", + "tzName": "Yakutsk Time" + }, + { + "zoneName": "Asia/Krasnoyarsk", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "KRAT", + "tzName": "Krasnoyarsk Time" + }, + { + "zoneName": "Asia/Magadan", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "MAGT", + "tzName": "Magadan Time" + }, + { + "zoneName": "Asia/Novokuznetsk", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "KRAT", + "tzName": "Krasnoyarsk Time" + }, + { + "zoneName": "Asia/Novosibirsk", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "NOVT", + "tzName": "Novosibirsk Time" + }, + { + "zoneName": "Asia/Omsk", + "gmtOffset": 21600, + "gmtOffsetName": "UTC+06:00", + "abbreviation": "OMST", + "tzName": "Omsk Time" + }, + { + "zoneName": "Asia/Sakhalin", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "SAKT", + "tzName": "Sakhalin Island Time" + }, + { + "zoneName": "Asia/Srednekolymsk", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "SRET", + "tzName": "Srednekolymsk Time" + }, + { + "zoneName": "Asia/Tomsk", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "MSD+3", + "tzName": "Moscow Daylight Time+3" + }, + { + "zoneName": "Asia/Ust-Nera", + "gmtOffset": 36000, + "gmtOffsetName": "UTC+10:00", + "abbreviation": "VLAT", + "tzName": "Vladivostok Time" + }, + { + "zoneName": "Asia/Vladivostok", + "gmtOffset": 36000, + "gmtOffsetName": "UTC+10:00", + "abbreviation": "VLAT", + "tzName": "Vladivostok Time" + }, + { + "zoneName": "Asia/Yakutsk", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "YAKT", + "tzName": "Yakutsk Time" + }, + { + "zoneName": "Asia/Yekaterinburg", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "YEKT", + "tzName": "Yekaterinburg Time" + }, + { + "zoneName": "Europe/Astrakhan", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "SAMT", + "tzName": "Samara Time" + }, + { + "zoneName": "Europe/Kaliningrad", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + }, + { + "zoneName": "Europe/Kirov", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "MSK", + "tzName": "Moscow Time" + }, + { + "zoneName": "Europe/Moscow", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "MSK", + "tzName": "Moscow Time" + }, + { + "zoneName": "Europe/Samara", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "SAMT", + "tzName": "Samara Time" + }, + { + "zoneName": "Europe/Saratov", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "MSD", + "tzName": "Moscow Daylight Time+4" + }, + { + "zoneName": "Europe/Ulyanovsk", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "SAMT", + "tzName": "Samara Time" + }, + { + "zoneName": "Europe/Volgograd", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "MSK", + "tzName": "Moscow Standard Time" + } + ], + "regions": [ + { + "name": "Republic of Adygea", + "shortCode": "AD" + }, + { + "name": "Republic of Altai (Gorno-Altaysk)", + "shortCode": "AL" + }, + { + "name": "Altai Krai", + "shortCode": "ALT" + }, + { + "name": "Amur Oblast", + "shortCode": "AMU" + }, + { + "name": "Arkhangelsk Oblast", + "shortCode": "ARK" + }, + { + "name": "Astrakhan Oblast", + "shortCode": "AST" + }, + { + "name": "Republic of Bashkortostan", + "shortCode": "BA" + }, + { + "name": "Belgorod Oblast", + "shortCode": "BEL" + }, + { + "name": "Bryansk Oblast", + "shortCode": "BRY" + }, + { + "name": "Republic of Buryatia", + "shortCode": "BU" + }, + { + "name": "Chechen Republic", + "shortCode": "CE" + }, + { + "name": "Chelyabinsk Oblast", + "shortCode": "CHE" + }, + { + "name": "Chukotka Autonomous Okrug", + "shortCode": "CHU" + }, + { + "name": "Chuvash Republic", + "shortCode": "CU" + }, + { + "name": "Republic of Dagestan", + "shortCode": "DA" + }, + { + "name": "Republic of Ingushetia", + "shortCode": "IN" + }, + { + "name": "Irkutsk Oblast", + "shortCode": "IRK" + }, + { + "name": "Ivanovo Oblast", + "shortCode": "IVA" + }, + { + "name": "Jewish Autonomous Oblast", + "shortCode": "JEW" + }, + { + "name": "Kabardino-Balkar Republic", + "shortCode": "KB" + }, + { + "name": "Kaliningrad Oblast", + "shortCode": "KLN" + }, + { + "name": "Republic of Kalmykia", + "shortCode": "KL" + }, + { + "name": "Kaluga Oblast", + "shortCode": "KLU" + }, + { + "name": "Kamchatka Krai", + "shortCode": "KAM" + }, + { + "name": "Karachay-Cherkess Republic", + "shortCode": "KC" + }, + { + "name": "Republic of Karelia", + "shortCode": "KR" + }, + { + "name": "Khabarovsk Krai", + "shortCode": "KHA" + }, + { + "name": "Republic of Khakassia", + "shortCode": "KK" + }, + { + "name": "Khanty-Mansi Autonomous Okrug - Yugra", + "shortCode": "KHM" + }, + { + "name": "Kemerovo Oblast", + "shortCode": "KEM" + }, + { + "name": "Kirov Oblast", + "shortCode": "KIR" + }, + { + "name": "Komi Republic", + "shortCode": "KO" + }, + { + "name": "Kostroma Oblast", + "shortCode": "KOS" + }, + { + "name": "Krasnodar Krai", + "shortCode": "KDA" + }, + { + "name": "Krasnoyarsk Krai", + "shortCode": "KYA" + }, + { + "name": "Kurgan Oblast", + "shortCode": "KGN" + }, + { + "name": "Kursk Oblast", + "shortCode": "KRS" + }, + { + "name": "Leningrad Oblast", + "shortCode": "LEN" + }, + { + "name": "Lipetsk Oblast", + "shortCode": "LIP" + }, + { + "name": "Magadan Oblast", + "shortCode": "MAG" + }, + { + "name": "Mari El Republic", + "shortCode": "ME" + }, + { + "name": "Republic of Mordovia", + "shortCode": "MO" + }, + { + "name": "Moscow Oblast", + "shortCode": "MOS" + }, + { + "name": "Moscow", + "shortCode": "MOW" + }, + { + "name": "Murmansk Oblast", + "shortCode": "MU" + }, + { + "name": "Nenets Autonomous Okrug", + "shortCode": "NEN" + }, + { + "name": "Nizhny Novgorod Oblast", + "shortCode": "NIZ" + }, + { + "name": "Novgorod Oblast", + "shortCode": "NGR" + }, + { + "name": "Novosibirsk Oblast", + "shortCode": "NVS" + }, + { + "name": "Omsk Oblast", + "shortCode": "OMS" + }, + { + "name": "Orenburg Oblast", + "shortCode": "ORE" + }, + { + "name": "Oryol Oblast", + "shortCode": "ORL" + }, + { + "name": "Penza Oblast", + "shortCode": "PNZ" + }, + { + "name": "Perm Krai", + "shortCode": "PER" + }, + { + "name": "Primorsky Krai", + "shortCode": "PRI" + }, + { + "name": "Pskov Oblast", + "shortCode": "PSK" + }, + { + "name": "Rostov Oblast", + "shortCode": "ROS" + }, + { + "name": "Ryazan Oblast", + "shortCode": "RYA" + }, + { + "name": "Saint Petersburg", + "shortCode": "SPE" + }, + { + "name": "Sakha (Yakutia) Republic", + "shortCode": "SA" + }, + { + "name": "Sakhalin Oblast", + "shortCode": "SAK" + }, + { + "name": "Samara Oblast", + "shortCode": "SAM" + }, + { + "name": "Saratov Oblast", + "shortCode": "SAR" + }, + { + "name": "Republic of North Ossetia-Alania", + "shortCode": "NOA" + }, + { + "name": "Smolensk Oblast", + "shortCode": "SMO" + }, + { + "name": "Stavropol Krai", + "shortCode": "STA" + }, + { + "name": "Sverdlovsk Oblast", + "shortCode": "SVE" + }, + { + "name": "Tambov Oblast", + "shortCode": "TAM" + }, + { + "name": "Republic of Tatarstan", + "shortCode": "TA" + }, + { + "name": "Tomsk Oblast", + "shortCode": "TOM" + }, + { + "name": "Tuva Republic", + "shortCode": "TU" + }, + { + "name": "Tula Oblast", + "shortCode": "TUL" + }, + { + "name": "Tver Oblast", + "shortCode": "TVE" + }, + { + "name": "Tyumen Oblast", + "shortCode": "TYU" + }, + { + "name": "Udmurt Republic", + "shortCode": "UD" + }, + { + "name": "Ulyanovsk Oblast", + "shortCode": "ULY" + }, + { + "name": "Vladimir Oblast", + "shortCode": "VLA" + }, + { + "name": "Volgograd Oblast", + "shortCode": "VGG" + }, + { + "name": "Vologda Oblast", + "shortCode": "VLG" + }, + { + "name": "Voronezh Oblast", + "shortCode": "VOR" + }, + { + "name": "Yamalo-Nenets Autonomous Okrug", + "shortCode": "YAN" + }, + { + "name": "Yaroslavl Oblast", + "shortCode": "YAR" + }, + { + "name": "Zabaykalsky Krai", + "shortCode": "ZAB" + } + ], + "capital": "Moscow", + "population": 146119928, + "area": 17075400, + "continent": "Asia", + "nativeName": "Россия", + "demonym": "Russian", + "languages": [ + "Russian" + ], + "tld": [ + ".su", + ".рус", + ".рф", + ".ru" + ], + "borders": [ + "UA", + "AZ", + "GE", + "KZ", + "KP", + "MN", + "JP", + "NO", + "US", + "FI", + "SE", + "PL", + "LT", + "CN", + "BY", + "EE", + "LV" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Rwanda", + "countryShortCode": "RW", + "phoneCode": "+250", + "currencyCode": "RWF", + "latitude": "-2.00000000", + "longitude": "30.00000000", + "timezones": [ + { + "zoneName": "Africa/Kigali", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "CAT", + "tzName": "Central Africa Time" + } + ], + "regions": [ + { + "name": "Kigali", + "shortCode": "01" + }, + { + "name": "Eastern", + "shortCode": "02" + }, + { + "name": "Northern", + "shortCode": "03" + }, + { + "name": "Western", + "shortCode": "04" + }, + { + "name": "Southern", + "shortCode": "05" + } + ], + "capital": "Kigali", + "population": 14569341, + "area": 26338, + "continent": "Africa", + "officialName": "Republic of Rwanda", + "nativeName": "Rwanda", + "demonym": "Rwandese", + "languages": [ + "Swahili", + "Kinyarwanda", + "French", + "English" + ], + "tld": [ + ".rw" + ], + "borders": [ + "UG", + "TZ", + "BI", + "CD" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Saint Barthélemy", + "countryShortCode": "BL", + "phoneCode": "+590", + "currencyCode": "EUR", + "latitude": "18.50000000", + "longitude": "-63.41666666", + "timezones": [ + { + "zoneName": "America/St_Barthelemy", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Au Vent", + "shortCode": "02" + }, + { + "name": "Sous le Vent", + "shortCode": "01" + } + ], + "capital": "Gustavia", + "population": 10124, + "area": 24, + "continent": "North America", + "languages": [ + "French" + ], + "tld": [ + ".bl" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Saint Helena, Ascension and Tristan da Cunha", + "countryShortCode": "SH", + "phoneCode": "+290", + "currencyCode": "SHP", + "latitude": "-15.95000000", + "longitude": "-5.70000000", + "timezones": [ + { + "zoneName": "Atlantic/St_Helena", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Ascension", + "shortCode": "AC" + }, + { + "name": "Saint Helena", + "shortCode": "HL" + }, + { + "name": "Tristan da Cunha", + "shortCode": "TA" + } + ], + "capital": "Jamestown", + "population": 5633, + "area": 394, + "continent": "Africa", + "officialName": "St Helena, Ascension & Tristan da Cunha", + "nativeName": "St Helena, Ascension & Tristan da Cunha", + "languages": [ + "English" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Saint Kitts and Nevis", + "countryShortCode": "KN", + "phoneCode": "+1869", + "currencyCode": "XCD", + "latitude": "17.33333333", + "longitude": "-62.75000000", + "timezones": [ + { + "zoneName": "America/St_Kitts", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Saint Kitts", + "shortCode": "K" + }, + { + "name": "Nevis", + "shortCode": "N" + } + ], + "capital": "Basseterre", + "population": 46922, + "area": 269.358763, + "continent": "North America", + "officialName": "Saint Kitts and Nevis", + "nativeName": "Federation of Saint Kitts and Nevis", + "demonym": "Kittitian", + "languages": [ + "English" + ], + "tld": [ + ".kn" + ], + "borders": [ + "GB", + "VE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Saint Lucia", + "countryShortCode": "LC", + "phoneCode": "+1758", + "currencyCode": "XCD", + "latitude": "13.88333333", + "longitude": "-60.96666666", + "timezones": [ + { + "zoneName": "America/St_Lucia", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Anse-la-Raye", + "shortCode": "01" + }, + { + "name": "Canaries", + "shortCode": "12" + }, + { + "name": "Castries", + "shortCode": "02" + }, + { + "name": "Choiseul", + "shortCode": "03" + }, + { + "name": "Dennery", + "shortCode": "05" + }, + { + "name": "Gros Islet", + "shortCode": "06" + }, + { + "name": "Laborie", + "shortCode": "07" + }, + { + "name": "Micoud", + "shortCode": "08" + }, + { + "name": "Soufriere", + "shortCode": "10" + }, + { + "name": "Vieux Fort", + "shortCode": "11" + } + ], + "capital": "Castries", + "population": 167591, + "area": 617.012867, + "continent": "North America", + "officialName": "Saint Lucia", + "nativeName": "Saint Lucia", + "demonym": "Saint Lucian", + "languages": [ + "English" + ], + "tld": [ + ".lc" + ], + "borders": [ + "VE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Saint Martin", + "countryShortCode": "MF", + "phoneCode": "+590", + "currencyCode": "EUR", + "latitude": "18.08333333", + "longitude": "-63.95000000", + "timezones": [ + { + "zoneName": "America/Marigot", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Saint Martin" + } + ], + "capital": "Marigot", + "population": 32358, + "area": 53.2, + "continent": "North America", + "nativeName": "Collectivité de Saint-Martin", + "demonym": "Saint-Martinois", + "languages": [ + "French" + ], + "tld": [ + ".mf" + ], + "borders": [ + "SX" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Saint Pierre and Miquelon", + "countryShortCode": "PM", + "phoneCode": "+508", + "currencyCode": "EUR", + "latitude": "46.83333333", + "longitude": "-56.33333333", + "timezones": [ + { + "zoneName": "America/Miquelon", + "gmtOffset": -10800, + "gmtOffsetName": "UTC-03:00", + "abbreviation": "PMDT", + "tzName": "Pierre & Miquelon Daylight Time" + } + ], + "regions": [ + { + "name": "Miquelon" + }, + { + "name": "Saint Pierre" + } + ], + "capital": "Saint-Pierre", + "population": 5974, + "area": 242, + "continent": "North America", + "nativeName": "Saint-Pierre-et-Miquelon", + "languages": [ + "French" + ], + "tld": [ + ".pm", + ".fr" + ], + "borders": [ + "CA" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Saint Vincent and the Grenadines", + "countryShortCode": "VC", + "phoneCode": "+1784", + "currencyCode": "XCD", + "latitude": "13.25000000", + "longitude": "-61.20000000", + "timezones": [ + { + "zoneName": "America/St_Vincent", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Charlotte", + "shortCode": "01" + }, + { + "name": "Grenadines", + "shortCode": "06" + }, + { + "name": "Saint Andrew", + "shortCode": "02" + }, + { + "name": "Saint David", + "shortCode": "03" + }, + { + "name": "Saint George", + "shortCode": "04" + }, + { + "name": "Saint Patrick", + "shortCode": "05" + } + ], + "capital": "Kingstown", + "population": 100804, + "area": 389, + "continent": "North America", + "officialName": "Saint Vincent and the Grenadines", + "nativeName": "Saint Vincent and the Grenadines", + "demonym": "Saint Vincentian", + "languages": [ + "English" + ], + "tld": [ + ".vc" + ], + "borders": [ + "VE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Samoa", + "countryShortCode": "WS", + "phoneCode": "+685", + "currencyCode": "WST", + "latitude": "-13.58333333", + "longitude": "-172.33333333", + "timezones": [ + { + "zoneName": "Pacific/Apia", + "gmtOffset": 50400, + "gmtOffsetName": "UTC+14:00", + "abbreviation": "WST", + "tzName": "West Samoa Time" + } + ], + "regions": [ + { + "name": "A'ana", + "shortCode": "AA" + }, + { + "name": "Aiga-i-le-Tai", + "shortCode": "AL" + }, + { + "name": "Atua", + "shortCode": "AT" + }, + { + "name": "Fa'asaleleaga", + "shortCode": "FA" + }, + { + "name": "Gaga'emauga", + "shortCode": "GE" + }, + { + "name": "Gagaifomauga", + "shortCode": "GI" + }, + { + "name": "Palauli", + "shortCode": "PA" + }, + { + "name": "Satupa'itea", + "shortCode": "SA" + }, + { + "name": "Tuamasaga", + "shortCode": "TU" + }, + { + "name": "Va'a-o-Fonoti", + "shortCode": "VF" + }, + { + "name": "Vaisigano", + "shortCode": "VS" + } + ], + "capital": "Apia", + "population": 200010, + "area": 2842, + "continent": "Oceania", + "officialName": "Western Samoa", + "nativeName": "Western Samoa", + "demonym": "Samoan", + "languages": [ + "English", + "Samoan" + ], + "tld": [ + ".ws" + ], + "borders": [ + "US" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "San Marino", + "countryShortCode": "SM", + "phoneCode": "+378", + "currencyCode": "EUR", + "latitude": "43.76666666", + "longitude": "12.41666666", + "timezones": [ + { + "zoneName": "Europe/San_Marino", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Acquaviva", + "shortCode": "01" + }, + { + "name": "Borgo Maggiore", + "shortCode": "06" + }, + { + "name": "Chiesanuova", + "shortCode": "02" + }, + { + "name": "Domagnano", + "shortCode": "03" + }, + { + "name": "Faetano", + "shortCode": "04" + }, + { + "name": "Fiorentino", + "shortCode": "05" + }, + { + "name": "Montegiardino", + "shortCode": "08" + }, + { + "name": "San Marino", + "shortCode": "07" + }, + { + "name": "Serravalle", + "shortCode": "09" + } + ], + "capital": "San Marino", + "population": 33600, + "area": 61.2, + "continent": "Europe", + "nativeName": "San Marco", + "demonym": "Sammarinese", + "languages": [ + "Italian" + ], + "tld": [ + ".sm" + ], + "borders": [ + "IT" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Sao Tome and Principe", + "countryShortCode": "ST", + "phoneCode": "+239", + "currencyCode": "STD", + "latitude": "1.00000000", + "longitude": "7.00000000", + "timezones": [ + { + "zoneName": "Africa/Sao_Tome", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Principe", + "shortCode": "P" + }, + { + "name": "Sao Tome", + "shortCode": "S" + } + ], + "capital": "São Tomé", + "population": 204327, + "area": 1001, + "continent": "Africa", + "nativeName": "República Democrática de São Tomé e Príncipe", + "demonym": "São Toméans", + "languages": [ + "Portuguese" + ], + "tld": [ + ".st" + ], + "borders": [ + "GQ", + "GA", + "NG" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Saudi Arabia", + "countryShortCode": "SA", + "phoneCode": "+966", + "currencyCode": "SAR", + "latitude": "25.00000000", + "longitude": "45.00000000", + "timezones": [ + { + "zoneName": "Asia/Riyadh", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "AST", + "tzName": "Arabia Standard Time" + } + ], + "regions": [ + { + "name": "'Asir", + "shortCode": "14" + }, + { + "name": "Al Bahah", + "shortCode": "11" + }, + { + "name": "Al Hudud ash Shamaliyah", + "shortCode": "08" + }, + { + "name": "Al Jawf", + "shortCode": "12" + }, + { + "name": "Al Madinah al Munawwarah", + "shortCode": "03" + }, + { + "name": "Al Qasim", + "shortCode": "05" + }, + { + "name": "Ar Riyad", + "shortCode": "01" + }, + { + "name": "Ash Sharqiyah", + "shortCode": "04" + }, + { + "name": "Ha'il", + "shortCode": "06" + }, + { + "name": "Jazan", + "shortCode": "09" + }, + { + "name": "Makkah al Mukarramah", + "shortCode": "02" + }, + { + "name": "Najran", + "shortCode": "10" + }, + { + "name": "Tabuk", + "shortCode": "07" + } + ], + "capital": "Riyadh", + "population": 33000000, + "area": 2250000, + "continent": "Asia", + "nativeName": "Saudi Arabia", + "languages": [ + "Arabic" + ], + "tld": [ + "AlSaudiah", + ".sa" + ], + "borders": [ + "EG", + "BH", + "IR", + "IQ", + "YE", + "JO", + "KW", + "OM", + "QA", + "AE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Senegal", + "countryShortCode": "SN", + "phoneCode": "+221", + "currencyCode": "XOF", + "latitude": "14.00000000", + "longitude": "-14.00000000", + "timezones": [ + { + "zoneName": "Africa/Dakar", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Dakar", + "shortCode": "DK" + }, + { + "name": "Diourbel", + "shortCode": "DB" + }, + { + "name": "Fatick", + "shortCode": "FK" + }, + { + "name": "Kaffrine", + "shortCode": "KA" + }, + { + "name": "Kaolack", + "shortCode": "KL" + }, + { + "name": "Kedougou", + "shortCode": "KE" + }, + { + "name": "Kolda", + "shortCode": "KD" + }, + { + "name": "Louga", + "shortCode": "LG" + }, + { + "name": "Matam", + "shortCode": "MT" + }, + { + "name": "Saint-Louis", + "shortCode": "SL" + }, + { + "name": "Sedhiou", + "shortCode": "SE" + }, + { + "name": "Tambacounda", + "shortCode": "TC" + }, + { + "name": "Thies", + "shortCode": "TH" + }, + { + "name": "Ziguinchor", + "shortCode": "ZG" + } + ], + "capital": "Dakar", + "population": 16876720, + "area": 196722, + "continent": "Africa", + "nativeName": "Senegaal", + "demonym": "Senegalese", + "languages": [ + "French", + "Balanta", + "Badyara", + "Wolof" + ], + "tld": [ + ".sn" + ], + "borders": [ + "ML", + "GM", + "GN", + "GW", + "MR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Serbia", + "countryShortCode": "RS", + "phoneCode": "+381", + "currencyCode": "RSD", + "latitude": "44.00000000", + "longitude": "21.00000000", + "timezones": [ + { + "zoneName": "Europe/Belgrade", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Beograd (Belgrade)", + "shortCode": "00" + }, + { + "name": "Borski", + "shortCode": "14" + }, + { + "name": "Braničevski", + "shortCode": "11" + }, + { + "name": "Jablanički", + "shortCode": "23" + }, + { + "name": "Južnobački", + "shortCode": "06" + }, + { + "name": "Južnobanatski", + "shortCode": "04" + }, + { + "name": "Kolubarski", + "shortCode": "09" + }, + { + "name": "Kosovski", + "shortCode": "25" + }, + { + "name": "Kosovsko-Mitrovački", + "shortCode": "28" + }, + { + "name": "Kosovsko-Pomoravski", + "shortCode": "29" + }, + { + "name": "Mačvanski", + "shortCode": "08" + }, + { + "name": "Moravički", + "shortCode": "17" + }, + { + "name": "Nišavski", + "shortCode": "20" + }, + { + "name": "Pčinjski", + "shortCode": "24" + }, + { + "name": "Pećki", + "shortCode": "26" + }, + { + "name": "Pirotski", + "shortCode": "22" + }, + { + "name": "Podunavski", + "shortCode": "10" + }, + { + "name": "Pomoravski", + "shortCode": "13" + }, + { + "name": "Prizrenski", + "shortCode": "27" + }, + { + "name": "Rasinski", + "shortCode": "19" + }, + { + "name": "Raški", + "shortCode": "18" + }, + { + "name": "Severnobački", + "shortCode": "01" + }, + { + "name": "Severnobanatski", + "shortCode": "03" + }, + { + "name": "Srednjebanatski", + "shortCode": "02" + }, + { + "name": "Sremski", + "shortCode": "07" + }, + { + "name": "Šumadijski", + "shortCode": "12" + }, + { + "name": "Toplički", + "shortCode": "21" + }, + { + "name": "Zaječarski", + "shortCode": "15" + }, + { + "name": "Zapadnobački", + "shortCode": "05" + }, + { + "name": "Zlatiborski", + "shortCode": "16" + } + ], + "capital": "Belgrade", + "population": 6605168, + "area": 88499, + "continent": "Europe", + "nativeName": "Србија", + "demonym": "Serbian", + "languages": [ + "Serbian" + ], + "tld": [ + ".rs", + ".срб" + ], + "borders": [ + "HU", + "RO", + "BG", + "MK", + "AL", + "HR", + "BA", + "ME", + "XK" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Seychelles", + "countryShortCode": "SC", + "phoneCode": "+248", + "currencyCode": "SCR", + "latitude": "-4.58333333", + "longitude": "55.66666666", + "timezones": [ + { + "zoneName": "Indian/Mahe", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "SCT", + "tzName": "Seychelles Time" + } + ], + "regions": [ + { + "name": "Anse aux Pins", + "shortCode": "01" + }, + { + "name": "Anse Boileau", + "shortCode": "02" + }, + { + "name": "Anse Etoile", + "shortCode": "03" + }, + { + "name": "Anse Royale", + "shortCode": "05" + }, + { + "name": "Anu Cap", + "shortCode": "04" + }, + { + "name": "Baie Lazare", + "shortCode": "06" + }, + { + "name": "Baie Sainte Anne", + "shortCode": "07" + }, + { + "name": "Beau Vallon", + "shortCode": "08" + }, + { + "name": "Bel Air", + "shortCode": "09" + }, + { + "name": "Bel Ombre", + "shortCode": "10" + }, + { + "name": "Cascade", + "shortCode": "11" + }, + { + "name": "Glacis", + "shortCode": "12" + }, + { + "name": "Grand'Anse Mahe", + "shortCode": "13" + }, + { + "name": "Grand'Anse Praslin", + "shortCode": "14" + }, + { + "name": "La Digue", + "shortCode": "15" + }, + { + "name": "La Riviere Anglaise", + "shortCode": "16" + }, + { + "name": "Les Mamelles", + "shortCode": "24" + }, + { + "name": "Mont Buxton", + "shortCode": "17" + }, + { + "name": "Mont Fleuri", + "shortCode": "18" + }, + { + "name": "Plaisance", + "shortCode": "19" + }, + { + "name": "Pointe La Rue", + "shortCode": "20" + }, + { + "name": "Port Glaud", + "shortCode": "21" + }, + { + "name": "Roche Caiman", + "shortCode": "25" + }, + { + "name": "Saint Louis", + "shortCode": "22" + }, + { + "name": "Takamaka", + "shortCode": "23" + } + ], + "capital": "Victoria", + "population": 119773, + "area": 459, + "continent": "Africa", + "officialName": "Seychelles", + "nativeName": "République des Seychelles", + "demonym": "Seychelloise", + "languages": [ + "French", + "English", + "Seychellois Creole" + ], + "tld": [ + ".sc" + ], + "borders": [ + "FR", + "TZ", + "KM", + "MG", + "MU" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Sierra Leone", + "countryShortCode": "SL", + "phoneCode": "+232", + "currencyCode": "SLL", + "latitude": "8.50000000", + "longitude": "-11.50000000", + "timezones": [ + { + "zoneName": "Africa/Freetown", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Eastern", + "shortCode": "E" + }, + { + "name": "Northern", + "shortCode": "N" + }, + { + "name": "Southern", + "shortCode": "S" + }, + { + "name": "Western", + "shortCode": "W" + } + ], + "capital": "Freetown", + "population": 7557212, + "area": 71740, + "continent": "Africa", + "officialName": "Sierra Leone", + "nativeName": "Republic of Sierra Leone", + "demonym": "Sierra Leonean", + "languages": [ + "English", + "Krio" + ], + "tld": [ + ".sl" + ], + "borders": [ + "GN", + "LR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Singapore", + "countryShortCode": "SG", + "phoneCode": "+65", + "currencyCode": "SGD", + "latitude": "1.36666666", + "longitude": "103.80000000", + "timezones": [ + { + "zoneName": "Asia/Singapore", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "SGT", + "tzName": "Singapore Time" + } + ], + "regions": [ + { + "name": "Central Singapore", + "shortCode": "01" + }, + { + "name": "North East", + "shortCode": "02" + }, + { + "name": "North West", + "shortCode": "03" + }, + { + "name": "South East", + "shortCode": "04" + }, + { + "name": "South West", + "shortCode": "05" + } + ], + "capital": "Singapore", + "population": 5866139, + "area": 719.1, + "continent": "Asia", + "officialName": "Republic of Singapore", + "nativeName": "Republic of Singapore", + "demonym": "Singaporean", + "languages": [ + "English", + "Tamil", + "Malay", + "Standard Chinese" + ], + "tld": [ + ".sg" + ], + "borders": [ + "ID", + "MY" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Sint Maarten (Dutch part)", + "countryShortCode": "SX", + "phoneCode": "+1721", + "currencyCode": "ANG", + "latitude": "18.03333300", + "longitude": "-63.05000000", + "timezones": [ + { + "zoneName": "America/Anguilla", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Sint Maarten" + } + ], + "capital": "Philipsburg", + "population": 43847, + "area": 34, + "continent": "North America", + "officialName": "Sint Maarten", + "nativeName": "Sint Maarten", + "demonym": "St. Maartener", + "languages": [ + "English", + "Dutch" + ], + "tld": [ + ".sx" + ], + "borders": [ + "FR", + "MF" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Slovakia", + "countryShortCode": "SK", + "phoneCode": "+421", + "currencyCode": "EUR", + "latitude": "48.66666666", + "longitude": "19.50000000", + "timezones": [ + { + "zoneName": "Europe/Bratislava", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Banskobystricky", + "shortCode": "BC" + }, + { + "name": "Bratislavsky", + "shortCode": "BL" + }, + { + "name": "Kosicky", + "shortCode": "KI" + }, + { + "name": "Nitriansky", + "shortCode": "NI" + }, + { + "name": "Presovsky", + "shortCode": "PV" + }, + { + "name": "Trenciansky", + "shortCode": "TC" + }, + { + "name": "Trnavsky", + "shortCode": "TA" + }, + { + "name": "Zilinsky", + "shortCode": "ZI" + } + ], + "capital": "Bratislava", + "population": 5409407, + "area": 49033.720839, + "continent": "Europe", + "nativeName": "Slovenská republika", + "demonym": "Slovak", + "languages": [ + "Slovak" + ], + "tld": [ + ".sk" + ], + "borders": [ + "HU", + "PL", + "AT", + "UA", + "CZ" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Slovenia", + "countryShortCode": "SI", + "phoneCode": "+386", + "currencyCode": "EUR", + "latitude": "46.11666666", + "longitude": "14.81666666", + "timezones": [ + { + "zoneName": "Europe/Ljubljana", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Ajdovscina", + "shortCode": "001" + }, + { + "name": "Apace", + "shortCode": "195" + }, + { + "name": "Beltinci", + "shortCode": "002" + }, + { + "name": "Benedikt", + "shortCode": "148" + }, + { + "name": "Bistrica ob Sotli", + "shortCode": "149" + }, + { + "name": "Bled", + "shortCode": "003" + }, + { + "name": "Bloke", + "shortCode": "150" + }, + { + "name": "Bohinj", + "shortCode": "004" + }, + { + "name": "Borovnica", + "shortCode": "005" + }, + { + "name": "Bovec", + "shortCode": "006" + }, + { + "name": "Braslovce", + "shortCode": "151" + }, + { + "name": "Brda", + "shortCode": "007" + }, + { + "name": "Brezice", + "shortCode": "009" + }, + { + "name": "Brezovica", + "shortCode": "008" + }, + { + "name": "Cankova", + "shortCode": "152" + }, + { + "name": "Celje", + "shortCode": "011" + }, + { + "name": "Cerklje na Gorenjskem", + "shortCode": "012" + }, + { + "name": "Cerknica", + "shortCode": "013" + }, + { + "name": "Cerkno", + "shortCode": "014" + }, + { + "name": "Cerkvenjak", + "shortCode": "153" + }, + { + "name": "Cirkulane", + "shortCode": "196" + }, + { + "name": "Crensovci", + "shortCode": "015" + }, + { + "name": "Crna na Koroskem", + "shortCode": "016" + }, + { + "name": "Crnomelj", + "shortCode": "017" + }, + { + "name": "Destrnik", + "shortCode": "018" + }, + { + "name": "Divaca", + "shortCode": "019" + }, + { + "name": "Dobje", + "shortCode": "154" + }, + { + "name": "Dobrepolje", + "shortCode": "020" + }, + { + "name": "Dobrna", + "shortCode": "155" + }, + { + "name": "Dobrova-Polhov Gradec", + "shortCode": "021" + }, + { + "name": "Dobrovnik", + "shortCode": "156" + }, + { + "name": "Dol pri Ljubljani", + "shortCode": "022" + }, + { + "name": "Dolenjske Toplice", + "shortCode": "157" + }, + { + "name": "Domzale", + "shortCode": "023" + }, + { + "name": "Dornava", + "shortCode": "024" + }, + { + "name": "Dravograd", + "shortCode": "025" + }, + { + "name": "Duplek", + "shortCode": "026" + }, + { + "name": "Gorenja Vas-Poljane", + "shortCode": "027" + }, + { + "name": "Gorisnica", + "shortCode": "028" + }, + { + "name": "Gorje", + "shortCode": "207" + }, + { + "name": "Gornja Radgona", + "shortCode": "029" + }, + { + "name": "Gornji Grad", + "shortCode": "030" + }, + { + "name": "Gornji Petrovci", + "shortCode": "031" + }, + { + "name": "Grad", + "shortCode": "158" + }, + { + "name": "Grosuplje", + "shortCode": "032" + }, + { + "name": "Hajdina", + "shortCode": "159" + }, + { + "name": "Hoce-Slivnica", + "shortCode": "160" + }, + { + "name": "Hodos", + "shortCode": "161" + }, + { + "name": "Horjul", + "shortCode": "162" + }, + { + "name": "Hrastnik", + "shortCode": "034" + }, + { + "name": "Hrpelje-Kozina", + "shortCode": "035" + }, + { + "name": "Idrija", + "shortCode": "036" + }, + { + "name": "Ig", + "shortCode": "037" + }, + { + "name": "Ilirska Bistrica", + "shortCode": "038" + }, + { + "name": "Ivancna Gorica", + "shortCode": "039" + }, + { + "name": "Izola", + "shortCode": "040s" + }, + { + "name": "Jesenice", + "shortCode": "041" + }, + { + "name": "Jursinci", + "shortCode": "042" + }, + { + "name": "Kamnik", + "shortCode": "043" + }, + { + "name": "Kanal", + "shortCode": "044" + }, + { + "name": "Kidricevo", + "shortCode": "045" + }, + { + "name": "Kobarid", + "shortCode": "046" + }, + { + "name": "Kobilje", + "shortCode": "047" + }, + { + "name": "Kocevje", + "shortCode": "048" + }, + { + "name": "Komen", + "shortCode": "049" + }, + { + "name": "Komenda", + "shortCode": "164" + }, + { + "name": "Koper", + "shortCode": "050" + }, + { + "name": "Kodanjevica na Krki", + "shortCode": "197" + }, + { + "name": "Kostel", + "shortCode": "165" + }, + { + "name": "Kozje", + "shortCode": "051" + }, + { + "name": "Kranj", + "shortCode": "052" + }, + { + "name": "Kranjska Gora", + "shortCode": "053" + }, + { + "name": "Krizevci", + "shortCode": "166" + }, + { + "name": "Krsko", + "shortCode": "054" + }, + { + "name": "Kungota", + "shortCode": "055" + }, + { + "name": "Kuzma", + "shortCode": "056" + }, + { + "name": "Lasko", + "shortCode": "057" + }, + { + "name": "Lenart", + "shortCode": "058" + }, + { + "name": "Lendava", + "shortCode": "059" + }, + { + "name": "Litija", + "shortCode": "068" + }, + { + "name": "Ljubljana", + "shortCode": "061" + }, + { + "name": "Ljubno", + "shortCode": "062" + }, + { + "name": "Ljutomer", + "shortCode": "063" + }, + { + "name": "Log-Dragomer", + "shortCode": "208" + }, + { + "name": "Logatec", + "shortCode": "064" + }, + { + "name": "Loska Dolina", + "shortCode": "065" + }, + { + "name": "Loski Potok", + "shortCode": "066" + }, + { + "name": "Lovrenc na Pohorju", + "shortCode": "167" + }, + { + "name": "Lukovica", + "shortCode": "068" + }, + { + "name": "Luce", + "shortCode": "067" + }, + { + "name": "Majsperk", + "shortCode": "069" + }, + { + "name": "Makole", + "shortCode": "198" + }, + { + "name": "Maribor", + "shortCode": "070" + }, + { + "name": "Markovci", + "shortCode": "168" + }, + { + "name": "Medvode", + "shortCode": "071" + }, + { + "name": "Menges", + "shortCode": "072" + }, + { + "name": "Metlika", + "shortCode": "073" + }, + { + "name": "Mezica", + "shortCode": "074" + }, + { + "name": "Miklavz na Dravskem Polju", + "shortCode": "169" + }, + { + "name": "Miren-Kostanjevica", + "shortCode": "075" + }, + { + "name": "Mirna", + "shortCode": "212" + }, + { + "name": "Mirna Pec", + "shortCode": "170" + }, + { + "name": "Mislinja", + "shortCode": "076" + }, + { + "name": "Mokronog-Trebelno", + "shortCode": "199" + }, + { + "name": "Moravce", + "shortCode": "077" + }, + { + "name": "Moravske Toplice", + "shortCode": "078" + }, + { + "name": "Mozirje", + "shortCode": "079" + }, + { + "name": "Murska Sobota", + "shortCode": "080" + }, + { + "name": "Naklo", + "shortCode": "082" + }, + { + "name": "Nazarje", + "shortCode": "083" + }, + { + "name": "Nova Gorica", + "shortCode": "084" + }, + { + "name": "Novo Mesto", + "shortCode": "085" + }, + { + "name": "Odranci", + "shortCode": "086" + }, + { + "name": "Ormoz", + "shortCode": "087" + }, + { + "name": "Osilnica", + "shortCode": "088" + }, + { + "name": "Pesnica", + "shortCode": "089" + }, + { + "name": "Piran", + "shortCode": "090" + }, + { + "name": "Pivka", + "shortCode": "091" + }, + { + "name": "Podcetrtek", + "shortCode": "092" + }, + { + "name": "Podlehnik", + "shortCode": "172" + }, + { + "name": "Podvelka", + "shortCode": "093" + }, + { + "name": "Poljcane", + "shortCode": "200" + }, + { + "name": "Postojna", + "shortCode": "094" + }, + { + "name": "Prebold", + "shortCode": "174" + }, + { + "name": "Preddvor", + "shortCode": "095" + }, + { + "name": "Prevalje", + "shortCode": "175" + }, + { + "name": "Ptuj", + "shortCode": "096" + }, + { + "name": "Race-Fram", + "shortCode": "098" + }, + { + "name": "Radece", + "shortCode": "099" + }, + { + "name": "Radenci", + "shortCode": "100" + }, + { + "name": "Radlje ob Dravi", + "shortCode": "101" + }, + { + "name": "Radovljica", + "shortCode": "102" + }, + { + "name": "Ravne na Koroskem", + "shortCode": "103" + }, + { + "name": "Razkrizje", + "shortCode": "176" + }, + { + "name": "Recica ob Savinji", + "shortCode": "209" + }, + { + "name": "Rence-Vogrsko", + "shortCode": "201" + }, + { + "name": "Ribnica", + "shortCode": "104" + }, + { + "name": "Ribnica na Poboriu", + "shortCode": "177" + }, + { + "name": "Rogaska Slatina", + "shortCode": "106" + }, + { + "name": "Rogasovci", + "shortCode": "105" + }, + { + "name": "Rogatec", + "shortCode": "107" + }, + { + "name": "Ruse", + "shortCode": "108" + }, + { + "name": "Salovci", + "shortCode": "033" + }, + { + "name": "Selnica ob Dravi", + "shortCode": "178" + }, + { + "name": "Semic", + "shortCode": "109" + }, + { + "name": "Sempeter-Vrtojba", + "shortCode": "183" + }, + { + "name": "Sencur", + "shortCode": "117" + }, + { + "name": "Sentilj", + "shortCode": "118" + }, + { + "name": "Sentjernej", + "shortCode": "119" + }, + { + "name": "Sentjur", + "shortCode": "120" + }, + { + "name": "Sentrupert", + "shortCode": "211" + }, + { + "name": "Sevnica", + "shortCode": "110" + }, + { + "name": "Sezana", + "shortCode": "111" + }, + { + "name": "Skocjan", + "shortCode": "121" + }, + { + "name": "Skofja Loka", + "shortCode": "122" + }, + { + "name": "Skofljica", + "shortCode": "123" + }, + { + "name": "Slovenj Gradec", + "shortCode": "112" + }, + { + "name": "Slovenska Bistrica", + "shortCode": "113" + }, + { + "name": "Slovenske Konjice", + "shortCode": "114" + }, + { + "name": "Smarje pri elsah", + "shortCode": "124" + }, + { + "name": "Smarjeske Toplice", + "shortCode": "206" + }, + { + "name": "Smartno ob Paki", + "shortCode": "125" + }, + { + "name": "Smartno pri Litiji", + "shortCode": "194" + }, + { + "name": "Sodrazica", + "shortCode": "179" + }, + { + "name": "Solcava", + "shortCode": "180" + }, + { + "name": "Sostanj", + "shortCode": "126" + }, + { + "name": "Sredisce ob Dravi", + "shortCode": "202" + }, + { + "name": "Starse", + "shortCode": "115" + }, + { + "name": "Store", + "shortCode": "127" + }, + { + "name": "Straza", + "shortCode": "203" + }, + { + "name": "Sveta Ana", + "shortCode": "181" + }, + { + "name": "Sveta Trojica v Slovenskih Goricah", + "shortCode": "204" + }, + { + "name": "Sveta Andraz v Slovenskih Goricah", + "shortCode": "182" + }, + { + "name": "Sveti Jurij", + "shortCode": "116" + }, + { + "name": "Sveti Jurij v Slovenskih Goricah", + "shortCode": "210" + }, + { + "name": "Sveti Tomaz", + "shortCode": "205" + }, + { + "name": "Tabor", + "shortCode": "184" + }, + { + "name": "Tisina", + "shortCode": "128" + }, + { + "name": "Tolmin", + "shortCode": "128" + }, + { + "name": "Trbovlje", + "shortCode": "129" + }, + { + "name": "Trebnje", + "shortCode": "130" + }, + { + "name": "Trnovska Vas", + "shortCode": "185" + }, + { + "name": "Trzin", + "shortCode": "186" + }, + { + "name": "Trzic", + "shortCode": "131" + }, + { + "name": "Turnisce", + "shortCode": "132" + }, + { + "name": "Velenje", + "shortCode": "133" + }, + { + "name": "Velika Polana", + "shortCode": "187" + }, + { + "name": "Velike Lasce", + "shortCode": "134" + }, + { + "name": "Verzej", + "shortCode": "188" + }, + { + "name": "Videm", + "shortCode": "135" + }, + { + "name": "Vipava", + "shortCode": "136" + }, + { + "name": "Vitanje", + "shortCode": "137" + }, + { + "name": "Vodice", + "shortCode": "138" + }, + { + "name": "Vojnik", + "shortCode": "139" + }, + { + "name": "Vransko", + "shortCode": "189" + }, + { + "name": "Vrhnika", + "shortCode": "140" + }, + { + "name": "Vuzenica", + "shortCode": "141" + }, + { + "name": "Zagorje ob Savi", + "shortCode": "142" + }, + { + "name": "Zavrc", + "shortCode": "143" + }, + { + "name": "Zrece", + "shortCode": "144" + }, + { + "name": "Zalec", + "shortCode": "190" + }, + { + "name": "Zelezniki", + "shortCode": "146" + }, + { + "name": "Zetale", + "shortCode": "191" + }, + { + "name": "Ziri", + "shortCode": "147" + }, + { + "name": "Zirovnica", + "shortCode": "192" + }, + { + "name": "Zuzemberk", + "shortCode": "193" + } + ], + "capital": "Ljubljana", + "population": 2116972, + "area": 20271, + "continent": "Europe", + "nativeName": "Slovenija", + "demonym": "Slovenian", + "languages": [ + "Slovene" + ], + "tld": [ + ".si" + ], + "borders": [ + "HU", + "IT", + "AT", + "HR" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Solomon Islands", + "countryShortCode": "SB", + "phoneCode": "+677", + "currencyCode": "SBD", + "latitude": "-8.00000000", + "longitude": "159.00000000", + "timezones": [ + { + "zoneName": "Pacific/Guadalcanal", + "gmtOffset": 39600, + "gmtOffsetName": "UTC+11:00", + "abbreviation": "SBT", + "tzName": "Solomon Islands Time" + } + ], + "regions": [ + { + "name": "Central", + "shortCode": "CE" + }, + { + "name": "Choiseul", + "shortCode": "CH" + }, + { + "name": "Guadalcanal", + "shortCode": "GU" + }, + { + "name": "Honiara", + "shortCode": "CT" + }, + { + "name": "Isabel", + "shortCode": "IS" + }, + { + "name": "Makira-Ulawa", + "shortCode": "MK" + }, + { + "name": "Malaita", + "shortCode": "ML" + }, + { + "name": "Rennell and Bellona", + "shortCode": "RB" + }, + { + "name": "Temotu", + "shortCode": "TE" + }, + { + "name": "Western", + "shortCode": "WE" + } + ], + "capital": "Honiara", + "population": 611343, + "area": 28400, + "continent": "Oceania", + "officialName": "Solomon Islands", + "nativeName": "Solomon Islands", + "demonym": "Solomon Islander", + "languages": [ + "English" + ], + "tld": [ + ".sb" + ], + "borders": [ + "FR", + "AU", + "VU", + "PG", + "FJ" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Somalia", + "countryShortCode": "SO", + "phoneCode": "+252", + "currencyCode": "SOS", + "latitude": "10.00000000", + "longitude": "49.00000000", + "timezones": [ + { + "zoneName": "Africa/Mogadishu", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EAT", + "tzName": "East Africa Time" + } + ], + "regions": [ + { + "name": "Awdal", + "shortCode": "AW" + }, + { + "name": "Bakool", + "shortCode": "BK" + }, + { + "name": "Banaadir", + "shortCode": "BN" + }, + { + "name": "Bari", + "shortCode": "BR" + }, + { + "name": "Bay", + "shortCode": "BY" + }, + { + "name": "Galguduud", + "shortCode": "GA" + }, + { + "name": "Gedo", + "shortCode": "GE" + }, + { + "name": "Hiiraan", + "shortCode": "HI" + }, + { + "name": "Jubbada Dhexe", + "shortCode": "JD" + }, + { + "name": "Jubbada Hoose", + "shortCode": "JH" + }, + { + "name": "Mudug", + "shortCode": "MU" + }, + { + "name": "Nugaal", + "shortCode": "NU" + }, + { + "name": "Sanaag", + "shortCode": "SA" + }, + { + "name": "Shabeellaha Dhexe", + "shortCode": "SD" + }, + { + "name": "Shabeellaha Hoose", + "shortCode": "SH" + }, + { + "name": "Sool", + "shortCode": "SO" + }, + { + "name": "Togdheer", + "shortCode": "TO" + }, + { + "name": "Woqooyi Galbeed", + "shortCode": "WO" + } + ], + "capital": "Mogadishu", + "population": 11031386, + "area": 637657, + "continent": "Africa", + "officialName": "Federal Republic of Somalia", + "nativeName": "جمهورية الصومال الفدرالية", + "demonym": "Somalian", + "languages": [ + "Arabic", + "Somali" + ], + "tld": [ + ".so" + ], + "borders": [ + "KE", + "ET", + "DJ" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "South Africa", + "countryShortCode": "ZA", + "phoneCode": "+27", + "currencyCode": "ZAR", + "latitude": "-29.00000000", + "longitude": "24.00000000", + "timezones": [ + { + "zoneName": "Africa/Johannesburg", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "SAST", + "tzName": "South African Standard Time" + } + ], + "regions": [ + { + "name": "Eastern Cape", + "shortCode": "EC" + }, + { + "name": "Free State", + "shortCode": "FS" + }, + { + "name": "Gauteng", + "shortCode": "GT" + }, + { + "name": "KwaZulu-Natal", + "shortCode": "NL" + }, + { + "name": "Limpopo", + "shortCode": "LP" + }, + { + "name": "Mpumalanga", + "shortCode": "MP" + }, + { + "name": "Northern Cape", + "shortCode": "NC" + }, + { + "name": "North West", + "shortCode": "NW" + }, + { + "name": "Western Cape", + "shortCode": "WC" + } + ], + "capital": "Cape Town", + "population": 62027503, + "area": 1221037, + "continent": "Africa", + "officialName": "Republic of South Africa", + "nativeName": "South Africa", + "demonym": "South African", + "languages": [ + "English", + "Zulu", + "Xhosa", + "Afrikaans", + "Swazi", + "Northern Sotho", + "Venda", + "Tswana", + "Southern Ndebele", + "Tsonga", + "Sesotho", + "South African Sign Language" + ], + "tld": [ + ".za" + ], + "borders": [ + "ZW", + "BW", + "LS", + "MZ", + "NA", + "SZ" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "South Georgia and South Sandwich Islands", + "countryShortCode": "GS", + "phoneCode": "+500", + "currencyCode": "GBP", + "latitude": "-54.50000000", + "longitude": "-37.00000000", + "timezones": [ + { + "zoneName": "Atlantic/South_Georgia", + "gmtOffset": -7200, + "gmtOffsetName": "UTC-02:00", + "abbreviation": "GST", + "tzName": "South Georgia and the South Sandwich Islands Time" + } + ], + "regions": [ + { + "name": "Bird Island" + }, + { + "name": "Bristol Island" + }, + { + "name": "Clerke Rocks" + }, + { + "name": "Montagu Island" + }, + { + "name": "Saunders Island" + }, + { + "name": "South Georgia" + }, + { + "name": "Southern Thule" + }, + { + "name": "Traversay Islands" + } + ], + "capital": "King Edward Point", + "population": 35, + "area": 4066, + "continent": "South America", + "officialName": "South Georgia and the South Sandwich Islands", + "nativeName": "South Georgia and the South Sandwich Islands", + "demonym": "South Sandwich Islander", + "languages": [ + "English" + ], + "tld": [ + ".gs" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "South Sudan", + "countryShortCode": "SS", + "phoneCode": "+211", + "currencyCode": "SSP", + "latitude": "7.00000000", + "longitude": "30.00000000", + "timezones": [ + { + "zoneName": "Africa/Juba", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EAT", + "tzName": "East Africa Time" + } + ], + "regions": [ + { + "name": "Central Equatoria", + "shortCode": "CE" + }, + { + "name": "Eastern Equatoria", + "shortCode": "EE" + }, + { + "name": "Jonglei", + "shortCode": "JG" + }, + { + "name": "Lakes", + "shortCode": "LK" + }, + { + "name": "Northern Bahr el Ghazal", + "shortCode": "BN" + }, + { + "name": "Unity", + "shortCode": "UY" + }, + { + "name": "Upper Nile", + "shortCode": "NU" + }, + { + "name": "Warrap", + "shortCode": "WR" + }, + { + "name": "Western Bahr el Ghazal", + "shortCode": "BW" + }, + { + "name": "Western Equatoria", + "shortCode": "EW" + } + ], + "capital": "Juba", + "population": 12575714, + "area": 644329, + "continent": "Africa", + "officialName": "Republic of South Sudan", + "nativeName": "South Sudan", + "demonym": "South Sudanese", + "languages": [ + "English" + ], + "tld": [ + ".ss" + ], + "borders": [ + "KE", + "ET", + "CF", + "CD", + "UG", + "SD" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Spain", + "countryShortCode": "ES", + "phoneCode": "+34", + "currencyCode": "EUR", + "latitude": "40.00000000", + "longitude": "-4.00000000", + "timezones": [ + { + "zoneName": "Africa/Ceuta", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + }, + { + "zoneName": "Atlantic/Canary", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "WET", + "tzName": "Western European Time" + }, + { + "zoneName": "Europe/Madrid", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Albacete", + "shortCode": "CM" + }, + { + "name": "Alicante", + "shortCode": "VC" + }, + { + "name": "Almería", + "shortCode": "AN" + }, + { + "name": "Araba/Álava", + "shortCode": "VI" + }, + { + "name": "Asturias", + "shortCode": "O" + }, + { + "name": "Ávila", + "shortCode": "AV" + }, + { + "name": "Badajoz", + "shortCode": "BA" + }, + { + "name": "Barcelona", + "shortCode": "B" + }, + { + "name": "Bizkaia", + "shortCode": "BI" + }, + { + "name": "Burgos", + "shortCode": "BU" + }, + { + "name": "Cáceres", + "shortCode": "CC" + }, + { + "name": "Cádiz", + "shortCode": "CA" + }, + { + "name": "Cantabria", + "shortCode": "S" + }, + { + "name": "Castellón", + "shortCode": "CS" + }, + { + "name": "Cueta", + "shortCode": "CU" + }, + { + "name": "Ciudad Real", + "shortCode": "CR" + }, + { + "name": "Córdoba", + "shortCode": "CO" + }, + { + "name": "A Coruña", + "shortCode": "C" + }, + { + "name": "Cuenca", + "shortCode": "CU" + }, + { + "name": "Gipuzkoa", + "shortCode": "SS" + }, + { + "name": "Girona", + "shortCode": "GI" + }, + { + "name": "Granada", + "shortCode": "GR" + }, + { + "name": "Guadalajara", + "shortCode": "GU" + }, + { + "name": "Huelva", + "shortCode": "H" + }, + { + "name": "Huesca", + "shortCode": "HU" + }, + { + "name": "Illes Balears", + "shortCode": "PM" + }, + { + "name": "Jaén", + "shortCode": "J" + }, + { + "name": "León", + "shortCode": "LE" + }, + { + "name": "Lleida", + "shortCode": "L" + }, + { + "name": "Lugo", + "shortCode": "LU" + }, + { + "name": "Madrid", + "shortCode": "M" + }, + { + "name": "Málaga", + "shortCode": "MA" + }, + { + "name": "Melilla", + "shortCode": "ML" + }, + { + "name": "Murcia", + "shortCode": "MU" + }, + { + "name": "Navarre", + "shortCode": "NA" + }, + { + "name": "Ourense", + "shortCode": "OR" + }, + { + "name": "Palencia", + "shortCode": "P" + }, + { + "name": "Las Palmas", + "shortCode": "GC" + }, + { + "name": "Pontevedra", + "shortCode": "PO" + }, + { + "name": "La Rioja", + "shortCode": "LO" + }, + { + "name": "Salamanca", + "shortCode": "SA" + }, + { + "name": "Santa Cruz de Tenerife", + "shortCode": "TF" + }, + { + "name": "Segovia", + "shortCode": "SG" + }, + { + "name": "Sevilla", + "shortCode": "SE" + }, + { + "name": "Soria", + "shortCode": "SO" + }, + { + "name": "Tarragona", + "shortCode": "T" + }, + { + "name": "Teruel", + "shortCode": "TE" + }, + { + "name": "Toledo", + "shortCode": "TO" + }, + { + "name": "Valencia", + "shortCode": "V" + }, + { + "name": "Valladolid", + "shortCode": "VA" + }, + { + "name": "Zamora", + "shortCode": "ZA" + }, + { + "name": "Zaragoza", + "shortCode": "Z" + } + ], + "capital": "Madrid", + "population": 48592909, + "area": 505990, + "continent": "Europe", + "nativeName": "Reino de España", + "demonym": "Spaniard", + "languages": [ + "Spanish" + ], + "tld": [ + ".es" + ], + "borders": [ + "PT", + "FR", + "AD", + "MA", + "GI" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Sri Lanka", + "countryShortCode": "LK", + "phoneCode": "+94", + "currencyCode": "LKR", + "latitude": "7.00000000", + "longitude": "81.00000000", + "timezones": [ + { + "zoneName": "Asia/Colombo", + "gmtOffset": 19800, + "gmtOffsetName": "UTC+05:30", + "abbreviation": "IST", + "tzName": "Indian Standard Time" + } + ], + "regions": [ + { + "name": "Basnahira", + "shortCode": "1" + }, + { + "name": "Dakunu", + "shortCode": "3" + }, + { + "name": "Madhyama", + "shortCode": "2" + }, + { + "name": "Naegenahira", + "shortCode": "5" + }, + { + "name": "Sabaragamuwa", + "shortCode": "9" + }, + { + "name": "Uturu", + "shortCode": "4" + }, + { + "name": "Uturumaeda", + "shortCode": "7" + }, + { + "name": "Vayamba", + "shortCode": "6" + }, + { + "name": "Uva", + "shortCode": "8" + } + ], + "capital": "Sri Jayawardenepura Kotte", + "population": 22037000, + "area": 65610, + "continent": "Asia", + "nativeName": "ශ්රී ලංකා ප්රජාතාන්ත්රික සමාජවාදී ජනරජය", + "demonym": "Sri Lankan", + "languages": [ + "Tamil", + "Sinhala" + ], + "tld": [ + ".இலங்கை", + ".lk" + ], + "borders": [ + "IN" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Sudan", + "countryShortCode": "SD", + "phoneCode": "+249", + "currencyCode": "SDG", + "latitude": "15.00000000", + "longitude": "30.00000000", + "timezones": [ + { + "zoneName": "Africa/Khartoum", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EAT", + "tzName": "Eastern African Time" + } + ], + "regions": [ + { + "name": "Al Bahr al Ahmar", + "shortCode": "RS" + }, + { + "name": "Al Jazirah", + "shortCode": "GZ" + }, + { + "name": "Al Khartum", + "shortCode": "KH" + }, + { + "name": "Al Qadarif", + "shortCode": "GD" + }, + { + "name": "An Nil al Abyad", + "shortCode": "NW" + }, + { + "name": "An Nil al Azraq", + "shortCode": "NB" + }, + { + "name": "Ash Shamaliyah", + "shortCode": "NO" + }, + { + "name": "Gharb Darfur", + "shortCode": "DW" + }, + { + "name": "Gharb Kurdufan", + "shortCode": "GK" + }, + { + "name": "Janub Darfur", + "shortCode": "DS" + }, + { + "name": "Janub Kurdufan", + "shortCode": "KS" + }, + { + "name": "Kassala", + "shortCode": "KA" + }, + { + "name": "Nahr an Nil", + "shortCode": "NR" + }, + { + "name": "Shamal Darfur", + "shortCode": "DN" + }, + { + "name": "Sharq Darfur", + "shortCode": "DE" + }, + { + "name": "Shiamal Kurdufan", + "shortCode": "KN" + }, + { + "name": "Sinnar", + "shortCode": "SI" + }, + { + "name": "Wasat Darfur Zalinjay", + "shortCode": "DC" + } + ], + "capital": "Khartoum", + "population": 48945000, + "area": 1886068, + "continent": "Africa", + "officialName": "Sudan", + "nativeName": "السودان", + "demonym": "Sudanese", + "languages": [ + "English", + "Arabic" + ], + "tld": [ + ".sd" + ], + "borders": [ + "EG", + "KE", + "ET", + "TD", + "CF", + "SS", + "CD", + "ER", + "LY", + "UG" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Suriname", + "countryShortCode": "SR", + "phoneCode": "+597", + "currencyCode": "SRD", + "latitude": "4.00000000", + "longitude": "-56.00000000", + "timezones": [ + { + "zoneName": "America/Paramaribo", + "gmtOffset": -10800, + "gmtOffsetName": "UTC-03:00", + "abbreviation": "SRT", + "tzName": "Suriname Time" + } + ], + "regions": [ + { + "name": "Brokopondo", + "shortCode": "BR" + }, + { + "name": "Commewijne", + "shortCode": "CM" + }, + { + "name": "Coronie", + "shortCode": "CR" + }, + { + "name": "Marowijne", + "shortCode": "MA" + }, + { + "name": "Nickerie", + "shortCode": "NI" + }, + { + "name": "Para", + "shortCode": "PR" + }, + { + "name": "Paramaribo", + "shortCode": "PM" + }, + { + "name": "Saramacca", + "shortCode": "SA" + }, + { + "name": "Sipaliwini", + "shortCode": "SI" + }, + { + "name": "Wanica", + "shortCode": "WA" + } + ], + "capital": "Paramaribo", + "population": 563402, + "area": 163270, + "continent": "South America", + "nativeName": "Republiek Suriname", + "demonym": "Surinamese", + "languages": [ + "Dutch" + ], + "tld": [ + ".sr" + ], + "borders": [ + "FR", + "BR", + "GY" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Svalbard And Jan Mayen Islands", + "countryShortCode": "SJ", + "phoneCode": "+47", + "currencyCode": "NOK", + "latitude": "78.00000000", + "longitude": "20.00000000", + "timezones": [ + { + "zoneName": "Arctic/Longyearbyen", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [], + "population": 2905, + "area": 61399, + "continent": "Europe", + "languages": [ + "Norwegian" + ], + "tld": [ + ".sj" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Swaziland", + "countryShortCode": "SZ", + "phoneCode": "+268", + "currencyCode": "SZL", + "latitude": "-26.50000000", + "longitude": "31.50000000", + "timezones": [ + { + "zoneName": "Africa/Mbabane", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "SAST", + "tzName": "South African Standard Time" + } + ], + "regions": [ + { + "name": "Hhohho", + "shortCode": "HH" + }, + { + "name": "Lubombo", + "shortCode": "LU" + }, + { + "name": "Manzini", + "shortCode": "MA" + }, + { + "name": "Shiselweni", + "shortCode": "SH" + } + ], + "capital": "Lobamba", + "population": 1230506, + "area": 17364, + "continent": "Africa", + "officialName": "Kingdom of Eswatini", + "nativeName": "Umbuso weSwatini", + "demonym": "liSwati", + "languages": [ + "English", + "Swazi" + ], + "tld": [ + ".sz" + ], + "borders": [ + "ZA", + "MZ" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Sweden", + "countryShortCode": "SE", + "phoneCode": "+46", + "currencyCode": "SEK", + "latitude": "62.00000000", + "longitude": "15.00000000", + "timezones": [ + { + "zoneName": "Europe/Stockholm", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Blekinge", + "shortCode": "K" + }, + { + "name": "Dalarna", + "shortCode": "W" + }, + { + "name": "Gävleborg", + "shortCode": "X" + }, + { + "name": "Gotland", + "shortCode": "I" + }, + { + "name": "Halland", + "shortCode": "N" + }, + { + "name": "Jämtland", + "shortCode": "Z" + }, + { + "name": "Jönköping", + "shortCode": "F" + }, + { + "name": "Kalmar", + "shortCode": "H" + }, + { + "name": "Kronoberg", + "shortCode": "G" + }, + { + "name": "Norrbotten", + "shortCode": "BD" + }, + { + "name": "Örebro", + "shortCode": "T" + }, + { + "name": "Östergötland", + "shortCode": "E" + }, + { + "name": "Skåne", + "shortCode": "M" + }, + { + "name": "Södermanland", + "shortCode": "D" + }, + { + "name": "Stockholm", + "shortCode": "AB" + }, + { + "name": "Uppsala", + "shortCode": "C" + }, + { + "name": "Värmland", + "shortCode": "S" + }, + { + "name": "Västerbotten", + "shortCode": "AC" + }, + { + "name": "Västernorrland", + "shortCode": "Y" + }, + { + "name": "Västmanland", + "shortCode": "U" + }, + { + "name": "Västra Götaland", + "shortCode": "O" + } + ], + "capital": "Stockholm", + "population": 10609460, + "area": 447425.16, + "continent": "Europe", + "nativeName": "Sverige", + "demonym": "Swedish", + "languages": [ + "Swedish" + ], + "tld": [ + ".se" + ], + "borders": [ + "NO", + "FI", + "DK" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Switzerland", + "countryShortCode": "CH", + "phoneCode": "+41", + "currencyCode": "CHF", + "latitude": "47.00000000", + "longitude": "8.00000000", + "timezones": [ + { + "zoneName": "Europe/Zurich", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Aargau", + "shortCode": "AG" + }, + { + "name": "Appenzell Ausserrhoden", + "shortCode": "AR" + }, + { + "name": "Appenzell Innerhoden", + "shortCode": "AI" + }, + { + "name": "Basel-Landschaft", + "shortCode": "BL" + }, + { + "name": "Basel-Stadt", + "shortCode": "BS" + }, + { + "name": "Bern", + "shortCode": "BE" + }, + { + "name": "Fribourg", + "shortCode": "FR" + }, + { + "name": "Genève", + "shortCode": "GE" + }, + { + "name": "Glarus", + "shortCode": "GL" + }, + { + "name": "Graubünden", + "shortCode": "GR" + }, + { + "name": "Jura", + "shortCode": "JU" + }, + { + "name": "Luzern", + "shortCode": "LU" + }, + { + "name": "Neuchâtel", + "shortCode": "NE" + }, + { + "name": "Nidwalden", + "shortCode": "NW" + }, + { + "name": "Obwalden", + "shortCode": "OW" + }, + { + "name": "Sankt Gallen", + "shortCode": "SG" + }, + { + "name": "Schaffhausen", + "shortCode": "SH" + }, + { + "name": "Schwyz", + "shortCode": "SZ" + }, + { + "name": "Solothurn", + "shortCode": "SO" + }, + { + "name": "Thurgau", + "shortCode": "TG" + }, + { + "name": "Ticino", + "shortCode": "TI" + }, + { + "name": "Uri", + "shortCode": "UR" + }, + { + "name": "Valais", + "shortCode": "VS" + }, + { + "name": "Vaud", + "shortCode": "VD" + }, + { + "name": "Zug", + "shortCode": "ZG" + }, + { + "name": "Zürich", + "shortCode": "ZH" + } + ], + "capital": "Bern", + "population": 9104063, + "area": 41291, + "continent": "Europe", + "officialName": "Swiss Confederation", + "nativeName": "Schweizerische Eidgenossenschaft", + "demonym": "Swiss", + "languages": [ + "French", + "German", + "Italian", + "Romansh" + ], + "tld": [ + ".swiss", + ".ch" + ], + "borders": [ + "IT", + "AT", + "FR", + "DE", + "LI" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Syrian Arab Republic", + "countryShortCode": "SY", + "phoneCode": "+963", + "currencyCode": "SYP", + "latitude": "35.00000000", + "longitude": "38.00000000", + "timezones": [ + { + "zoneName": "Asia/Damascus", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + } + ], + "regions": [ + { + "name": "Al Hasakah", + "shortCode": "HA" + }, + { + "name": "Al Ladhiqiyah", + "shortCode": "LA" + }, + { + "name": "Al Qunaytirah", + "shortCode": "QU" + }, + { + "name": "Ar Raqqah", + "shortCode": "RA" + }, + { + "name": "As Suwayda'", + "shortCode": "SU" + }, + { + "name": "Dar'a", + "shortCode": "DR" + }, + { + "name": "Dayr az Zawr", + "shortCode": "DY" + }, + { + "name": "Dimashq", + "shortCode": "DI" + }, + { + "name": "Halab", + "shortCode": "HL" + }, + { + "name": "Hamah", + "shortCode": "HM" + }, + { + "name": "Hims", + "shortCode": "HI" + }, + { + "name": "Idlib", + "shortCode": "ID" + }, + { + "name": "Rif Dimashq", + "shortCode": "RD" + }, + { + "name": "Tartus", + "shortCode": "TA" + } + ], + "capital": "Damascus", + "population": 23865423, + "area": 185180, + "continent": "Asia", + "officialName": "Syrian Arab Republic", + "nativeName": "الجمهورية العربية السورية", + "demonym": "Syrian", + "languages": [ + "Arabic" + ], + "tld": [ + ".sy" + ], + "borders": [ + "TR", + "IQ", + "IL", + "JO", + "LB" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Taiwan", + "countryShortCode": "TW", + "phoneCode": "+886", + "currencyCode": "TWD", + "latitude": "23.50000000", + "longitude": "121.00000000", + "timezones": [ + { + "zoneName": "Asia/Taipei", + "gmtOffset": 28800, + "gmtOffsetName": "UTC+08:00", + "abbreviation": "CST", + "tzName": "China Standard Time" + } + ], + "regions": [ + { + "name": "Chang-hua", + "shortCode": "CHA" + }, + { + "name": "Chia-i", + "shortCode": "CYQ" + }, + { + "name": "Hsin-chu", + "shortCode": "HSQ" + }, + { + "name": "Hua-lien", + "shortCode": "HUA" + }, + { + "name": "Kao-hsiung", + "shortCode": "KHH" + }, + { + "name": "Keelung", + "shortCode": "KEE" + }, + { + "name": "Kinmen", + "shortCode": "KIN" + }, + { + "name": "Lienchiang", + "shortCode": "LIE" + }, + { + "name": "Miao-li", + "shortCode": "MIA" + }, + { + "name": "Nan-t'ou", + "shortCode": "NAN" + }, + { + "name": "P'eng-hu", + "shortCode": "PEN" + }, + { + "name": "New Taipei", + "shortCode": "NWT" + }, + { + "name": "P'ing-chung", + "shortCode": "PIF" + }, + { + "name": "T'ai-chung", + "shortCode": "TXG" + }, + { + "name": "T'ai-nan", + "shortCode": "TNN" + }, + { + "name": "T'ai-pei", + "shortCode": "TPE" + }, + { + "name": "T'ai-tung", + "shortCode": "TTT" + }, + { + "name": "T'ao-yuan", + "shortCode": "TAO" + }, + { + "name": "Yi-lan", + "shortCode": "ILA" + }, + { + "name": "Yun-lin", + "shortCode": "YUN" + } + ], + "capital": "Taipei", + "population": 23262544, + "area": 36193, + "continent": "Asia", + "nativeName": "Tâi-oân", + "demonym": "taiwanese", + "languages": [ + "Taiwanese Sign Language", + "Amis", + "Taiwanese Hokkien", + "Kanakanavu", + "Rukai", + "Bunun", + "Tsou", + "Seediq", + "Puyuma", + "Taiwanese Hakka", + "Truku", + "Matsu dialect", + "Kinmen dialect", + "Wuqiu dialect", + "Standard Taiwanese Mandarin", + "Paiwan", + "Yami", + "Atayal", + "Saisiyat", + "Sakizaya", + "Saaroa", + "Kavalan" + ], + "tld": [ + ".tw" + ], + "borders": [ + "JP", + "CN", + "PH" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Tajikistan", + "countryShortCode": "TJ", + "phoneCode": "+992", + "currencyCode": "TJS", + "latitude": "39.00000000", + "longitude": "71.00000000", + "timezones": [ + { + "zoneName": "Asia/Dushanbe", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "TJT", + "tzName": "Tajikistan Time" + } + ], + "regions": [ + { + "name": "Dushanbe", + "shortCode": "DU" + }, + { + "name": "Kŭhistoni Badakhshon", + "shortCode": "GB" + }, + { + "name": "Khatlon", + "shortCode": "KT" + }, + { + "name": "Sughd", + "shortCode": "SU" + } + ], + "capital": "Dushanbe", + "population": 9504000, + "area": 143100, + "continent": "Asia", + "nativeName": "Тоҷикистон", + "demonym": "Tajikistani", + "languages": [ + "Tajik" + ], + "tld": [ + ".tj" + ], + "borders": [ + "CN", + "UZ", + "KG", + "AF" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Tanzania, United Republic of", + "countryShortCode": "TZ", + "phoneCode": "+255", + "currencyCode": "TZS", + "latitude": "-6.00000000", + "longitude": "35.00000000", + "timezones": [ + { + "zoneName": "Africa/Dar_es_Salaam", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EAT", + "tzName": "East Africa Time" + } + ], + "regions": [ + { + "name": "Arusha", + "shortCode": "01" + }, + { + "name": "Coast", + "shortCode": "19" + }, + { + "name": "Dar es Salaam", + "shortCode": "02" + }, + { + "name": "Dodoma", + "shortCode": "03" + }, + { + "name": "Iringa", + "shortCode": "04" + }, + { + "name": "Kagera", + "shortCode": "05" + }, + { + "name": "Kigoma", + "shortCode": "08" + }, + { + "name": "Kilimanjaro", + "shortCode": "09" + }, + { + "name": "Lindi", + "shortCode": "12" + }, + { + "name": "Manyara", + "shortCode": "26" + }, + { + "name": "Mara", + "shortCode": "13" + }, + { + "name": "Mbeya", + "shortCode": "14" + }, + { + "name": "Morogoro", + "shortCode": "16" + }, + { + "name": "Mtwara", + "shortCode": "17" + }, + { + "name": "Mwanza", + "shortCode": "18" + }, + { + "name": "Pemba North", + "shortCode": "06" + }, + { + "name": "Pemba South", + "shortCode": "10" + }, + { + "name": "Rukwa", + "shortCode": "20" + }, + { + "name": "Ruvuma", + "shortCode": "21" + }, + { + "name": "Shinyanga", + "shortCode": "22" + }, + { + "name": "Singida", + "shortCode": "23" + }, + { + "name": "Tabora", + "shortCode": "24" + }, + { + "name": "Tanga", + "shortCode": "25" + }, + { + "name": "Zanzibar North", + "shortCode": "07" + }, + { + "name": "Zanzibar Central/South", + "shortCode": "11" + }, + { + "name": "Zanzibar Urban/West", + "shortCode": "15" + } + ], + "capital": "Dodoma", + "population": 61741120, + "area": 947303, + "continent": "Africa", + "nativeName": "United Republic of Tanzania", + "demonym": "Tanzanian", + "languages": [ + "English", + "Swahili" + ], + "tld": [ + ".tz" + ], + "borders": [ + "KE", + "ZM", + "BI", + "CD", + "MW", + "MZ", + "UG", + "RW", + "SC" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Thailand", + "countryShortCode": "TH", + "phoneCode": "+66", + "currencyCode": "THB", + "latitude": "15.00000000", + "longitude": "100.00000000", + "timezones": [ + { + "zoneName": "Asia/Bangkok", + "gmtOffset": 25200, + "gmtOffsetName": "UTC+07:00", + "abbreviation": "ICT", + "tzName": "Indochina Time" + } + ], + "regions": [ + { + "name": "Amnat Charoen", + "shortCode": "37" + }, + { + "name": "Ang Thong", + "shortCode": "15" + }, + { + "name": "Bueng Kan", + "shortCode": "38" + }, + { + "name": "Buri Ram", + "shortCode": "31" + }, + { + "name": "Chachoengsao", + "shortCode": "24" + }, + { + "name": "Chai Nat", + "shortCode": "18" + }, + { + "name": "Chaiyaphum", + "shortCode": "36" + }, + { + "name": "Chanthaburi", + "shortCode": "22" + }, + { + "name": "Chiang Mai", + "shortCode": "50" + }, + { + "name": "Chiang Rai", + "shortCode": "57" + }, + { + "name": "Chon Buri", + "shortCode": "20" + }, + { + "name": "Chumphon", + "shortCode": "86" + }, + { + "name": "Kalasin", + "shortCode": "46" + }, + { + "name": "Kamphaeng Phet", + "shortCode": "62" + }, + { + "name": "Kanchanaburi", + "shortCode": "71" + }, + { + "name": "Khon Kaen", + "shortCode": "40" + }, + { + "name": "Krabi", + "shortCode": "81" + }, + { + "name": "Krung Thep Mahanakhon (Bangkok)", + "shortCode": "10" + }, + { + "name": "Lampang", + "shortCode": "52" + }, + { + "name": "Lamphun", + "shortCode": "51" + }, + { + "name": "Loei", + "shortCode": "42" + }, + { + "name": "Lop Buri", + "shortCode": "16" + }, + { + "name": "Mae Hong Son", + "shortCode": "58" + }, + { + "name": "Maha Sarakham", + "shortCode": "44" + }, + { + "name": "Mukdahan", + "shortCode": "49" + }, + { + "name": "Nakhon Nayok", + "shortCode": "26" + }, + { + "name": "Nakhon Phathom", + "shortCode": "73" + }, + { + "name": "Nakhon Phanom", + "shortCode": "48" + }, + { + "name": "Nakhon Ratchasima", + "shortCode": "30" + }, + { + "name": "Nakhon Sawan", + "shortCode": "60" + }, + { + "name": "Nakhon Si Thammarat", + "shortCode": "80" + }, + { + "name": "Nan", + "shortCode": "55" + }, + { + "name": "Narathiwat", + "shortCode": "96" + }, + { + "name": "Nong Bua Lam Phu", + "shortCode": "39" + }, + { + "name": "Nong Khai", + "shortCode": "43" + }, + { + "name": "Nonthaburi", + "shortCode": "12" + }, + { + "name": "Pathum Thani", + "shortCode": "13" + }, + { + "name": "Pattani", + "shortCode": "94" + }, + { + "name": "Phangnga", + "shortCode": "82" + }, + { + "name": "Phatthalung", + "shortCode": "93" + }, + { + "name": "Phayao", + "shortCode": "56" + }, + { + "name": "Phetchabun", + "shortCode": "76" + }, + { + "name": "Phetchaburi", + "shortCode": "76" + }, + { + "name": "Phichit", + "shortCode": "66" + }, + { + "name": "Phitsanulok", + "shortCode": "65" + }, + { + "name": "Phra Nakhon Si Ayutthaya", + "shortCode": "14" + }, + { + "name": "Phrae", + "shortCode": "54" + }, + { + "name": "Phuket", + "shortCode": "83" + }, + { + "name": "Prachin Buri", + "shortCode": "25" + }, + { + "name": "Prachuap Khiri Khan", + "shortCode": "77" + }, + { + "name": "Ranong", + "shortCode": "85" + }, + { + "name": "Ratchaburi", + "shortCode": "70" + }, + { + "name": "Rayong", + "shortCode": "21" + }, + { + "name": "Roi Et", + "shortCode": "45" + }, + { + "name": "Sa Kaeo", + "shortCode": "27" + }, + { + "name": "Sakon Nakhon", + "shortCode": "47" + }, + { + "name": "Samut Prakan", + "shortCode": "11" + }, + { + "name": "Samut Sakhon", + "shortCode": "74" + }, + { + "name": "Samut Songkhram", + "shortCode": "75" + }, + { + "name": "Saraburi", + "shortCode": "19" + }, + { + "name": "Satun", + "shortCode": "91" + }, + { + "name": "Sing Buri", + "shortCode": "17" + }, + { + "name": "Si Sa ket", + "shortCode": "33" + }, + { + "name": "Songkhla", + "shortCode": "90" + }, + { + "name": "Sukhothai", + "shortCode": "64" + }, + { + "name": "Suphan Buri", + "shortCode": "72" + }, + { + "name": "Surat Thani", + "shortCode": "84" + }, + { + "name": "Surin", + "shortCode": "32" + }, + { + "name": "Tak", + "shortCode": "63" + }, + { + "name": "Trang", + "shortCode": "92" + }, + { + "name": "Trat", + "shortCode": "23" + }, + { + "name": "Ubon Ratchathani", + "shortCode": "34" + }, + { + "name": "Udon Thani", + "shortCode": "41" + }, + { + "name": "Uthai Thani", + "shortCode": "61" + }, + { + "name": "Uttaradit", + "shortCode": "53" + }, + { + "name": "Yala", + "shortCode": "95" + }, + { + "name": "Yasothon", + "shortCode": "35" + } + ], + "capital": "Bangkok", + "population": 66188503, + "area": 513119.5, + "continent": "Asia", + "officialName": "Kingdom of Thailand", + "nativeName": "ราชอาณาจักรไทย", + "demonym": "Thai", + "languages": [ + "Thai" + ], + "tld": [ + ".th" + ], + "borders": [ + "KH", + "LA", + "MY", + "MM" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Timor-Leste", + "countryShortCode": "TL", + "phoneCode": "+670", + "currencyCode": "USD", + "latitude": "-8.83333333", + "longitude": "125.91666666", + "timezones": [ + { + "zoneName": "Asia/Dili", + "gmtOffset": 32400, + "gmtOffsetName": "UTC+09:00", + "abbreviation": "TLT", + "tzName": "Timor Leste Time" + } + ], + "regions": [ + { + "name": "Aileu", + "shortCode": "AL" + }, + { + "name": "Ainaro", + "shortCode": "AN" + }, + { + "name": "Baucau", + "shortCode": "BA" + }, + { + "name": "Bobonaro", + "shortCode": "BO" + }, + { + "name": "Cova Lima", + "shortCode": "CO" + }, + { + "name": "Dili", + "shortCode": "DI" + }, + { + "name": "Ermera", + "shortCode": "ER" + }, + { + "name": "Lautem", + "shortCode": "LA" + }, + { + "name": "Liquica", + "shortCode": "LI" + }, + { + "name": "Manatuto", + "shortCode": "MT" + }, + { + "name": "Manufahi", + "shortCode": "MF" + }, + { + "name": "Oecussi", + "shortCode": "OE" + }, + { + "name": "Viqueque", + "shortCode": "VI" + } + ], + "capital": "Dili", + "population": 1400638, + "area": 14918.72, + "continent": "Asia", + "nativeName": "República Democrática de Timor-Leste", + "demonym": "East Timorese", + "languages": [ + "Portuguese", + "Tetum" + ], + "tld": [ + ".tl" + ], + "borders": [ + "ID", + "AU" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Togo", + "countryShortCode": "TG", + "phoneCode": "+228", + "currencyCode": "XOF", + "latitude": "8.00000000", + "longitude": "1.16666666", + "timezones": [ + { + "zoneName": "Africa/Lome", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Centre", + "shortCode": "C" + }, + { + "name": "Kara", + "shortCode": "K" + }, + { + "name": "Maritime", + "shortCode": "M" + }, + { + "name": "Plateaux", + "shortCode": "P" + }, + { + "name": "Savannes", + "shortCode": "S" + } + ], + "capital": "Lomé", + "population": 9515240, + "area": 56785, + "continent": "Africa", + "nativeName": "Togo", + "demonym": "Togolese", + "languages": [ + "French" + ], + "tld": [ + ".tg" + ], + "borders": [ + "GH", + "BJ", + "BF" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Tokelau", + "countryShortCode": "TK", + "phoneCode": "+690", + "currencyCode": "NZD", + "latitude": "-9.00000000", + "longitude": "-172.00000000", + "timezones": [ + { + "zoneName": "Pacific/Fakaofo", + "gmtOffset": 46800, + "gmtOffsetName": "UTC+13:00", + "abbreviation": "TKT", + "tzName": "Tokelau Time" + } + ], + "regions": [ + { + "name": "Atafu" + }, + { + "name": "Fakaofo" + }, + { + "name": "Nukunonu" + } + ], + "population": 1499, + "area": 10, + "continent": "Insular Oceania", + "officialName": "Tokelau", + "nativeName": "Tokelau", + "demonym": "Tokelauan", + "languages": [ + "English", + "Tokelauan" + ], + "tld": [ + ".tk" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Tonga", + "countryShortCode": "TO", + "phoneCode": "+676", + "currencyCode": "TOP", + "latitude": "-20.00000000", + "longitude": "-175.00000000", + "timezones": [ + { + "zoneName": "Pacific/Tongatapu", + "gmtOffset": 46800, + "gmtOffsetName": "UTC+13:00", + "abbreviation": "TOT", + "tzName": "Tonga Time" + } + ], + "regions": [ + { + "name": "'Eua", + "shortCode": "01" + }, + { + "name": "Ha'apai", + "shortCode": "02" + }, + { + "name": "Niuas", + "shortCode": "03" + }, + { + "name": "Tongatapu", + "shortCode": "04" + }, + { + "name": "Vava'u", + "shortCode": "05" + } + ], + "capital": "Nukuʻalofa", + "population": 105697, + "area": 748.506563, + "continent": "Oceania", + "officialName": "Tonga", + "nativeName": "Tonga", + "demonym": "Tongan", + "languages": [ + "English", + "Tongan" + ], + "tld": [ + ".to" + ], + "borders": [ + "US" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Trinidad and Tobago", + "countryShortCode": "TT", + "phoneCode": "+1868", + "currencyCode": "TTD", + "latitude": "11.00000000", + "longitude": "-61.00000000", + "timezones": [ + { + "zoneName": "America/Port_of_Spain", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "AST", + "tzName": "Atlantic Standard Time" + } + ], + "regions": [ + { + "name": "Arima", + "shortCode": "ARI" + }, + { + "name": "Chaguanas", + "shortCode": "CHA" + }, + { + "name": "Couva-Tabaquite-Talparo", + "shortCode": "CTT" + }, + { + "name": "Diefo Martin", + "shortCode": "DMN" + }, + { + "name": "Mayaro-Rio Claro", + "shortCode": "MRC" + }, + { + "name": "Penal-Debe", + "shortCode": "PED" + }, + { + "name": "Point Fortin", + "shortCode": "PTF" + }, + { + "name": "Port-of-Spain", + "shortCode": "POS" + }, + { + "name": "Princes Town", + "shortCode": "PRT" + }, + { + "name": "San Fernando", + "shortCode": "SFO" + }, + { + "name": "San Juan-Laventille", + "shortCode": "SJL" + }, + { + "name": "Sangre Grande", + "shortCode": "SGE" + }, + { + "name": "Siparia", + "shortCode": "SIP" + }, + { + "name": "Tobago", + "shortCode": "TOB" + }, + { + "name": "Tunapuna-Piarco", + "shortCode": "TUP" + } + ], + "capital": "Port of Spain", + "population": 1369125, + "area": 5128, + "continent": "North America", + "officialName": "Trinidad and Tobago", + "nativeName": "Republic of Trinidad and Tobago", + "demonym": "Trinidadian", + "languages": [ + "English" + ], + "tld": [ + ".tt" + ], + "borders": [ + "VE" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Tunisia", + "countryShortCode": "TN", + "phoneCode": "+216", + "currencyCode": "TND", + "latitude": "34.00000000", + "longitude": "9.00000000", + "timezones": [ + { + "zoneName": "Africa/Tunis", + "gmtOffset": 3600, + "gmtOffsetName": "UTC+01:00", + "abbreviation": "CET", + "tzName": "Central European Time" + } + ], + "regions": [ + { + "name": "Ariana", + "shortCode": "12" + }, + { + "name": "Beja", + "shortCode": "31" + }, + { + "name": "Ben Arous", + "shortCode": "13" + }, + { + "name": "Bizerte", + "shortCode": "23" + }, + { + "name": "Gabes", + "shortCode": "81" + }, + { + "name": "Gafsa", + "shortCode": "71" + }, + { + "name": "Jendouba", + "shortCode": "32" + }, + { + "name": "Kairouan", + "shortCode": "41" + }, + { + "name": "Kasserine", + "shortCode": "42" + }, + { + "name": "Kebili", + "shortCode": "73" + }, + { + "name": "Kef", + "shortCode": "33" + }, + { + "name": "Mahdia", + "shortCode": "53" + }, + { + "name": "Medenine", + "shortCode": "82" + }, + { + "name": "Monastir", + "shortCode": "52" + }, + { + "name": "Nabeul", + "shortCode": "21" + }, + { + "name": "Sfax", + "shortCode": "61" + }, + { + "name": "Sidi Bouzid", + "shortCode": "43" + }, + { + "name": "Siliana", + "shortCode": "34" + }, + { + "name": "Sousse", + "shortCode": "51" + }, + { + "name": "Tataouine", + "shortCode": "83" + }, + { + "name": "Tozeur", + "shortCode": "72" + }, + { + "name": "Tunis", + "shortCode": "11" + }, + { + "name": "Zaghouan", + "shortCode": "22" + } + ], + "capital": "Tunis", + "population": 11972169, + "area": 163610, + "continent": "Africa", + "officialName": "Republic of Tunisia", + "nativeName": "Tunisia", + "demonym": "Tunisian", + "languages": [ + "Arabic" + ], + "tld": [ + ".tn" + ], + "borders": [ + "DZ", + "LY" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Turkey", + "countryShortCode": "TR", + "phoneCode": "+90", + "currencyCode": "TRY", + "latitude": "39.00000000", + "longitude": "35.00000000", + "timezones": [ + { + "zoneName": "Europe/Istanbul", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + } + ], + "regions": [ + { + "name": "Adana", + "shortCode": "01" + }, + { + "name": "Adiyaman", + "shortCode": "02" + }, + { + "name": "Afyonkarahisar", + "shortCode": "03" + }, + { + "name": "Agri", + "shortCode": "04" + }, + { + "name": "Aksaray", + "shortCode": "68" + }, + { + "name": "Amasya", + "shortCode": "05" + }, + { + "name": "Ankara", + "shortCode": "06" + }, + { + "name": "Antalya", + "shortCode": "07" + }, + { + "name": "Ardahan", + "shortCode": "75" + }, + { + "name": "Artvin", + "shortCode": "08" + }, + { + "name": "Aydin", + "shortCode": "09" + }, + { + "name": "Balikesir", + "shortCode": "10" + }, + { + "name": "Bartin", + "shortCode": "74" + }, + { + "name": "Batman", + "shortCode": "72" + }, + { + "name": "Bayburt", + "shortCode": "69" + }, + { + "name": "Bilecik", + "shortCode": "11" + }, + { + "name": "Bingol", + "shortCode": "12" + }, + { + "name": "Bitlis", + "shortCode": "13" + }, + { + "name": "Bolu", + "shortCode": "14" + }, + { + "name": "Burdur", + "shortCode": "15" + }, + { + "name": "Bursa", + "shortCode": "16" + }, + { + "name": "Canakkale", + "shortCode": "17" + }, + { + "name": "Cankiri", + "shortCode": "18" + }, + { + "name": "Corum", + "shortCode": "19" + }, + { + "name": "Denizli", + "shortCode": "20" + }, + { + "name": "Diyarbakir", + "shortCode": "21" + }, + { + "name": "Duzce", + "shortCode": "81" + }, + { + "name": "Edirne", + "shortCode": "22" + }, + { + "name": "Elazig", + "shortCode": "23" + }, + { + "name": "Erzincan", + "shortCode": "24" + }, + { + "name": "Erzurum", + "shortCode": "25" + }, + { + "name": "Eskisehir", + "shortCode": "26" + }, + { + "name": "Gaziantep", + "shortCode": "27" + }, + { + "name": "Giresun", + "shortCode": "28" + }, + { + "name": "Gumushane", + "shortCode": "29" + }, + { + "name": "Hakkari", + "shortCode": "30" + }, + { + "name": "Hatay", + "shortCode": "31" + }, + { + "name": "Igdir", + "shortCode": "76" + }, + { + "name": "Isparta", + "shortCode": "32" + }, + { + "name": "Istanbul", + "shortCode": "34" + }, + { + "name": "Izmir", + "shortCode": "35" + }, + { + "name": "Kahramanmaras", + "shortCode": "46" + }, + { + "name": "Karabuk", + "shortCode": "78" + }, + { + "name": "Karaman", + "shortCode": "70" + }, + { + "name": "Kars", + "shortCode": "36" + }, + { + "name": "Kastamonu", + "shortCode": "37" + }, + { + "name": "Kayseri", + "shortCode": "38" + }, + { + "name": "Kilis", + "shortCode": "79" + }, + { + "name": "Kirikkale", + "shortCode": "71" + }, + { + "name": "Kirklareli", + "shortCode": "39" + }, + { + "name": "Kirsehir", + "shortCode": "40" + }, + { + "name": "Kocaeli", + "shortCode": "41" + }, + { + "name": "Konya", + "shortCode": "42" + }, + { + "name": "Kutahya", + "shortCode": "43" + }, + { + "name": "Malatya", + "shortCode": "44" + }, + { + "name": "Manisa", + "shortCode": "45" + }, + { + "name": "Mardin", + "shortCode": "47" + }, + { + "name": "Mersin", + "shortCode": "33" + }, + { + "name": "Mugla", + "shortCode": "48" + }, + { + "name": "Mus", + "shortCode": "49" + }, + { + "name": "Nevsehir", + "shortCode": "50" + }, + { + "name": "Nigde", + "shortCode": "51" + }, + { + "name": "Ordu", + "shortCode": "52" + }, + { + "name": "Osmaniye", + "shortCode": "80" + }, + { + "name": "Rize", + "shortCode": "53" + }, + { + "name": "Sakarya", + "shortCode": "54" + }, + { + "name": "Samsun", + "shortCode": "55" + }, + { + "name": "Sanliurfa", + "shortCode": "63" + }, + { + "name": "Siirt", + "shortCode": "56" + }, + { + "name": "Sinop", + "shortCode": "57" + }, + { + "name": "Sirnak", + "shortCode": "73" + }, + { + "name": "Sivas", + "shortCode": "58" + }, + { + "name": "Tekirdag", + "shortCode": "59" + }, + { + "name": "Tokat", + "shortCode": "60" + }, + { + "name": "Trabzon", + "shortCode": "61" + }, + { + "name": "Tunceli", + "shortCode": "62" + }, + { + "name": "Usak", + "shortCode": "64" + }, + { + "name": "Van", + "shortCode": "65" + }, + { + "name": "Yalova", + "shortCode": "77" + }, + { + "name": "Yozgat", + "shortCode": "66" + }, + { + "name": "Zonguldak", + "shortCode": "67" + } + ], + "capital": "Ankara", + "population": 85372377, + "area": 783562, + "continent": "Europe", + "nativeName": "Türkiye", + "demonym": "Turkish", + "languages": [ + "Turkish" + ], + "tld": [ + ".tr" + ], + "borders": [ + "GR", + "BG", + "AZ", + "GE", + "AM", + "IR", + "IQ", + "SY" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Turkmenistan", + "countryShortCode": "TM", + "phoneCode": "+993", + "currencyCode": "TMT", + "latitude": "40.00000000", + "longitude": "60.00000000", + "timezones": [ + { + "zoneName": "Asia/Ashgabat", + "gmtOffset": 18000, + "gmtOffsetName": "UTC+05:00", + "abbreviation": "TMT", + "tzName": "Turkmenistan Time" + } + ], + "regions": [ + { + "name": "Ahal", + "shortCode": "A" + }, + { + "name": "Asgabat", + "shortCode": "S" + }, + { + "name": "Balkan", + "shortCode": "B" + }, + { + "name": "Dashoguz", + "shortCode": "D" + }, + { + "name": "Lebap", + "shortCode": "L" + }, + { + "name": "Mary", + "shortCode": "M" + } + ], + "capital": "Ashgabat", + "area": 491210, + "continent": "Asia", + "nativeName": "Türkmenistan", + "demonym": "Turkmenistani", + "languages": [ + "Turkmen" + ], + "tld": [ + ".tm" + ], + "borders": [ + "KZ", + "UZ", + "IR", + "AF" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Turks and Caicos Islands", + "countryShortCode": "TC", + "phoneCode": "+1649", + "currencyCode": "USD", + "latitude": "21.75000000", + "longitude": "-71.58333333", + "timezones": [ + { + "zoneName": "America/Grand_Turk", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + } + ], + "regions": [ + { + "name": "Turks and Caicos Islands" + } + ], + "capital": "Cockburn Town", + "population": 44542, + "area": 417, + "continent": "North America", + "officialName": "Turks and Caicos Islands", + "nativeName": "Turks and Caicos Islands", + "demonym": "Turks and Caicos Islander", + "languages": [ + "English" + ], + "tld": [ + ".tc" + ], + "borders": [ + "BS", + "DO", + "HT" + ], + "unMember": false, + "independent": false + }, + { + "countryName": "Tuvalu", + "countryShortCode": "TV", + "phoneCode": "+688", + "currencyCode": "AUD", + "latitude": "-8.00000000", + "longitude": "178.00000000", + "timezones": [ + { + "zoneName": "Pacific/Funafuti", + "gmtOffset": 43200, + "gmtOffsetName": "UTC+12:00", + "abbreviation": "TVT", + "tzName": "Tuvalu Time" + } + ], + "regions": [ + { + "name": "Funafuti", + "shortCode": "FUN" + }, + { + "name": "Nanumanga", + "shortCode": "NMG" + }, + { + "name": "Nanumea", + "shortCode": "NMA" + }, + { + "name": "Niutao", + "shortCode": "NIT" + }, + { + "name": "Nui", + "shortCode": "NUI" + }, + { + "name": "Nukufetau", + "shortCode": "NKF" + }, + { + "name": "Nukulaelae", + "shortCode": "NKL" + }, + { + "name": "Vaitupu", + "shortCode": "VAU" + } + ], + "capital": "Funafuti", + "population": 10643, + "area": 25.14, + "continent": "Oceania", + "officialName": "Tuvalu", + "demonym": "Tuvaluan", + "languages": [ + "English", + "Tuvaluan" + ], + "tld": [ + ".tv" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Uganda", + "countryShortCode": "UG", + "phoneCode": "+256", + "currencyCode": "UGX", + "latitude": "1.00000000", + "longitude": "32.00000000", + "timezones": [ + { + "zoneName": "Africa/Kampala", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "EAT", + "tzName": "East Africa Time" + } + ], + "regions": [ + { + "name": "Abim", + "shortCode": "317" + }, + { + "name": "Adjumani", + "shortCode": "301" + }, + { + "name": "Amolatar", + "shortCode": "314" + }, + { + "name": "Amuria", + "shortCode": "216" + }, + { + "name": "Amuru", + "shortCode": "319" + }, + { + "name": "Apac", + "shortCode": "302" + }, + { + "name": "Arua", + "shortCode": "303" + }, + { + "name": "Budaka", + "shortCode": "217" + }, + { + "name": "Bududa", + "shortCode": "223" + }, + { + "name": "Bugiri", + "shortCode": "201" + }, + { + "name": "Bukedea", + "shortCode": "224" + }, + { + "name": "Bukwa", + "shortCode": "218" + }, + { + "name": "Buliisa", + "shortCode": "419" + }, + { + "name": "Bundibugyo", + "shortCode": "401" + }, + { + "name": "Bushenyi", + "shortCode": "402" + }, + { + "name": "Busia", + "shortCode": "202" + }, + { + "name": "Butaleja", + "shortCode": "219" + }, + { + "name": "Dokolo", + "shortCode": "318" + }, + { + "name": "Gulu", + "shortCode": "304" + }, + { + "name": "Hoima", + "shortCode": "403" + }, + { + "name": "Ibanda", + "shortCode": "416" + }, + { + "name": "Iganga", + "shortCode": "203" + }, + { + "name": "Isingiro", + "shortCode": "417" + }, + { + "name": "Jinja", + "shortCode": "204" + }, + { + "name": "Kaabong", + "shortCode": "315" + }, + { + "name": "Kabale", + "shortCode": "404" + }, + { + "name": "Kabarole", + "shortCode": "405" + }, + { + "name": "Kaberamaido", + "shortCode": "213" + }, + { + "name": "Kalangala", + "shortCode": "101" + }, + { + "name": "Kaliro", + "shortCode": "220" + }, + { + "name": "Kampala", + "shortCode": "102" + }, + { + "name": "Kamuli", + "shortCode": "205" + }, + { + "name": "Kamwenge", + "shortCode": "413" + }, + { + "name": "Kanungu", + "shortCode": "414" + }, + { + "name": "Kapchorwa", + "shortCode": "206" + }, + { + "name": "Kasese", + "shortCode": "406" + }, + { + "name": "Katakwi", + "shortCode": "207" + }, + { + "name": "Kayunga", + "shortCode": "112" + }, + { + "name": "Kibaale", + "shortCode": "407" + }, + { + "name": "Kiboga", + "shortCode": "103" + }, + { + "name": "Kiruhura", + "shortCode": "418" + }, + { + "name": "Kisoro", + "shortCode": "408" + }, + { + "name": "Kitgum", + "shortCode": "305" + }, + { + "name": "Koboko", + "shortCode": "316" + }, + { + "name": "Kotido", + "shortCode": "306" + }, + { + "name": "Kumi", + "shortCode": "208" + }, + { + "name": "Kyenjojo", + "shortCode": "415" + }, + { + "name": "Lira", + "shortCode": "307" + }, + { + "name": "Luwero", + "shortCode": "104" + }, + { + "name": "Lyantonde", + "shortCode": "116" + }, + { + "name": "Manafwa", + "shortCode": "221" + }, + { + "name": "Maracha", + "shortCode": "320" + }, + { + "name": "Masaka", + "shortCode": "105" + }, + { + "name": "Masindi", + "shortCode": "409" + }, + { + "name": "Mayuge", + "shortCode": "214" + }, + { + "name": "Mbale", + "shortCode": "209" + }, + { + "name": "Mbarara", + "shortCode": "410" + }, + { + "name": "Mityana", + "shortCode": "114" + }, + { + "name": "Moroto", + "shortCode": "308" + }, + { + "name": "Moyo", + "shortCode": "309" + }, + { + "name": "Mpigi", + "shortCode": "106" + }, + { + "name": "Mubende", + "shortCode": "107" + }, + { + "name": "Mukono", + "shortCode": "108" + }, + { + "name": "Nakapiripirit", + "shortCode": "311" + }, + { + "name": "Nakaseke", + "shortCode": "115" + }, + { + "name": "Nakasongola", + "shortCode": "109" + }, + { + "name": "Namutumba", + "shortCode": "222" + }, + { + "name": "Nebbi", + "shortCode": "310" + }, + { + "name": "Ntungamo", + "shortCode": "411" + }, + { + "name": "Oyam", + "shortCode": "321" + }, + { + "name": "Pader", + "shortCode": "312" + }, + { + "name": "Pallisa", + "shortCode": "210" + }, + { + "name": "Rakai", + "shortCode": "110" + }, + { + "name": "Rukungiri", + "shortCode": "412" + }, + { + "name": "Sembabule", + "shortCode": "111" + }, + { + "name": "Sironko", + "shortCode": "215" + }, + { + "name": "Soroti", + "shortCode": "211" + }, + { + "name": "Tororo", + "shortCode": "212" + }, + { + "name": "Wakiso", + "shortCode": "113" + }, + { + "name": "Yumbe", + "shortCode": "313" + } + ], + "capital": "Kampala", + "population": 47123531, + "area": 241038, + "continent": "Africa", + "officialName": "Uganda", + "nativeName": "Republic of Uganda", + "demonym": "Ugandan", + "languages": [ + "English", + "Swahili" + ], + "tld": [ + ".ug" + ], + "borders": [ + "KE", + "TZ", + "SS", + "CD", + "RW", + "SD" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "Ukraine", + "countryShortCode": "UA", + "phoneCode": "+380", + "currencyCode": "UAH", + "latitude": "49.00000000", + "longitude": "32.00000000", + "timezones": [ + { + "zoneName": "Europe/Kiev", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + }, + { + "zoneName": "Europe/Simferopol", + "gmtOffset": 10800, + "gmtOffsetName": "UTC+03:00", + "abbreviation": "MSK", + "tzName": "Moscow Time" + }, + { + "zoneName": "Europe/Uzhgorod", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + }, + { + "zoneName": "Europe/Zaporozhye", + "gmtOffset": 7200, + "gmtOffsetName": "UTC+02:00", + "abbreviation": "EET", + "tzName": "Eastern European Time" + } + ], + "regions": [ + { + "name": "Cherkasy", + "shortCode": "71" + }, + { + "name": "Chernihiv", + "shortCode": "74" + }, + { + "name": "Chernivtsi", + "shortCode": "77" + }, + { + "name": "Dnipropetrovsk", + "shortCode": "12" + }, + { + "name": "Donetsk", + "shortCode": "14" + }, + { + "name": "Ivano-Frankivsk", + "shortCode": "26" + }, + { + "name": "Kharkiv", + "shortCode": "63" + }, + { + "name": "Kherson", + "shortCode": "65" + }, + { + "name": "Khmelnytskyi", + "shortCode": "68" + }, + { + "name": "Kiev", + "shortCode": "32" + }, + { + "name": "Kirovohrad", + "shortCode": "35" + }, + { + "name": "Luhansk", + "shortCode": "09" + }, + { + "name": "Lviv", + "shortCode": "46" + }, + { + "name": "Mykolaiv", + "shortCode": "48" + }, + { + "name": "Odessa", + "shortCode": "51" + }, + { + "name": "Poltava", + "shortCode": "53" + }, + { + "name": "Rivne", + "shortCode": "56" + }, + { + "name": "Sumy", + "shortCode": "59" + }, + { + "name": "Ternopil", + "shortCode": "61" + }, + { + "name": "Vinnytsia", + "shortCode": "05" + }, + { + "name": "Volyn", + "shortCode": "07" + }, + { + "name": "Zakarpattia", + "shortCode": "21" + }, + { + "name": "Zaporizhia", + "shortCode": "23" + }, + { + "name": "Zhytomyr", + "shortCode": "18" + }, + { + "name": "Avtonomna Respublika Krym", + "shortCode": "43" + }, + { + "name": "Kyïv", + "shortCode": "30" + }, + { + "name": "Sevastopol", + "shortCode": "40" + } + ], + "capital": "Kyiv", + "population": 41167335, + "area": 603550, + "continent": "Europe", + "nativeName": "Україна", + "languages": [ + "Ukrainian" + ], + "tld": [ + ".ua" + ], + "borders": [ + "HU", + "PL", + "RU", + "BY", + "SK", + "MD", + "RO" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "United Arab Emirates", + "countryShortCode": "AE", + "phoneCode": "+971", + "currencyCode": "AED", + "latitude": "24.00000000", + "longitude": "54.00000000", + "timezones": [ + { + "zoneName": "Asia/Dubai", + "gmtOffset": 14400, + "gmtOffsetName": "UTC+04:00", + "abbreviation": "GST", + "tzName": "Gulf Standard Time" + } + ], + "regions": [ + { + "name": "Abu Dhabi", + "shortCode": "AZ" + }, + { + "name": "Ajman", + "shortCode": "AJ" + }, + { + "name": "Dubai", + "shortCode": "DU" + }, + { + "name": "Fujairah", + "shortCode": "FU" + }, + { + "name": "Ras al Khaimah", + "shortCode": "RK" + }, + { + "name": "Sharjah", + "shortCode": "SH" + }, + { + "name": "Umm Al Quwain", + "shortCode": "UQ" + } + ], + "capital": "Abu Dhabi", + "population": 9890400, + "area": 83600, + "continent": "Asia", + "nativeName": "الإِمَارات العربِيَّة المُتَّحِدة", + "demonym": "Emirian", + "languages": [ + "Arabic" + ], + "tld": [ + ".امارات", + ".ae" + ], + "borders": [ + "IR", + "OM", + "SA" + ], + "unMember": true, + "independent": true + }, + { + "countryName": "United Kingdom", + "countryShortCode": "GB", + "phoneCode": "+44", + "currencyCode": "GBP", + "latitude": "54.00000000", + "longitude": "-2.00000000", + "timezones": [ + { + "zoneName": "Europe/London", + "gmtOffset": 0, + "gmtOffsetName": "UTC±00", + "abbreviation": "GMT", + "tzName": "Greenwich Mean Time" + } + ], + "regions": [ + { + "name": "Aberdeen City", + "shortCode": "ABE" + }, + { + "name": "Aberdeenshire", + "shortCode": "ABD" + }, + { + "name": "Angus", + "shortCode": "ANS" + }, + { + "name": "Antrim and Newtownabbey", + "shortCode": "ANN" + }, + { + "name": "Ards and North Down", + "shortCode": "AND" + }, + { + "name": "Argyll and Bute", + "shortCode": "AGB" + }, + { + "name": "Armagh, Banbridge and Craigavon", + "shortCode": "ABC" + }, + { + "name": "Barking and Dagenham", + "shortCode": "BDG" + }, + { + "name": "Barnet", + "shortCode": "BNE" + }, + { + "name": "Barnsley", + "shortCode": "BNS" + }, + { + "name": "Bath and North East Somerset", + "shortCode": "BAS" + }, + { + "name": "Bedford", + "shortCode": "BDF" + }, + { + "name": "Belfast", + "shortCode": "BFS" + }, + { + "name": "Bexley", + "shortCode": "BEX" + }, + { + "name": "Birmingham", + "shortCode": "BIR" + }, + { + "name": "Blackburn with Darwen", + "shortCode": "BBD" + }, + { + "name": "Blackpool", + "shortCode": "BPL" + }, + { + "name": "Blaenau Gwent", + "shortCode": "BGW" + }, + { + "name": "Bolton", + "shortCode": "BOL" + }, + { + "name": "Bournemouth", + "shortCode": "BMH" + }, + { + "name": "Bracknell Forest", + "shortCode": "BRC" + }, + { + "name": "Bradford", + "shortCode": "BRD" + }, + { + "name": "Brent", + "shortCode": "BEN" + }, + { + "name": "Bridgend", + "shortCode": "BGE" + }, + { + "name": "Brighton and Hove", + "shortCode": "BNH" + }, + { + "name": "Bristol, City of", + "shortCode": "BST" + }, + { + "name": "Bromley", + "shortCode": "BRY" + }, + { + "name": "Buckinghamshire", + "shortCode": "BKM" + }, + { + "name": "Bury", + "shortCode": "BUR" + }, + { + "name": "Caerphilly", + "shortCode": "CAY" + }, + { + "name": "Calderdale", + "shortCode": "CLD" + }, + { + "name": "Cambridgeshire", + "shortCode": "CAM" + }, + { + "name": "Camden", + "shortCode": "CMD" + }, + { + "name": "Cardiff", + "shortCode": "CRF" + }, + { + "name": "Carmarthenshire", + "shortCode": "CMN" + }, + { + "name": "Causeway Coast and Glens", + "shortCode": "CCG" + }, + { + "name": "Central Bedfordshire", + "shortCode": "CBF" + }, + { + "name": "Ceredigion", + "shortCode": "CGN" + }, + { + "name": "Cheshire East", + "shortCode": "CHE" + }, + { + "name": "Cheshire West and Chester", + "shortCode": "CHW" + }, + { + "name": "Clackmannanshire", + "shortCode": "CLK" + }, + { + "name": "Conwy", + "shortCode": "CWY" + }, + { + "name": "Cornwall", + "shortCode": "CON" + }, + { + "name": "Coventry", + "shortCode": "COV" + }, + { + "name": "Croydon", + "shortCode": "CRY" + }, + { + "name": "Cumbria", + "shortCode": "CMA" + }, + { + "name": "Darlington", + "shortCode": "DAL" + }, + { + "name": "Denbighshire", + "shortCode": "DEN" + }, + { + "name": "Derby", + "shortCode": "DER" + }, + { + "name": "Derbyshire", + "shortCode": "DBY" + }, + { + "name": "Derry and Strabane", + "shortCode": "DRS" + }, + { + "name": "Devon", + "shortCode": "DEV" + }, + { + "name": "Doncaster", + "shortCode": "DNC" + }, + { + "name": "Dorset", + "shortCode": "DOR" + }, + { + "name": "Dudley", + "shortCode": "DUD" + }, + { + "name": "Dumfries and Galloway", + "shortCode": "DGY" + }, + { + "name": "Dundee City", + "shortCode": "DND" + }, + { + "name": "Durham County", + "shortCode": "DUR" + }, + { + "name": "Ealing", + "shortCode": "EAL" + }, + { + "name": "East Ayrshire", + "shortCode": "EAY" + }, + { + "name": "East Dunbartonshire", + "shortCode": "EDU" + }, + { + "name": "East Lothian", + "shortCode": "ELN" + }, + { + "name": "East Renfrewshire", + "shortCode": "ERW" + }, + { + "name": "East Riding of Yorkshire", + "shortCode": "ERY" + }, + { + "name": "East Sussex", + "shortCode": "ESX" + }, + { + "name": "Edinburgh, City of", + "shortCode": "EDH" + }, + { + "name": "Eilean Siar", + "shortCode": "ELS" + }, + { + "name": "Enfield", + "shortCode": "ENF" + }, + { + "name": "Essex", + "shortCode": "ESS" + }, + { + "name": "Falkirk", + "shortCode": "FAL" + }, + { + "name": "Fermanagh and Omagh", + "shortCode": "FMO" + }, + { + "name": "Fife", + "shortCode": "FIF" + }, + { + "name": "Flintshire", + "shortCode": "FLN" + }, + { + "name": "Gateshead", + "shortCode": "GAT" + }, + { + "name": "Glasgow City", + "shortCode": "GLG" + }, + { + "name": "Gloucestershire", + "shortCode": "GLS" + }, + { + "name": "Greenwich", + "shortCode": "GRE" + }, + { + "name": "Gwynedd", + "shortCode": "GWN" + }, + { + "name": "Hackney", + "shortCode": "HCK" + }, + { + "name": "Halton", + "shortCode": "HAL" + }, + { + "name": "Hammersmith and Fulham", + "shortCode": "HMF" + }, + { + "name": "Hampshire", + "shortCode": "HAM" + }, + { + "name": "Haringey", + "shortCode": "HRY" + }, + { + "name": "Harrow", + "shortCode": "HRW" + }, + { + "name": "Hartlepool", + "shortCode": "HPL" + }, + { + "name": "Havering", + "shortCode": "HAV" + }, + { + "name": "Herefordshire", + "shortCode": "HEF" + }, + { + "name": "Hertfordshire", + "shortCode": "HRT" + }, + { + "name": "Highland", + "shortCode": "HLD" + }, + { + "name": "Hillingdon", + "shortCode": "HIL" + }, + { + "name": "Hounslow", + "shortCode": "HNS" + }, + { + "name": "Inverclyde", + "shortCode": "IVC" + }, + { + "name": "Isle of Anglesey", + "shortCode": "AGY" + }, + { + "name": "Isle of Wight", + "shortCode": "IOW" + }, + { + "name": "Isles of Scilly", + "shortCode": "IOS" + }, + { + "name": "Islington", + "shortCode": "ISL" + }, + { + "name": "Kensington and Chelsea", + "shortCode": "KEC" + }, + { + "name": "Kent", + "shortCode": "KEN" + }, + { + "name": "Kingston upon Hull", + "shortCode": "KHL" + }, + { + "name": "Kingston upon Thames", + "shortCode": "KTT" + }, + { + "name": "Kirklees", + "shortCode": "KIR" + }, + { + "name": "Knowsley", + "shortCode": "KWL" + }, + { + "name": "Lambeth", + "shortCode": "LBH" + }, + { + "name": "Lancashire", + "shortCode": "LAN" + }, + { + "name": "Leeds", + "shortCode": "LDS" + }, + { + "name": "Leicester", + "shortCode": "LCE" + }, + { + "name": "Leicestershire", + "shortCode": "LEC" + }, + { + "name": "Lewisham", + "shortCode": "LEW" + }, + { + "name": "Lincolnshire", + "shortCode": "LIN" + }, + { + "name": "Lisburn and Castlereagh", + "shortCode": "LBC" + }, + { + "name": "Liverpool", + "shortCode": "LIV" + }, + { + "name": "London, City of", + "shortCode": "LND" + }, + { + "name": "Luton", + "shortCode": "LUT" + }, + { + "name": "Manchester", + "shortCode": "MAN" + }, + { + "name": "Medway", + "shortCode": "MDW" + }, + { + "name": "Merthyr Tydfil", + "shortCode": "MTY" + }, + { + "name": "Merton", + "shortCode": "MRT" + }, + { + "name": "Mid and East Antrim", + "shortCode": "MEA" + }, + { + "name": "Mid Ulster", + "shortCode": "MUL" + }, + { + "name": "Middlesbrough", + "shortCode": "MDB" + }, + { + "name": "Midlothian", + "shortCode": "MLN" + }, + { + "name": "Milton Keynes", + "shortCode": "MIK" + }, + { + "name": "Monmouthshire", + "shortCode": "MON" + }, + { + "name": "Moray", + "shortCode": "MRY" + }, + { + "name": "Neath Port Talbot", + "shortCode": "NTL" + }, + { + "name": "Newcastle upon Tyne", + "shortCode": "NET" + }, + { + "name": "Newham", + "shortCode": "NWM" + }, + { + "name": "Newport", + "shortCode": "NWP" + }, + { + "name": "Newry, Mourne and Down", + "shortCode": "NMD" + }, + { + "name": "Norfolk", + "shortCode": "NFK" + }, + { + "name": "North Ayrshire", + "shortCode": "NAY" + }, + { + "name": "North East Lincolnshire", + "shortCode": "NEL" + }, + { + "name": "North Lanarkshire", + "shortCode": "NLK" + }, + { + "name": "North Lincolnshire", + "shortCode": "NLN" + }, + { + "name": "North Somerset", + "shortCode": "NSM" + }, + { + "name": "North Tyneside", + "shortCode": "NTY" + }, + { + "name": "North Yorkshire", + "shortCode": "NYK" + }, + { + "name": "Northamptonshire", + "shortCode": "NTH" + }, + { + "name": "Northumberland", + "shortCode": "NBL" + }, + { + "name": "Nottingham", + "shortCode": "NGM" + }, + { + "name": "Nottinghamshire", + "shortCode": "NTT" + }, + { + "name": "Oldham", + "shortCode": "OLD" + }, + { + "name": "Orkney Islands", + "shortCode": "ORK" + }, + { + "name": "Oxfordshire", + "shortCode": "OXF" + }, + { + "name": "Pembrokeshire", + "shortCode": "PEM" + }, + { + "name": "Perth and Kinross", + "shortCode": "PKN" + }, + { + "name": "Peterborough", + "shortCode": "PTE" + }, + { + "name": "Plymouth", + "shortCode": "PLY" + }, + { + "name": "Poole", + "shortCode": "POL" + }, + { + "name": "Portsmouth", + "shortCode": "POR" + }, + { + "name": "Powys", + "shortCode": "POW" + }, + { + "name": "Reading", + "shortCode": "RDG" + }, + { + "name": "Redbridge", + "shortCode": "RDB" + }, + { + "name": "Redcar and Cleveland", + "shortCode": "RCC" + }, + { + "name": "Renfrewshire", + "shortCode": "RFW" + }, + { + "name": "Rhondda, Cynon, Taff", + "shortCode": "RCT" + }, + { + "name": "Richmond upon Thames", + "shortCode": "RIC" + }, + { + "name": "Rochdale", + "shortCode": "RCH" + }, + { + "name": "Rotherham", + "shortCode": "ROT" + }, + { + "name": "Rutland", + "shortCode": "RUT" + }, + { + "name": "St. Helens", + "shortCode": "SHN" + }, + { + "name": "Salford", + "shortCode": "SLF" + }, + { + "name": "Sandwell", + "shortCode": "SAW" + }, + { + "name": "Scottish Borders, The", + "shortCode": "SCB" + }, + { + "name": "Sefton", + "shortCode": "SFT" + }, + { + "name": "Sheffield", + "shortCode": "SHF" + }, + { + "name": "Shetland Islands", + "shortCode": "ZET" + }, + { + "name": "Shropshire", + "shortCode": "SHR" + }, + { + "name": "Slough", + "shortCode": "SLG" + }, + { + "name": "Solihull", + "shortCode": "SOL" + }, + { + "name": "Somerset", + "shortCode": "SOM" + }, + { + "name": "South Ayrshire", + "shortCode": "SAY" + }, + { + "name": "South Gloucestershire", + "shortCode": "SGC" + }, + { + "name": "South Lanarkshire", + "shortCode": "SLK" + }, + { + "name": "South Tyneside", + "shortCode": "STY" + }, + { + "name": "Southampton", + "shortCode": "STH" + }, + { + "name": "Southend-on-Sea", + "shortCode": "SOS" + }, + { + "name": "Southwark", + "shortCode": "SWK" + }, + { + "name": "Staffordshire", + "shortCode": "STS" + }, + { + "name": "Stirling", + "shortCode": "STG" + }, + { + "name": "Stockport", + "shortCode": "SKP" + }, + { + "name": "Stockton-on-Tees", + "shortCode": "STT" + }, + { + "name": "Stoke-on-Trent", + "shortCode": "STE" + }, + { + "name": "Suffolk", + "shortCode": "SFK" + }, + { + "name": "Sunderland", + "shortCode": "SND" + }, + { + "name": "Surrey", + "shortCode": "SRY" + }, + { + "name": "Sutton", + "shortCode": "STN" + }, + { + "name": "Swansea", + "shortCode": "SWA" + }, + { + "name": "Swindon", + "shortCode": "SWD" + }, + { + "name": "Tameside", + "shortCode": "TAM" + }, + { + "name": "Telford and Wrekin", + "shortCode": "TFW" + }, + { + "name": "Thurrock", + "shortCode": "THR" + }, + { + "name": "Torbay", + "shortCode": "TOB" + }, + { + "name": "Torfaen", + "shortCode": "TOF" + }, + { + "name": "Tower Hamlets", + "shortCode": "TWH" + }, + { + "name": "Trafford", + "shortCode": "TRF" + }, + { + "name": "Vale of Glamorgan, The", + "shortCode": "VGL" + }, + { + "name": "Wakefield", + "shortCode": "WKF" + }, + { + "name": "Walsall", + "shortCode": "WLL" + }, + { + "name": "Waltham Forest", + "shortCode": "WFT" + }, + { + "name": "Wandsworth", + "shortCode": "WND" + }, + { + "name": "Warrington", + "shortCode": "WRT" + }, + { + "name": "Warwickshire", + "shortCode": "WAR" + }, + { + "name": "West Berkshire", + "shortCode": "WBK" + }, + { + "name": "West Dunbartonshire", + "shortCode": "WDU" + }, + { + "name": "West Lothian", + "shortCode": "WLN" + }, + { + "name": "West Sussex", + "shortCode": "WSX" + }, + { + "name": "Westminster", + "shortCode": "WSM" + }, + { + "name": "Wigan", + "shortCode": "WGN" + }, + { + "name": "Wiltshire", + "shortCode": "WIL" + }, + { + "name": "Windsor and Maidenhead", + "shortCode": "WNM" + }, + { + "name": "Wirral", + "shortCode": "WRL" + }, + { + "name": "Wokingham", + "shortCode": "WOK" + }, + { + "name": "Wolverhampton", + "shortCode": "WLV" }, { - "zoneName": "Europe/Simferopol", - "gmtOffset": 10800, - "gmtOffsetName": "UTC+03:00", - "abbreviation": "MSK", - "tzName": "Moscow Time" + "name": "Worcestershire", + "shortCode": "WOR" }, { - "zoneName": "Europe/Uzhgorod", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "Wrexham", + "shortCode": "WRX" }, { - "zoneName": "Europe/Zaporozhye", - "gmtOffset": 7200, - "gmtOffsetName": "UTC+02:00", - "abbreviation": "EET", - "tzName": "Eastern European Time" + "name": "York", + "shortCode": "YOR" } ], - "regions": [ - { "name": "Cherkasy", "shortCode": "71" }, - { "name": "Chernihiv", "shortCode": "74" }, - { "name": "Chernivtsi", "shortCode": "77" }, - { "name": "Dnipropetrovsk", "shortCode": "12" }, - { "name": "Donetsk", "shortCode": "14" }, - { "name": "Ivano-Frankivsk", "shortCode": "26" }, - { "name": "Kharkiv", "shortCode": "63" }, - { "name": "Kherson", "shortCode": "65" }, - { "name": "Khmelnytskyi", "shortCode": "68" }, - { "name": "Kiev", "shortCode": "32" }, - { "name": "Kirovohrad", "shortCode": "35" }, - { "name": "Luhansk", "shortCode": "09" }, - { "name": "Lviv", "shortCode": "46" }, - { "name": "Mykolaiv", "shortCode": "48" }, - { "name": "Odessa", "shortCode": "51" }, - { "name": "Poltava", "shortCode": "53" }, - { "name": "Rivne", "shortCode": "56" }, - { "name": "Sumy", "shortCode": "59" }, - { "name": "Ternopil", "shortCode": "61" }, - { "name": "Vinnytsia", "shortCode": "05" }, - { "name": "Volyn", "shortCode": "07" }, - { "name": "Zakarpattia", "shortCode": "21" }, - { "name": "Zaporizhia", "shortCode": "23" }, - { "name": "Zhytomyr", "shortCode": "18" }, - { "name": "Avtonomna Respublika Krym", "shortCode": "43" }, - { "name": "Kyïv", "shortCode": "30" }, - { "name": "Sevastopol", "shortCode": "40" } - ] - }, - { - "countryName": "United Arab Emirates", - "countryShortCode": "AE", - "phoneCode": "+971", - "currencyCode": "AED", - "latitude": "24.00000000", - "longitude": "54.00000000", - "timezones": [ - { - "zoneName": "Asia/Dubai", - "gmtOffset": 14400, - "gmtOffsetName": "UTC+04:00", - "abbreviation": "GST", - "tzName": "Gulf Standard Time" - } + "capital": "London", + "population": 67326569, + "area": 242495, + "continent": "Europe", + "officialName": "United Kingdom of Great Britain and Northern Ireland", + "nativeName": "United Kingdom of Great Britain and Northern Ireland", + "demonym": "Briton", + "languages": [ + "English" ], - "regions": [ - { "name": "Abu Dhabi", "shortCode": "AZ" }, - { "name": "Ajman", "shortCode": "AJ" }, - { "name": "Dubai", "shortCode": "DU" }, - { "name": "Fujairah", "shortCode": "FU" }, - { "name": "Ras al Khaimah", "shortCode": "RK" }, - { "name": "Sharjah", "shortCode": "SH" }, - { "name": "Umm Al Quwain", "shortCode": "UQ" } - ] - }, - { - "countryName": "United Kingdom", - "countryShortCode": "GB", - "phoneCode": "+44", - "currencyCode": "GBP", - "latitude": "54.00000000", - "longitude": "-2.00000000", - "timezones": [ - { - "zoneName": "Europe/London", - "gmtOffset": 0, - "gmtOffsetName": "UTC±00", - "abbreviation": "GMT", - "tzName": "Greenwich Mean Time" - } + "tld": [ + ".uk" ], - "regions": [ - { "name": "Aberdeen City", "shortCode": "ABE" }, - { "name": "Aberdeenshire", "shortCode": "ABD" }, - { "name": "Angus", "shortCode": "ANS" }, - { "name": "Antrim and Newtownabbey", "shortCode": "ANN" }, - { "name": "Ards and North Down", "shortCode": "AND" }, - { "name": "Argyll and Bute", "shortCode": "AGB" }, - { "name": "Armagh, Banbridge and Craigavon", "shortCode": "ABC" }, - { "name": "Barking and Dagenham", "shortCode": "BDG" }, - { "name": "Barnet", "shortCode": "BNE" }, - { "name": "Barnsley", "shortCode": "BNS" }, - { "name": "Bath and North East Somerset", "shortCode": "BAS" }, - { "name": "Bedford", "shortCode": "BDF" }, - { "name": "Belfast", "shortCode": "BFS" }, - { "name": "Bexley", "shortCode": "BEX" }, - { "name": "Birmingham", "shortCode": "BIR" }, - { "name": "Blackburn with Darwen", "shortCode": "BBD" }, - { "name": "Blackpool", "shortCode": "BPL" }, - { "name": "Blaenau Gwent", "shortCode": "BGW" }, - { "name": "Bolton", "shortCode": "BOL" }, - { "name": "Bournemouth", "shortCode": "BMH" }, - { "name": "Bracknell Forest", "shortCode": "BRC" }, - { "name": "Bradford", "shortCode": "BRD" }, - { "name": "Brent", "shortCode": "BEN" }, - { "name": "Bridgend", "shortCode": "BGE" }, - { "name": "Brighton and Hove", "shortCode": "BNH" }, - { "name": "Bristol, City of", "shortCode": "BST" }, - { "name": "Bromley", "shortCode": "BRY" }, - { "name": "Buckinghamshire", "shortCode": "BKM" }, - { "name": "Bury", "shortCode": "BUR" }, - { "name": "Caerphilly", "shortCode": "CAY" }, - { "name": "Calderdale", "shortCode": "CLD" }, - { "name": "Cambridgeshire", "shortCode": "CAM" }, - { "name": "Camden", "shortCode": "CMD" }, - { "name": "Cardiff", "shortCode": "CRF" }, - { "name": "Carmarthenshire", "shortCode": "CMN" }, - { "name": "Causeway Coast and Glens", "shortCode": "CCG" }, - { "name": "Central Bedfordshire", "shortCode": "CBF" }, - { "name": "Ceredigion", "shortCode": "CGN" }, - { "name": "Cheshire East", "shortCode": "CHE" }, - { "name": "Cheshire West and Chester", "shortCode": "CHW" }, - { "name": "Clackmannanshire", "shortCode": "CLK" }, - { "name": "Conwy", "shortCode": "CWY" }, - { "name": "Cornwall", "shortCode": "CON" }, - { "name": "Coventry", "shortCode": "COV" }, - { "name": "Croydon", "shortCode": "CRY" }, - { "name": "Cumbria", "shortCode": "CMA" }, - { "name": "Darlington", "shortCode": "DAL" }, - { "name": "Denbighshire", "shortCode": "DEN" }, - { "name": "Derby", "shortCode": "DER" }, - { "name": "Derbyshire", "shortCode": "DBY" }, - { "name": "Derry and Strabane", "shortCode": "DRS" }, - { "name": "Devon", "shortCode": "DEV" }, - { "name": "Doncaster", "shortCode": "DNC" }, - { "name": "Dorset", "shortCode": "DOR" }, - { "name": "Dudley", "shortCode": "DUD" }, - { "name": "Dumfries and Galloway", "shortCode": "DGY" }, - { "name": "Dundee City", "shortCode": "DND" }, - { "name": "Durham County", "shortCode": "DUR" }, - { "name": "Ealing", "shortCode": "EAL" }, - { "name": "East Ayrshire", "shortCode": "EAY" }, - { "name": "East Dunbartonshire", "shortCode": "EDU" }, - { "name": "East Lothian", "shortCode": "ELN" }, - { "name": "East Renfrewshire", "shortCode": "ERW" }, - { "name": "East Riding of Yorkshire", "shortCode": "ERY" }, - { "name": "East Sussex", "shortCode": "ESX" }, - { "name": "Edinburgh, City of", "shortCode": "EDH" }, - { "name": "Eilean Siar", "shortCode": "ELS" }, - { "name": "Enfield", "shortCode": "ENF" }, - { "name": "Essex", "shortCode": "ESS" }, - { "name": "Falkirk", "shortCode": "FAL" }, - { "name": "Fermanagh and Omagh", "shortCode": "FMO" }, - { "name": "Fife", "shortCode": "FIF" }, - { "name": "Flintshire", "shortCode": "FLN" }, - { "name": "Gateshead", "shortCode": "GAT" }, - { "name": "Glasgow City", "shortCode": "GLG" }, - { "name": "Gloucestershire", "shortCode": "GLS" }, - { "name": "Greenwich", "shortCode": "GRE" }, - { "name": "Gwynedd", "shortCode": "GWN" }, - { "name": "Hackney", "shortCode": "HCK" }, - { "name": "Halton", "shortCode": "HAL" }, - { "name": "Hammersmith and Fulham", "shortCode": "HMF" }, - { "name": "Hampshire", "shortCode": "HAM" }, - { "name": "Haringey", "shortCode": "HRY" }, - { "name": "Harrow", "shortCode": "HRW" }, - { "name": "Hartlepool", "shortCode": "HPL" }, - { "name": "Havering", "shortCode": "HAV" }, - { "name": "Herefordshire", "shortCode": "HEF" }, - { "name": "Hertfordshire", "shortCode": "HRT" }, - { "name": "Highland", "shortCode": "HLD" }, - { "name": "Hillingdon", "shortCode": "HIL" }, - { "name": "Hounslow", "shortCode": "HNS" }, - { "name": "Inverclyde", "shortCode": "IVC" }, - { "name": "Isle of Anglesey", "shortCode": "AGY" }, - { "name": "Isle of Wight", "shortCode": "IOW" }, - { "name": "Isles of Scilly", "shortCode": "IOS" }, - { "name": "Islington", "shortCode": "ISL" }, - { "name": "Kensington and Chelsea", "shortCode": "KEC" }, - { "name": "Kent", "shortCode": "KEN" }, - { "name": "Kingston upon Hull", "shortCode": "KHL" }, - { "name": "Kingston upon Thames", "shortCode": "KTT" }, - { "name": "Kirklees", "shortCode": "KIR" }, - { "name": "Knowsley", "shortCode": "KWL" }, - { "name": "Lambeth", "shortCode": "LBH" }, - { "name": "Lancashire", "shortCode": "LAN" }, - { "name": "Leeds", "shortCode": "LDS" }, - { "name": "Leicester", "shortCode": "LCE" }, - { "name": "Leicestershire", "shortCode": "LEC" }, - { "name": "Lewisham", "shortCode": "LEW" }, - { "name": "Lincolnshire", "shortCode": "LIN" }, - { "name": "Lisburn and Castlereagh", "shortCode": "LBC" }, - { "name": "Liverpool", "shortCode": "LIV" }, - { "name": "London, City of", "shortCode": "LND" }, - { "name": "Luton", "shortCode": "LUT" }, - { "name": "Manchester", "shortCode": "MAN" }, - { "name": "Medway", "shortCode": "MDW" }, - { "name": "Merthyr Tydfil", "shortCode": "MTY" }, - { "name": "Merton", "shortCode": "MRT" }, - { "name": "Mid and East Antrim", "shortCode": "MEA" }, - { "name": "Mid Ulster", "shortCode": "MUL" }, - { "name": "Middlesbrough", "shortCode": "MDB" }, - { "name": "Midlothian", "shortCode": "MLN" }, - { "name": "Milton Keynes", "shortCode": "MIK" }, - { "name": "Monmouthshire", "shortCode": "MON" }, - { "name": "Moray", "shortCode": "MRY" }, - { "name": "Neath Port Talbot", "shortCode": "NTL" }, - { "name": "Newcastle upon Tyne", "shortCode": "NET" }, - { "name": "Newham", "shortCode": "NWM" }, - { "name": "Newport", "shortCode": "NWP" }, - { "name": "Newry, Mourne and Down", "shortCode": "NMD" }, - { "name": "Norfolk", "shortCode": "NFK" }, - { "name": "North Ayrshire", "shortCode": "NAY" }, - { "name": "North East Lincolnshire", "shortCode": "NEL" }, - { "name": "North Lanarkshire", "shortCode": "NLK" }, - { "name": "North Lincolnshire", "shortCode": "NLN" }, - { "name": "North Somerset", "shortCode": "NSM" }, - { "name": "North Tyneside", "shortCode": "NTY" }, - { "name": "North Yorkshire", "shortCode": "NYK" }, - { "name": "Northamptonshire", "shortCode": "NTH" }, - { "name": "Northumberland", "shortCode": "NBL" }, - { "name": "Nottingham", "shortCode": "NGM" }, - { "name": "Nottinghamshire", "shortCode": "NTT" }, - { "name": "Oldham", "shortCode": "OLD" }, - { "name": "Orkney Islands", "shortCode": "ORK" }, - { "name": "Oxfordshire", "shortCode": "OXF" }, - { "name": "Pembrokeshire", "shortCode": "PEM" }, - { "name": "Perth and Kinross", "shortCode": "PKN" }, - { "name": "Peterborough", "shortCode": "PTE" }, - { "name": "Plymouth", "shortCode": "PLY" }, - { "name": "Poole", "shortCode": "POL" }, - { "name": "Portsmouth", "shortCode": "POR" }, - { "name": "Powys", "shortCode": "POW" }, - { "name": "Reading", "shortCode": "RDG" }, - { "name": "Redbridge", "shortCode": "RDB" }, - { "name": "Redcar and Cleveland", "shortCode": "RCC" }, - { "name": "Renfrewshire", "shortCode": "RFW" }, - { "name": "Rhondda, Cynon, Taff", "shortCode": "RCT" }, - { "name": "Richmond upon Thames", "shortCode": "RIC" }, - { "name": "Rochdale", "shortCode": "RCH" }, - { "name": "Rotherham", "shortCode": "ROT" }, - { "name": "Rutland", "shortCode": "RUT" }, - { "name": "St. Helens", "shortCode": "SHN" }, - { "name": "Salford", "shortCode": "SLF" }, - { "name": "Sandwell", "shortCode": "SAW" }, - { "name": "Scottish Borders, The", "shortCode": "SCB" }, - { "name": "Sefton", "shortCode": "SFT" }, - { "name": "Sheffield", "shortCode": "SHF" }, - { "name": "Shetland Islands", "shortCode": "ZET" }, - { "name": "Shropshire", "shortCode": "SHR" }, - { "name": "Slough", "shortCode": "SLG" }, - { "name": "Solihull", "shortCode": "SOL" }, - { "name": "Somerset", "shortCode": "SOM" }, - { "name": "South Ayrshire", "shortCode": "SAY" }, - { "name": "South Gloucestershire", "shortCode": "SGC" }, - { "name": "South Lanarkshire", "shortCode": "SLK" }, - { "name": "South Tyneside", "shortCode": "STY" }, - { "name": "Southampton", "shortCode": "STH" }, - { "name": "Southend-on-Sea", "shortCode": "SOS" }, - { "name": "Southwark", "shortCode": "SWK" }, - { "name": "Staffordshire", "shortCode": "STS" }, - { "name": "Stirling", "shortCode": "STG" }, - { "name": "Stockport", "shortCode": "SKP" }, - { "name": "Stockton-on-Tees", "shortCode": "STT" }, - { "name": "Stoke-on-Trent", "shortCode": "STE" }, - { "name": "Suffolk", "shortCode": "SFK" }, - { "name": "Sunderland", "shortCode": "SND" }, - { "name": "Surrey", "shortCode": "SRY" }, - { "name": "Sutton", "shortCode": "STN" }, - { "name": "Swansea", "shortCode": "SWA" }, - { "name": "Swindon", "shortCode": "SWD" }, - { "name": "Tameside", "shortCode": "TAM" }, - { "name": "Telford and Wrekin", "shortCode": "TFW" }, - { "name": "Thurrock", "shortCode": "THR" }, - { "name": "Torbay", "shortCode": "TOB" }, - { "name": "Torfaen", "shortCode": "TOF" }, - { "name": "Tower Hamlets", "shortCode": "TWH" }, - { "name": "Trafford", "shortCode": "TRF" }, - { "name": "Vale of Glamorgan, The", "shortCode": "VGL" }, - { "name": "Wakefield", "shortCode": "WKF" }, - { "name": "Walsall", "shortCode": "WLL" }, - { "name": "Waltham Forest", "shortCode": "WFT" }, - { "name": "Wandsworth", "shortCode": "WND" }, - { "name": "Warrington", "shortCode": "WRT" }, - { "name": "Warwickshire", "shortCode": "WAR" }, - { "name": "West Berkshire", "shortCode": "WBK" }, - { "name": "West Dunbartonshire", "shortCode": "WDU" }, - { "name": "West Lothian", "shortCode": "WLN" }, - { "name": "West Sussex", "shortCode": "WSX" }, - { "name": "Westminster", "shortCode": "WSM" }, - { "name": "Wigan", "shortCode": "WGN" }, - { "name": "Wiltshire", "shortCode": "WIL" }, - { "name": "Windsor and Maidenhead", "shortCode": "WNM" }, - { "name": "Wirral", "shortCode": "WRL" }, - { "name": "Wokingham", "shortCode": "WOK" }, - { "name": "Wolverhampton", "shortCode": "WLV" }, - { "name": "Worcestershire", "shortCode": "WOR" }, - { "name": "Wrexham", "shortCode": "WRX" }, - { "name": "York", "shortCode": "YOR" } - ] + "borders": [ + "IE" + ], + "unMember": true, + "independent": true }, { "countryName": "United States", @@ -9777,192 +27018,395 @@ "tzName": "Eastern Standard Time (North America" }, { - "zoneName": "America/Indiana/Vincennes", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "zoneName": "America/Indiana/Vincennes", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + }, + { + "zoneName": "America/Indiana/Winamac", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + }, + { + "zoneName": "America/Juneau", + "gmtOffset": -32400, + "gmtOffsetName": "UTC-09:00", + "abbreviation": "AKST", + "tzName": "Alaska Standard Time" + }, + { + "zoneName": "America/Kentucky/Louisville", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + }, + { + "zoneName": "America/Kentucky/Monticello", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + }, + { + "zoneName": "America/Los_Angeles", + "gmtOffset": -28800, + "gmtOffsetName": "UTC-08:00", + "abbreviation": "PST", + "tzName": "Pacific Standard Time (North America" + }, + { + "zoneName": "America/Menominee", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Metlakatla", + "gmtOffset": -32400, + "gmtOffsetName": "UTC-09:00", + "abbreviation": "AKST", + "tzName": "Alaska Standard Time" + }, + { + "zoneName": "America/New_York", + "gmtOffset": -18000, + "gmtOffsetName": "UTC-05:00", + "abbreviation": "EST", + "tzName": "Eastern Standard Time (North America" + }, + { + "zoneName": "America/Nome", + "gmtOffset": -32400, + "gmtOffsetName": "UTC-09:00", + "abbreviation": "AKST", + "tzName": "Alaska Standard Time" + }, + { + "zoneName": "America/North_Dakota/Beulah", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/North_Dakota/Center", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/North_Dakota/New_Salem", + "gmtOffset": -21600, + "gmtOffsetName": "UTC-06:00", + "abbreviation": "CST", + "tzName": "Central Standard Time (North America" + }, + { + "zoneName": "America/Phoenix", + "gmtOffset": -25200, + "gmtOffsetName": "UTC-07:00", + "abbreviation": "MST", + "tzName": "Mountain Standard Time (North America" + }, + { + "zoneName": "America/Sitka", + "gmtOffset": -32400, + "gmtOffsetName": "UTC-09:00", + "abbreviation": "AKST", + "tzName": "Alaska Standard Time" + }, + { + "zoneName": "America/Yakutat", + "gmtOffset": -32400, + "gmtOffsetName": "UTC-09:00", + "abbreviation": "AKST", + "tzName": "Alaska Standard Time" + }, + { + "zoneName": "Pacific/Honolulu", + "gmtOffset": -36000, + "gmtOffsetName": "UTC-10:00", + "abbreviation": "HST", + "tzName": "Hawaii–Aleutian Standard Time" + } + ], + "regions": [ + { + "name": "Alabama", + "shortCode": "AL" + }, + { + "name": "Alaska", + "shortCode": "AK" + }, + { + "name": "American Samoa", + "shortCode": "AS" + }, + { + "name": "Arizona", + "shortCode": "AZ" + }, + { + "name": "Arkansas", + "shortCode": "AR" + }, + { + "name": "California", + "shortCode": "CA" + }, + { + "name": "Colorado", + "shortCode": "CO" + }, + { + "name": "Connecticut", + "shortCode": "CT" + }, + { + "name": "Delaware", + "shortCode": "DE" + }, + { + "name": "District of Columbia", + "shortCode": "DC" + }, + { + "name": "Micronesia", + "shortCode": "FM" + }, + { + "name": "Florida", + "shortCode": "FL" + }, + { + "name": "Georgia", + "shortCode": "GA" + }, + { + "name": "Guam", + "shortCode": "GU" + }, + { + "name": "Hawaii", + "shortCode": "HI" + }, + { + "name": "Idaho", + "shortCode": "ID" + }, + { + "name": "Illinois", + "shortCode": "IL" + }, + { + "name": "Indiana", + "shortCode": "IN" + }, + { + "name": "Iowa", + "shortCode": "IA" + }, + { + "name": "Kansas", + "shortCode": "KS" + }, + { + "name": "Kentucky", + "shortCode": "KY" + }, + { + "name": "Louisiana", + "shortCode": "LA" + }, + { + "name": "Maine", + "shortCode": "ME" + }, + { + "name": "Marshall Islands", + "shortCode": "MH" + }, + { + "name": "Maryland", + "shortCode": "MD" + }, + { + "name": "Massachusetts", + "shortCode": "MA" + }, + { + "name": "Michigan", + "shortCode": "MI" + }, + { + "name": "Minnesota", + "shortCode": "MN" + }, + { + "name": "Mississippi", + "shortCode": "MS" + }, + { + "name": "Missouri", + "shortCode": "MO" + }, + { + "name": "Montana", + "shortCode": "MT" + }, + { + "name": "Nebraska", + "shortCode": "NE" + }, + { + "name": "Nevada", + "shortCode": "NV" + }, + { + "name": "New Hampshire", + "shortCode": "NH" + }, + { + "name": "New Jersey", + "shortCode": "NJ" + }, + { + "name": "New Mexico", + "shortCode": "NM" + }, + { + "name": "New York", + "shortCode": "NY" + }, + { + "name": "North Carolina", + "shortCode": "NC" + }, + { + "name": "North Dakota", + "shortCode": "ND" + }, + { + "name": "Northern Mariana Islands", + "shortCode": "MP" + }, + { + "name": "Ohio", + "shortCode": "OH" + }, + { + "name": "Oklahoma", + "shortCode": "OK" + }, + { + "name": "Oregon", + "shortCode": "OR" }, { - "zoneName": "America/Indiana/Winamac", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "name": "Palau", + "shortCode": "PW" }, { - "zoneName": "America/Juneau", - "gmtOffset": -32400, - "gmtOffsetName": "UTC-09:00", - "abbreviation": "AKST", - "tzName": "Alaska Standard Time" + "name": "Pennsylvania", + "shortCode": "PA" }, { - "zoneName": "America/Kentucky/Louisville", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "name": "Puerto Rico", + "shortCode": "PR" }, { - "zoneName": "America/Kentucky/Monticello", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "name": "Rhode Island", + "shortCode": "RI" }, { - "zoneName": "America/Los_Angeles", - "gmtOffset": -28800, - "gmtOffsetName": "UTC-08:00", - "abbreviation": "PST", - "tzName": "Pacific Standard Time (North America" + "name": "South Carolina", + "shortCode": "SC" }, { - "zoneName": "America/Menominee", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "South Dakota", + "shortCode": "SD" }, { - "zoneName": "America/Metlakatla", - "gmtOffset": -32400, - "gmtOffsetName": "UTC-09:00", - "abbreviation": "AKST", - "tzName": "Alaska Standard Time" + "name": "Tennessee", + "shortCode": "TN" }, { - "zoneName": "America/New_York", - "gmtOffset": -18000, - "gmtOffsetName": "UTC-05:00", - "abbreviation": "EST", - "tzName": "Eastern Standard Time (North America" + "name": "Texas", + "shortCode": "TX" }, { - "zoneName": "America/Nome", - "gmtOffset": -32400, - "gmtOffsetName": "UTC-09:00", - "abbreviation": "AKST", - "tzName": "Alaska Standard Time" + "name": "Utah", + "shortCode": "UT" }, { - "zoneName": "America/North_Dakota/Beulah", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Vermont", + "shortCode": "VT" }, { - "zoneName": "America/North_Dakota/Center", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Virgin Islands", + "shortCode": "VI" }, { - "zoneName": "America/North_Dakota/New_Salem", - "gmtOffset": -21600, - "gmtOffsetName": "UTC-06:00", - "abbreviation": "CST", - "tzName": "Central Standard Time (North America" + "name": "Virginia", + "shortCode": "VA" }, { - "zoneName": "America/Phoenix", - "gmtOffset": -25200, - "gmtOffsetName": "UTC-07:00", - "abbreviation": "MST", - "tzName": "Mountain Standard Time (North America" + "name": "Washington", + "shortCode": "WA" }, { - "zoneName": "America/Sitka", - "gmtOffset": -32400, - "gmtOffsetName": "UTC-09:00", - "abbreviation": "AKST", - "tzName": "Alaska Standard Time" + "name": "West Virginia", + "shortCode": "WV" }, { - "zoneName": "America/Yakutat", - "gmtOffset": -32400, - "gmtOffsetName": "UTC-09:00", - "abbreviation": "AKST", - "tzName": "Alaska Standard Time" + "name": "Wisconsin", + "shortCode": "WI" }, { - "zoneName": "Pacific/Honolulu", - "gmtOffset": -36000, - "gmtOffsetName": "UTC-10:00", - "abbreviation": "HST", - "tzName": "Hawaii–Aleutian Standard Time" - } - ], - "regions": [ - { "name": "Alabama", "shortCode": "AL" }, - { "name": "Alaska", "shortCode": "AK" }, - { "name": "American Samoa", "shortCode": "AS" }, - { "name": "Arizona", "shortCode": "AZ" }, - { "name": "Arkansas", "shortCode": "AR" }, - { "name": "California", "shortCode": "CA" }, - { "name": "Colorado", "shortCode": "CO" }, - { "name": "Connecticut", "shortCode": "CT" }, - { "name": "Delaware", "shortCode": "DE" }, - { "name": "District of Columbia", "shortCode": "DC" }, - { "name": "Micronesia", "shortCode": "FM" }, - { "name": "Florida", "shortCode": "FL" }, - { "name": "Georgia", "shortCode": "GA" }, - { "name": "Guam", "shortCode": "GU" }, - { "name": "Hawaii", "shortCode": "HI" }, - { "name": "Idaho", "shortCode": "ID" }, - { "name": "Illinois", "shortCode": "IL" }, - { "name": "Indiana", "shortCode": "IN" }, - { "name": "Iowa", "shortCode": "IA" }, - { "name": "Kansas", "shortCode": "KS" }, - { "name": "Kentucky", "shortCode": "KY" }, - { "name": "Louisiana", "shortCode": "LA" }, - { "name": "Maine", "shortCode": "ME" }, - { "name": "Marshall Islands", "shortCode": "MH" }, - { "name": "Maryland", "shortCode": "MD" }, - { "name": "Massachusetts", "shortCode": "MA" }, - { "name": "Michigan", "shortCode": "MI" }, - { "name": "Minnesota", "shortCode": "MN" }, - { "name": "Mississippi", "shortCode": "MS" }, - { "name": "Missouri", "shortCode": "MO" }, - { "name": "Montana", "shortCode": "MT" }, - { "name": "Nebraska", "shortCode": "NE" }, - { "name": "Nevada", "shortCode": "NV" }, - { "name": "New Hampshire", "shortCode": "NH" }, - { "name": "New Jersey", "shortCode": "NJ" }, - { "name": "New Mexico", "shortCode": "NM" }, - { "name": "New York", "shortCode": "NY" }, - { "name": "North Carolina", "shortCode": "NC" }, - { "name": "North Dakota", "shortCode": "ND" }, - { "name": "Northern Mariana Islands", "shortCode": "MP" }, - { "name": "Ohio", "shortCode": "OH" }, - { "name": "Oklahoma", "shortCode": "OK" }, - { "name": "Oregon", "shortCode": "OR" }, - { "name": "Palau", "shortCode": "PW" }, - { "name": "Pennsylvania", "shortCode": "PA" }, - { "name": "Puerto Rico", "shortCode": "PR" }, - { "name": "Rhode Island", "shortCode": "RI" }, - { "name": "South Carolina", "shortCode": "SC" }, - { "name": "South Dakota", "shortCode": "SD" }, - { "name": "Tennessee", "shortCode": "TN" }, - { "name": "Texas", "shortCode": "TX" }, - { "name": "Utah", "shortCode": "UT" }, - { "name": "Vermont", "shortCode": "VT" }, - { "name": "Virgin Islands", "shortCode": "VI" }, - { "name": "Virginia", "shortCode": "VA" }, - { "name": "Washington", "shortCode": "WA" }, - { "name": "West Virginia", "shortCode": "WV" }, - { "name": "Wisconsin", "shortCode": "WI" }, - { "name": "Wyoming", "shortCode": "WY" }, - { "name": "Armed Forces Americas", "shortCode": "AA" }, + "name": "Wyoming", + "shortCode": "WY" + }, + { + "name": "Armed Forces Americas", + "shortCode": "AA" + }, { "name": "Armed Forces Europe, Canada, Africa and Middle East", "shortCode": "AE" }, - { "name": "Armed Forces Pacific", "shortCode": "AP" } - ] + { + "name": "Armed Forces Pacific", + "shortCode": "AP" + } + ], + "capital": "Washington, D.C.", + "population": 340110988, + "area": 9826675, + "continent": "North America", + "officialName": "the United States of America", + "nativeName": "United States of America", + "demonym": "Americans", + "languages": [ + "Spanish", + "Hawaiian" + ], + "tld": [ + ".us" + ], + "borders": [ + "CA", + "MX" + ], + "unMember": true, + "independent": true }, { "countryName": "United States Minor Outlying Islands", @@ -9988,18 +27432,62 @@ } ], "regions": [ - { "name": "Baker Island", "shortCode": "81" }, - { "name": "Howland Island", "shortCode": "84" }, - { "name": "Jarvis Island", "shortCode": "86" }, - { "name": "Johnston Atoll", "shortCode": "67" }, - { "name": "Kingman Reef", "shortCode": "89" }, - { "name": "Midway Islands", "shortCode": "71" }, - { "name": "Navassa Island", "shortCode": "76" }, - { "name": "Palmyra Atoll", "shortCode": "95" }, - { "name": "Wake Island", "shortCode": "79" }, - { "name": "Bajo Nuevo Bank", "shortCode": "BN" }, - { "name": "Serranilla Bank", "shortCode": "SB" } - ] + { + "name": "Baker Island", + "shortCode": "81" + }, + { + "name": "Howland Island", + "shortCode": "84" + }, + { + "name": "Jarvis Island", + "shortCode": "86" + }, + { + "name": "Johnston Atoll", + "shortCode": "67" + }, + { + "name": "Kingman Reef", + "shortCode": "89" + }, + { + "name": "Midway Islands", + "shortCode": "71" + }, + { + "name": "Navassa Island", + "shortCode": "76" + }, + { + "name": "Palmyra Atoll", + "shortCode": "95" + }, + { + "name": "Wake Island", + "shortCode": "79" + }, + { + "name": "Bajo Nuevo Bank", + "shortCode": "BN" + }, + { + "name": "Serranilla Bank", + "shortCode": "SB" + } + ], + "population": 190, + "area": 34.2, + "continent": "North America", + "languages": [ + "English" + ], + "tld": [ + ".um" + ], + "unMember": false, + "independent": false }, { "countryName": "Uruguay", @@ -10018,26 +27506,98 @@ } ], "regions": [ - { "name": "Artigas", "shortCode": "AR" }, - { "name": "Canelones", "shortCode": "CA" }, - { "name": "Cerro Largo", "shortCode": "CL" }, - { "name": "Colonia", "shortCode": "CO" }, - { "name": "Durazno", "shortCode": "DU" }, - { "name": "Flores", "shortCode": "FS" }, - { "name": "Florida", "shortCode": "FD" }, - { "name": "Lavalleja", "shortCode": "LA" }, - { "name": "Maldonado", "shortCode": "MA" }, - { "name": "Montevideo", "shortCode": "MO" }, - { "name": "Paysandú", "shortCode": "PA" }, - { "name": "Río Negro", "shortCode": "RN" }, - { "name": "Rivera", "shortCode": "RV" }, - { "name": "Rocha", "shortCode": "RO" }, - { "name": "Salto", "shortCode": "SA" }, - { "name": "San José", "shortCode": "SJ" }, - { "name": "Soriano", "shortCode": "SO" }, - { "name": "Tacuarembó", "shortCode": "TA" }, - { "name": "Treinta y Tres", "shortCode": "TT" } - ] + { + "name": "Artigas", + "shortCode": "AR" + }, + { + "name": "Canelones", + "shortCode": "CA" + }, + { + "name": "Cerro Largo", + "shortCode": "CL" + }, + { + "name": "Colonia", + "shortCode": "CO" + }, + { + "name": "Durazno", + "shortCode": "DU" + }, + { + "name": "Flores", + "shortCode": "FS" + }, + { + "name": "Florida", + "shortCode": "FD" + }, + { + "name": "Lavalleja", + "shortCode": "LA" + }, + { + "name": "Maldonado", + "shortCode": "MA" + }, + { + "name": "Montevideo", + "shortCode": "MO" + }, + { + "name": "Paysandú", + "shortCode": "PA" + }, + { + "name": "Río Negro", + "shortCode": "RN" + }, + { + "name": "Rivera", + "shortCode": "RV" + }, + { + "name": "Rocha", + "shortCode": "RO" + }, + { + "name": "Salto", + "shortCode": "SA" + }, + { + "name": "San José", + "shortCode": "SJ" + }, + { + "name": "Soriano", + "shortCode": "SO" + }, + { + "name": "Tacuarembó", + "shortCode": "TA" + }, + { + "name": "Treinta y Tres", + "shortCode": "TT" + } + ], + "capital": "Montevideo", + "population": 3444263, + "area": 176215, + "continent": "South America", + "nativeName": "República Oriental del Uruguay", + "demonym": "Uruguayan", + "tld": [ + ".uy" + ], + "borders": [ + "BR", + "AR" + ], + "unMember": true, + "independent": true }, { "countryName": "Uzbekistan", @@ -10063,21 +27623,84 @@ } ], "regions": [ - { "name": "Toshkent shahri", "shortCode": "TK" }, - { "name": "Andijon", "shortCode": "AN" }, - { "name": "Buxoro", "shortCode": "BU" }, - { "name": "Farg‘ona", "shortCode": "FA" }, - { "name": "Jizzax", "shortCode": "JI" }, - { "name": "Namangan", "shortCode": "NG" }, - { "name": "Navoiy", "shortCode": "NW" }, - { "name": "Qashqadaryo (Qarshi)", "shortCode": "QA" }, - { "name": "Samarqand", "shortCode": "SA" }, - { "name": "Sirdaryo (Guliston)", "shortCode": "SI" }, - { "name": "Surxondaryo (Termiz)", "shortCode": "SU" }, - { "name": "Toshkent wiloyati", "shortCode": "TO" }, - { "name": "Xorazm (Urganch)", "shortCode": "XO" }, - { "name": "Qoraqalpog‘iston Respublikasi (Nukus)", "shortCode": "QR" } - ] + { + "name": "Toshkent shahri", + "shortCode": "TK" + }, + { + "name": "Andijon", + "shortCode": "AN" + }, + { + "name": "Buxoro", + "shortCode": "BU" + }, + { + "name": "Farg‘ona", + "shortCode": "FA" + }, + { + "name": "Jizzax", + "shortCode": "JI" + }, + { + "name": "Namangan", + "shortCode": "NG" + }, + { + "name": "Navoiy", + "shortCode": "NW" + }, + { + "name": "Qashqadaryo (Qarshi)", + "shortCode": "QA" + }, + { + "name": "Samarqand", + "shortCode": "SA" + }, + { + "name": "Sirdaryo (Guliston)", + "shortCode": "SI" + }, + { + "name": "Surxondaryo (Termiz)", + "shortCode": "SU" + }, + { + "name": "Toshkent wiloyati", + "shortCode": "TO" + }, + { + "name": "Xorazm (Urganch)", + "shortCode": "XO" + }, + { + "name": "Qoraqalpog‘iston Respublikasi (Nukus)", + "shortCode": "QR" + } + ], + "capital": "Tashkent", + "population": 34915100, + "area": 448978, + "continent": "Asia", + "nativeName": "Oʻzbekiston", + "demonym": "Uzbekistani", + "languages": [ + "Uzbek" + ], + "tld": [ + ".uz" + ], + "borders": [ + "KZ", + "KG", + "TJ", + "TM", + "AF" + ], + "unMember": true, + "independent": true }, { "countryName": "Vanuatu", @@ -10096,13 +27719,52 @@ } ], "regions": [ - { "name": "Malampa", "shortCode": "MAP" }, - { "name": "Pénama", "shortCode": "PAM" }, - { "name": "Sanma", "shortCode": "SAM" }, - { "name": "Shéfa", "shortCode": "SEE" }, - { "name": "Taféa", "shortCode": "TAE" }, - { "name": "Torba", "shortCode": "TOB" } - ] + { + "name": "Malampa", + "shortCode": "MAP" + }, + { + "name": "Pénama", + "shortCode": "PAM" + }, + { + "name": "Sanma", + "shortCode": "SAM" + }, + { + "name": "Shéfa", + "shortCode": "SEE" + }, + { + "name": "Taféa", + "shortCode": "TAE" + }, + { + "name": "Torba", + "shortCode": "TOB" + } + ], + "capital": "Port Vila", + "population": 300019, + "area": 12190, + "continent": "Insular Oceania", + "officialName": "Republic of Vanuatu", + "nativeName": "Ripablik blong Vanuatu", + "demonym": "Ni-Vanuatu", + "languages": [ + "French", + "English", + "Bislama" + ], + "tld": [ + ".vu" + ], + "borders": [ + "AU", + "SB" + ], + "unMember": true, + "independent": true }, { "countryName": "Venezuela, Bolivarian Republic of", @@ -10113,40 +27775,147 @@ "longitude": "-66.00000000", "timezones": [ { - "zoneName": "America/Caracas", - "gmtOffset": -14400, - "gmtOffsetName": "UTC-04:00", - "abbreviation": "VET", - "tzName": "Venezuelan Standard Time" + "zoneName": "America/Caracas", + "gmtOffset": -14400, + "gmtOffsetName": "UTC-04:00", + "abbreviation": "VET", + "tzName": "Venezuelan Standard Time" + } + ], + "regions": [ + { + "name": "Dependencias Federales", + "shortCode": "W" + }, + { + "name": "Distrito Federal", + "shortCode": "A" + }, + { + "name": "Amazonas", + "shortCode": "Z" + }, + { + "name": "Anzoátegui", + "shortCode": "B" + }, + { + "name": "Apure", + "shortCode": "C" + }, + { + "name": "Aragua", + "shortCode": "D" + }, + { + "name": "Barinas", + "shortCode": "E" + }, + { + "name": "Bolívar", + "shortCode": "F" + }, + { + "name": "Carabobo", + "shortCode": "G" + }, + { + "name": "Cojedes", + "shortCode": "H" + }, + { + "name": "Delta Amacuro", + "shortCode": "Y" + }, + { + "name": "Falcón", + "shortCode": "I" + }, + { + "name": "Guárico", + "shortCode": "J" + }, + { + "name": "Lara", + "shortCode": "K" + }, + { + "name": "Mérida", + "shortCode": "L" + }, + { + "name": "Miranda", + "shortCode": "M" + }, + { + "name": "Monagas", + "shortCode": "N" + }, + { + "name": "Nueva Esparta", + "shortCode": "O" + }, + { + "name": "Portuguesa", + "shortCode": "P" + }, + { + "name": "Sucre", + "shortCode": "R" + }, + { + "name": "Táchira", + "shortCode": "S" + }, + { + "name": "Trujillo", + "shortCode": "T" + }, + { + "name": "Vargas", + "shortCode": "X" + }, + { + "name": "Yaracuy", + "shortCode": "U" + }, + { + "name": "Zulia", + "shortCode": "V" } ], - "regions": [ - { "name": "Dependencias Federales", "shortCode": "W" }, - { "name": "Distrito Federal", "shortCode": "A" }, - { "name": "Amazonas", "shortCode": "Z" }, - { "name": "Anzoátegui", "shortCode": "B" }, - { "name": "Apure", "shortCode": "C" }, - { "name": "Aragua", "shortCode": "D" }, - { "name": "Barinas", "shortCode": "E" }, - { "name": "Bolívar", "shortCode": "F" }, - { "name": "Carabobo", "shortCode": "G" }, - { "name": "Cojedes", "shortCode": "H" }, - { "name": "Delta Amacuro", "shortCode": "Y" }, - { "name": "Falcón", "shortCode": "I" }, - { "name": "Guárico", "shortCode": "J" }, - { "name": "Lara", "shortCode": "K" }, - { "name": "Mérida", "shortCode": "L" }, - { "name": "Miranda", "shortCode": "M" }, - { "name": "Monagas", "shortCode": "N" }, - { "name": "Nueva Esparta", "shortCode": "O" }, - { "name": "Portuguesa", "shortCode": "P" }, - { "name": "Sucre", "shortCode": "R" }, - { "name": "Táchira", "shortCode": "S" }, - { "name": "Trujillo", "shortCode": "T" }, - { "name": "Vargas", "shortCode": "X" }, - { "name": "Yaracuy", "shortCode": "U" }, - { "name": "Zulia", "shortCode": "V" } - ] + "capital": "Caracas", + "population": 31250306, + "area": 912050, + "continent": "South America", + "officialName": "Bolivarian Republic of Venezuela", + "nativeName": "Venezuela", + "demonym": "Venezuelans", + "languages": [ + "Spanish", + "Venezuelan Sign Language" + ], + "tld": [ + ".ve" + ], + "borders": [ + "US", + "FR", + "GB", + "BR", + "GY", + "CO", + "TT", + "VC", + "LC", + "KN", + "GD", + "DM", + "DO", + "NL" + ], + "unMember": true, + "independent": true }, { "countryName": "Vietnam", @@ -10165,55 +27934,219 @@ } ], "regions": [ - { "name": "Đồng Nai", "shortCode": "39" }, - { "name": "Đồng Tháp", "shortCode": "45" }, - { "name": "Gia Lai", "shortCode": "30" }, - { "name": "Hà Giang", "shortCode": "03" }, - { "name": "Hà Nam", "shortCode": "63" }, - { "name": "Hà Tây", "shortCode": "15" }, - { "name": "Hà Tĩnh", "shortCode": "23" }, - { "name": "Hải Dương", "shortCode": "61" }, - { "name": "Hậu Giang", "shortCode": "73" }, - { "name": "Hòa Bình", "shortCode": "14" }, - { "name": "Hưng Yên", "shortCode": "66" }, - { "name": "Khánh Hòa", "shortCode": "34" }, - { "name": "Kiên Giang", "shortCode": "47" }, - { "name": "Kon Tum", "shortCode": "28" }, - { "name": "Lai Châu", "shortCode": "01" }, - { "name": "Lâm Đồng", "shortCode": "35" }, - { "name": "Lạng Sơn", "shortCode": "09" }, - { "name": "Lào Cai", "shortCode": "02" }, - { "name": "Long An", "shortCode": "41" }, - { "name": "Nam Định", "shortCode": "67" }, - { "name": "Nghệ An", "shortCode": "22" }, - { "name": "Ninh Bình", "shortCode": "18" }, - { "name": "Ninh Thuận", "shortCode": "36" }, - { "name": "Phú Thọ", "shortCode": "68" }, - { "name": "Phú Yên", "shortCode": "32" }, - { "name": "Quảng Bình", "shortCode": "24" }, - { "name": "Quảng Nam", "shortCode": "27" }, - { "name": "Quảng Ngãi", "shortCode": "29" }, - { "name": "Quảng Ninh", "shortCode": "13" }, - { "name": "Quảng Trị", "shortCode": "25" }, - { "name": "Sóc Trăng", "shortCode": "52" }, - { "name": "Sơn La", "shortCode": "05" }, - { "name": "Tây Ninh", "shortCode": "37" }, - { "name": "Thái Bình", "shortCode": "20" }, - { "name": "Thái Nguyên", "shortCode": "69" }, - { "name": "Thanh Hóa", "shortCode": "21" }, - { "name": "Thừa Thiên–Huế", "shortCode": "26" }, - { "name": "Tiền Giang", "shortCode": "46" }, - { "name": "Trà Vinh", "shortCode": "51" }, - { "name": "Tuyên Quang", "shortCode": "07" }, - { "name": "Vĩnh Long", "shortCode": "49" }, - { "name": "Vĩnh Phúc", "shortCode": "70" }, - { "name": "Yên Bái", "shortCode": "06" }, - { "name": "Cần Thơ", "shortCode": "CT" }, - { "name": "Đà Nẵng", "shortCode": "DN" }, - { "name": "Hà Nội", "shortCode": "HN" }, - { "name": "Hải Phòng", "shortCode": "HP" }, - { "name": "Hồ Chí Minh (Sài Gòn)", "shortCode": "SG" } - ] + { + "name": "Đồng Nai", + "shortCode": "39" + }, + { + "name": "Đồng Tháp", + "shortCode": "45" + }, + { + "name": "Gia Lai", + "shortCode": "30" + }, + { + "name": "Hà Giang", + "shortCode": "03" + }, + { + "name": "Hà Nam", + "shortCode": "63" + }, + { + "name": "Hà Tây", + "shortCode": "15" + }, + { + "name": "Hà Tĩnh", + "shortCode": "23" + }, + { + "name": "Hải Dương", + "shortCode": "61" + }, + { + "name": "Hậu Giang", + "shortCode": "73" + }, + { + "name": "Hòa Bình", + "shortCode": "14" + }, + { + "name": "Hưng Yên", + "shortCode": "66" + }, + { + "name": "Khánh Hòa", + "shortCode": "34" + }, + { + "name": "Kiên Giang", + "shortCode": "47" + }, + { + "name": "Kon Tum", + "shortCode": "28" + }, + { + "name": "Lai Châu", + "shortCode": "01" + }, + { + "name": "Lâm Đồng", + "shortCode": "35" + }, + { + "name": "Lạng Sơn", + "shortCode": "09" + }, + { + "name": "Lào Cai", + "shortCode": "02" + }, + { + "name": "Long An", + "shortCode": "41" + }, + { + "name": "Nam Định", + "shortCode": "67" + }, + { + "name": "Nghệ An", + "shortCode": "22" + }, + { + "name": "Ninh Bình", + "shortCode": "18" + }, + { + "name": "Ninh Thuận", + "shortCode": "36" + }, + { + "name": "Phú Thọ", + "shortCode": "68" + }, + { + "name": "Phú Yên", + "shortCode": "32" + }, + { + "name": "Quảng Bình", + "shortCode": "24" + }, + { + "name": "Quảng Nam", + "shortCode": "27" + }, + { + "name": "Quảng Ngãi", + "shortCode": "29" + }, + { + "name": "Quảng Ninh", + "shortCode": "13" + }, + { + "name": "Quảng Trị", + "shortCode": "25" + }, + { + "name": "Sóc Trăng", + "shortCode": "52" + }, + { + "name": "Sơn La", + "shortCode": "05" + }, + { + "name": "Tây Ninh", + "shortCode": "37" + }, + { + "name": "Thái Bình", + "shortCode": "20" + }, + { + "name": "Thái Nguyên", + "shortCode": "69" + }, + { + "name": "Thanh Hóa", + "shortCode": "21" + }, + { + "name": "Thừa Thiên–Huế", + "shortCode": "26" + }, + { + "name": "Tiền Giang", + "shortCode": "46" + }, + { + "name": "Trà Vinh", + "shortCode": "51" + }, + { + "name": "Tuyên Quang", + "shortCode": "07" + }, + { + "name": "Vĩnh Long", + "shortCode": "49" + }, + { + "name": "Vĩnh Phúc", + "shortCode": "70" + }, + { + "name": "Yên Bái", + "shortCode": "06" + }, + { + "name": "Cần Thơ", + "shortCode": "CT" + }, + { + "name": "Đà Nẵng", + "shortCode": "DN" + }, + { + "name": "Hà Nội", + "shortCode": "HN" + }, + { + "name": "Hải Phòng", + "shortCode": "HP" + }, + { + "name": "Hồ Chí Minh (Sài Gòn)", + "shortCode": "SG" + } + ], + "capital": "Hanoi", + "population": 96208984, + "area": 331690, + "continent": "Asia", + "officialName": "Socialist Republic of Vietnam", + "nativeName": "Việt Nam", + "demonym": "Vietnamese", + "languages": [ + "Vietnamese" + ], + "tld": [ + ".vn" + ], + "borders": [ + "CN", + "KH", + "LA" + ], + "unMember": true, + "independent": true }, { "countryName": "Virgin Islands, British", @@ -10232,11 +28165,40 @@ } ], "regions": [ - { "name": "Anegada", "shortCode": "ANG" }, - { "name": "Jost Van Dyke", "shortCode": "JVD" }, - { "name": "Tortola", "shortCode": "TTA" }, - { "name": "Virgin Gorda", "shortCode": "VGD" } - ] + { + "name": "Anegada", + "shortCode": "ANG" + }, + { + "name": "Jost Van Dyke", + "shortCode": "JVD" + }, + { + "name": "Tortola", + "shortCode": "TTA" + }, + { + "name": "Virgin Gorda", + "shortCode": "VGD" + } + ], + "capital": "Road Town", + "population": 39369, + "area": 151, + "continent": "North America", + "officialName": "British Virgin Islands", + "nativeName": "British Virgin Islands", + "languages": [ + "English" + ], + "tld": [ + ".vg" + ], + "borders": [ + "VI" + ], + "unMember": false, + "independent": false }, { "countryName": "Virgin Islands, U.S.", @@ -10255,10 +28217,37 @@ } ], "regions": [ - { "name": "St. Thomas", "shortCode": "STH" }, - { "name": "St. John", "shortCode": "SJO" }, - { "name": "St. Croix", "shortCode": "SCR" } - ] + { + "name": "St. Thomas", + "shortCode": "STH" + }, + { + "name": "St. John", + "shortCode": "SJO" + }, + { + "name": "St. Croix", + "shortCode": "SCR" + } + ], + "capital": "Charlotte Amalie", + "population": 104917, + "area": 346.36, + "continent": "North America", + "officialName": "U.S. Virgin Islands", + "nativeName": "United States Virgin Islands", + "languages": [ + "English" + ], + "tld": [ + ".vi" + ], + "borders": [ + "PR", + "VG" + ], + "unMember": false, + "independent": false }, { "countryName": "Wallis and Futuna", @@ -10277,10 +28266,35 @@ } ], "regions": [ - { "name": "Alo", "shortCode": "ALO" }, - { "name": "Sigave", "shortCode": "SIG" }, - { "name": "Wallis", "shortCode": "WAL" } - ] + { + "name": "Alo", + "shortCode": "ALO" + }, + { + "name": "Sigave", + "shortCode": "SIG" + }, + { + "name": "Wallis", + "shortCode": "WAL" + } + ], + "capital": "Mata-Utu", + "population": 11558, + "area": 274, + "continent": "Insular Oceania", + "nativeName": "Territoire des îles Wallis-et-Futuna", + "demonym": "Wallisian", + "languages": [ + "French", + "Wallisian", + "Futunan" + ], + "tld": [ + ".wf" + ], + "unMember": false, + "independent": false }, { "countryName": "Western Sahara", @@ -10299,12 +28313,42 @@ } ], "regions": [ - { "name": "Es Smara", "shortCode": "ESM" }, - { "name": "Boujdour", "shortCode": "BOD" }, - { "name": "Laâyoune", "shortCode": "LAA" }, - { "name": "Aousserd", "shortCode": "AOU" }, - { "name": "Oued ed Dahab", "shortCode": "OUD" } - ] + { + "name": "Es Smara", + "shortCode": "ESM" + }, + { + "name": "Boujdour", + "shortCode": "BOD" + }, + { + "name": "Laâyoune", + "shortCode": "LAA" + }, + { + "name": "Aousserd", + "shortCode": "AOU" + }, + { + "name": "Oued ed Dahab", + "shortCode": "OUD" + } + ], + "population": 612000, + "area": 266000, + "continent": "Africa", + "officialName": "Western Sahara", + "nativeName": "الصحراء الغربية", + "languages": [ + "Arabic" + ], + "borders": [ + "DZ", + "MR", + "MA" + ], + "unMember": false, + "independent": false }, { "countryName": "Yemen", @@ -10323,27 +28367,105 @@ } ], "regions": [ - { "name": "Abyān", "shortCode": "AB" }, - { "name": "'Adan", "shortCode": "AD" }, - { "name": "Aḑ Ḑāli'", "shortCode": "DA" }, - { "name": "Al Bayḑā'", "shortCode": "BA" }, - { "name": "Al Ḩudaydah", "shortCode": "HU" }, - { "name": "Al Jawf", "shortCode": "JA" }, - { "name": "Al Mahrah", "shortCode": "MR" }, - { "name": "Al Maḩwīt", "shortCode": "MW" }, - { "name": "'Amrān", "shortCode": "AM" }, - { "name": "Dhamār", "shortCode": "DH" }, - { "name": "Ḩaḑramawt", "shortCode": "HD" }, - { "name": "Ḩajjah", "shortCode": "HJ" }, - { "name": "Ibb", "shortCode": "IB" }, - { "name": "Laḩij", "shortCode": "LA" }, - { "name": "Ma'rib", "shortCode": "MA" }, - { "name": "Raymah", "shortCode": "RA" }, - { "name": "Şā‘dah", "shortCode": "SD" }, - { "name": "Şan‘ā'", "shortCode": "SN" }, - { "name": "Shabwah", "shortCode": "SH" }, - { "name": "Tā‘izz", "shortCode": "TA" } - ] + { + "name": "Abyān", + "shortCode": "AB" + }, + { + "name": "'Adan", + "shortCode": "AD" + }, + { + "name": "Aḑ Ḑāli'", + "shortCode": "DA" + }, + { + "name": "Al Bayḑā'", + "shortCode": "BA" + }, + { + "name": "Al Ḩudaydah", + "shortCode": "HU" + }, + { + "name": "Al Jawf", + "shortCode": "JA" + }, + { + "name": "Al Mahrah", + "shortCode": "MR" + }, + { + "name": "Al Maḩwīt", + "shortCode": "MW" + }, + { + "name": "'Amrān", + "shortCode": "AM" + }, + { + "name": "Dhamār", + "shortCode": "DH" + }, + { + "name": "Ḩaḑramawt", + "shortCode": "HD" + }, + { + "name": "Ḩajjah", + "shortCode": "HJ" + }, + { + "name": "Ibb", + "shortCode": "IB" + }, + { + "name": "Laḩij", + "shortCode": "LA" + }, + { + "name": "Ma'rib", + "shortCode": "MA" + }, + { + "name": "Raymah", + "shortCode": "RA" + }, + { + "name": "Şā‘dah", + "shortCode": "SD" + }, + { + "name": "Şan‘ā'", + "shortCode": "SN" + }, + { + "name": "Shabwah", + "shortCode": "SH" + }, + { + "name": "Tā‘izz", + "shortCode": "TA" + } + ], + "capital": "Aden", + "population": 28250420, + "area": 455503, + "continent": "Asia", + "nativeName": "الجمهوريّة اليمنية", + "demonym": "Yemeni", + "languages": [ + "Arabic" + ], + "tld": [ + ".ye" + ], + "borders": [ + "OM", + "SA" + ], + "unMember": true, + "independent": true }, { "countryName": "Zambia", @@ -10362,16 +28484,68 @@ } ], "regions": [ - { "name": "Central", "shortCode": "02" }, - { "name": "Copperbelt", "shortCode": "08" }, - { "name": "Eastern", "shortCode": "03" }, - { "name": "Luapula", "shortCode": "04" }, - { "name": "Lusaka", "shortCode": "09" }, - { "name": "Northern", "shortCode": "05" }, - { "name": "North-Western", "shortCode": "06" }, - { "name": "Southern", "shortCode": "07" }, - { "name": "Western", "shortCode": "01" } - ] + { + "name": "Central", + "shortCode": "02" + }, + { + "name": "Copperbelt", + "shortCode": "08" + }, + { + "name": "Eastern", + "shortCode": "03" + }, + { + "name": "Luapula", + "shortCode": "04" + }, + { + "name": "Lusaka", + "shortCode": "09" + }, + { + "name": "Northern", + "shortCode": "05" + }, + { + "name": "North-Western", + "shortCode": "06" + }, + { + "name": "Southern", + "shortCode": "07" + }, + { + "name": "Western", + "shortCode": "01" + } + ], + "capital": "Lusaka", + "population": 19610769, + "area": 752618, + "continent": "Africa", + "officialName": "Zambia", + "nativeName": "Republic of Zambia", + "demonym": "Zambians", + "languages": [ + "English" + ], + "tld": [ + ".zm" + ], + "borders": [ + "AO", + "TZ", + "ZW", + "BW", + "CD", + "MW", + "MZ", + "NA" + ], + "unMember": true, + "independent": true }, { "countryName": "Zimbabwe", @@ -10390,16 +28564,82 @@ } ], "regions": [ - { "name": "Bulawayo", "shortCode": "BU" }, - { "name": "Harare", "shortCode": "HA" }, - { "name": "Manicaland", "shortCode": "MA" }, - { "name": "Mashonaland Central", "shortCode": "MC" }, - { "name": "Mashonaland East", "shortCode": "ME" }, - { "name": "Mashonaland West", "shortCode": "MW" }, - { "name": "Masvingo", "shortCode": "MV" }, - { "name": "Matabeleland North", "shortCode": "MN" }, - { "name": "Matabeleland South", "shortCode": "MS" }, - { "name": "Midlands", "shortCode": "MI" } - ] + { + "name": "Bulawayo", + "shortCode": "BU" + }, + { + "name": "Harare", + "shortCode": "HA" + }, + { + "name": "Manicaland", + "shortCode": "MA" + }, + { + "name": "Mashonaland Central", + "shortCode": "MC" + }, + { + "name": "Mashonaland East", + "shortCode": "ME" + }, + { + "name": "Mashonaland West", + "shortCode": "MW" + }, + { + "name": "Masvingo", + "shortCode": "MV" + }, + { + "name": "Matabeleland North", + "shortCode": "MN" + }, + { + "name": "Matabeleland South", + "shortCode": "MS" + }, + { + "name": "Midlands", + "shortCode": "MI" + } + ], + "capital": "Harare", + "population": 15178979, + "area": 390757, + "continent": "Africa", + "officialName": "Zimbabwe", + "nativeName": "Zimbabwe", + "demonym": "Zimbabwean", + "languages": [ + "Kalanga", + "Khoisan", + "Shona", + "Tonga", + "Tswana", + "Nambya", + "Tsonga", + "Sesotho", + "Northern Ndebele", + "Zimbabwe Sign Language", + "Barwe", + "Xhosa", + "English", + "Ndau", + "Venda", + "Chewa" + ], + "tld": [ + ".zw" + ], + "borders": [ + "ZM", + "BW", + "MZ", + "ZA" + ], + "unMember": true, + "independent": true } ] diff --git a/package.json b/package.json index 24d1d15..6e20c72 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "scripts": { "build": "tsup", "build:data": "node scripts/build-data.cjs", + "build:data:fetch": "node scripts/fetch-wikidata.cjs", "format": "prettier --write .", "check-format": "prettier --check .", "release": "npm run build:data && npm run build && changeset publish --access public", diff --git a/scripts/build-data.cjs b/scripts/build-data.cjs index 6c4e701..2bd94d3 100644 --- a/scripts/build-data.cjs +++ b/scripts/build-data.cjs @@ -4,9 +4,11 @@ * Pre-sorts and minifies the data JSON files for distribution. * Run before publishing: node scripts/build-data.cjs * - * 1. Pre-sorts all data so runtime queries are faster - * 2. Minifies JSON (removes whitespace) — cuts total size by ~44% - * 3. Optionally writes .gz compressed versions (set env GZ=true) + * 1. Strips fields that are computed at load time (src/modules/country.ts) rather than + * stored, so they never end up duplicated across every record in the shipped file + * 2. Pre-sorts all data so runtime queries are faster + * 3. Minifies JSON (removes whitespace) — cuts total size by ~44% + * 4. Optionally writes .gz compressed versions (set env GZ=true) */ 'use strict'; @@ -31,10 +33,27 @@ function sizeKB(bytes) { return (bytes / 1024).toFixed(1) + ' KB'; } +// Derived at load time from currencyCode/countryShortCode (see country.ts ensureLoaded()) — +// never persist these, or they'd be duplicated across every record that shares a currency. +const COMPUTED_COUNTRY_FIELDS = ['currencyName', 'currencySymbol', 'countryFlag']; + // ─── countries ─────────────────────────────────────────────────────────────── const countries = read('countries.json'); +let stripped = 0; +for (const c of countries) { + for (const field of COMPUTED_COUNTRY_FIELDS) { + if (field in c) { + delete c[field]; + stripped++; + } + } +} +if (stripped > 0) { + console.log(`Stripped ${stripped} computed field(s) that shouldn't be persisted.`); +} + // Sort alphabetically by countryName countries.sort((a, b) => a.countryName.localeCompare(b.countryName)); diff --git a/scripts/fetch-wikidata.cjs b/scripts/fetch-wikidata.cjs new file mode 100644 index 0000000..b5d2fab --- /dev/null +++ b/scripts/fetch-wikidata.cjs @@ -0,0 +1,239 @@ +/** + * fetch-wikidata.cjs + * + * One-time, dev-time data enrichment script — NOT part of the published package and never + * imported by src/. Pulls capital, population, area, continent, official/native name, + * demonym, languages, borders, TLDs, and UN-membership/independence flags from Wikidata + * (query.wikidata.org) — CC0 licensed, free, no API key — and merges them into the existing + * data/countries.json records in place. currencyName/currencySymbol are NOT stored here — + * they're computed at load time in src/modules/country.ts from the static ISO 4217 table in + * src/shared/currencies.ts, keyed off the existing currencyCode field. + * + * Run manually when refreshing country data: node scripts/fetch-wikidata.cjs + */ + +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +const DATA_DIR = path.join(__dirname, '..', 'data'); +const COUNTRIES_PATH = path.join(DATA_DIR, 'countries.json'); +const SPARQL_ENDPOINT = 'https://query.wikidata.org/sparql'; +const USER_AGENT = 'CountryDataJS-Build/1.0 (opokuisaiahclifford123@gmail.com)'; +const BATCH_SIZE = 40; +const DELAY_MS = 1200; + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +function chunk(arr, size) { + const out = []; + for (let i = 0; i < arr.length; i += size) out.push(arr.slice(i, i + size)); + return out; +} + +async function runQuery(query, attempt = 1) { + const res = await fetch(SPARQL_ENDPOINT, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: 'application/sparql-results+json', + 'User-Agent': USER_AGENT, + }, + body: new URLSearchParams({ query }).toString(), + }); + + if (!res.ok) { + if ((res.status === 429 || res.status >= 500) && attempt <= 3) { + const wait = DELAY_MS * attempt * 2; + console.warn(` query failed (${res.status}), retrying in ${wait}ms...`); + await sleep(wait); + return runQuery(query, attempt + 1); + } + throw new Error(`SPARQL query failed: ${res.status} ${await res.text()}`); + } + + const json = await res.json(); + return json.results.bindings; +} + +function valuesClause(codes) { + return codes.map((c) => `"${c}"`).join(' '); +} + +function mainQuery(codes) { + return ` +SELECT ?iso2 + (SAMPLE(?capitalLabel) AS ?capital) + (SAMPLE(?area) AS ?area) + (GROUP_CONCAT(DISTINCT ?continentLabel; separator="|") AS ?continents) + (SAMPLE(?official) AS ?officialName) + (SAMPLE(?nativeStr) AS ?nativeName) + (SAMPLE(?demonym) AS ?demonym) + (GROUP_CONCAT(DISTINCT ?langLabel; separator="|") AS ?languages) + (GROUP_CONCAT(DISTINCT ?tldLabel; separator="|") AS ?tlds) + (GROUP_CONCAT(DISTINCT ?neighborIso2; separator="|") AS ?borders) + (SAMPLE(?isUN) AS ?unMember) + (SAMPLE(?isSovereign) AS ?independent) +WHERE { + VALUES ?iso2 { ${valuesClause(codes)} } + ?country wdt:P297 ?iso2. + OPTIONAL { ?country wdt:P36 ?capital. ?capital rdfs:label ?capitalLabel. FILTER(LANG(?capitalLabel) = "en") } + OPTIONAL { ?country wdt:P2046 ?area. } + OPTIONAL { ?country wdt:P30 ?continent. ?continent rdfs:label ?continentLabel. FILTER(LANG(?continentLabel) = "en") } + OPTIONAL { ?country wdt:P1448 ?officialMLT. FILTER(LANG(?officialMLT) = "en") BIND(STR(?officialMLT) AS ?official) } + OPTIONAL { ?country wdt:P1705 ?nativeMLT. BIND(STR(?nativeMLT) AS ?nativeStr) } + OPTIONAL { ?country wdt:P1549 ?demonymMLT. FILTER(LANG(?demonymMLT) = "en") BIND(STR(?demonymMLT) AS ?demonym) } + OPTIONAL { ?country wdt:P37 ?lang. ?lang rdfs:label ?langLabel. FILTER(LANG(?langLabel) = "en") } + OPTIONAL { ?country wdt:P78 ?tld. ?tld rdfs:label ?tldLabel. FILTER(LANG(?tldLabel) = "en") } + OPTIONAL { ?country wdt:P47 ?neighbor. ?neighbor wdt:P297 ?neighborIso2. } + OPTIONAL { ?country wdt:P463 wd:Q1065. BIND(true AS ?isUN) } + OPTIONAL { ?country wdt:P31 wd:Q3624078. BIND(true AS ?isSovereign) } +} +GROUP BY ?iso2 +`; +} + +function populationQuery(codes) { + return ` +SELECT ?iso2 + (GROUP_CONCAT(DISTINCT CONCAT(STR(?popDate), "::", STR(?population)); separator="|") AS ?popSeries) +WHERE { + VALUES ?iso2 { ${valuesClause(codes)} } + ?country wdt:P297 ?iso2. + OPTIONAL { + ?country p:P1082 ?popStatement. + ?popStatement ps:P1082 ?population. + OPTIONAL { ?popStatement pq:P585 ?popDate. } + } +} +GROUP BY ?iso2 +`; +} + +function latestPopulation(popSeries) { + if (!popSeries) return undefined; + let best = null; + for (const entry of popSeries.split('|')) { + const [dateStr, valueStr] = entry.split('::'); + if (!valueStr) continue; + const value = parseInt(valueStr, 10); + if (Number.isNaN(value)) continue; + const date = dateStr ? Date.parse(dateStr) : 0; + if (!best || date > best.date) best = { date, value }; + } + return best ? best.value : undefined; +} + +function splitList(value) { + if (!value) return undefined; + const items = [...new Set(value.split('|').filter(Boolean))]; + return items.length > 0 ? items : undefined; +} + +async function fetchBatch(codes) { + const [mainRows, popRows] = await Promise.all([ + runQuery(mainQuery(codes)), + (async () => { + await sleep(DELAY_MS); + return runQuery(populationQuery(codes)); + })(), + ]); + + const byIso2 = new Map(); + + for (const row of mainRows) { + const iso2 = row.iso2.value; + byIso2.set(iso2, { + capital: row.capital?.value, + area: row.area ? parseFloat(row.area.value) : undefined, + continent: row.continents?.value ? row.continents.value.split('|')[0] : undefined, + officialName: row.officialName?.value, + nativeName: row.nativeName?.value, + demonym: row.demonym?.value, + languages: splitList(row.languages?.value), + tld: splitList(row.tlds?.value), + borders: splitList(row.borders?.value), + unMember: row.unMember?.value === 'true', + independent: row.independent?.value === 'true', + }); + } + + for (const row of popRows) { + const iso2 = row.iso2.value; + const population = latestPopulation(row.popSeries?.value); + if (population === undefined) continue; + const entry = byIso2.get(iso2) ?? {}; + entry.population = population; + byIso2.set(iso2, entry); + } + + return byIso2; +} + +async function main() { + const countries = JSON.parse(fs.readFileSync(COUNTRIES_PATH, 'utf8')); + const codes = countries.map((c) => c.countryShortCode); + const batches = chunk(codes, BATCH_SIZE); + + const enrichment = new Map(); + const coverage = { + capital: 0, + population: 0, + area: 0, + continent: 0, + officialName: 0, + nativeName: 0, + demonym: 0, + languages: 0, + tld: 0, + borders: 0, + unMember: 0, + independent: 0, + }; + + for (let i = 0; i < batches.length; i++) { + console.log(`Batch ${i + 1}/${batches.length} (${batches[i].length} countries)...`); + const result = await fetchBatch(batches[i]); + for (const [iso2, data] of result) enrichment.set(iso2, data); + if (i < batches.length - 1) await sleep(DELAY_MS); + } + + let merged = 0; + for (const country of countries) { + const data = enrichment.get(country.countryShortCode); + + if (data) { + if (data.capital !== undefined) { country.capital = data.capital; coverage.capital++; } + if (data.population !== undefined) { country.population = data.population; coverage.population++; } + if (data.area !== undefined) { country.area = data.area; coverage.area++; } + if (data.continent !== undefined) { country.continent = data.continent; coverage.continent++; } + if (data.officialName !== undefined) { country.officialName = data.officialName; coverage.officialName++; } + if (data.nativeName !== undefined) { country.nativeName = data.nativeName; coverage.nativeName++; } + if (data.demonym !== undefined) { country.demonym = data.demonym; coverage.demonym++; } + if (data.languages !== undefined) { country.languages = data.languages; coverage.languages++; } + if (data.tld !== undefined) { country.tld = data.tld; coverage.tld++; } + if (data.borders !== undefined) { country.borders = data.borders; coverage.borders++; } + country.unMember = data.unMember ?? false; + country.independent = data.independent ?? false; + coverage.unMember += country.unMember ? 1 : 0; + coverage.independent += country.independent ? 1 : 0; + merged++; + } + } + + fs.writeFileSync(COUNTRIES_PATH, JSON.stringify(countries, null, 2) + '\n', 'utf8'); + + console.log(`\nMerged Wikidata fields into ${merged}/${countries.length} countries.`); + console.log('Field coverage (of 250 total):'); + for (const [field, count] of Object.entries(coverage)) { + console.log(` ${field.padEnd(14)} ${count} (${((count / countries.length) * 100).toFixed(0)}%)`); + } +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/src/CountryHelper.ts b/src/CountryHelper.ts index 610d902..564d213 100644 --- a/src/CountryHelper.ts +++ b/src/CountryHelper.ts @@ -1,4 +1,10 @@ -import type { ICountry, IState, ICity, IRegion, ITimezone } from './shared/interface.js'; +import type { + ICountry, + IState, + ICity, + IRegion, + ITimezone, +} from './shared/interface.js'; import { getAllCountries, getCountryByCode, diff --git a/src/modules/country.ts b/src/modules/country.ts index ec9f7f4..f192ae1 100644 --- a/src/modules/country.ts +++ b/src/modules/country.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import type { ICountry } from '../shared/interface.js'; import { resolveDataPath } from '../shared/helpers.js'; +import { CURRENCIES } from '../shared/currencies.js'; import { getStatesOfCountry } from './state.js'; import { getCitiesOfCountry } from './city.js'; @@ -20,6 +21,8 @@ function ensureLoaded(): void { countryCache = raw.map((c) => ({ ...c, countryFlag: getCountryFlag(c.countryShortCode), + currencyName: c.currencyCode ? CURRENCIES[c.currencyCode]?.name : undefined, + currencySymbol: c.currencyCode ? CURRENCIES[c.currencyCode]?.symbol : undefined, getStates: () => getStatesOfCountry(c.countryShortCode), getCities: () => getCitiesOfCountry(c.countryShortCode), })); diff --git a/src/shared/currencies.json b/src/shared/currencies.json new file mode 100644 index 0000000..7117065 --- /dev/null +++ b/src/shared/currencies.json @@ -0,0 +1,157 @@ +{ + "AED": { "name": "UAE Dirham", "symbol": "د.إ" }, + "AFN": { "name": "Afghan Afghani", "symbol": "؋" }, + "ALL": { "name": "Albanian Lek", "symbol": "L" }, + "AMD": { "name": "Armenian Dram", "symbol": "֏" }, + "ANG": { "name": "Netherlands Antillean Guilder", "symbol": "ƒ" }, + "AOA": { "name": "Angolan Kwanza", "symbol": "Kz" }, + "ARS": { "name": "Argentine Peso", "symbol": "$" }, + "AUD": { "name": "Australian Dollar", "symbol": "$" }, + "AWG": { "name": "Aruban Florin", "symbol": "ƒ" }, + "AZN": { "name": "Azerbaijani Manat", "symbol": "₼" }, + "BAM": { "name": "Bosnia-Herzegovina Convertible Mark", "symbol": "KM" }, + "BBD": { "name": "Barbadian Dollar", "symbol": "$" }, + "BDT": { "name": "Bangladeshi Taka", "symbol": "৳" }, + "BGN": { "name": "Bulgarian Lev", "symbol": "лв" }, + "BHD": { "name": "Bahraini Dinar", "symbol": ".د.ب" }, + "BIF": { "name": "Burundian Franc", "symbol": "Fr" }, + "BMD": { "name": "Bermudian Dollar", "symbol": "$" }, + "BND": { "name": "Brunei Dollar", "symbol": "$" }, + "BOB": { "name": "Bolivian Boliviano", "symbol": "Bs." }, + "BRL": { "name": "Brazilian Real", "symbol": "R$" }, + "BSD": { "name": "Bahamian Dollar", "symbol": "$" }, + "BTN": { "name": "Bhutanese Ngultrum", "symbol": "Nu." }, + "BWP": { "name": "Botswana Pula", "symbol": "P" }, + "BYN": { "name": "Belarusian Ruble", "symbol": "Br" }, + "BZD": { "name": "Belize Dollar", "symbol": "BZ$" }, + "CAD": { "name": "Canadian Dollar", "symbol": "$" }, + "CDF": { "name": "Congolese Franc", "symbol": "Fr" }, + "CHF": { "name": "Swiss Franc", "symbol": "Fr" }, + "CLP": { "name": "Chilean Peso", "symbol": "$" }, + "CNY": { "name": "Chinese Yuan", "symbol": "¥" }, + "COP": { "name": "Colombian Peso", "symbol": "$" }, + "CRC": { "name": "Costa Rican Colón", "symbol": "₡" }, + "CUP": { "name": "Cuban Peso", "symbol": "$" }, + "CVE": { "name": "Cape Verdean Escudo", "symbol": "$" }, + "CZK": { "name": "Czech Koruna", "symbol": "Kč" }, + "DJF": { "name": "Djiboutian Franc", "symbol": "Fr" }, + "DKK": { "name": "Danish Krone", "symbol": "kr" }, + "DOP": { "name": "Dominican Peso", "symbol": "RD$" }, + "DZD": { "name": "Algerian Dinar", "symbol": "دج" }, + "EGP": { "name": "Egyptian Pound", "symbol": "ج.م" }, + "ERN": { "name": "Eritrean Nakfa", "symbol": "Nfk" }, + "ETB": { "name": "Ethiopian Birr", "symbol": "Br" }, + "EUR": { "name": "Euro", "symbol": "€" }, + "FJD": { "name": "Fijian Dollar", "symbol": "$" }, + "FKP": { "name": "Falkland Islands Pound", "symbol": "£" }, + "GBP": { "name": "British Pound Sterling", "symbol": "£" }, + "GEL": { "name": "Georgian Lari", "symbol": "₾" }, + "GHS": { "name": "Ghanaian Cedi", "symbol": "₵" }, + "GIP": { "name": "Gibraltar Pound", "symbol": "£" }, + "GMD": { "name": "Gambian Dalasi", "symbol": "D" }, + "GNF": { "name": "Guinean Franc", "symbol": "Fr" }, + "GTQ": { "name": "Guatemalan Quetzal", "symbol": "Q" }, + "GYD": { "name": "Guyanese Dollar", "symbol": "$" }, + "HKD": { "name": "Hong Kong Dollar", "symbol": "$" }, + "HNL": { "name": "Honduran Lempira", "symbol": "L" }, + "HRK": { "name": "Croatian Kuna", "symbol": "kn" }, + "HTG": { "name": "Haitian Gourde", "symbol": "G" }, + "HUF": { "name": "Hungarian Forint", "symbol": "Ft" }, + "IDR": { "name": "Indonesian Rupiah", "symbol": "Rp" }, + "ILS": { "name": "Israeli New Shekel", "symbol": "₪" }, + "INR": { "name": "Indian Rupee", "symbol": "₹" }, + "IQD": { "name": "Iraqi Dinar", "symbol": "ع.د" }, + "IRR": { "name": "Iranian Rial", "symbol": "﷼" }, + "ISK": { "name": "Icelandic Króna", "symbol": "kr" }, + "JMD": { "name": "Jamaican Dollar", "symbol": "J$" }, + "JOD": { "name": "Jordanian Dinar", "symbol": "د.ا" }, + "JPY": { "name": "Japanese Yen", "symbol": "¥" }, + "KES": { "name": "Kenyan Shilling", "symbol": "Sh" }, + "KGS": { "name": "Kyrgystani Som", "symbol": "с" }, + "KHR": { "name": "Cambodian Riel", "symbol": "៛" }, + "KMF": { "name": "Comorian Franc", "symbol": "Fr" }, + "KPW": { "name": "North Korean Won", "symbol": "₩" }, + "KRW": { "name": "South Korean Won", "symbol": "₩" }, + "KWD": { "name": "Kuwaiti Dinar", "symbol": "د.ك" }, + "KYD": { "name": "Cayman Islands Dollar", "symbol": "$" }, + "KZT": { "name": "Kazakhstani Tenge", "symbol": "₸" }, + "LAK": { "name": "Lao Kip", "symbol": "₭" }, + "LBP": { "name": "Lebanese Pound", "symbol": "ل.ل" }, + "LKR": { "name": "Sri Lankan Rupee", "symbol": "Rs" }, + "LRD": { "name": "Liberian Dollar", "symbol": "$" }, + "LSL": { "name": "Lesotho Loti", "symbol": "L" }, + "LYD": { "name": "Libyan Dinar", "symbol": "ل.د" }, + "MAD": { "name": "Moroccan Dirham", "symbol": "د.م." }, + "MDL": { "name": "Moldovan Leu", "symbol": "L" }, + "MGA": { "name": "Malagasy Ariary", "symbol": "Ar" }, + "MKD": { "name": "Macedonian Denar", "symbol": "ден" }, + "MMK": { "name": "Myanmar Kyat", "symbol": "K" }, + "MNT": { "name": "Mongolian Tögrög", "symbol": "₮" }, + "MOP": { "name": "Macanese Pataca", "symbol": "P" }, + "MRO": { "name": "Mauritanian Ouguiya (pre-2018)", "symbol": "UM" }, + "MUR": { "name": "Mauritian Rupee", "symbol": "₨" }, + "MVR": { "name": "Maldivian Rufiyaa", "symbol": ".ރ" }, + "MWK": { "name": "Malawian Kwacha", "symbol": "MK" }, + "MXN": { "name": "Mexican Peso", "symbol": "$" }, + "MYR": { "name": "Malaysian Ringgit", "symbol": "RM" }, + "MZN": { "name": "Mozambican Metical", "symbol": "MT" }, + "NAD": { "name": "Namibian Dollar", "symbol": "$" }, + "NGN": { "name": "Nigerian Naira", "symbol": "₦" }, + "NIO": { "name": "Nicaraguan Córdoba", "symbol": "C$" }, + "NOK": { "name": "Norwegian Krone", "symbol": "kr" }, + "NPR": { "name": "Nepalese Rupee", "symbol": "₨" }, + "NZD": { "name": "New Zealand Dollar", "symbol": "$" }, + "OMR": { "name": "Omani Rial", "symbol": "ر.ع." }, + "PAB": { "name": "Panamanian Balboa", "symbol": "B/." }, + "PEN": { "name": "Peruvian Sol", "symbol": "S/." }, + "PGK": { "name": "Papua New Guinean Kina", "symbol": "K" }, + "PHP": { "name": "Philippine Peso", "symbol": "₱" }, + "PKR": { "name": "Pakistani Rupee", "symbol": "₨" }, + "PLN": { "name": "Polish Złoty", "symbol": "zł" }, + "PYG": { "name": "Paraguayan Guaraní", "symbol": "₲" }, + "QAR": { "name": "Qatari Rial", "symbol": "ر.ق" }, + "RON": { "name": "Romanian Leu", "symbol": "lei" }, + "RSD": { "name": "Serbian Dinar", "symbol": "дин." }, + "RUB": { "name": "Russian Ruble", "symbol": "₽" }, + "RWF": { "name": "Rwandan Franc", "symbol": "Fr" }, + "SAR": { "name": "Saudi Riyal", "symbol": "ر.س" }, + "SBD": { "name": "Solomon Islands Dollar", "symbol": "$" }, + "SCR": { "name": "Seychellois Rupee", "symbol": "₨" }, + "SDG": { "name": "Sudanese Pound", "symbol": "ج.س." }, + "SEK": { "name": "Swedish Krona", "symbol": "kr" }, + "SGD": { "name": "Singapore Dollar", "symbol": "$" }, + "SHP": { "name": "Saint Helena Pound", "symbol": "£" }, + "SLL": { "name": "Sierra Leonean Leone", "symbol": "Le" }, + "SOS": { "name": "Somali Shilling", "symbol": "Sh" }, + "SRD": { "name": "Surinamese Dollar", "symbol": "$" }, + "SSP": { "name": "South Sudanese Pound", "symbol": "£" }, + "STD": { "name": "São Tomé and Príncipe Dobra (pre-2018)", "symbol": "Db" }, + "SYP": { "name": "Syrian Pound", "symbol": "£" }, + "SZL": { "name": "Eswatini Lilangeni", "symbol": "L" }, + "THB": { "name": "Thai Baht", "symbol": "฿" }, + "TJS": { "name": "Tajikistani Somoni", "symbol": "ЅМ" }, + "TMT": { "name": "Turkmenistani Manat", "symbol": "m" }, + "TND": { "name": "Tunisian Dinar", "symbol": "د.ت" }, + "TOP": { "name": "Tongan Paʻanga", "symbol": "T$" }, + "TRY": { "name": "Turkish Lira", "symbol": "₺" }, + "TTD": { "name": "Trinidad and Tobago Dollar", "symbol": "TT$" }, + "TWD": { "name": "New Taiwan Dollar", "symbol": "NT$" }, + "TZS": { "name": "Tanzanian Shilling", "symbol": "Sh" }, + "UAH": { "name": "Ukrainian Hryvnia", "symbol": "₴" }, + "UGX": { "name": "Ugandan Shilling", "symbol": "Sh" }, + "USD": { "name": "United States Dollar", "symbol": "$" }, + "UYU": { "name": "Uruguayan Peso", "symbol": "$U" }, + "UZS": { "name": "Uzbekistani Som", "symbol": "so'm" }, + "VEF": { "name": "Venezuelan Bolívar (2008–2018)", "symbol": "Bs" }, + "VND": { "name": "Vietnamese Đồng", "symbol": "₫" }, + "VUV": { "name": "Vanuatu Vatu", "symbol": "Vt" }, + "WST": { "name": "Samoan Tālā", "symbol": "T" }, + "XAF": { "name": "Central African CFA Franc", "symbol": "Fr" }, + "XCD": { "name": "East Caribbean Dollar", "symbol": "$" }, + "XOF": { "name": "West African CFA Franc", "symbol": "Fr" }, + "XPF": { "name": "CFP Franc", "symbol": "₣" }, + "YER": { "name": "Yemeni Rial", "symbol": "﷼" }, + "ZAR": { "name": "South African Rand", "symbol": "R" }, + "ZMW": { "name": "Zambian Kwacha", "symbol": "ZK" }, + "ZWL": { "name": "Zimbabwean Dollar", "symbol": "$" } +} diff --git a/src/shared/currencies.ts b/src/shared/currencies.ts new file mode 100644 index 0000000..1f11464 --- /dev/null +++ b/src/shared/currencies.ts @@ -0,0 +1,13 @@ +import currenciesData from './currencies.json' with { type: 'json' }; + +/** + * ISO 4217 currency code → name/symbol lookup. + * Hand-maintained from the public ISO 4217 standard (facts, not copyrightable) — + * no external fetch needed. Covers every currencyCode value present in data/countries.json. + */ +export interface ICurrencyInfo { + name: string; + symbol: string; +} + +export const CURRENCIES: Record = currenciesData; diff --git a/src/shared/interface.ts b/src/shared/interface.ts index 0876fce..542e41f 100644 --- a/src/shared/interface.ts +++ b/src/shared/interface.ts @@ -17,10 +17,24 @@ export interface ICountry { phoneCode: string; countryFlag: string; currencyCode?: string; + currencyName?: string; + currencySymbol?: string; latitude?: string; longitude?: string; timezones?: ITimezone[]; regions: IRegion[]; + capital?: string; + population?: number; + area?: number; + continent?: string; + officialName?: string; + nativeName?: string; + demonym?: string; + languages?: string[]; + borders?: string[]; + tld?: string[]; + unMember?: boolean; + independent?: boolean; /** Get all states/provinces for this country */ getStates?(): IState[]; /** Get all cities for this country */ From 3a5b8b01f812be9decc800f27f0b09871b69ad56 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 00:42:45 +0000 Subject: [PATCH 04/11] Add search functionality and roadmap updates --- .changeset/add-search.md | 5 ++ README.md | 22 +++++- ROADMAP.md | 2 +- Test/search.test.ts | 146 +++++++++++++++++++++++++++++++++++++++ src/CountryHelper.ts | 20 ++++++ src/index.ts | 2 + src/modules/search.ts | 66 ++++++++++++++++++ src/shared/interface.ts | 5 ++ 8 files changed, 266 insertions(+), 2 deletions(-) create mode 100644 .changeset/add-search.md create mode 100644 Test/search.test.ts create mode 100644 src/modules/search.ts diff --git a/.changeset/add-search.md b/.changeset/add-search.md new file mode 100644 index 0000000..a27ffa7 --- /dev/null +++ b/.changeset/add-search.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add `Search.searchCountries()`, `Search.searchStates()`, and `Search.searchCities()` — case-insensitive and diacritic-insensitive substring search (e.g. `"sao paulo"` matches `"São Paulo"`), with exact/prefix matches ranked first. Accepts an optional `{ limit }` to cap result count. Also available as `CountryHelper` instance methods. No new dependency. diff --git a/README.md b/README.md index 326d1dd..7477d71 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ npm install countrydata.js ### Module API (recommended) ```typescript -import { Country, State, City, Region, Timezone } from 'countrydata.js'; +import { Country, State, City, Region, Timezone, Search } from 'countrydata.js'; // Countries const all = Country.getAllCountries(); @@ -56,6 +56,11 @@ const region = Region.getRegionByShortCode('US', 'CA'); const tzList = Timezone.getTimezonesByCountryCode('US'); const allTz = Timezone.getAllTimezones(); const countries = Timezone.getCountriesByTimezone('America/New_York'); + +// Search (case-insensitive, prefix matches ranked first) +const countryMatches = Search.searchCountries('ghan'); // → [Ghana] +const stateMatches = Search.searchStates('accra'); +const cityMatches = Search.searchCities('kum'); ``` ### Class API @@ -135,6 +140,21 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getTimezonesByCountryCode(countryCode)` | `ITimezone[]` | Timezones for one country | | `getCountriesByTimezone(zoneName)` | `ICountry[]` | Countries that observe a given timezone | +### `Search` + +Case-insensitive, diacritic-insensitive substring matching (`"sao paulo"` matches `"São Paulo"`), with exact matches ranked first, then prefix matches, then other substring matches. No fuzzy-matching dependency. Pass `{ limit }` to cap the number of results — useful for city search, which can otherwise return thousands of matches. + +| Method | Returns | Description | +| ---------------------------------- | ------------ | --------------------------------------- | +| `searchCountries(query, options?)` | `ICountry[]` | Countries whose `countryName` matches | +| `searchStates(query, options?)` | `IState[]` | States whose `name` matches | +| `searchCities(query, options?)` | `ICity[]` | Cities whose `name` matches | + +```typescript +Search.searchCities('sao paulo'); // finds "São Paulo" despite no accents in the query +Search.searchCountries('a', { limit: 10 }); // top 10 matches only +``` + ### `CountryHelper` class Wraps the module functions above into a class. All module methods are available as instance methods with equivalent names. diff --git a/ROADMAP.md b/ROADMAP.md index f34a89c..1b13237 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -69,7 +69,7 @@ both `dr5hn` and `mledoze` are ODbL (share-alike) and REST Countries dropped its `ICountry` fields + `scripts/fetch-wikidata.cjs` build-time fetch (SPARQL query against `query.wikidata.org`, CC0, no key needed) merged with a hardcoded ISO 4217 currency name/symbol table. -- [ ] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. +- [x] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. - [ ] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, `getCountriesByLanguage`, `getCountriesByContinent`. Depends on Phase 1. - [ ] **Phase 4** — Validation helpers: `isValidCountryCode`, `isValidPhoneCode`, diff --git a/Test/search.test.ts b/Test/search.test.ts new file mode 100644 index 0000000..be2c5b3 --- /dev/null +++ b/Test/search.test.ts @@ -0,0 +1,146 @@ +import { describe, test, expect, vi } from 'vitest'; +import { Search } from '../src/index.js'; + +const MOCK_COUNTRIES = [ + { + countryName: 'Ghana', countryShortCode: 'GH', phoneCode: '+233', + currencyCode: 'GHS', latitude: '8.00000000', longitude: '-2.00000000', + timezones: [], regions: [], + }, + { + countryName: 'Afghanistan', countryShortCode: 'AF', phoneCode: '+93', + currencyCode: 'AFN', latitude: '33.00000000', longitude: '65.00000000', + timezones: [], regions: [], + }, + { + countryName: 'Germany', countryShortCode: 'DE', phoneCode: '+49', + currencyCode: 'EUR', latitude: '51.00000000', longitude: '9.00000000', + timezones: [], regions: [], + }, +]; + +const MOCK_STATES = [ + { name: 'Ashanti Region', isoCode: 'AH', countryCode: 'GH', latitude: '6.74700', longitude: '-1.52000' }, + { name: 'Greater Accra', isoCode: 'AA', countryCode: 'GH', latitude: '5.60000', longitude: '-0.20000' }, + { name: 'Bavaria', isoCode: 'BY', countryCode: 'DE', latitude: '48.79000', longitude: '11.50000' }, +]; + +const MOCK_CITIES: string[][] = [ + ['Accra', 'GH', 'AA', '5.55600', '-0.20000'], + ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443'], + ['Munich', 'DE', 'BY', '48.13500', '11.58200'], + ['Brändö', 'DE', 'BY', '60.41667', '21.05000'], + ['São Paulo', 'DE', 'BY', '-23.5505', '-46.6333'], +]; + +vi.mock('fs', () => ({ + readFileSync: (filePath: string) => { + const p = String(filePath); + if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); + if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); + if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); + return '[]'; + }, +})); + +// ─── searchCountries ──────────────────────────────────────────────────────── + +describe('Search.searchCountries', () => { + test('finds an exact match', () => { + const results = Search.searchCountries('Ghana'); + expect(results).toHaveLength(1); + expect(results[0]!.countryName).toBe('Ghana'); + }); + + test('is case-insensitive', () => { + expect(Search.searchCountries('ghana')).toHaveLength(1); + expect(Search.searchCountries('GHANA')).toHaveLength(1); + }); + + test('ranks prefix matches above substring-only matches', () => { + // "Ghana" starts with "gh"; "Afghanistan" only contains "gh" mid-string. + const results = Search.searchCountries('gh'); + expect(results.map((c) => c.countryName)).toEqual(['Ghana', 'Afghanistan']); + }); + + test('matches substrings that are not prefixes', () => { + const results = Search.searchCountries('man'); + expect(results.map((c) => c.countryName)).toEqual(['Germany']); + }); + + test('returns empty array for no match', () => { + expect(Search.searchCountries('xyz')).toHaveLength(0); + }); + + test('returns empty array for empty query', () => { + expect(Search.searchCountries('')).toHaveLength(0); + }); + + test('caps results with the limit option', () => { + // "Afghanistan" (prefix), then "Germany"/"Ghana" (substring, alphabetical) all match "a" + const results = Search.searchCountries('a', { limit: 1 }); + expect(results).toHaveLength(1); + expect(results[0]!.countryName).toBe('Afghanistan'); + }); + + test('returns all matches when limit is omitted', () => { + expect(Search.searchCountries('a')).toHaveLength(3); + }); +}); + +// ─── searchStates ─────────────────────────────────────────────────────────── + +describe('Search.searchStates', () => { + test('finds states by partial name', () => { + const results = Search.searchStates('accra'); + expect(results).toHaveLength(1); + expect(results[0]!.name).toBe('Greater Accra'); + }); + + test('ranks prefix matches first', () => { + const results = Search.searchStates('ba'); + expect(results.map((s) => s.name)).toEqual(['Bavaria']); + }); + + test('returns empty array for no match', () => { + expect(Search.searchStates('zzz')).toHaveLength(0); + }); +}); + +// ─── searchCities ─────────────────────────────────────────────────────────── + +describe('Search.searchCities', () => { + test('finds cities by partial name', () => { + const results = Search.searchCities('kum'); + expect(results).toHaveLength(1); + expect(results[0]!.name).toBe('Kumasi'); + }); + + test('is case-insensitive', () => { + expect(Search.searchCities('MUNICH')).toHaveLength(1); + }); + + test('returns empty array for no match', () => { + expect(Search.searchCities('zzz')).toHaveLength(0); + }); + + test('returns empty array for empty query', () => { + expect(Search.searchCities('')).toHaveLength(0); + }); + + test('matches accented names when the query has no diacritics', () => { + expect(Search.searchCities('brando')).toHaveLength(1); + expect(Search.searchCities('brando')[0]!.name).toBe('Brändö'); + + expect(Search.searchCities('sao paulo')).toHaveLength(1); + expect(Search.searchCities('sao paulo')[0]!.name).toBe('São Paulo'); + }); + + test('matches accented query against accented data too', () => { + expect(Search.searchCities('Brändö')).toHaveLength(1); + }); + + test('caps results with the limit option', () => { + expect(Search.searchCities('a', { limit: 2 })).toHaveLength(2); + }); +}); diff --git a/src/CountryHelper.ts b/src/CountryHelper.ts index 564d213..31013c0 100644 --- a/src/CountryHelper.ts +++ b/src/CountryHelper.ts @@ -4,6 +4,7 @@ import type { ICity, IRegion, ITimezone, + ISearchOptions, } from './shared/interface.js'; import { getAllCountries, @@ -34,6 +35,11 @@ import { getCountriesByTimezone, getAllTimezones, } from './modules/timezone.js'; +import { + searchCountries, + searchStates, + searchCities, +} from './modules/search.js'; export class CountryHelper { // ─── Country flag ───────────────────────────────────────────────────────── @@ -135,6 +141,20 @@ export class CountryHelper { public sortCities(cities?: ICity[]): ICity[] { return sortCities(cities); } + + // ─── Search methods ─────────────────────────────────────────────────────── + + public searchCountries(query: string, options?: ISearchOptions): ICountry[] { + return searchCountries(query, options); + } + + public searchStates(query: string, options?: ISearchOptions): IState[] { + return searchStates(query, options); + } + + public searchCities(query: string, options?: ISearchOptions): ICity[] { + return searchCities(query, options); + } } export default CountryHelper; diff --git a/src/index.ts b/src/index.ts index eae4643..cc80b09 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ export { default as State } from './modules/state.js'; export { default as City } from './modules/city.js'; export { default as Region } from './modules/regions.js'; export { default as Timezone } from './modules/timezone.js'; +export { default as Search } from './modules/search.js'; export type { ICountry, @@ -11,4 +12,5 @@ export type { ICity, IRegion, ITimezone, + ISearchOptions, } from './shared/interface.js'; diff --git a/src/modules/search.ts b/src/modules/search.ts new file mode 100644 index 0000000..ad5c597 --- /dev/null +++ b/src/modules/search.ts @@ -0,0 +1,66 @@ +import type { ICountry, IState, ICity, ISearchOptions } from '../shared/interface.js'; +import { getAllCountries } from './country.js'; +import { getAllStates } from './state.js'; +import { getAllCities } from './city.js'; + +// ─── helpers ───────────────────────────────────────────────────────────────── + +// Strips diacritics so "brando" matches "Brändö", "sao paulo" matches "São Paulo", etc. +function normalize(str: string): string { + return str + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .toLowerCase(); +} + +// Lower rank = better match: exact match, then prefix match, then substring match. +// `normalizedQuery` must already be normalize()'d by the caller. +function matchRank(name: string, normalizedQuery: string): number { + const normalizedName = normalize(name); + if (normalizedName === normalizedQuery) return 0; + if (normalizedName.startsWith(normalizedQuery)) return 1; + return 2; +} + +function searchByName( + items: T[], + getName: (item: T) => string, + query: string, + options: ISearchOptions = {}, +): T[] { + if (!query) return []; + const q = normalize(query); + + const results = items + .filter((item) => normalize(getName(item)).includes(q)) + .sort((a, b) => { + const nameA = getName(a); + const nameB = getName(b); + const rankDiff = matchRank(nameA, q) - matchRank(nameB, q); + return rankDiff !== 0 ? rankDiff : nameA.localeCompare(nameB); + }); + + return options.limit !== undefined ? results.slice(0, options.limit) : results; +} + +// ─── module functions ───────────────────────────────────────────────────────── + +export function searchCountries(query: string, options?: ISearchOptions): ICountry[] { + return searchByName(getAllCountries(), (c) => c.countryName, query, options); +} + +export function searchStates(query: string, options?: ISearchOptions): IState[] { + return searchByName(getAllStates(), (s) => s.name, query, options); +} + +export function searchCities(query: string, options?: ISearchOptions): ICity[] { + return searchByName(getAllCities(), (c) => c.name, query, options); +} + +// ─── module export (Search.searchCountries() style) ─────────────────────────── + +export default { + searchCountries, + searchStates, + searchCities, +}; diff --git a/src/shared/interface.ts b/src/shared/interface.ts index 542e41f..f231fb8 100644 --- a/src/shared/interface.ts +++ b/src/shared/interface.ts @@ -58,3 +58,8 @@ export interface ICity { latitude?: string | null; longitude?: string | null; } + +export interface ISearchOptions { + /** Cap the number of results returned (after ranking). Unlimited if omitted. */ + limit?: number; +} From 798f23e0276d5bd3eddfb04ddf83e90411b5f3de Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 00:58:49 +0000 Subject: [PATCH 05/11] Add cross-entity filters --- .changeset/add-cross-entity-filters.md | 5 + README.md | 8 ++ ROADMAP.md | 2 +- Test/city.test.ts | 38 ++---- Test/country.test.ts | 156 ++++++++++++----------- Test/fixtures.ts | 170 +++++++++++++++++++++++++ Test/helper.test.ts | 85 +++++-------- Test/region.test.ts | 39 +----- Test/search.test.ts | 50 ++------ Test/state.test.ts | 43 ++----- Test/timezone.test.ts | 43 +------ src/CountryHelper.ts | 22 ++++ src/modules/country.ts | 64 ++++++++++ 13 files changed, 423 insertions(+), 302 deletions(-) create mode 100644 .changeset/add-cross-entity-filters.md create mode 100644 Test/fixtures.ts diff --git a/.changeset/add-cross-entity-filters.md b/.changeset/add-cross-entity-filters.md new file mode 100644 index 0000000..d37ccff --- /dev/null +++ b/.changeset/add-cross-entity-filters.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add cross-entity country filters: `getCountriesByCurrency(code)`, `getCountriesByContinent(name)`, `getCountriesByLanguage(name)`, and `getCountriesByRegion(name)` (matches a country's administrative region, e.g. `"Bavaria"` → Germany). All case-insensitive, all O(1)/O(n) lookups backed by Maps built at load time. Also available as `CountryHelper` instance methods. diff --git a/README.md b/README.md index 7477d71..2cfbe50 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,10 @@ const us = Country.getCountryByCode('US'); const byPhone = Country.getCountryByPhoneCode('+233'); const flag = Country.getCountryFlag('GH'); // '🇬🇭' const sorted = Country.sortCountries(); +const eurCountries = Country.getCountriesByCurrency('EUR'); +const african = Country.getCountriesByContinent('Africa'); +const englishSpeaking = Country.getCountriesByLanguage('English'); +const owner = Country.getCountriesByRegion('Bavaria'); // → [Germany] // States / Provinces const states = State.getStatesOfCountry('US'); @@ -103,6 +107,10 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getCountryByPhoneCode(code)` | `ICountry \| undefined` | Find by phone code (e.g. `"+1"`) | | `getCountryFlag(code)` | `string` | Emoji flag (e.g. `"🇺🇸"`) | | `sortCountries(countries?)` | `ICountry[]` | Alphabetical copy (defaults to all) | +| `getCountriesByCurrency(code)` | `ICountry[]` | Countries sharing a currency code (e.g. `"EUR"`) | +| `getCountriesByContinent(name)` | `ICountry[]` | Countries on a continent (e.g. `"Africa"`) | +| `getCountriesByLanguage(name)` | `ICountry[]` | Countries with a given official language | +| `getCountriesByRegion(name)` | `ICountry[]` | Country containing a named admin region (e.g. `"Bavaria"`) | ### `State` diff --git a/ROADMAP.md b/ROADMAP.md index 1b13237..c831fdd 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -70,7 +70,7 @@ both `dr5hn` and `mledoze` are ODbL (share-alike) and REST Countries dropped its `query.wikidata.org`, CC0, no key needed) merged with a hardcoded ISO 4217 currency name/symbol table. - [x] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. -- [ ] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, +- [x] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, `getCountriesByLanguage`, `getCountriesByContinent`. Depends on Phase 1. - [ ] **Phase 4** — Validation helpers: `isValidCountryCode`, `isValidPhoneCode`, `isValidStateCode`. diff --git a/Test/city.test.ts b/Test/city.test.ts index efabdae..6cd69ca 100644 --- a/Test/city.test.ts +++ b/Test/city.test.ts @@ -1,34 +1,15 @@ import { describe, test, expect, vi } from 'vitest'; import { City } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { countryName: 'Åland Islands', countryShortCode: 'AX', phoneCode: '+358', timezones: [], regions: [] }, - { countryName: 'Ghana', countryShortCode: 'GH', phoneCode: '+233', timezones: [], regions: [] }, -]; - -const MOCK_STATES = [ - { name: 'Brändö', isoCode: 'BR', countryCode: 'AX' }, - { name: 'Eckerö', isoCode: 'EC', countryCode: 'AX' }, - { name: 'Ashanti Region',isoCode: 'AH', countryCode: 'GH' }, - { name: 'Greater Accra', isoCode: 'AA', countryCode: 'GH' }, -]; - -const MOCK_CITIES: string[][] = [ - ['Brändö Village', 'AX', 'BR', '60.41667', '21.05000'], - ['Eckerö Village', 'AX', 'EC', '60.22500', '19.55000'], - ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443'], - ['Accra', 'GH', 'AA', '5.55602', '-0.19690'], -]; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA]; + const states = [f.STATE_BRANDO, f.STATE_ECKERO, f.STATE_ASHANTI_REGION, f.STATE_GREATER_ACCRA]; + const cities = [f.CITY_BRANDO_VILLAGE, f.CITY_ECKERO_VILLAGE, f.CITY_KUMASI, f.CITY_ACCRA]; + return { readFileSync: f.mockFsReader(countries, states, cities) }; +}); // ─── getAllCities ───────────────────────────────────────────────────────────── @@ -117,7 +98,6 @@ describe('City.sortCities', () => { }); test('sorts a provided array without mutating the original', () => { - const input = [MOCK_CITIES[3], MOCK_CITIES[0]] as string[][]; const cities = City.getCitiesOfCountry('AX'); const sorted = City.sortCities([...cities].reverse()); expect(sorted[0]!.name).toBe('Brändö Village'); diff --git a/Test/country.test.ts b/Test/country.test.ts index 9962119..939d694 100644 --- a/Test/country.test.ts +++ b/Test/country.test.ts @@ -1,81 +1,21 @@ import { describe, test, expect, vi } from 'vitest'; import { Country } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { - countryName: 'Åland Islands', - countryShortCode: 'AX', - phoneCode: '+358', - currencyCode: 'EUR', - latitude: '60.11666700', - longitude: '19.90000000', - timezones: [ - { zoneName: 'Europe/Mariehamn', gmtOffset: 7200, gmtOffsetName: 'UTC+02:00', abbreviation: 'EEST', tzName: 'Eastern European Summer Time' }, - ], - regions: [ - { name: 'Brändö', shortCode: 'BR' }, - { name: 'Eckerö', shortCode: 'EC' }, - ], - capital: 'Mariehamn', - population: 30836, - area: 1582.93, - nativeName: 'Åland', - languages: ['Swedish'], - tld: ['.ax'], - unMember: false, - independent: false, - }, - { - countryName: 'Ghana', - countryShortCode: 'GH', - phoneCode: '+233', - currencyCode: 'GHS', - latitude: '8.00000000', - longitude: '-2.00000000', - timezones: [ - { zoneName: 'Africa/Accra', gmtOffset: 0, gmtOffsetName: 'UTC+00:00', abbreviation: 'GMT', tzName: 'Greenwich Mean Time' }, - ], - regions: [{ name: 'Ashanti', shortCode: 'AH' }], - capital: 'Accra', - population: 32833031, - area: 238535, - continent: 'Africa', - demonym: 'Ghanaian', - languages: ['English'], - borders: ['TG', 'BF', 'CI'], - tld: ['.gh'], - unMember: true, - independent: true, - }, -]; - -const MOCK_STATES = [ - { name: 'Brändö', isoCode: 'BR', countryCode: 'AX', latitude: '60.41667', longitude: '21.05000' }, - { name: 'Eckerö', isoCode: 'EC', countryCode: 'AX', latitude: '60.22500', longitude: '19.55000' }, - { name: 'Ashanti Region', isoCode: 'AH', countryCode: 'GH', latitude: '6.74700', longitude: '-1.52000' }, -]; - -const MOCK_CITIES: string[][] = [ - ['Brändö Village', 'AX', 'BR', '60.41667', '21.05000'], - ['Eckerö Village', 'AX', 'EC', '60.22500', '19.55000'], - ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443'], -]; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA, f.COUNTRY_GERMANY, f.COUNTRY_TOGO]; + const states = [f.STATE_BRANDO, f.STATE_ECKERO, f.STATE_ASHANTI_REGION]; + const cities = [f.CITY_BRANDO_VILLAGE, f.CITY_ECKERO_VILLAGE, f.CITY_KUMASI]; + return { readFileSync: f.mockFsReader(countries, states, cities) }; +}); // ─── getAllCountries ────────────────────────────────────────────────────────── describe('Country.getAllCountries', () => { test('returns all countries', () => { - expect(Country.getAllCountries()).toHaveLength(2); + expect(Country.getAllCountries()).toHaveLength(4); }); test('attaches countryFlag emoji to each country', () => { @@ -196,18 +136,88 @@ describe('Country.getCountryFlag', () => { describe('Country.sortCountries', () => { test('sorts all countries alphabetically when called with no args', () => { const sorted = Country.sortCountries(); - expect(sorted[0]!.countryName).toBe('Ghana'); - expect(sorted[1]!.countryName).toBe('Åland Islands'); + expect(sorted.map((c) => c.countryName)).toEqual([ + 'Germany', + 'Ghana', + 'Togo', + 'Åland Islands', + ]); }); test('sorts a provided array without mutating the original', () => { const original = Country.getAllCountries(); const sorted = Country.sortCountries([...original]); - expect(sorted[0]!.countryName).toBe('Ghana'); + expect(sorted[0]!.countryName).toBe('Germany'); expect(original[0]!.countryName).toBe('Åland Islands'); }); }); +// ─── cross-entity filters ────────────────────────────────────────────────────── + +describe('Country.getCountriesByCurrency', () => { + test('returns all countries sharing a currency', () => { + const results = Country.getCountriesByCurrency('EUR'); + expect(results.map((c) => c.countryShortCode).sort()).toEqual(['AX', 'DE']); + }); + + test('is case-insensitive', () => { + expect(Country.getCountriesByCurrency('eur')).toHaveLength(2); + }); + + test('returns empty array for unknown currency', () => { + expect(Country.getCountriesByCurrency('XXX')).toHaveLength(0); + }); + + test('returns empty array for empty string', () => { + expect(Country.getCountriesByCurrency('')).toHaveLength(0); + }); +}); + +describe('Country.getCountriesByContinent', () => { + test('returns all countries on a continent', () => { + const results = Country.getCountriesByContinent('Africa'); + expect(results.map((c) => c.countryShortCode).sort()).toEqual(['GH', 'TG']); + }); + + test('is case-insensitive', () => { + expect(Country.getCountriesByContinent('africa')).toHaveLength(2); + }); + + test('returns empty array for a continent with no matches', () => { + expect(Country.getCountriesByContinent('Antarctica')).toHaveLength(0); + }); +}); + +describe('Country.getCountriesByLanguage', () => { + test('returns countries speaking a language', () => { + const results = Country.getCountriesByLanguage('English'); + expect(results.map((c) => c.countryShortCode)).toEqual(['GH']); + }); + + test('is case-insensitive', () => { + expect(Country.getCountriesByLanguage('french')).toHaveLength(1); + }); + + test('returns empty array for an unspoken language', () => { + expect(Country.getCountriesByLanguage('Klingon')).toHaveLength(0); + }); +}); + +describe('Country.getCountriesByRegion', () => { + test('returns the country containing a named administrative region', () => { + const results = Country.getCountriesByRegion('Ashanti'); + expect(results.map((c) => c.countryShortCode)).toEqual(['GH']); + }); + + test('is case-insensitive', () => { + expect(Country.getCountriesByRegion('bavaria')).toHaveLength(1); + }); + + test('returns empty array for an unknown region name', () => { + expect(Country.getCountriesByRegion('Nonexistent')).toHaveLength(0); + }); +}); + // ─── method chaining ────────────────────────────────────────────────────────── describe('Country object method chaining', () => { diff --git a/Test/fixtures.ts b/Test/fixtures.ts new file mode 100644 index 0000000..1ccc71f --- /dev/null +++ b/Test/fixtures.ts @@ -0,0 +1,170 @@ +/** + * Shared mock data for tests. Individual test files compose their own + * MOCK_COUNTRIES / MOCK_STATES / MOCK_CITIES arrays from these building blocks + * rather than redefining the same countries from scratch in every file. + * + * `vi.mock('fs', ...)` itself must still be written in each test file — Vitest + * only hoists literal `vi.mock()` calls found directly in that file, so the + * registration can't live here. Use `mockFsReader()` below to keep that + * per-file block to one line. + */ + +// ─── timezones ─────────────────────────────────────────────────────────────── + +export const TIMEZONE_MARIEHAMN = { + zoneName: 'Europe/Mariehamn', + gmtOffset: 7200, + gmtOffsetName: 'UTC+02:00', + abbreviation: 'EEST', + tzName: 'Eastern European Summer Time', +}; + +export const TIMEZONE_ACCRA = { + zoneName: 'Africa/Accra', + gmtOffset: 0, + gmtOffsetName: 'UTC+00:00', + abbreviation: 'GMT', + tzName: 'Greenwich Mean Time', +}; + +// ─── countries ─────────────────────────────────────────────────────────────── + +export const COUNTRY_ALAND = { + countryName: 'Åland Islands', + countryShortCode: 'AX', + phoneCode: '+358', + currencyCode: 'EUR', + latitude: '60.11666700', + longitude: '19.90000000', + timezones: [TIMEZONE_MARIEHAMN], + // Deliberately unsorted — region.test.ts relies on this to prove sortRegions() reorders. + regions: [ + { name: 'Brändö', shortCode: 'BR' }, + { name: 'Finström', shortCode: 'FN' }, + { name: 'Eckerö', shortCode: 'EC' }, + ], + capital: 'Mariehamn', + population: 30836, + area: 1582.93, + nativeName: 'Åland', + languages: ['Swedish'], + tld: ['.ax'], + unMember: false, + independent: false, +}; + +export const COUNTRY_GHANA = { + countryName: 'Ghana', + countryShortCode: 'GH', + phoneCode: '+233', + currencyCode: 'GHS', + latitude: '8.00000000', + longitude: '-2.00000000', + timezones: [TIMEZONE_ACCRA], + regions: [ + { name: 'Ashanti', shortCode: 'AH' }, + { name: 'Greater Accra', shortCode: 'AA' }, + ], + capital: 'Accra', + population: 32833031, + area: 238535, + continent: 'Africa', + demonym: 'Ghanaian', + languages: ['English'], + borders: ['TG', 'BF', 'CI'], + tld: ['.gh'], + unMember: true, + independent: true, +}; + +export const COUNTRY_GERMANY = { + countryName: 'Germany', + countryShortCode: 'DE', + phoneCode: '+49', + currencyCode: 'EUR', + latitude: '51.00000000', + longitude: '9.00000000', + timezones: [], + regions: [{ name: 'Bavaria', shortCode: 'BY' }], + continent: 'Europe', + languages: ['German'], +}; + +export const COUNTRY_TOGO = { + countryName: 'Togo', + countryShortCode: 'TG', + phoneCode: '+228', + currencyCode: 'XOF', + latitude: '8.00000000', + longitude: '1.16667000', + timezones: [], + regions: [{ name: 'Maritime', shortCode: 'MA' }], + continent: 'Africa', + languages: ['French'], +}; + +export const COUNTRY_BURKINA_FASO = { + countryName: 'Burkina Faso', + countryShortCode: 'BF', + phoneCode: '+226', + regions: [], + timezones: [TIMEZONE_ACCRA], +}; + +export const COUNTRY_AFGHANISTAN = { + countryName: 'Afghanistan', + countryShortCode: 'AF', + phoneCode: '+93', + currencyCode: 'AFN', + latitude: '33.00000000', + longitude: '65.00000000', + timezones: [], + regions: [], +}; + +// ─── states ────────────────────────────────────────────────────────────────── + +export const STATE_BRANDO = { + name: 'Brändö', isoCode: 'BR', countryCode: 'AX', latitude: '60.41667', longitude: '21.05000', +}; + +export const STATE_ECKERO = { + name: 'Eckerö', isoCode: 'EC', countryCode: 'AX', latitude: '60.22500', longitude: '19.55000', +}; + +export const STATE_ASHANTI_REGION = { + name: 'Ashanti Region', isoCode: 'AH', countryCode: 'GH', latitude: '6.74700', longitude: '-1.52000', +}; + +export const STATE_GREATER_ACCRA = { + name: 'Greater Accra', isoCode: 'AA', countryCode: 'GH', latitude: '5.60000', longitude: '-0.20000', +}; + +export const STATE_BAVARIA = { + name: 'Bavaria', isoCode: 'BY', countryCode: 'DE', latitude: '48.79000', longitude: '11.50000', +}; + +// ─── cities ────────────────────────────────────────────────────────────────── +// On-disk shape: [name, countryCode, stateCode, latitude, longitude] + +export const CITY_BRANDO_VILLAGE = ['Brändö Village', 'AX', 'BR', '60.41667', '21.05000']; +export const CITY_ECKERO_VILLAGE = ['Eckerö Village', 'AX', 'EC', '60.22500', '19.55000']; +export const CITY_KUMASI = ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443']; +export const CITY_ACCRA = ['Accra', 'GH', 'AA', '5.55602', '-0.19690']; +export const CITY_MUNICH = ['Munich', 'DE', 'BY', '48.13500', '11.58200']; +// Diacritic-only fixtures for search.test.ts's normalization tests — not tied to a +// "real" country/state pairing, just needs *some* valid countryCode/stateCode. +export const CITY_BRANDO = ['Brändö', 'DE', 'BY', '60.41667', '21.05000']; +export const CITY_SAO_PAULO = ['São Paulo', 'DE', 'BY', '-23.5505', '-46.6333']; + +// ─── fs mock factory ───────────────────────────────────────────────────────── + +export function mockFsReader(countries: unknown[], states: unknown[], cities: unknown[]) { + return (filePath: string): string => { + const p = String(filePath); + if (p.includes('states.json')) return JSON.stringify(states); + if (p.includes('cities.json')) return JSON.stringify(cities); + if (p.includes('countries.json')) return JSON.stringify(countries); + return '[]'; + }; +} diff --git a/Test/helper.test.ts b/Test/helper.test.ts index b444278..b6085a8 100644 --- a/Test/helper.test.ts +++ b/Test/helper.test.ts @@ -1,62 +1,15 @@ import { describe, test, expect, vi, beforeAll } from 'vitest'; import { CountryHelper } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { - countryName: 'Åland Islands', - countryShortCode: 'AX', - phoneCode: '+358', - currencyCode: 'EUR', - latitude: '60.11666700', - longitude: '19.90000000', - timezones: [ - { zoneName: 'Europe/Mariehamn', gmtOffset: 7200, gmtOffsetName: 'UTC+02:00', abbreviation: 'EEST', tzName: 'Eastern European Summer Time' }, - ], - regions: [ - { name: 'Brändö', shortCode: 'BR' }, - { name: 'Eckerö', shortCode: 'EC' }, - { name: 'Finström', shortCode: 'FN' }, - ], - }, - { - countryName: 'Ghana', - countryShortCode: 'GH', - phoneCode: '+233', - currencyCode: 'GHS', - latitude: '8.00000000', - longitude: '-2.00000000', - timezones: [ - { zoneName: 'Africa/Accra', gmtOffset: 0, gmtOffsetName: 'UTC+00:00', abbreviation: 'GMT', tzName: 'Greenwich Mean Time' }, - ], - regions: [ - { name: 'Ashanti', shortCode: 'AH' }, - { name: 'Greater Accra',shortCode: 'AA' }, - ], - }, -]; - -const MOCK_STATES = [ - { name: 'Brändö', isoCode: 'BR', countryCode: 'AX', latitude: '60.41667', longitude: '21.05000' }, - { name: 'Eckerö', isoCode: 'EC', countryCode: 'AX', latitude: '60.22500', longitude: '19.55000' }, - { name: 'Ashanti Region',isoCode: 'AH', countryCode: 'GH', latitude: '6.74700', longitude: '-1.52000' }, -]; - -const MOCK_CITIES: string[][] = [ - ['Brändö Village', 'AX', 'BR', '60.41667', '21.05000'], - ['Eckerö Village', 'AX', 'EC', '60.22500', '19.55000'], - ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443'], - ['Accra', 'GH', 'AA', '5.55602', '-0.19690'], -]; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA]; + const states = [f.STATE_BRANDO, f.STATE_ECKERO, f.STATE_ASHANTI_REGION]; + const cities = [f.CITY_BRANDO_VILLAGE, f.CITY_ECKERO_VILLAGE, f.CITY_KUMASI, f.CITY_ACCRA]; + return { readFileSync: f.mockFsReader(countries, states, cities) }; +}); let helper: CountryHelper; beforeAll(() => { helper = new CountryHelper(); }); @@ -221,3 +174,23 @@ describe('CountryHelper — city methods', () => { expect(sorted[3]!.name).toBe('Kumasi'); // GH-AH }); }); + +// ─── Search ─────────────────────────────────────────────────────────────────── + +describe('CountryHelper — search methods', () => { + test('searchCountries finds by partial name', () => { + expect(helper.searchCountries('ghan')).toHaveLength(1); + }); + + test('searchStates finds by partial name', () => { + expect(helper.searchStates('ashanti')).toHaveLength(1); + }); + + test('searchCities finds by partial name', () => { + expect(helper.searchCities('kum')).toHaveLength(1); + }); + + test('search methods accept a limit option', () => { + expect(helper.searchCities('a', { limit: 1 })).toHaveLength(1); + }); +}); diff --git a/Test/region.test.ts b/Test/region.test.ts index eef9cd9..db4e463 100644 --- a/Test/region.test.ts +++ b/Test/region.test.ts @@ -1,38 +1,13 @@ import { describe, test, expect, vi } from 'vitest'; import { Region } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { - countryName: 'Åland Islands', countryShortCode: 'AX', phoneCode: '+358', - timezones: [], - regions: [ - { name: 'Brändö', shortCode: 'BR' }, - { name: 'Finström', shortCode: 'FN' }, - { name: 'Eckerö', shortCode: 'EC' }, - ], - }, - { - countryName: 'Ghana', countryShortCode: 'GH', phoneCode: '+233', - timezones: [], - regions: [ - { name: 'Ashanti', shortCode: 'AH' }, - { name: 'Greater Accra',shortCode: 'AA' }, - ], - }, -]; - -const MOCK_STATES: unknown[] = []; -const MOCK_CITIES: string[][] = []; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA]; + return { readFileSync: f.mockFsReader(countries, [], []) }; +}); // ─── getRegionsByCountryCode ────────────────────────────────────────────────── diff --git a/Test/search.test.ts b/Test/search.test.ts index be2c5b3..a0e0375 100644 --- a/Test/search.test.ts +++ b/Test/search.test.ts @@ -1,47 +1,15 @@ import { describe, test, expect, vi } from 'vitest'; import { Search } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { - countryName: 'Ghana', countryShortCode: 'GH', phoneCode: '+233', - currencyCode: 'GHS', latitude: '8.00000000', longitude: '-2.00000000', - timezones: [], regions: [], - }, - { - countryName: 'Afghanistan', countryShortCode: 'AF', phoneCode: '+93', - currencyCode: 'AFN', latitude: '33.00000000', longitude: '65.00000000', - timezones: [], regions: [], - }, - { - countryName: 'Germany', countryShortCode: 'DE', phoneCode: '+49', - currencyCode: 'EUR', latitude: '51.00000000', longitude: '9.00000000', - timezones: [], regions: [], - }, -]; - -const MOCK_STATES = [ - { name: 'Ashanti Region', isoCode: 'AH', countryCode: 'GH', latitude: '6.74700', longitude: '-1.52000' }, - { name: 'Greater Accra', isoCode: 'AA', countryCode: 'GH', latitude: '5.60000', longitude: '-0.20000' }, - { name: 'Bavaria', isoCode: 'BY', countryCode: 'DE', latitude: '48.79000', longitude: '11.50000' }, -]; - -const MOCK_CITIES: string[][] = [ - ['Accra', 'GH', 'AA', '5.55600', '-0.20000'], - ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443'], - ['Munich', 'DE', 'BY', '48.13500', '11.58200'], - ['Brändö', 'DE', 'BY', '60.41667', '21.05000'], - ['São Paulo', 'DE', 'BY', '-23.5505', '-46.6333'], -]; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_GHANA, f.COUNTRY_AFGHANISTAN, f.COUNTRY_GERMANY]; + const states = [f.STATE_ASHANTI_REGION, f.STATE_GREATER_ACCRA, f.STATE_BAVARIA]; + const cities = [f.CITY_ACCRA, f.CITY_KUMASI, f.CITY_MUNICH, f.CITY_BRANDO, f.CITY_SAO_PAULO]; + return { readFileSync: f.mockFsReader(countries, states, cities) }; +}); // ─── searchCountries ──────────────────────────────────────────────────────── diff --git a/Test/state.test.ts b/Test/state.test.ts index 36f7136..b52a1e1 100644 --- a/Test/state.test.ts +++ b/Test/state.test.ts @@ -1,40 +1,15 @@ import { describe, test, expect, vi } from 'vitest'; import { State } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { - countryName: 'Åland Islands', countryShortCode: 'AX', phoneCode: '+358', - currencyCode: 'EUR', latitude: '60.11666700', longitude: '19.90000000', - timezones: [], regions: [], - }, - { - countryName: 'Ghana', countryShortCode: 'GH', phoneCode: '+233', - currencyCode: 'GHS', latitude: '8.00000000', longitude: '-2.00000000', - timezones: [], regions: [], - }, -]; - -const MOCK_STATES = [ - { name: 'Brändö', isoCode: 'BR', countryCode: 'AX', latitude: '60.41667', longitude: '21.05000' }, - { name: 'Eckerö', isoCode: 'EC', countryCode: 'AX', latitude: '60.22500', longitude: '19.55000' }, - { name: 'Ashanti Region',isoCode: 'AH', countryCode: 'GH', latitude: '6.74700', longitude: '-1.52000' }, -]; - -const MOCK_CITIES: string[][] = [ - ['Brändö Village', 'AX', 'BR', '60.41667', '21.05000'], - ['Eckerö Village', 'AX', 'EC', '60.22500', '19.55000'], - ['Kumasi', 'GH', 'AH', '6.68848', '-1.62443'], -]; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA]; + const states = [f.STATE_BRANDO, f.STATE_ECKERO, f.STATE_ASHANTI_REGION]; + const cities = [f.CITY_BRANDO_VILLAGE, f.CITY_ECKERO_VILLAGE, f.CITY_KUMASI]; + return { readFileSync: f.mockFsReader(countries, states, cities) }; +}); // ─── getAllStates ───────────────────────────────────────────────────────────── diff --git a/Test/timezone.test.ts b/Test/timezone.test.ts index b768977..715e9ed 100644 --- a/Test/timezone.test.ts +++ b/Test/timezone.test.ts @@ -1,42 +1,13 @@ import { describe, test, expect, vi } from 'vitest'; import { Timezone } from '../src/index.js'; -const MOCK_COUNTRIES = [ - { - countryName: 'Åland Islands', countryShortCode: 'AX', phoneCode: '+358', - regions: [], - timezones: [ - { zoneName: 'Europe/Mariehamn', gmtOffset: 7200, gmtOffsetName: 'UTC+02:00', abbreviation: 'EEST', tzName: 'Eastern European Summer Time' }, - ], - }, - { - countryName: 'Ghana', countryShortCode: 'GH', phoneCode: '+233', - regions: [], - timezones: [ - { zoneName: 'Africa/Accra', gmtOffset: 0, gmtOffsetName: 'UTC+00:00', abbreviation: 'GMT', tzName: 'Greenwich Mean Time' }, - ], - }, - { - countryName: 'Burkina Faso', countryShortCode: 'BF', phoneCode: '+226', - regions: [], - timezones: [ - { zoneName: 'Africa/Accra', gmtOffset: 0, gmtOffsetName: 'UTC+00:00', abbreviation: 'GMT', tzName: 'Greenwich Mean Time' }, - ], - }, -]; - -const MOCK_STATES: unknown[] = []; -const MOCK_CITIES: string[][] = []; - -vi.mock('fs', () => ({ - readFileSync: (filePath: string) => { - const p = String(filePath); - if (p.includes('states.json')) return JSON.stringify(MOCK_STATES); - if (p.includes('cities.json')) return JSON.stringify(MOCK_CITIES); - if (p.includes('countries.json')) return JSON.stringify(MOCK_COUNTRIES); - return '[]'; - }, -})); +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA, f.COUNTRY_BURKINA_FASO]; + return { readFileSync: f.mockFsReader(countries, [], []) }; +}); // ─── getAllTimezones ────────────────────────────────────────────────────────── diff --git a/src/CountryHelper.ts b/src/CountryHelper.ts index 31013c0..ecb7a40 100644 --- a/src/CountryHelper.ts +++ b/src/CountryHelper.ts @@ -12,6 +12,10 @@ import { getCountryByPhoneCode, getCountryFlag, sortCountries, + getCountriesByCurrency, + getCountriesByContinent, + getCountriesByLanguage, + getCountriesByRegion, } from './modules/country.js'; import { getAllStates, @@ -72,6 +76,24 @@ export class CountryHelper { return sortCountries(countries); } + // ─── Cross-entity filter methods ───────────────────────────────────────── + + public getCountriesByCurrency(currencyCode: string): ICountry[] { + return getCountriesByCurrency(currencyCode); + } + + public getCountriesByContinent(continent: string): ICountry[] { + return getCountriesByContinent(continent); + } + + public getCountriesByLanguage(language: string): ICountry[] { + return getCountriesByLanguage(language); + } + + public getCountriesByRegion(regionName: string): ICountry[] { + return getCountriesByRegion(regionName); + } + // ─── Region methods ─────────────────────────────────────────────────────── public getRegionsByCountryShortCode(countryShortCode: string): IRegion[] { diff --git a/src/modules/country.ts b/src/modules/country.ts index f192ae1..b919565 100644 --- a/src/modules/country.ts +++ b/src/modules/country.ts @@ -10,6 +10,9 @@ import { getCitiesOfCountry } from './city.js'; let countryCache: ICountry[] | null = null; let byShortCode: Map | null = null; let byPhoneCode: Map | null = null; +let byCurrencyCode: Map | null = null; +let byContinent: Map | null = null; +let byRegionName: Map | null = null; function ensureLoaded(): void { if (countryCache !== null) return; @@ -29,6 +32,32 @@ function ensureLoaded(): void { byShortCode = new Map(countryCache.map((c) => [c.countryShortCode, c])); byPhoneCode = new Map(countryCache.map((c) => [c.phoneCode, c])); + + byCurrencyCode = new Map(); + byContinent = new Map(); + byRegionName = new Map(); + + for (const country of countryCache) { + if (country.currencyCode) { + const list = byCurrencyCode.get(country.currencyCode) ?? []; + list.push(country); + byCurrencyCode.set(country.currencyCode, list); + } + + if (country.continent) { + const key = country.continent.toLowerCase(); + const list = byContinent.get(key) ?? []; + list.push(country); + byContinent.set(key, list); + } + + for (const region of country.regions) { + const key = region.name.toLowerCase(); + const list = byRegionName.get(key) ?? []; + list.push(country); + byRegionName.set(key, list); + } + } } // ─── helpers ───────────────────────────────────────────────────────────────── @@ -66,6 +95,37 @@ export function sortCountries(countries: ICountry[] = getAllCountries()): ICount }); } +// ─── cross-entity filters ────────────────────────────────────────────────────── + +export function getCountriesByCurrency(currencyCode: string): ICountry[] { + if (!currencyCode) return []; + ensureLoaded(); + return byCurrencyCode!.get(currencyCode.toUpperCase()) ?? []; +} + +export function getCountriesByContinent(continent: string): ICountry[] { + if (!continent) return []; + ensureLoaded(); + return byContinent!.get(continent.toLowerCase()) ?? []; +} + +export function getCountriesByLanguage(language: string): ICountry[] { + if (!language) return []; + ensureLoaded(); + const target = language.toLowerCase(); + return getAllCountries().filter((c) => + c.languages?.some((l) => l.toLowerCase() === target), + ); +} + +// Matches a country's administrative region (e.g. "Ashanti" → Ghana), not a +// continent — see getCountriesByContinent() for that. +export function getCountriesByRegion(regionName: string): ICountry[] { + if (!regionName) return []; + ensureLoaded(); + return byRegionName!.get(regionName.toLowerCase()) ?? []; +} + // ─── module export (Country.getAllCountries() style) ────────────────────────── export default { @@ -74,4 +134,8 @@ export default { getCountryByPhoneCode, getCountryFlag, sortCountries, + getCountriesByCurrency, + getCountriesByContinent, + getCountriesByLanguage, + getCountriesByRegion, }; From b3f77f4e535643438c25423d09984377f6918fc6 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 01:06:52 +0000 Subject: [PATCH 06/11] Add geo utilities and validation helpers --- .changeset/add-geo-utilities.md | 5 ++ .changeset/add-validation-helpers.md | 5 ++ README.md | 27 +++++++- ROADMAP.md | 4 +- Test/country.test.ts | 30 +++++++++ Test/geo.test.ts | 67 ++++++++++++++++++++ Test/helper.test.ts | 19 ++++++ Test/state.test.ts | 20 ++++++ src/CountryHelper.ts | 41 +++++++++++++ src/index.ts | 2 + src/modules/country.ts | 12 ++++ src/modules/geo.ts | 92 ++++++++++++++++++++++++++++ src/modules/state.ts | 7 +++ src/shared/interface.ts | 7 +++ 14 files changed, 335 insertions(+), 3 deletions(-) create mode 100644 .changeset/add-geo-utilities.md create mode 100644 .changeset/add-validation-helpers.md create mode 100644 Test/geo.test.ts create mode 100644 src/modules/geo.ts diff --git a/.changeset/add-geo-utilities.md b/.changeset/add-geo-utilities.md new file mode 100644 index 0000000..e66781f --- /dev/null +++ b/.changeset/add-geo-utilities.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add geo distance utilities: `Geo.haversineDistanceKm(lat1, lon1, lat2, lon2)`, `Geo.getNearestCountry(lat, lon)`, and `Geo.getNearestCity(lat, lon, options?)` (accepts `{ countryCode, stateCode }` to scope the search instead of scanning all ~148k cities). Also available as `CountryHelper` instance methods. No new dependency. diff --git a/.changeset/add-validation-helpers.md b/.changeset/add-validation-helpers.md new file mode 100644 index 0000000..3341dc5 --- /dev/null +++ b/.changeset/add-validation-helpers.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add validation helpers: `Country.isValidCountryCode(code)`, `Country.isValidPhoneCode(code)`, and `State.isValidStateCode(stateCode, countryCode)`. Also available as `CountryHelper` instance methods. diff --git a/README.md b/README.md index 2cfbe50..d4f8cd2 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ npm install countrydata.js ### Module API (recommended) ```typescript -import { Country, State, City, Region, Timezone, Search } from 'countrydata.js'; +import { Country, State, City, Region, Timezone, Search, Geo } from 'countrydata.js'; // Countries const all = Country.getAllCountries(); @@ -42,11 +42,14 @@ const eurCountries = Country.getCountriesByCurrency('EUR'); const african = Country.getCountriesByContinent('Africa'); const englishSpeaking = Country.getCountriesByLanguage('English'); const owner = Country.getCountriesByRegion('Bavaria'); // → [Germany] +const validCode = Country.isValidCountryCode('GH'); // true +const validPhone = Country.isValidPhoneCode('+233'); // true // States / Provinces const states = State.getStatesOfCountry('US'); const ca = State.getStateByCodeAndCountry('CA', 'US'); const sorted = State.sortStates(states); +const validState = State.isValidStateCode('CA', 'US'); // true // Cities (lazily loaded on first call) const cities = City.getCitiesOfState('US', 'CA'); @@ -65,6 +68,10 @@ const countries = Timezone.getCountriesByTimezone('America/New_York'); const countryMatches = Search.searchCountries('ghan'); // → [Ghana] const stateMatches = Search.searchStates('accra'); const cityMatches = Search.searchCities('kum'); + +// Geo (distance in km, nearest lookups) +const distance = Geo.haversineDistanceKm(40.7128, -74.0060, 51.5074, -0.1278); +const nearestCity = Geo.getNearestCity(40.7128, -74.0060, { countryCode: 'US' }); ``` ### Class API @@ -111,6 +118,8 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getCountriesByContinent(name)` | `ICountry[]` | Countries on a continent (e.g. `"Africa"`) | | `getCountriesByLanguage(name)` | `ICountry[]` | Countries with a given official language | | `getCountriesByRegion(name)` | `ICountry[]` | Country containing a named admin region (e.g. `"Bavaria"`) | +| `isValidCountryCode(code)` | `boolean` | Whether an ISO code exists in the dataset | +| `isValidPhoneCode(code)` | `boolean` | Whether a phone code exists in the dataset | ### `State` @@ -120,6 +129,7 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getStatesOfCountry(countryCode)` | `IState[]` | States for one country | | `getStateByCodeAndCountry(stateCode, countryCode)` | `IState \| undefined` | Single state lookup | | `sortStates(states?)` | `IState[]` | Alphabetical copy (defaults to all) | +| `isValidStateCode(stateCode, countryCode)` | `boolean` | Whether that state exists for that country | ### `City` @@ -163,6 +173,21 @@ Search.searchCities('sao paulo'); // finds "São Paulo" despite no ac Search.searchCountries('a', { limit: 10 }); // top 10 matches only ``` +### `Geo` + +Country/state/city coordinates are single points (typically a geographic centroid), not borders — so "nearest country" means nearest *centroid*, which can be counterintuitive for large countries (e.g. a point in New York City is nearer Bermuda's centroid than the continental US's). `getNearestCity()` scans the whole ~148k-city dataset if no `countryCode`/`stateCode` is given (~100ms); pass one to scope the search to an already-indexed subset (~3ms). + +| Method | Returns | Description | +| ------------------------------------------------ | --------------------- | --------------------------------------------- | +| `haversineDistanceKm(lat1, lon1, lat2, lon2)` | `number` | Great-circle distance between two coordinates | +| `getNearestCountry(lat, lon)` | `ICountry \| undefined` | Nearest country by centroid distance | +| `getNearestCity(lat, lon, options?)` | `ICity \| undefined` | Nearest city; `options.countryCode`/`stateCode` narrow the search | + +```typescript +Geo.haversineDistanceKm(40.7128, -74.0060, 51.5074, -0.1278); // NYC → London, ≈5570 km +Geo.getNearestCity(40.7128, -74.0060, { countryCode: 'US' }); // scoped — fast +``` + ### `CountryHelper` class Wraps the module functions above into a class. All module methods are available as instance methods with equivalent names. diff --git a/ROADMAP.md b/ROADMAP.md index c831fdd..c674cb7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -72,9 +72,9 @@ both `dr5hn` and `mledoze` are ODbL (share-alike) and REST Countries dropped its - [x] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. - [x] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, `getCountriesByLanguage`, `getCountriesByContinent`. Depends on Phase 1. -- [ ] **Phase 4** — Validation helpers: `isValidCountryCode`, `isValidPhoneCode`, +- [x] **Phase 4** — Validation helpers: `isValidCountryCode`, `isValidPhoneCode`, `isValidStateCode`. -- [ ] **Phase 5** — Geo utilities: Haversine distance, `getNearestCountry`, `getNearestCity`. +- [x] **Phase 5** — Geo utilities: Haversine distance, `getNearestCountry`, `getNearestCity`. - [ ] **Phase 6** — Pagination for the cities dataset (`getCitiesPaginated`). - [ ] **Phase 7** (backlog, lower priority) — i18n locale names, slimmer browser/CDN bundle, CLI data export. diff --git a/Test/country.test.ts b/Test/country.test.ts index 939d694..faca62e 100644 --- a/Test/country.test.ts +++ b/Test/country.test.ts @@ -218,6 +218,36 @@ describe('Country.getCountriesByRegion', () => { }); }); +// ─── validation ───────────────────────────────────────────────────────────── + +describe('Country.isValidCountryCode', () => { + test('returns true for a known code', () => { + expect(Country.isValidCountryCode('GH')).toBe(true); + }); + + test('returns false for an unknown code', () => { + expect(Country.isValidCountryCode('XX')).toBe(false); + }); + + test('returns false for an empty string', () => { + expect(Country.isValidCountryCode('')).toBe(false); + }); +}); + +describe('Country.isValidPhoneCode', () => { + test('returns true for a known phone code', () => { + expect(Country.isValidPhoneCode('+233')).toBe(true); + }); + + test('returns false for an unknown phone code', () => { + expect(Country.isValidPhoneCode('+000')).toBe(false); + }); + + test('returns false for an empty string', () => { + expect(Country.isValidPhoneCode('')).toBe(false); + }); +}); + // ─── method chaining ────────────────────────────────────────────────────────── describe('Country object method chaining', () => { diff --git a/Test/geo.test.ts b/Test/geo.test.ts new file mode 100644 index 0000000..02677e0 --- /dev/null +++ b/Test/geo.test.ts @@ -0,0 +1,67 @@ +import { describe, test, expect, vi } from 'vitest'; +import { Geo } from '../src/index.js'; + +// vi.mock() is hoisted above imports, so fixture data must be pulled in via a +// dynamic import inside the factory rather than referenced from a top-level import. +vi.mock('fs', async () => { + const f = await import('./fixtures.js'); + const countries = [f.COUNTRY_ALAND, f.COUNTRY_GHANA, f.COUNTRY_GERMANY, f.COUNTRY_TOGO]; + const states = [f.STATE_BRANDO, f.STATE_ECKERO, f.STATE_ASHANTI_REGION, f.STATE_GREATER_ACCRA]; + const cities = [f.CITY_BRANDO_VILLAGE, f.CITY_ECKERO_VILLAGE, f.CITY_KUMASI, f.CITY_ACCRA]; + return { readFileSync: f.mockFsReader(countries, states, cities) }; +}); + +// ─── haversineDistanceKm ──────────────────────────────────────────────────── + +describe('Geo.haversineDistanceKm', () => { + test('returns 0 for identical points', () => { + expect(Geo.haversineDistanceKm(5.6, -0.2, 5.6, -0.2)).toBe(0); + }); + + test('computes a known distance along the equator', () => { + // 1° of longitude at the equator is ≈ 111.19 km on a sphere of Earth's mean radius. + expect(Geo.haversineDistanceKm(0, 0, 0, 1)).toBeCloseTo(111.19, 1); + }); + + test('is symmetric', () => { + const a = Geo.haversineDistanceKm(8, -2, 51, 9); + const b = Geo.haversineDistanceKm(51, 9, 8, -2); + expect(a).toBeCloseTo(b, 10); + }); +}); + +// ─── getNearestCountry ────────────────────────────────────────────────────── + +describe('Geo.getNearestCountry', () => { + test('finds the nearest country to a coordinate', () => { + // Close to Ghana (8, -2), far from Togo/Germany/Åland Islands. + expect(Geo.getNearestCountry(7.5, -1.5)?.countryShortCode).toBe('GH'); + }); + + test('finds a different nearest country for a different coordinate', () => { + // Close to Åland Islands (60.11667, 19.9). + expect(Geo.getNearestCountry(60.1, 20.0)?.countryShortCode).toBe('AX'); + }); +}); + +// ─── getNearestCity ───────────────────────────────────────────────────────── + +describe('Geo.getNearestCity', () => { + test('finds the nearest city to a coordinate across all cities', () => { + expect(Geo.getNearestCity(6.7, -1.6)?.name).toBe('Kumasi'); + }); + + test('scopes the search to a country', () => { + const nearest = Geo.getNearestCity(60.3, 20.0, { countryCode: 'AX' }); + expect(nearest?.countryCode).toBe('AX'); + }); + + test('scopes the search to a state within a country', () => { + const nearest = Geo.getNearestCity(60.3, 20.0, { countryCode: 'AX', stateCode: 'BR' }); + expect(nearest?.name).toBe('Brändö Village'); + }); + + test('returns undefined when scoped to a country with no cities', () => { + expect(Geo.getNearestCity(0, 0, { countryCode: 'ZZ' })).toBeUndefined(); + }); +}); diff --git a/Test/helper.test.ts b/Test/helper.test.ts index b6085a8..fd3299a 100644 --- a/Test/helper.test.ts +++ b/Test/helper.test.ts @@ -57,6 +57,25 @@ describe('CountryHelper — country methods', () => { }); }); +// ─── Validation ─────────────────────────────────────────────────────────────── + +describe('CountryHelper — validation methods', () => { + test('isValidCountryCode', () => { + expect(helper.isValidCountryCode('GH')).toBe(true); + expect(helper.isValidCountryCode('XX')).toBe(false); + }); + + test('isValidPhoneCode', () => { + expect(helper.isValidPhoneCode('+233')).toBe(true); + expect(helper.isValidPhoneCode('+000')).toBe(false); + }); + + test('isValidStateCode', () => { + expect(helper.isValidStateCode('BR', 'AX')).toBe(true); + expect(helper.isValidStateCode('ZZ', 'AX')).toBe(false); + }); +}); + // ─── Region ─────────────────────────────────────────────────────────────────── describe('CountryHelper — region methods', () => { diff --git a/Test/state.test.ts b/Test/state.test.ts index b52a1e1..0812a74 100644 --- a/Test/state.test.ts +++ b/Test/state.test.ts @@ -84,6 +84,26 @@ describe('State.getStateByCodeAndCountry', () => { }); }); +// ─── isValidStateCode ───────────────────────────────────────────────────────── + +describe('State.isValidStateCode', () => { + test('returns true for a known state/country pair', () => { + expect(State.isValidStateCode('BR', 'AX')).toBe(true); + }); + + test('returns false for an unknown state code', () => { + expect(State.isValidStateCode('ZZ', 'AX')).toBe(false); + }); + + test('returns false when the state belongs to a different country', () => { + expect(State.isValidStateCode('BR', 'GH')).toBe(false); + }); + + test('returns false for empty input', () => { + expect(State.isValidStateCode('', 'AX')).toBe(false); + }); +}); + // ─── sortStates ─────────────────────────────────────────────────────────────── describe('State.sortStates', () => { diff --git a/src/CountryHelper.ts b/src/CountryHelper.ts index ecb7a40..1d43ca5 100644 --- a/src/CountryHelper.ts +++ b/src/CountryHelper.ts @@ -5,6 +5,7 @@ import type { IRegion, ITimezone, ISearchOptions, + INearestCityOptions, } from './shared/interface.js'; import { getAllCountries, @@ -16,12 +17,15 @@ import { getCountriesByContinent, getCountriesByLanguage, getCountriesByRegion, + isValidCountryCode, + isValidPhoneCode, } from './modules/country.js'; import { getAllStates, getStatesOfCountry, getStateByCodeAndCountry, sortStates, + isValidStateCode, } from './modules/state.js'; import { getAllCities, @@ -44,6 +48,11 @@ import { searchStates, searchCities, } from './modules/search.js'; +import { + haversineDistanceKm, + getNearestCountry, + getNearestCity, +} from './modules/geo.js'; export class CountryHelper { // ─── Country flag ───────────────────────────────────────────────────────── @@ -94,6 +103,20 @@ export class CountryHelper { return getCountriesByRegion(regionName); } + // ─── Validation methods ─────────────────────────────────────────────────── + + public isValidCountryCode(isoCode: string): boolean { + return isValidCountryCode(isoCode); + } + + public isValidPhoneCode(phoneCode: string): boolean { + return isValidPhoneCode(phoneCode); + } + + public isValidStateCode(stateCode: string, countryCode: string): boolean { + return isValidStateCode(stateCode, countryCode); + } + // ─── Region methods ─────────────────────────────────────────────────────── public getRegionsByCountryShortCode(countryShortCode: string): IRegion[] { @@ -177,6 +200,24 @@ export class CountryHelper { public searchCities(query: string, options?: ISearchOptions): ICity[] { return searchCities(query, options); } + + // ─── Geo methods ────────────────────────────────────────────────────────── + + public haversineDistanceKm(lat1: number, lon1: number, lat2: number, lon2: number): number { + return haversineDistanceKm(lat1, lon1, lat2, lon2); + } + + public getNearestCountry(latitude: number, longitude: number): ICountry | undefined { + return getNearestCountry(latitude, longitude); + } + + public getNearestCity( + latitude: number, + longitude: number, + options?: INearestCityOptions, + ): ICity | undefined { + return getNearestCity(latitude, longitude, options); + } } export default CountryHelper; diff --git a/src/index.ts b/src/index.ts index cc80b09..fc5f009 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ export { default as City } from './modules/city.js'; export { default as Region } from './modules/regions.js'; export { default as Timezone } from './modules/timezone.js'; export { default as Search } from './modules/search.js'; +export { default as Geo } from './modules/geo.js'; export type { ICountry, @@ -13,4 +14,5 @@ export type { IRegion, ITimezone, ISearchOptions, + INearestCityOptions, } from './shared/interface.js'; diff --git a/src/modules/country.ts b/src/modules/country.ts index b919565..a850fcb 100644 --- a/src/modules/country.ts +++ b/src/modules/country.ts @@ -126,6 +126,16 @@ export function getCountriesByRegion(regionName: string): ICountry[] { return byRegionName!.get(regionName.toLowerCase()) ?? []; } +// ─── validation ────────────────────────────────────────────────────────────── + +export function isValidCountryCode(isoCode: string): boolean { + return getCountryByCode(isoCode) !== undefined; +} + +export function isValidPhoneCode(phoneCode: string): boolean { + return getCountryByPhoneCode(phoneCode) !== undefined; +} + // ─── module export (Country.getAllCountries() style) ────────────────────────── export default { @@ -138,4 +148,6 @@ export default { getCountriesByContinent, getCountriesByLanguage, getCountriesByRegion, + isValidCountryCode, + isValidPhoneCode, }; diff --git a/src/modules/geo.ts b/src/modules/geo.ts new file mode 100644 index 0000000..3a78521 --- /dev/null +++ b/src/modules/geo.ts @@ -0,0 +1,92 @@ +import type { ICountry, ICity, INearestCityOptions } from '../shared/interface.js'; +import { getAllCountries } from './country.js'; +import { getAllCities, getCitiesOfCountry, getCitiesOfState } from './city.js'; + +const EARTH_RADIUS_KM = 6371; + +function toRadians(degrees: number): number { + return (degrees * Math.PI) / 180; +} + +function parseCoordinate(value: string | null | undefined): number | undefined { + if (value === null || value === undefined || value === '') return undefined; + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : undefined; +} + +// ─── module functions ───────────────────────────────────────────────────────── + +export function haversineDistanceKm( + lat1: number, + lon1: number, + lat2: number, + lon2: number, +): number { + const dLat = toRadians(lat2 - lat1); + const dLon = toRadians(lon2 - lon1); + const a = + Math.sin(dLat / 2) ** 2 + + Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) * Math.sin(dLon / 2) ** 2; + return EARTH_RADIUS_KM * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); +} + +export function getNearestCountry(latitude: number, longitude: number): ICountry | undefined { + let nearest: ICountry | undefined; + let nearestDistance = Infinity; + + for (const country of getAllCountries()) { + const lat = parseCoordinate(country.latitude); + const lon = parseCoordinate(country.longitude); + if (lat === undefined || lon === undefined) continue; + + const distance = haversineDistanceKm(latitude, longitude, lat, lon); + if (distance < nearestDistance) { + nearestDistance = distance; + nearest = country; + } + } + + return nearest; +} + +// Scans ~148k cities if no countryCode/stateCode is given — pass one to bound +// the search to an already-indexed subset instead (see city.ts's Maps). +export function getNearestCity( + latitude: number, + longitude: number, + options: INearestCityOptions = {}, +): ICity | undefined { + const { countryCode, stateCode } = options; + + const candidates = + countryCode && stateCode + ? getCitiesOfState(countryCode, stateCode) + : countryCode + ? getCitiesOfCountry(countryCode) + : getAllCities(); + + let nearest: ICity | undefined; + let nearestDistance = Infinity; + + for (const city of candidates) { + const lat = parseCoordinate(city.latitude); + const lon = parseCoordinate(city.longitude); + if (lat === undefined || lon === undefined) continue; + + const distance = haversineDistanceKm(latitude, longitude, lat, lon); + if (distance < nearestDistance) { + nearestDistance = distance; + nearest = city; + } + } + + return nearest; +} + +// ─── module export (Geo.getNearestCity() style) ──────────────────────────────── + +export default { + haversineDistanceKm, + getNearestCountry, + getNearestCity, +}; diff --git a/src/modules/state.ts b/src/modules/state.ts index d6d0520..7d4c525 100644 --- a/src/modules/state.ts +++ b/src/modules/state.ts @@ -58,6 +58,12 @@ export function sortStates(states: IState[] = getAllStates()): IState[] { return [...states].sort(compareByName); } +// ─── validation ────────────────────────────────────────────────────────────── + +export function isValidStateCode(stateCode: string, countryCode: string): boolean { + return getStateByCodeAndCountry(stateCode, countryCode) !== undefined; +} + // ─── module export (State.getStatesOfCountry() style) ──────────────────────── export default { @@ -65,4 +71,5 @@ export default { getStatesOfCountry, getStateByCodeAndCountry, sortStates, + isValidStateCode, }; diff --git a/src/shared/interface.ts b/src/shared/interface.ts index f231fb8..b363504 100644 --- a/src/shared/interface.ts +++ b/src/shared/interface.ts @@ -63,3 +63,10 @@ export interface ISearchOptions { /** Cap the number of results returned (after ranking). Unlimited if omitted. */ limit?: number; } + +export interface INearestCityOptions { + /** Restrict the search to one country instead of scanning all ~148k cities. */ + countryCode?: string; + /** Restrict further to one state — requires countryCode to also be set. */ + stateCode?: string; +} From ff249403cf156b3b46e77c6b72d0f7fb27074a7d Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 08:46:18 +0000 Subject: [PATCH 07/11] Add city pagination, CLI export, and i18n names support --- .changeset/add-city-pagination.md | 5 + .changeset/add-cli-export.md | 5 + .changeset/add-i18n-names.md | 5 + README.md | 25 + ROADMAP.md | 15 +- Test/city.test.ts | 53 + Test/cli.test.ts | 174 ++ Test/country.test.ts | 31 + Test/fixtures.ts | 1 + Test/helper.test.ts | 11 + data/countries.json | 3043 +++++++++++++++++++++++++---- package.json | 3 + scripts/fetch-wikidata.cjs | 52 +- src/CountryHelper.ts | 14 + src/bin.ts | 4 + src/cli.ts | 178 ++ src/index.ts | 2 + src/modules/city.ts | 30 +- src/modules/country.ts | 12 + src/shared/interface.ts | 24 + tsup.config.ts | 2 +- 21 files changed, 3278 insertions(+), 411 deletions(-) create mode 100644 .changeset/add-city-pagination.md create mode 100644 .changeset/add-cli-export.md create mode 100644 .changeset/add-i18n-names.md create mode 100644 Test/cli.test.ts create mode 100644 src/bin.ts create mode 100644 src/cli.ts diff --git a/.changeset/add-city-pagination.md b/.changeset/add-city-pagination.md new file mode 100644 index 0000000..7abdd9e --- /dev/null +++ b/.changeset/add-city-pagination.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add `City.getCitiesPaginated({ countryCode?, stateCode?, page?, pageSize? })` returning `{ items, page, pageSize, total, hasMore }` — a paged slice for browser/memory-constrained environments instead of loading all ~148k cities at once. Pass `countryCode`/`stateCode` to scope before paginating. Also available as a `CountryHelper` instance method. diff --git a/.changeset/add-cli-export.md b/.changeset/add-cli-export.md new file mode 100644 index 0000000..98cefe9 --- /dev/null +++ b/.changeset/add-cli-export.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add a `countrydata-export` CLI (via `npx countrydata-export`) that dumps countries/states/cities as CSV or SQL for non-JS consumers: `--entity `, `--format csv|sql`, `--out `. No new dependency — pure Node built-ins. diff --git a/.changeset/add-i18n-names.md b/.changeset/add-i18n-names.md new file mode 100644 index 0000000..d2bd099 --- /dev/null +++ b/.changeset/add-i18n-names.md @@ -0,0 +1,5 @@ +--- +"countrydata.js": minor +--- + +Add translated country names: `Country.getCountryName(code, locale?)` falls back to the English `countryName` when the locale is omitted or has no translation. Adds a new optional `translations?: Record` field to `ICountry` covering `ar`, `zh`, `fr`, `ru`, `es`, `pt`, `de` (99-100% coverage across all 250 countries), sourced from Wikidata (CC0) via `scripts/fetch-wikidata.cjs`. Also available as a `CountryHelper` instance method. diff --git a/README.md b/README.md index d4f8cd2..bcb34f2 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ const englishSpeaking = Country.getCountriesByLanguage('English'); const owner = Country.getCountriesByRegion('Bavaria'); // → [Germany] const validCode = Country.isValidCountryCode('GH'); // true const validPhone = Country.isValidPhoneCode('+233'); // true +const nameInFrench = Country.getCountryName('GH', 'fr'); // 'Ghana' // States / Provinces const states = State.getStatesOfCountry('US'); @@ -54,6 +55,7 @@ const validState = State.isValidStateCode('CA', 'US'); // true // Cities (lazily loaded on first call) const cities = City.getCitiesOfState('US', 'CA'); const ghCities = City.getCitiesOfCountry('GH'); +const page = City.getCitiesPaginated({ countryCode: 'US', page: 1, pageSize: 25 }); // Regions const regions = Region.getRegionsByCountryCode('US'); @@ -120,6 +122,9 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getCountriesByRegion(name)` | `ICountry[]` | Country containing a named admin region (e.g. `"Bavaria"`) | | `isValidCountryCode(code)` | `boolean` | Whether an ISO code exists in the dataset | | `isValidPhoneCode(code)` | `boolean` | Whether a phone code exists in the dataset | +| `getCountryName(code, locale?)` | `string \| undefined` | Translated name; falls back to English if the locale is missing | + +Supported `locale` codes: `ar`, `zh`, `fr`, `ru`, `es`, `pt`, `de` (plus `en`/omitted → `countryName`). Coverage is 99–100% across all 250 countries for every locale. Raw translations are also available on `country.translations` (`Record`). ### `State` @@ -141,6 +146,7 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getCitiesOfCountry(countryCode)` | `ICity[]` | Cities for one country | | `getCitiesOfState(countryCode, stateCode)` | `ICity[]` | Cities for one state | | `sortCities(cities?)` | `ICity[]` | Sorted by country → state → name | +| `getCitiesPaginated(options?)` | `{ items, page, pageSize, total, hasMore }` | Paged slice; pass `countryCode`/`stateCode` to scope before paginating | ### `Region` @@ -227,6 +233,7 @@ interface ICountry { tld?: string[]; unMember?: boolean; independent?: boolean; + translations?: Record; getStates?(): IState[]; getCities?(): ICity[]; } @@ -324,6 +331,24 @@ app.listen(3000); See the [Sample](https://github.com/Clifftech123/CountryData.js/tree/main/Sample) folder for more complete examples. +## CLI + +For non-JS consumers, `countrydata-export` dumps any of the three datasets as CSV or SQL: + +```bash +npx countrydata-export --entity countries --format csv --out countries.csv +npx countrydata-export --entity cities --format sql > cities.sql +npx countrydata-export --help +``` + +| Flag | Required | Description | +| ----------- | -------- | ----------------------------------------------- | +| `--entity` | yes | `countries`, `states`, or `cities` | +| `--format` | no | `csv` (default) or `sql` | +| `--out` | no | Output file path (defaults to stdout) | + +Nested fields (`timezones`, `regions`) are dropped from the export since they don't fit a flat row; array fields (`languages`, `borders`, `tld`) are joined with `|`. + ## Contributing Contributions are welcome! The data lives in three flat JSON files in the `data/` folder: diff --git a/ROADMAP.md b/ROADMAP.md index c674cb7..b6cdcf1 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -64,19 +64,24 @@ both `dr5hn` and `mledoze` are ODbL (share-alike) and REST Countries dropped its ## Phase plan -- [ ] **Phase 1** — Capital, population, area, currency name/symbol, native/official name, +- [x] **Phase 1** — Capital, population, area, currency name/symbol, native/official name, demonym, continent, languages, borders, TLD, unMember/independent. New optional `ICountry` fields + `scripts/fetch-wikidata.cjs` build-time fetch (SPARQL query against `query.wikidata.org`, CC0, no key needed) merged with a hardcoded ISO 4217 currency - name/symbol table. + name/symbol table (computed at load time, not persisted, to avoid duplicating it across + every country record). - [x] **Phase 2** — `searchCountries()` / `searchStates()` / `searchCities()` fuzzy search. - [x] **Phase 3** — Cross-entity filters: `getCountriesByCurrency`, `getCountriesByRegion`, `getCountriesByLanguage`, `getCountriesByContinent`. Depends on Phase 1. - [x] **Phase 4** — Validation helpers: `isValidCountryCode`, `isValidPhoneCode`, `isValidStateCode`. - [x] **Phase 5** — Geo utilities: Haversine distance, `getNearestCountry`, `getNearestCity`. -- [ ] **Phase 6** — Pagination for the cities dataset (`getCitiesPaginated`). -- [ ] **Phase 7** (backlog, lower priority) — i18n locale names, slimmer browser/CDN bundle, - CLI data export. +- [x] **Phase 6** — Pagination for the cities dataset (`getCitiesPaginated`). +- **Phase 7** (backlog, lower priority): + - [x] CLI data export — `countrydata-export` (`src/cli.ts` + `src/bin.ts`), dumps + countries/states/cities as CSV or SQL via `npx countrydata-export --entity ... --format ...`. + - [x] i18n locale names — `Country.getCountryName(code, locale?)`, `ar`/`zh`/`fr`/`ru`/`es`/`pt`/`de` + via a new `translations` field on `ICountry`, sourced from Wikidata like Phase 1. + - [ ] Slimmer browser/CDN bundle Phases 2, 4, 5, 6 don't depend on Phase 1 or each other and can ship in any order. diff --git a/Test/city.test.ts b/Test/city.test.ts index 6cd69ca..a666488 100644 --- a/Test/city.test.ts +++ b/Test/city.test.ts @@ -104,3 +104,56 @@ describe('City.sortCities', () => { expect(cities[0]!.name).toBe('Brändö Village'); }); }); + +// ─── getCitiesPaginated ─────────────────────────────────────────────────────── + +describe('City.getCitiesPaginated', () => { + test('returns all cities on one page when pageSize exceeds total', () => { + const result = City.getCitiesPaginated(); + expect(result.items).toHaveLength(4); + expect(result.page).toBe(1); + expect(result.pageSize).toBe(50); + expect(result.total).toBe(4); + expect(result.hasMore).toBe(false); + }); + + test('paginates with a custom pageSize', () => { + const page1 = City.getCitiesPaginated({ pageSize: 2 }); + expect(page1.items).toHaveLength(2); + expect(page1.total).toBe(4); + expect(page1.hasMore).toBe(true); + + const page2 = City.getCitiesPaginated({ pageSize: 2, page: 2 }); + expect(page2.items).toHaveLength(2); + expect(page2.hasMore).toBe(false); + + const namesPage1 = page1.items.map((c) => c.name); + const namesPage2 = page2.items.map((c) => c.name); + expect(namesPage1).not.toEqual(namesPage2); + }); + + test('scopes to a country before paginating', () => { + const result = City.getCitiesPaginated({ countryCode: 'AX', pageSize: 10 }); + expect(result.items).toHaveLength(2); + expect(result.items.every((c) => c.countryCode === 'AX')).toBe(true); + expect(result.total).toBe(2); + }); + + test('scopes to a state within a country', () => { + const result = City.getCitiesPaginated({ countryCode: 'AX', stateCode: 'BR', pageSize: 10 }); + expect(result.items).toHaveLength(1); + expect(result.items[0]!.name).toBe('Brändö Village'); + }); + + test('clamps page numbers below 1', () => { + expect(City.getCitiesPaginated({ page: 0, pageSize: 2 }).page).toBe(1); + expect(City.getCitiesPaginated({ page: -5, pageSize: 2 }).page).toBe(1); + }); + + test('returns empty items for a page beyond the last', () => { + const result = City.getCitiesPaginated({ pageSize: 2, page: 10 }); + expect(result.items).toHaveLength(0); + expect(result.hasMore).toBe(false); + expect(result.total).toBe(4); + }); +}); diff --git a/Test/cli.test.ts b/Test/cli.test.ts new file mode 100644 index 0000000..4d8dcca --- /dev/null +++ b/Test/cli.test.ts @@ -0,0 +1,174 @@ +import { describe, test, expect } from 'vitest'; +import { + parseArgs, + csvEscape, + toCsv, + sqlEscape, + toSql, + flattenCountry, + flattenState, + flattenCity, +} from '../src/cli.js'; + +// ─── parseArgs ────────────────────────────────────────────────────────────── + +describe('parseArgs', () => { + test('parses --key value pairs', () => { + expect(parseArgs(['--entity', 'countries', '--format', 'csv'])).toEqual({ + entity: 'countries', + format: 'csv', + }); + }); + + test('treats a flag with no following value as boolean-ish "true"', () => { + expect(parseArgs(['--help'])).toEqual({ help: 'true' }); + }); + + test('does not consume the next flag as a value', () => { + expect(parseArgs(['--entity', '--format', 'csv'])).toEqual({ + entity: 'true', + format: 'csv', + }); + }); + + test('returns an empty object for no args', () => { + expect(parseArgs([])).toEqual({}); + }); +}); + +// ─── CSV ──────────────────────────────────────────────────────────────────── + +describe('csvEscape', () => { + test('leaves plain values untouched', () => { + expect(csvEscape('Ghana')).toBe('Ghana'); + expect(csvEscape(42)).toBe('42'); + }); + + test('quotes values containing commas', () => { + expect(csvEscape('Congo, Republic of the')).toBe('"Congo, Republic of the"'); + }); + + test('escapes embedded quotes by doubling them', () => { + expect(csvEscape('Côte d\'Ivoire "CIV"')).toBe('"Côte d\'Ivoire ""CIV"""'); + }); + + test('quotes values containing newlines', () => { + expect(csvEscape('line1\nline2')).toBe('"line1\nline2"'); + }); + + test('renders undefined/null as an empty string', () => { + expect(csvEscape(undefined)).toBe(''); + expect(csvEscape(null)).toBe(''); + }); +}); + +describe('toCsv', () => { + test('returns empty string for no rows', () => { + expect(toCsv([])).toBe(''); + }); + + test('renders a header row followed by data rows', () => { + const csv = toCsv([{ name: 'Ghana', code: 'GH' }, { name: 'Togo', code: 'TG' }]); + expect(csv).toBe('name,code\nGhana,GH\nTogo,TG\n'); + }); +}); + +// ─── SQL ──────────────────────────────────────────────────────────────────── + +describe('sqlEscape', () => { + test('quotes strings and escapes embedded quotes', () => { + expect(sqlEscape("O'Brien")).toBe("'O''Brien'"); + }); + + test('leaves numbers and booleans unquoted', () => { + expect(sqlEscape(42)).toBe('42'); + expect(sqlEscape(true)).toBe('true'); + }); + + test('renders undefined/null as SQL NULL', () => { + expect(sqlEscape(undefined)).toBe('NULL'); + expect(sqlEscape(null)).toBe('NULL'); + }); +}); + +describe('toSql', () => { + test('returns empty string for no rows', () => { + expect(toSql('countries', [])).toBe(''); + }); + + test('emits a CREATE TABLE followed by one INSERT per row', () => { + const sql = toSql('countries', [{ name: 'Ghana', code: 'GH' }]); + expect(sql).toContain('CREATE TABLE IF NOT EXISTS `countries`'); + expect(sql).toContain('`name` TEXT'); + expect(sql).toContain('`code` TEXT'); + expect(sql).toContain("INSERT INTO `countries` (`name`, `code`) VALUES ('Ghana', 'GH');"); + }); +}); + +// ─── flatteners ───────────────────────────────────────────────────────────── + +describe('flattenCountry', () => { + test('joins array fields with "|" and drops functions/nested arrays', () => { + const flat = flattenCountry({ + countryName: 'Ghana', + countryShortCode: 'GH', + phoneCode: '+233', + countryFlag: '🇬🇭', + regions: [{ name: 'Ashanti', shortCode: 'AH' }], + languages: ['English'], + borders: ['TG', 'BF', 'CI'], + tld: ['.gh'], + getStates: () => [], + getCities: () => [], + } as never); + + expect(flat.languages).toBe('English'); + expect(flat.borders).toBe('TG|BF|CI'); + expect(flat.tld).toBe('.gh'); + expect(flat).not.toHaveProperty('regions'); + expect(flat).not.toHaveProperty('timezones'); + expect(flat).not.toHaveProperty('getStates'); + expect(flat).not.toHaveProperty('getCities'); + }); +}); + +describe('flattenState', () => { + test('passes through scalar fields, drops getCities', () => { + const flat = flattenState({ + name: 'Ashanti Region', + isoCode: 'AH', + countryCode: 'GH', + latitude: '6.74700', + longitude: '-1.52000', + getCities: () => [], + } as never); + + expect(flat).toEqual({ + name: 'Ashanti Region', + isoCode: 'AH', + countryCode: 'GH', + latitude: '6.74700', + longitude: '-1.52000', + }); + }); +}); + +describe('flattenCity', () => { + test('passes through all fields as-is', () => { + const flat = flattenCity({ + name: 'Kumasi', + countryCode: 'GH', + stateCode: 'AH', + latitude: '6.68848', + longitude: '-1.62443', + }); + + expect(flat).toEqual({ + name: 'Kumasi', + countryCode: 'GH', + stateCode: 'AH', + latitude: '6.68848', + longitude: '-1.62443', + }); + }); +}); diff --git a/Test/country.test.ts b/Test/country.test.ts index faca62e..b12837b 100644 --- a/Test/country.test.ts +++ b/Test/country.test.ts @@ -248,6 +248,37 @@ describe('Country.isValidPhoneCode', () => { }); }); +// ─── i18n ─────────────────────────────────────────────────────────────────── + +describe('Country.getCountryName', () => { + test('returns the translated name for a known locale', () => { + expect(Country.getCountryName('GH', 'fr')).toBe('Ghana'); + expect(Country.getCountryName('GH', 'ar')).toBe('غانا'); + }); + + test('returns countryName when locale is omitted', () => { + expect(Country.getCountryName('GH')).toBe('Ghana'); + }); + + test('returns countryName when locale is "en"', () => { + expect(Country.getCountryName('GH', 'en')).toBe('Ghana'); + }); + + test('falls back to countryName when the locale has no translation', () => { + // COUNTRY_GHANA fixture has fr/es/de/ar but not, say, "ja" + expect(Country.getCountryName('GH', 'ja')).toBe('Ghana'); + }); + + test('falls back to countryName when the country has no translations at all', () => { + // COUNTRY_ALAND fixture has no translations field + expect(Country.getCountryName('AX', 'fr')).toBe('Åland Islands'); + }); + + test('returns undefined for an unknown country code', () => { + expect(Country.getCountryName('XX', 'fr')).toBeUndefined(); + }); +}); + // ─── method chaining ────────────────────────────────────────────────────────── describe('Country object method chaining', () => { diff --git a/Test/fixtures.ts b/Test/fixtures.ts index 1ccc71f..5f5da3a 100644 --- a/Test/fixtures.ts +++ b/Test/fixtures.ts @@ -75,6 +75,7 @@ export const COUNTRY_GHANA = { tld: ['.gh'], unMember: true, independent: true, + translations: { fr: 'Ghana', es: 'Ghana', de: 'Ghana', ar: 'غانا' }, }; export const COUNTRY_GERMANY = { diff --git a/Test/helper.test.ts b/Test/helper.test.ts index fd3299a..d74c206 100644 --- a/Test/helper.test.ts +++ b/Test/helper.test.ts @@ -213,3 +213,14 @@ describe('CountryHelper — search methods', () => { expect(helper.searchCities('a', { limit: 1 })).toHaveLength(1); }); }); + +// ─── Pagination ─────────────────────────────────────────────────────────────── + +describe('CountryHelper — pagination methods', () => { + test('getCitiesPaginated returns a paginated result', () => { + const result = helper.getCitiesPaginated({ pageSize: 2 }); + expect(result.items).toHaveLength(2); + expect(result.total).toBe(4); + expect(result.hasMore).toBe(true); + }); +}); diff --git a/data/countries.json b/data/countries.json index fa6b1da..098d0d7 100644 --- a/data/countries.json +++ b/data/countries.json @@ -161,29 +161,38 @@ "nativeName": "افغانستان", "demonym": "Afghan", "languages": [ - "Uzbek", - "Balochi", - "Pamir", - "Turkmen", "Arabic", "Pashto", - "Pashayi", + "Turkmen", "Nuristani", - "Dari" + "Dari", + "Pashayi", + "Pamir", + "Uzbek", + "Balochi" ], "tld": [ ".af" ], "borders": [ - "CN", - "UZ", "IR", "PK", "TJ", - "TM" + "TM", + "CN", + "UZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أفغانستان", + "zh": "阿富汗", + "fr": "Afghanistan", + "ru": "Афганистан", + "es": "Afganistán", + "pt": "Afeganistão", + "de": "Afghanistan" + } }, { "countryName": "Åland Islands", @@ -278,7 +287,16 @@ ".ax" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر أولاند", + "zh": "奥兰", + "fr": "Åland", + "ru": "Аландские острова", + "es": "Åland", + "pt": "Åland", + "de": "Åland" + } }, { "countryName": "Albania", @@ -366,7 +384,16 @@ "XK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ألبانيا", + "zh": "阿爾巴尼亞", + "fr": "Albanie", + "ru": "Албания", + "es": "Albania", + "pt": "Albânia", + "de": "Albanien" + } }, { "countryName": "Algeria", @@ -585,8 +612,8 @@ "nativeName": "الجزائر", "demonym": "Algerian", "languages": [ - "Standard Algerian Berber", - "Arabic" + "Arabic", + "Standard Algerian Berber" ], "tld": [ ".dz" @@ -603,7 +630,16 @@ "EH" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الجزائر", + "zh": "阿爾及利亞", + "fr": "Algérie", + "ru": "Алжир", + "es": "Argelia", + "pt": "Argélia", + "de": "Algerien" + } }, { "countryName": "American Samoa", @@ -662,7 +698,16 @@ ".as" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "ساموا الأمريكية", + "zh": "美屬薩摩亞", + "fr": "Samoa américaines", + "ru": "Американское Самоа", + "es": "Samoa Americana", + "pt": "Samoa Americana", + "de": "Amerikanisch-Samoa" + } }, { "countryName": "Andorra", @@ -727,7 +772,16 @@ "FR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أندورا", + "zh": "安道尔", + "fr": "Andorre", + "ru": "Андорра", + "es": "Andorra", + "pt": "Andorra", + "de": "Andorra" + } }, { "countryName": "Angola", @@ -840,7 +894,16 @@ "NA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أنغولا", + "zh": "安哥拉", + "fr": "Angola", + "ru": "Ангола", + "es": "Angola", + "pt": "Angola", + "de": "Angola" + } }, { "countryName": "Anguilla", @@ -962,7 +1025,16 @@ ".ai" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "أنغويلا", + "zh": "安圭拉", + "fr": "Anguilla", + "ru": "Ангилья", + "es": "Anguila", + "pt": "Anguila", + "de": "Anguilla" + } }, { "countryName": "Antarctica", @@ -1056,7 +1128,16 @@ ".aq" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "القارة القطبية الجنوبية", + "zh": "南極洲", + "fr": "Antarctique", + "ru": "Антарктида", + "es": "Antártida", + "pt": "Antártida", + "de": "Antarktika" + } }, { "countryName": "Antigua and Barbuda", @@ -1221,7 +1302,16 @@ "GB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أنتيغوا وباربودا", + "zh": "安提瓜和巴布达", + "fr": "Antigua-et-Barbuda", + "ru": "Антигуа и Барбуда", + "es": "Antigua y Barbuda", + "pt": "Antígua e Barbuda", + "de": "Antigua und Barbuda" + } }, { "countryName": "Argentina", @@ -1435,7 +1525,16 @@ "BO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الأرجنتين", + "zh": "阿根廷", + "fr": "Argentine", + "ru": "Аргентина", + "es": "Argentina", + "pt": "Argentina", + "de": "Argentinien" + } }, { "countryName": "Armenia", @@ -1520,7 +1619,16 @@ "IR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أرمينيا", + "zh": "亞美尼亞", + "fr": "Arménie", + "ru": "Армения", + "es": "Armenia", + "pt": "Arménia", + "de": "Armenien" + } }, { "countryName": "Aruba", @@ -1557,7 +1665,16 @@ ".aw" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "أروبا", + "zh": "阿魯巴", + "fr": "Aruba", + "ru": "Аруба", + "es": "Aruba", + "pt": "Aruba", + "de": "Aruba" + } }, { "countryName": "Australia", @@ -1698,25 +1815,34 @@ "area": 7692024, "continent": "Oceania", "nativeName": "Australia", - "demonym": "Australians", + "demonym": "Australian", "languages": [ - "Auslan", - "Australian English" + "Australian English", + "Auslan" ], "tld": [ ".au" ], "borders": [ + "PG", + "NC", "ID", "TL", "NZ", "SB", - "VU", - "PG", - "NC" + "VU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أستراليا", + "zh": "澳大利亚", + "fr": "Australie", + "ru": "Австралия", + "es": "Australia", + "pt": "Austrália", + "de": "Australien" + } }, { "countryName": "Austria", @@ -1796,7 +1922,16 @@ "LI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "النمسا", + "zh": "奧地利", + "fr": "Autriche", + "ru": "Австрия", + "es": "Austria", + "pt": "Áustria", + "de": "Österreich" + } }, { "countryName": "Azerbaijan", @@ -2088,7 +2223,7 @@ "population": 10180770, "area": 86600, "continent": "Asia", - "nativeName": "Azərbaycan", + "nativeName": "Azərbaycan Respublikası", "demonym": "Azeri", "languages": [ "Azerbaijani Sign Language", @@ -2098,14 +2233,23 @@ ".az" ], "borders": [ - "TR", - "RU", "GE", "AM", - "IR" + "IR", + "TR", + "RU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أذربيجان", + "zh": "阿塞拜疆", + "fr": "Azerbaïdjan", + "ru": "Азербайджан", + "es": "Azerbaiyán", + "pt": "Azerbaijão", + "de": "Aserbaidschan" + } }, { "countryName": "Bahamas", @@ -2280,7 +2424,16 @@ "TC" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جزر البهاما", + "zh": "巴哈馬", + "fr": "Bahamas", + "ru": "Багамские Острова", + "es": "Bahamas", + "pt": "Bahamas", + "de": "Bahamas" + } }, { "countryName": "Bahrain", @@ -2337,7 +2490,16 @@ "SA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "البحرين", + "zh": "巴林", + "fr": "Bahreïn", + "ru": "Бахрейн", + "es": "Baréin", + "pt": "Bahrein", + "de": "Bahrain" + } }, { "countryName": "Bangladesh", @@ -2407,7 +2569,16 @@ "MM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بنغلاديش", + "zh": "孟加拉國", + "fr": "Bangladesh", + "ru": "Бангладеш", + "es": "Bangladés", + "pt": "Bangladesh", + "de": "Bangladesch" + } }, { "countryName": "Barbados", @@ -2486,7 +2657,16 @@ ".bb" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "باربادوس", + "zh": "巴巴多斯", + "fr": "Barbade", + "ru": "Барбадос", + "es": "Barbados", + "pt": "Barbados", + "de": "Barbados" + } }, { "countryName": "Belarus", @@ -2556,7 +2736,16 @@ "UA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بيلاروس", + "zh": "白俄羅斯", + "fr": "Biélorussie", + "ru": "Беларусь", + "es": "Bielorrusia", + "pt": "Bielorrússia", + "de": "Belarus" + } }, { "countryName": "Belgium", @@ -2592,23 +2781,32 @@ "population": 11825551, "area": 30688, "continent": "Europe", - "nativeName": "Königreich Belgien", + "nativeName": "Royaume de Belgique", "demonym": "Belgian", "languages": [ + "Dutch", "French", - "German", - "Dutch" + "German" ], "tld": [ ".be" ], "borders": [ + "DE", "LU", - "FR", - "DE" + "FR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بلجيكا", + "zh": "比利時", + "fr": "Belgique", + "ru": "Бельгия", + "es": "Bélgica", + "pt": "Bélgica", + "de": "Belgien" + } }, { "countryName": "Belize", @@ -2670,7 +2868,16 @@ "GT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بليز", + "zh": "伯利兹", + "fr": "Belize", + "ru": "Белиз", + "es": "Belice", + "pt": "Belize", + "de": "Belize" + } }, { "countryName": "Benin", @@ -2757,7 +2964,16 @@ "NG" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بنين", + "zh": "貝南", + "fr": "Bénin", + "ru": "Бенин", + "es": "Benín", + "pt": "Benim", + "de": "Benin" + } }, { "countryName": "Bermuda", @@ -2835,7 +3051,16 @@ ".bm" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "برمودا", + "zh": "百慕大", + "fr": "Bermudes", + "ru": "Бермудские Острова", + "es": "Bermudas", + "pt": "Bermudas", + "de": "Bermuda" + } }, { "countryName": "Bhutan", @@ -2952,7 +3177,16 @@ "IN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بوتان", + "zh": "不丹", + "fr": "Bhoutan", + "ru": "Бутан", + "es": "Bután", + "pt": "Butão", + "de": "Bhutan" + } }, { "countryName": "Bolivia", @@ -3016,9 +3250,9 @@ "nativeName": "Wuliwya Suyu", "demonym": "Bolivian", "languages": [ + "Aymara", "Spanish", "Quechua", - "Aymara", "Guarani" ], "tld": [ @@ -3032,7 +3266,16 @@ "PY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بوليفيا", + "zh": "玻利維亞", + "fr": "Bolivie", + "ru": "Боливия", + "es": "Bolivia", + "pt": "Bolívia", + "de": "Bolivien" + } }, { "countryName": "Bonaire, Sint Eustatius and Saba", @@ -3069,16 +3312,25 @@ "continent": "North America", "nativeName": "Caribisch Nederland", "languages": [ - "English", "Dutch", + "English", "Papiamento" ], "tld": [ - ".bq", - ".nl" + ".nl", + ".bq" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "الجزر الكاريبية الهولندية", + "zh": "荷蘭加勒比區", + "fr": "Pays-Bas caribéens", + "ru": "Бонайре, Синт-Эстатиус и Саба", + "es": "Caribe neerlandés", + "pt": "Países Baixos Caribenhos", + "de": "Karibische Niederlande" + } }, { "countryName": "Bosnia and Herzegovina", @@ -3119,8 +3371,8 @@ "demonym": "Bosnian", "languages": [ "Croatian", - "Serbian", - "Bosnian" + "Bosnian", + "Serbian" ], "tld": [ ".ba" @@ -3131,7 +3383,16 @@ "RS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "البوسنة والهرسك", + "zh": "波斯尼亚和黑塞哥维那", + "fr": "Bosnie-Herzégovine", + "ru": "Босния и Герцеговина", + "es": "Bosnia y Herzegovina", + "pt": "Bósnia e Herzegovina", + "de": "Bosnien und Herzegowina" + } }, { "countryName": "Botswana", @@ -3207,7 +3468,16 @@ "NA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بوتسوانا", + "zh": "波札那", + "fr": "Botswana", + "ru": "Ботсвана", + "es": "Botsuana", + "pt": "Botsuana", + "de": "Botswana" + } }, { "countryName": "Bouvet Island", @@ -3238,7 +3508,16 @@ ".bv" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزيرة بوفيه", + "zh": "布韦岛", + "fr": "île Bouvet", + "ru": "Остров Буве", + "es": "Isla Bouvet", + "pt": "Ilha Bouvet", + "de": "Bouvetinsel" + } }, { "countryName": "Brazil", @@ -3476,7 +3755,7 @@ "area": 8515767, "continent": "South America", "nativeName": "República Federativa do Brasil", - "demonym": "Brazilians", + "demonym": "Brazilian", "languages": [ "Portuguese" ], @@ -3497,7 +3776,16 @@ "GF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "البرازيل", + "zh": "巴西", + "fr": "Brésil", + "ru": "Бразилия", + "es": "Brasil", + "pt": "Brasil", + "de": "Brasilien" + } }, { "countryName": "British Indian Ocean Territory", @@ -3535,7 +3823,16 @@ ".io" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "إقليم المحيط الهندي البريطاني", + "zh": "英屬印度洋領地", + "fr": "Territoire britannique de l’océan Indien", + "ru": "Британская территория в Индийском океане", + "es": "Territorio Británico del Océano Índico", + "pt": "Território Britânico do Oceano Índico", + "de": "Britisches Territorium im Indischen Ozean" + } }, { "countryName": "Brunei Darussalam", @@ -3587,7 +3884,16 @@ "MY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بروناي", + "zh": "汶莱", + "fr": "Brunei", + "ru": "Бруней", + "es": "Brunéi", + "pt": "Brunei", + "de": "Brunei" + } }, { "countryName": "Bulgaria", @@ -3741,7 +4047,16 @@ "RS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بلغاريا", + "zh": "保加利亚", + "fr": "Bulgarie", + "ru": "Болгария", + "es": "Bulgaria", + "pt": "Bulgária", + "de": "Bulgarien" + } }, { "countryName": "Burkina Faso", @@ -3949,9 +4264,9 @@ "nativeName": "Burkina Faso", "demonym": "Burkinabe", "languages": [ + "Dioula", "Bissa", - "Mooré", - "Dioula" + "Mooré" ], "tld": [ ".bf" @@ -3965,7 +4280,16 @@ "NE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بوركينا فاسو", + "zh": "布吉納法索", + "fr": "Burkina Faso", + "ru": "Буркина-Фасо", + "es": "Burkina Faso", + "pt": "Burquina Fasso", + "de": "Burkina Faso" + } }, { "countryName": "Burundi", @@ -4061,9 +4385,9 @@ "nativeName": "Uburundi", "demonym": "Burundian", "languages": [ - "Kirundi", "French", - "English" + "English", + "Kirundi" ], "tld": [ ".bi" @@ -4074,7 +4398,16 @@ "RW" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بوروندي", + "zh": "蒲隆地", + "fr": "Burundi", + "ru": "Бурунди", + "es": "Burundi", + "pt": "Burundi", + "de": "Burundi" + } }, { "countryName": "Cambodia", @@ -4213,7 +4546,16 @@ "VN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كمبوديا", + "zh": "柬埔寨", + "fr": "Cambodge", + "ru": "Камбоджа", + "es": "Camboya", + "pt": "Camboja", + "de": "Kambodscha" + } }, { "countryName": "Cameroon", @@ -4296,7 +4638,16 @@ "NG" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الكاميرون", + "zh": "喀麦隆", + "fr": "Cameroun", + "ru": "Камерун", + "es": "Camerún", + "pt": "Camarões", + "de": "Kamerun" + } }, { "countryName": "Canada", @@ -4575,7 +4926,16 @@ "US" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كندا", + "zh": "加拿大", + "fr": "Canada", + "ru": "Канада", + "es": "Canadá", + "pt": "Canadá", + "de": "Kanada" + } }, { "countryName": "Cape Verde", @@ -4685,7 +5045,16 @@ ".cv" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الرأس الأخضر", + "zh": "佛得角", + "fr": "Cap-Vert", + "ru": "Кабо-Верде", + "es": "Cabo Verde", + "pt": "Cabo Verde", + "de": "Kap Verde" + } }, { "countryName": "Cayman Islands", @@ -4742,7 +5111,16 @@ ".ky" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر كايمان", + "zh": "開曼群島", + "fr": "îles Caïmans", + "ru": "Каймановы Острова", + "es": "Islas Caimán", + "pt": "Ilhas Cayman", + "de": "Cayman Islands" + } }, { "countryName": "Central African Republic", @@ -4853,7 +5231,16 @@ "CM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جمهورية إفريقيا الوسطى", + "zh": "中非共和國", + "fr": "République centrafricaine", + "ru": "Центральноафриканская Республика", + "es": "República Centroafricana", + "pt": "República Centro-Africana", + "de": "Zentralafrikanische Republik" + } }, { "countryName": "Chad", @@ -4984,7 +5371,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تشاد", + "zh": "乍得", + "fr": "Tchad", + "ru": "Чад", + "es": "Chad", + "pt": "Chade", + "de": "Tschad" + } }, { "countryName": "Chile", @@ -5105,7 +5501,16 @@ "BO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تشيلي", + "zh": "智利", + "fr": "Chili", + "ru": "Чили", + "es": "Chile", + "pt": "Chile", + "de": "Chile" + } }, { "countryName": "China", @@ -5298,7 +5703,16 @@ "BT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الصين", + "zh": "中华人民共和国", + "fr": "République populaire de Chine", + "ru": "Китай", + "es": "República Popular China", + "pt": "China", + "de": "Volksrepublik China" + } }, { "countryName": "Christmas Island", @@ -5335,7 +5749,16 @@ ".cx" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزيرة عيد الميلاد", + "zh": "聖誕島", + "fr": "île Christmas", + "ru": "Остров Рождества", + "es": "Isla de Navidad", + "pt": "Ilha Christmas", + "de": "Weihnachtsinsel" + } }, { "countryName": "Cocos (Keeling) Islands", @@ -5391,7 +5814,16 @@ ".cc" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر كوكوس", + "zh": "科科斯(基林)群島", + "fr": "îles Cocos", + "ru": "Кокосовые острова", + "es": "islas Cocos", + "pt": "Ilhas Cocos", + "de": "Kokosinseln" + } }, { "countryName": "Colombia", @@ -5565,7 +5997,16 @@ "NI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كولومبيا", + "zh": "哥伦比亚", + "fr": "Colombie", + "ru": "Колумбия", + "es": "Colombia", + "pt": "Colômbia", + "de": "Kolumbien" + } }, { "countryName": "Comoros", @@ -5620,7 +6061,16 @@ "SC" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جزر القمر", + "zh": "葛摩", + "fr": "Comores", + "ru": "Коморы", + "es": "Comoras", + "pt": "Comores", + "de": "Komoren" + } }, { "countryName": "Congo, Republic of the (Brazzaville)", @@ -5709,7 +6159,16 @@ "CM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جمهورية الكونغو", + "zh": "剛果共和國", + "fr": "République du Congo", + "ru": "Республика Конго", + "es": "Congo", + "pt": "República do Congo", + "de": "Republik Kongo" + } }, { "countryName": "Congo, the Democratic Republic of the (Kinshasa)", @@ -5806,7 +6265,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جمهورية الكونغو الديمقراطية", + "zh": "刚果民主共和国", + "fr": "République démocratique du Congo", + "ru": "Демократическая Республика Конго", + "es": "República Democrática del Congo", + "pt": "República Democrática do Congo", + "de": "Demokratische Republik Kongo" + } }, { "countryName": "Cook Islands", @@ -5877,7 +6345,16 @@ ".ck" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر كوك", + "zh": "库克群岛", + "fr": "Îles Cook", + "ru": "Острова Кука", + "es": "Islas Cook", + "pt": "Ilhas Cook", + "de": "Cookinseln" + } }, { "countryName": "Costa Rica", @@ -5943,7 +6420,16 @@ "NI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كوستاريكا", + "zh": "哥斯达黎加", + "fr": "Costa Rica", + "ru": "Коста-Рика", + "es": "Costa Rica", + "pt": "Costa Rica", + "de": "Costa Rica" + } }, { "countryName": "Côte d'Ivoire, Republic of", @@ -6060,7 +6546,16 @@ "LR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ساحل العاج", + "zh": "科特迪瓦", + "fr": "Côte d'Ivoire", + "ru": "Кот-д’Ивуар", + "es": "Costa de Marfil", + "pt": "Costa do Marfim", + "de": "Elfenbeinküste" + } }, { "countryName": "Croatia", @@ -6184,7 +6679,16 @@ "RS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كرواتيا", + "zh": "克羅地亞", + "fr": "Croatie", + "ru": "Хорватия", + "es": "Croacia", + "pt": "Croácia", + "de": "Kroatien" + } }, { "countryName": "Cuba", @@ -6286,7 +6790,16 @@ "GB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كوبا", + "zh": "古巴", + "fr": "Cuba", + "ru": "Куба", + "es": "Cuba", + "pt": "Cuba", + "de": "Kuba" + } }, { "countryName": "Curaçao", @@ -6326,7 +6839,16 @@ ".cw" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "كوراساو", + "zh": "库拉索", + "fr": "Curaçao", + "ru": "Кюрасао", + "es": "Curazao", + "pt": "Curaçau", + "de": "Curaçao" + } }, { "countryName": "Cyprus", @@ -6397,7 +6919,16 @@ "IL" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "قبرص", + "zh": "塞浦路斯", + "fr": "Chypre", + "ru": "Кипр", + "es": "Chipre", + "pt": "Chipre", + "de": "Zypern" + } }, { "countryName": "Czech Republic", @@ -6493,7 +7024,16 @@ "SK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جمهورية التشيك", + "zh": "捷克", + "fr": "Tchéquie", + "ru": "Чехия", + "es": "República Checa", + "pt": "Chéquia", + "de": "Tschechien" + } }, { "countryName": "Denmark", @@ -6591,7 +7131,16 @@ "DE" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "الدنمارك", + "zh": "丹麥", + "fr": "Danemark", + "ru": "Дания", + "es": "Dinamarca", + "pt": "Dinamarca", + "de": "Dänemark" + } }, { "countryName": "Djibouti", @@ -6650,7 +7199,16 @@ "SO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جيبوتي", + "zh": "吉布提", + "fr": "Djibouti", + "ru": "Джибути", + "es": "Yibuti", + "pt": "Djibouti", + "de": "Dschibuti" + } }, { "countryName": "Dominica", @@ -6727,7 +7285,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "دومينيكا", + "zh": "多米尼克", + "fr": "Dominique", + "ru": "Доминика", + "es": "Dominica", + "pt": "Dominica", + "de": "Dominica" + } }, { "countryName": "Dominican Republic", @@ -6802,7 +7369,16 @@ "TC" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جمهورية الدومينيكان", + "zh": "多明尼加", + "fr": "République dominicaine", + "ru": "Доминиканская Республика", + "es": "República Dominicana", + "pt": "República Dominicana", + "de": "Dominikanische Republik" + } }, { "countryName": "Ecuador", @@ -6933,8 +7509,8 @@ "demonym": "Ecuadoran", "languages": [ "Spanish", - "Shuar", - "Northern Quichua" + "Northern Quichua", + "Shuar" ], "tld": [ ".ec" @@ -6944,7 +7520,16 @@ "CO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الإكوادور", + "zh": "厄瓜多尔", + "fr": "Équateur", + "ru": "Эквадор", + "es": "Ecuador", + "pt": "Equador", + "de": "Ecuador" + } }, { "countryName": "Egypt", @@ -7100,7 +7685,16 @@ "PS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مصر", + "zh": "埃及", + "fr": "Égypte", + "ru": "Египет", + "es": "Egipto", + "pt": "Egito", + "de": "Ägypten" + } }, { "countryName": "El Salvador", @@ -7193,7 +7787,16 @@ "HN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "السلفادور", + "zh": "薩爾瓦多", + "fr": "Salvador", + "ru": "Сальвадор", + "es": "El Salvador", + "pt": "El Salvador", + "de": "El Salvador" + } }, { "countryName": "Equatorial Guinea", @@ -7261,7 +7864,16 @@ "ST" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غينيا الاستوائية", + "zh": "赤道几内亚", + "fr": "Guinée équatoriale", + "ru": "Экваториальная Гвинея", + "es": "Guinea Ecuatorial", + "pt": "Guiné Equatorial", + "de": "Äquatorialguinea" + } }, { "countryName": "Eritrea", @@ -7325,7 +7937,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إرتريا", + "zh": "厄立特里亞", + "fr": "Érythrée", + "ru": "Эритрея", + "es": "Eritrea", + "pt": "Eritreia", + "de": "Eritrea" + } }, { "countryName": "Estonia", @@ -7422,7 +8043,16 @@ "LV" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إستونيا", + "zh": "愛沙尼亞", + "fr": "Estonie", + "ru": "Эстония", + "es": "Estonia", + "pt": "Estónia", + "de": "Estland" + } }, { "countryName": "Ethiopia", @@ -7507,7 +8137,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إثيوبيا", + "zh": "埃塞俄比亚", + "fr": "Éthiopie", + "ru": "Эфиопия", + "es": "Etiopía", + "pt": "Etiópia", + "de": "Äthiopien" + } }, { "countryName": "Falkland Islands (Islas Malvinas)", @@ -7541,7 +8180,16 @@ ".fk" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر فوكلاند", + "zh": "福克蘭群島", + "fr": "îles Malouines", + "ru": "Фолклендские острова", + "es": "Islas Malvinas", + "pt": "Ilhas Malvinas", + "de": "Falklandinseln" + } }, { "countryName": "Faroe Islands", @@ -7604,7 +8252,16 @@ "IS" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر فارو", + "zh": "法罗群岛", + "fr": "îles Féroé", + "ru": "Фарерские острова", + "es": "Islas Feroe", + "pt": "Ilhas Feroe", + "de": "Färöer" + } }, { "countryName": "Fiji", @@ -7703,7 +8360,16 @@ "SB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "فيجي", + "zh": "斐濟", + "fr": "Fidji", + "ru": "Фиджи", + "es": "Fiyi", + "pt": "Fiji", + "de": "Fidschi" + } }, { "countryName": "Finland", @@ -7766,7 +8432,16 @@ "RU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "فنلندا", + "zh": "芬蘭", + "fr": "Finlande", + "ru": "Финляндия", + "es": "Finlandia", + "pt": "Finlândia", + "de": "Finnland" + } }, { "countryName": "France", @@ -7916,7 +8591,16 @@ "NL" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "فرنسا", + "zh": "法國", + "fr": "France", + "ru": "Франция", + "es": "Francia", + "pt": "França", + "de": "Frankreich" + } }, { "countryName": "French Guiana", @@ -7957,7 +8641,16 @@ "SR" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "غويانا الفرنسية", + "zh": "法屬圭亞那", + "fr": "Guyane", + "ru": "Французская Гвиана", + "es": "Guayana Francesa", + "pt": "Guiana Francesa", + "de": "Französisch-Guayana" + } }, { "countryName": "French Polynesia", @@ -8019,7 +8712,16 @@ ".pf" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "بولنيزيا الفرنسية", + "zh": "法屬玻里尼西亞", + "fr": "Polynésie française", + "ru": "Французская Полинезия", + "es": "Polinesia Francesa", + "pt": "Polinésia Francesa", + "de": "Französisch-Polynesien" + } }, { "countryName": "French Southern and Antarctic Lands", @@ -8064,7 +8766,16 @@ ".tf" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "أراض فرنسية جنوبية وأنتارتيكية", + "zh": "法属南部和南极领地", + "fr": "Terres australes et antarctiques françaises", + "ru": "Французские Южные и Антарктические территории", + "es": "Tierras Australes y Antárticas Francesas", + "pt": "Terras Austrais e Antárticas Francesas", + "de": "Französische Süd- und Antarktisgebiete" + } }, { "countryName": "Gabon", @@ -8140,7 +8851,16 @@ "ST" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الغابون", + "zh": "加蓬", + "fr": "Gabon", + "ru": "Габон", + "es": "Gabón", + "pt": "Gabão", + "de": "Gabun" + } }, { "countryName": "Gambia, The", @@ -8201,7 +8921,16 @@ "SN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غامبيا", + "zh": "岡比亞", + "fr": "Gambie", + "ru": "Гамбия", + "es": "Gambia", + "pt": "Gâmbia", + "de": "Gambia" + } }, { "countryName": "Georgia", @@ -8289,7 +9018,16 @@ "AM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جورجيا", + "zh": "格鲁吉亚", + "fr": "Géorgie", + "ru": "Грузия", + "es": "Georgia", + "pt": "Geórgia", + "de": "Georgien" + } }, { "countryName": "Germany", @@ -8403,7 +9141,16 @@ "CZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ألمانيا", + "zh": "德國", + "fr": "Allemagne", + "ru": "Германия", + "es": "Alemania", + "pt": "Alemanha", + "de": "Deutschland" + } }, { "countryName": "Ghana", @@ -8499,7 +9246,16 @@ "CI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غانا", + "zh": "迦納", + "fr": "Ghana", + "ru": "Гана", + "es": "Ghana", + "pt": "Gana", + "de": "Ghana" + } }, { "countryName": "Gibraltar", @@ -8539,7 +9295,16 @@ "ES" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جبل طارق", + "zh": "直布羅陀", + "fr": "Gibraltar", + "ru": "Гибралтар", + "es": "Gibraltar", + "pt": "Gibraltar", + "de": "Gibraltar" + } }, { "countryName": "Greece", @@ -8636,7 +9401,16 @@ "AL" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "اليونان", + "zh": "希腊", + "fr": "Grèce", + "ru": "Греция", + "es": "Grecia", + "pt": "Grécia", + "de": "Griechenland" + } }, { "countryName": "Greenland", @@ -8711,7 +9485,16 @@ "IS" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "غرينلاند", + "zh": "格陵兰", + "fr": "Groenland", + "ru": "Гренландия", + "es": "Groenlandia", + "pt": "Gronelândia", + "de": "Grönland" + } }, { "countryName": "Grenada", @@ -8777,7 +9560,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غرنادة", + "zh": "格瑞那達", + "fr": "Grenade", + "ru": "Гренада", + "es": "Granada", + "pt": "Granada", + "de": "Grenada" + } }, { "countryName": "Guadeloupe", @@ -8810,7 +9602,16 @@ ".gp" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "غوادلوب", + "zh": "瓜德羅普", + "fr": "Guadeloupe", + "ru": "Гваделупа", + "es": "Guadalupe", + "pt": "Guadalupe", + "de": "Guadeloupe" + } }, { "countryName": "Guam", @@ -8852,7 +9653,16 @@ "MP" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "غوام", + "zh": "關島", + "fr": "Guam", + "ru": "Гуам", + "es": "Guam", + "pt": "Guam", + "de": "Guam" + } }, { "countryName": "Guatemala", @@ -8979,7 +9789,16 @@ "SV" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غواتيمالا", + "zh": "危地马拉", + "fr": "Guatemala", + "ru": "Гватемала", + "es": "Guatemala", + "pt": "Guatemala", + "de": "Guatemala" + } }, { "countryName": "Guernsey", @@ -9042,7 +9861,16 @@ ".gg" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "غيرنزي", + "zh": "根西", + "fr": "Guernesey", + "ru": "Гернси", + "es": "Guernsey", + "pt": "Guernsey", + "de": "Guernsey" + } }, { "countryName": "Guinea", @@ -9116,7 +9944,16 @@ "SL" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غينيا", + "zh": "几内亚", + "fr": "Guinée", + "ru": "Гвинея", + "es": "Guinea", + "pt": "Guiné", + "de": "Guinea" + } }, { "countryName": "Guinea-Bissau", @@ -9189,7 +10026,16 @@ "SN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غينيا بيساو", + "zh": "畿內亞比紹", + "fr": "Guinée-Bissau", + "ru": "Гвинея-Бисау", + "es": "Guinea-Bisáu", + "pt": "Guiné-Bissau", + "de": "Guinea-Bissau" + } }, { "countryName": "Guyana", @@ -9268,7 +10114,16 @@ "SR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "غيانا", + "zh": "圭亚那", + "fr": "Guyana", + "ru": "Гайана", + "es": "Guyana", + "pt": "Guiana", + "de": "Guyana" + } }, { "countryName": "Haiti", @@ -9347,7 +10202,16 @@ "TC" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "هايتي", + "zh": "海地", + "fr": "Haïti", + "ru": "Гаити", + "es": "Haití", + "pt": "Haiti", + "de": "Haiti" + } }, { "countryName": "Heard Island and McDonald Islands", @@ -9381,7 +10245,16 @@ ".hm" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزيرة هيرد وجزر ماكدونالد", + "zh": "赫德島和麥克唐納群島", + "fr": "îles Heard-et-MacDonald", + "ru": "Остров Херд и острова Макдональд", + "es": "Islas Heard y McDonald", + "pt": "Ilha Heard e Ilhas McDonald", + "de": "Heard und McDonaldinseln" + } }, { "countryName": "Holy See (Vatican City)", @@ -9422,7 +10295,16 @@ "IT" ], "unMember": false, - "independent": true + "independent": true, + "translations": { + "ar": "الفاتيكان", + "zh": "梵蒂岡城國", + "fr": "Vatican", + "ru": "Ватикан", + "es": "Ciudad del Vaticano", + "pt": "Vaticano", + "de": "Vatikanstadt" + } }, { "countryName": "Honduras", @@ -9532,7 +10414,16 @@ "NI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "هندوراس", + "zh": "洪都拉斯", + "fr": "Honduras", + "ru": "Гондурас", + "es": "Honduras", + "pt": "Honduras", + "de": "Honduras" + } }, { "countryName": "Hong Kong", @@ -9569,7 +10460,16 @@ ".hk" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "هونغ كونغ", + "zh": "香港", + "fr": "Hong Kong", + "ru": "Гонконг", + "es": "Hong Kong", + "pt": "Hong Kong", + "de": "Hongkong" + } }, { "countryName": "Hungary", @@ -9783,7 +10683,16 @@ "RS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "المجر", + "zh": "匈牙利", + "fr": "Hongrie", + "ru": "Венгрия", + "es": "Hungría", + "pt": "Hungria", + "de": "Ungarn" + } }, { "countryName": "Iceland", @@ -9851,7 +10760,16 @@ "FO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "آيسلندا", + "zh": "冰島", + "fr": "Islande", + "ru": "Исландия", + "es": "Islandia", + "pt": "Islândia", + "de": "Island" + } }, { "countryName": "India", @@ -10023,21 +10941,21 @@ "nativeName": "भारत", "demonym": "Indian", "languages": [ - "English", - "Hindi" + "Hindi", + "English" ], "tld": [ - ".भारत", - ".بھارت", - ".ભારત", - ".ভারত", - ".ভাৰত", ".భారత్", ".இந்தியா", ".ਭਾਰਤ", + ".भारत", + ".بھارت", + ".ভাৰত", ".ಭಾರತ", ".ഭാരതം", ".ଭାରତ", + ".ભારત", + ".ভারত", ".in" ], "borders": [ @@ -10052,7 +10970,16 @@ "BT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الهند", + "zh": "印度", + "fr": "Inde", + "ru": "Индия", + "es": "India", + "pt": "Índia", + "de": "Indien" + } }, { "countryName": "Indonesia", @@ -10250,7 +11177,16 @@ "PH" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إندونيسيا", + "zh": "印度尼西亚", + "fr": "Indonésie", + "ru": "Индонезия", + "es": "Indonesia", + "pt": "Indonésia", + "de": "Indonesien" + } }, { "countryName": "Iran, Islamic Republic of", @@ -10422,7 +11358,16 @@ "AF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إيران", + "zh": "伊朗", + "fr": "Iran", + "ru": "Иран", + "es": "Irán", + "pt": "Irão", + "de": "Iran" + } }, { "countryName": "Iraq", @@ -10522,22 +11467,31 @@ "nativeName": "Iraq", "demonym": "Iraqi", "languages": [ - "Kurdish", - "Arabic" + "Arabic", + "Kurdish" ], "tld": [ ".iq" ], "borders": [ - "KW", - "SA", - "SY", "TR", "IR", - "JO" + "JO", + "KW", + "SA", + "SY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "العراق", + "zh": "伊拉克", + "fr": "Irak", + "ru": "Ирак", + "es": "Irak", + "pt": "Iraque", + "de": "Irak" + } }, { "countryName": "Ireland", @@ -10679,7 +11633,16 @@ "GB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جمهورية أيرلندا", + "zh": "愛爾蘭共和國", + "fr": "Irlande", + "ru": "Ирландия", + "es": "Irlanda", + "pt": "República da Irlanda", + "de": "Irland" + } }, { "countryName": "Isle of Man", @@ -10717,7 +11680,16 @@ ".im" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزيرة مان", + "zh": "马恩岛", + "fr": "Île de Man", + "ru": "Остров Мэн", + "es": "Isla de Man", + "pt": "Ilha de Man", + "de": "Isle of Man" + } }, { "countryName": "Israel", @@ -10781,7 +11753,16 @@ "SY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إسرائيل", + "zh": "以色列", + "fr": "Israël", + "ru": "Израиль", + "es": "Israel", + "pt": "Israel", + "de": "Israel" + } }, { "countryName": "Italy", @@ -10903,7 +11884,16 @@ "SM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إيطاليا", + "zh": "意大利", + "fr": "Italie", + "ru": "Италия", + "es": "Italia", + "pt": "Itália", + "de": "Italien" + } }, { "countryName": "Jamaica", @@ -10997,7 +11987,16 @@ "GB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جامايكا", + "zh": "牙買加", + "fr": "Jamaïque", + "ru": "Ямайка", + "es": "Jamaica", + "pt": "Jamaica", + "de": "Jamaika" + } }, { "countryName": "Japan", @@ -11226,7 +12225,16 @@ "PH" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "اليابان", + "zh": "日本", + "fr": "Japon", + "ru": "Япония", + "es": "Japón", + "pt": "Japão", + "de": "Japan" + } }, { "countryName": "Jersey", @@ -11265,7 +12273,13 @@ ".je" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جيرزي", + "zh": "澤西", + "fr": "Jersey", + "ru": "Джерси" + } }, { "countryName": "Jordan", @@ -11354,7 +12368,16 @@ "PS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الأردن", + "zh": "約旦", + "fr": "Jordanie", + "ru": "Иордания", + "es": "Jordania", + "pt": "Jordânia", + "de": "Jordanien" + } }, { "countryName": "Kazakhstan", @@ -11482,7 +12505,7 @@ "capital": "Astana", "population": 20139914, "area": 2724900, - "continent": "Asia", + "continent": "Europe", "nativeName": "Қазақстан", "demonym": "Kazakhstani", "languages": [ @@ -11494,14 +12517,23 @@ ".kz" ], "borders": [ - "TM", "CN", "RU", "UZ", - "KG" + "KG", + "TM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كازاخستان", + "zh": "哈萨克斯坦", + "fr": "Kazakhstan", + "ru": "Казахстан", + "es": "Kazajistán", + "pt": "Cazaquistão", + "de": "Kasachstan" + } }, { "countryName": "Kenya", @@ -11732,7 +12764,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كينيا", + "zh": "肯尼亚", + "fr": "Kenya", + "ru": "Кения", + "es": "Kenia", + "pt": "Quénia", + "de": "Kenia" + } }, { "countryName": "Kiribati", @@ -11869,7 +12910,16 @@ "FR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كيريباتي", + "zh": "吉里巴斯", + "fr": "Kiribati", + "ru": "Кирибати", + "es": "Kiribati", + "pt": "Quiribáti", + "de": "Kiribati" + } }, { "countryName": "Korea, Democratic People's Republic of", @@ -11952,7 +13002,16 @@ "KR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كوريا الشمالية", + "zh": "朝鮮民主主義人民共和國", + "fr": "Corée du Nord", + "ru": "КНДР", + "es": "Corea del Norte", + "pt": "Coreia do Norte", + "de": "Nordkorea" + } }, { "countryName": "Korea, Republic of", @@ -12061,7 +13120,16 @@ "KP" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "كوريا الجنوبية", + "zh": "大韩民国", + "fr": "Corée du Sud", + "ru": "Республика Корея", + "es": "Corea del Sur", + "pt": "Coreia do Sul", + "de": "Südkorea" + } }, { "countryName": "Kosovo", @@ -12097,7 +13165,16 @@ "RS" ], "unMember": false, - "independent": true + "independent": true, + "translations": { + "ar": "كوسوفو", + "zh": "科索沃", + "fr": "Kosovo", + "ru": "Республика Косово", + "es": "Kosovo", + "pt": "Kosovo", + "de": "Kosovo" + } }, { "countryName": "Kuwait", @@ -12159,7 +13236,16 @@ "SA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الكويت", + "zh": "科威特", + "fr": "Koweït", + "ru": "Кувейт", + "es": "Kuwait", + "pt": "Kuwait", + "de": "Kuwait" + } }, { "countryName": "Kyrgyzstan", @@ -12230,7 +13316,16 @@ "TJ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "قرغيزستان", + "zh": "吉尔吉斯斯坦", + "fr": "Kirghizistan", + "ru": "Кыргызстан", + "es": "Kirguistán", + "pt": "Quirguistão", + "de": "Kirgisistan" + } }, { "countryName": "Laos", @@ -12338,7 +13433,16 @@ "VN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "لاوس", + "zh": "老撾", + "fr": "Laos", + "ru": "Лаос", + "es": "Laos", + "pt": "Laos", + "de": "Laos" + } }, { "countryName": "Latvia", @@ -12854,7 +13958,16 @@ "EE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "لاتفيا", + "zh": "拉脫維亞", + "fr": "Lettonie", + "ru": "Латвия", + "es": "Letonia", + "pt": "Letónia", + "de": "Lettland" + } }, { "countryName": "Lebanon", @@ -12924,7 +14037,16 @@ "SY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "لبنان", + "zh": "黎巴嫩", + "fr": "Liban", + "ru": "Ливан", + "es": "Líbano", + "pt": "Líbano", + "de": "Libanon" + } }, { "countryName": "Lesotho", @@ -13002,7 +14124,16 @@ "ZA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ليسوتو", + "zh": "莱索托", + "fr": "Lesotho", + "ru": "Лесото", + "es": "Lesoto", + "pt": "Lesoto", + "de": "Lesotho" + } }, { "countryName": "Liberia", @@ -13101,7 +14232,16 @@ "SL" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ليبيريا", + "zh": "利比里亞", + "fr": "Liberia", + "ru": "Либерия", + "es": "Liberia", + "pt": "Libéria", + "de": "Liberia" + } }, { "countryName": "Libya", @@ -13231,7 +14371,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ليبيا", + "zh": "利比亞", + "fr": "Libye", + "ru": "Ливия", + "es": "Libia", + "pt": "Líbia", + "de": "Libyen" + } }, { "countryName": "Liechtenstein", @@ -13312,7 +14461,16 @@ "AT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ليختنشتاين", + "zh": "列支敦斯登", + "fr": "Liechtenstein", + "ru": "Лихтенштейн", + "es": "Liechtenstein", + "pt": "Liechtenstein", + "de": "Liechtenstein" + } }, { "countryName": "Lithuania", @@ -13392,7 +14550,16 @@ "LV" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "لتوانيا", + "zh": "立陶宛", + "fr": "Lituanie", + "ru": "Литва", + "es": "Lituania", + "pt": "Lituânia", + "de": "Litauen" + } }, { "countryName": "Luxembourg", @@ -13481,7 +14648,16 @@ "DE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "لوكسمبورغ", + "zh": "卢森堡", + "fr": "Luxembourg", + "ru": "Люксембург", + "es": "Luxemburgo", + "pt": "Luxemburgo", + "de": "Luxemburg" + } }, { "countryName": "Macao", @@ -13517,7 +14693,16 @@ ".mo" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "ماكاو", + "zh": "澳門", + "fr": "Macao", + "ru": "Макао", + "es": "Macao", + "pt": "Macau", + "de": "Macau" + } }, { "countryName": "Macedonia, Republic of", @@ -13842,7 +15027,16 @@ "XK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مقدونيا الشمالية", + "zh": "北马其顿", + "fr": "Macédoine du Nord", + "ru": "Северная Македония", + "es": "Macedonia del Norte", + "pt": "Macedónia do Norte", + "de": "Nordmazedonien" + } }, { "countryName": "Madagascar", @@ -13906,7 +15100,16 @@ "SC" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مدغشقر", + "zh": "馬達加斯加", + "fr": "Madagascar", + "ru": "Мадагаскар", + "es": "Madagascar", + "pt": "Madagáscar", + "de": "Madagaskar" + } }, { "countryName": "Malawi", @@ -14050,12 +15253,21 @@ ".mw" ], "borders": [ - "MZ", "TZ", - "ZM" + "ZM", + "MZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ملاوي", + "zh": "馬拉威", + "fr": "Malawi", + "ru": "Малави", + "es": "Malaui", + "pt": "Malawi", + "de": "Malawi" + } }, { "countryName": "Malaysia", @@ -14166,7 +15378,16 @@ "PH" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ماليزيا", + "zh": "馬來西亞", + "fr": "Malaisie", + "ru": "Малайзия", + "es": "Malasia", + "pt": "Malásia", + "de": "Malaysia" + } }, { "countryName": "Maldives", @@ -14286,7 +15507,16 @@ "GB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "المالديف", + "zh": "馬爾代夫", + "fr": "Maldives", + "ru": "Мальдивы", + "es": "Maldivas", + "pt": "Maldivas", + "de": "Malediven" + } }, { "countryName": "Mali", @@ -14350,18 +15580,18 @@ "demonym": "Malian", "languages": [ "Bambara", - "Senufo", "Fula", + "Senufo", + "Soninke", + "Bobo", + "Tamasheq", "Bozo", + "Dogon", "Kassonke", "Hassaniya Arabic", "Songhay", - "Soninke", "Maninka", - "Minyanka", - "Dogon", - "Tamasheq", - "Bobo" + "Minyanka" ], "tld": [ ".ml" @@ -14376,7 +15606,16 @@ "SN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مالي", + "zh": "马里", + "fr": "Mali", + "ru": "Мали", + "es": "Mali", + "pt": "Mali", + "de": "Mali" + } }, { "countryName": "Malta", @@ -14685,7 +15924,16 @@ "IT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مالطا", + "zh": "馬耳他", + "fr": "Malte", + "ru": "Мальта", + "es": "Malta", + "pt": "Malta", + "de": "Malta" + } }, { "countryName": "Marshall Islands", @@ -14821,7 +16069,16 @@ "KI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جزر مارشال", + "zh": "馬紹爾群島", + "fr": "Îles Marshall", + "ru": "Маршалловы Острова", + "es": "Islas Marshall", + "pt": "Ilhas Marshall", + "de": "Marshallinseln" + } }, { "countryName": "Martinique", @@ -14853,7 +16110,16 @@ ".mq" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "مارتينيك", + "zh": "馬提尼克", + "fr": "Martinique", + "ru": "Мартиника", + "es": "Martinica", + "pt": "Martinica", + "de": "Martinique" + } }, { "countryName": "Mauritania", @@ -14952,7 +16218,16 @@ "ML" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "موريتانيا", + "zh": "毛里塔尼亞", + "fr": "Mauritanie", + "ru": "Мавритания", + "es": "Mauritania", + "pt": "Mauritânia", + "de": "Mauretanien" + } }, { "countryName": "Mauritius", @@ -15056,7 +16331,16 @@ "SC" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "موريشيوس", + "zh": "毛里求斯", + "fr": "Maurice", + "ru": "Маврикий", + "es": "Mauricio", + "pt": "Maurícia", + "de": "Mauritius" + } }, { "countryName": "Mayotte", @@ -15144,7 +16428,7 @@ "shortCode": "17" } ], - "capital": "Dzaoudzi", + "capital": "Mamoudzou", "population": 320901, "area": 374, "continent": "Africa", @@ -15161,7 +16445,16 @@ "MG" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "مايوت", + "zh": "马约特", + "fr": "Mayotte", + "ru": "Майотта", + "es": "Mayotte", + "pt": "Mayotte", + "de": "Mayotte" + } }, { "countryName": "Mexico", @@ -15400,7 +16693,16 @@ "GT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "المكسيك", + "zh": "墨西哥", + "fr": "Mexique", + "ru": "Мексика", + "es": "México", + "pt": "México", + "de": "Mexiko" + } }, { "countryName": "Micronesia, Federated States of", @@ -15468,7 +16770,16 @@ "PW" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ولايات ميكرونيسيا المتحدة", + "zh": "密克罗尼西亚联邦", + "fr": "États fédérés de Micronésie", + "ru": "Федеративные Штаты Микронезии", + "es": "Estados Federados de Micronesia", + "pt": "Micronésia", + "de": "Föderierte Staaten von Mikronesien" + } }, { "countryName": "Moldova", @@ -15653,7 +16964,16 @@ "RO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مولدوفا", + "zh": "摩爾多瓦", + "fr": "Moldavie", + "ru": "Молдова", + "es": "Moldavia", + "pt": "Moldávia", + "de": "Moldau" + } }, { "countryName": "Monaco", @@ -15757,7 +17077,16 @@ "FR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "موناكو", + "zh": "摩納哥", + "fr": "Monaco", + "ru": "Монако", + "es": "Mónaco", + "pt": "Mónaco", + "de": "Monaco" + } }, { "countryName": "Mongolia", @@ -15877,7 +17206,7 @@ "continent": "Asia", "officialName": "Mongolia", "nativeName": "Монгол Улс", - "demonym": "Mongol", + "demonym": "Mongolian", "languages": [ "Mongolian" ], @@ -15889,7 +17218,16 @@ "RU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "منغوليا", + "zh": "蒙古國", + "fr": "Mongolie", + "ru": "Монголия", + "es": "Mongolia", + "pt": "Mongólia", + "de": "Mongolei" + } }, { "countryName": "Montenegro", @@ -16021,7 +17359,16 @@ "XK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الجبل الأسود", + "zh": "蒙特內哥羅", + "fr": "Monténégro", + "ru": "Черногория", + "es": "Montenegro", + "pt": "Montenegro", + "de": "Montenegro" + } }, { "countryName": "Montserrat", @@ -16064,7 +17411,16 @@ ".ms" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "مونتسيرات", + "zh": "蒙塞拉特島", + "fr": "Montserrat", + "ru": "Монтсеррат", + "es": "Montserrat", + "pt": "Monserrate", + "de": "Montserrat" + } }, { "countryName": "Morocco", @@ -16164,7 +17520,16 @@ "EH" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "المغرب", + "zh": "摩洛哥", + "fr": "Maroc", + "ru": "Марокко", + "es": "Marruecos", + "pt": "Marrocos", + "de": "Marokko" + } }, { "countryName": "Mozambique", @@ -16250,7 +17615,16 @@ "SZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "موزمبيق", + "zh": "莫桑比克", + "fr": "Mozambique", + "ru": "Мозамбик", + "es": "Mozambique", + "pt": "Moçambique", + "de": "Mosambik" + } }, { "countryName": "Myanmar", @@ -16351,7 +17725,16 @@ "BD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ميانمار", + "zh": "緬甸", + "fr": "Birmanie", + "ru": "Мьянма", + "es": "Birmania", + "pt": "Myanmar", + "de": "Myanmar" + } }, { "countryName": "Namibia", @@ -16447,7 +17830,16 @@ "BW" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ناميبيا", + "zh": "纳米比亚", + "fr": "Namibie", + "ru": "Намибия", + "es": "Namibia", + "pt": "Namíbia", + "de": "Namibia" + } }, { "countryName": "Nauru", @@ -16538,7 +17930,16 @@ ".nr" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ناورو", + "zh": "瑙鲁", + "fr": "Nauru", + "ru": "Науру", + "es": "Nauru", + "pt": "Nauru", + "de": "Nauru" + } }, { "countryName": "Nepal", @@ -16631,7 +18032,16 @@ "IN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "نيبال", + "zh": "尼泊爾", + "fr": "Népal", + "ru": "Непал", + "es": "Nepal", + "pt": "Nepal", + "de": "Nepal" + } }, { "countryName": "Netherlands", @@ -16718,7 +18128,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "مملكة هولندا", + "zh": "荷兰王国", + "fr": "Royaume des Pays-Bas", + "ru": "Королевство Нидерландов", + "es": "Reino de los Países Bajos", + "pt": "Reino dos Países Baixos", + "de": "Königreich der Niederlande" + } }, { "countryName": "New Caledonia", @@ -16763,7 +18182,16 @@ "AU" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "كاليدونيا الجديدة", + "zh": "新喀里多尼亞", + "fr": "Nouvelle-Calédonie", + "ru": "Новая Каледония", + "es": "Nueva Caledonia", + "pt": "Nova Caledónia", + "de": "Neukaledonien" + } }, { "countryName": "New Zealand", @@ -16867,8 +18295,8 @@ "demonym": "New Zealander", "languages": [ "English", - "New Zealand Sign Language", - "Māori" + "Māori", + "New Zealand Sign Language" ], "tld": [ ".nz" @@ -16877,7 +18305,16 @@ "AU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "نيوزيلندا", + "zh": "新西兰", + "fr": "Nouvelle-Zélande", + "ru": "Новая Зеландия", + "es": "Nueva Zelanda", + "pt": "Nova Zelândia", + "de": "Neuseeland" + } }, { "countryName": "Nicaragua", @@ -16983,7 +18420,16 @@ "CR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "نيكاراغوا", + "zh": "尼加拉瓜", + "fr": "Nicaragua", + "ru": "Никарагуа", + "es": "Nicaragua", + "pt": "Nicarágua", + "de": "Nicaragua" + } }, { "countryName": "Niger", @@ -17057,7 +18503,16 @@ "NG" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "النيجر", + "zh": "尼日尔", + "fr": "Niger", + "ru": "Нигер", + "es": "Níger", + "pt": "Níger", + "de": "Niger" + } }, { "countryName": "Nigeria", @@ -17245,7 +18700,16 @@ "ST" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "نيجيريا", + "zh": "奈及利亞", + "fr": "Nigeria", + "ru": "Нигерия", + "es": "Nigeria", + "pt": "Nigéria", + "de": "Nigeria" + } }, { "countryName": "Niue", @@ -17283,7 +18747,16 @@ ".nu" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "نييوي", + "zh": "紐埃", + "fr": "Niue", + "ru": "Ниуэ", + "es": "Niue", + "pt": "Niue", + "de": "Niue" + } }, { "countryName": "Norfolk Island", @@ -17321,7 +18794,16 @@ ".nf" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزيرة نورفولك", + "zh": "诺福克岛", + "fr": "île Norfolk", + "ru": "Норфолк", + "es": "Isla Norfolk", + "pt": "Ilha Norfolk", + "de": "Norfolkinsel" + } }, { "countryName": "Northern Mariana Islands", @@ -17362,14 +18844,23 @@ "demonym": "Northern Marianan", "languages": [ "English", - "Chamorro", - "Carolinian" + "Carolinian", + "Chamorro" ], "tld": [ ".mp" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر ماريانا الشمالية", + "zh": "北马里亚纳群岛", + "fr": "îles Mariannes du Nord", + "ru": "Северные Марианские Острова", + "es": "Islas Marianas del Norte", + "pt": "Marianas Setentrionais", + "de": "Nördliche Marianen" + } }, { "countryName": "Norway", @@ -17481,8 +18972,8 @@ "demonym": "Norwegian", "languages": [ "Nynorsk", - "Norwegian", "Bokmål", + "Norwegian", "Sámi" ], "tld": [ @@ -17494,7 +18985,16 @@ "RU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "النرويج", + "zh": "挪威", + "fr": "Norvège", + "ru": "Норвегия", + "es": "Noruega", + "pt": "Noruega", + "de": "Norwegen" + } }, { "countryName": "Oman", @@ -17577,7 +19077,16 @@ "AE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سلطنة عمان", + "zh": "阿曼", + "fr": "Oman", + "ru": "Оман", + "es": "Omán", + "pt": "Omã", + "de": "Oman" + } }, { "countryName": "Pakistan", @@ -17633,23 +19142,32 @@ "population": 223773700, "area": 881913, "continent": "Asia", - "nativeName": "پاکستان", + "nativeName": "Pakistan", "demonym": "Pakistani", "languages": [ - "English", - "Urdu" + "Urdu", + "English" ], "tld": [ ".pk" ], "borders": [ + "CN", "IN", "IR", - "AF", - "CN" + "AF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "باكستان", + "zh": "巴基斯坦", + "fr": "Pakistan", + "ru": "Пакистан", + "es": "Pakistán", + "pt": "Paquistão", + "de": "Pakistan" + } }, { "countryName": "Palau", @@ -17754,7 +19272,16 @@ "ID" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بالاو", + "zh": "帛琉", + "fr": "Palaos", + "ru": "Палау", + "es": "Palaos", + "pt": "Palau", + "de": "Palau" + } }, { "countryName": "Palestine, State of", @@ -17863,7 +19390,16 @@ "JO" ], "unMember": false, - "independent": true + "independent": true, + "translations": { + "ar": "دولة فلسطين", + "zh": "巴勒斯坦", + "fr": "État de Palestine", + "ru": "Государство Палестина", + "es": "Palestina", + "pt": "Estado da Palestina", + "de": "Palästina" + } }, { "countryName": "Panama", @@ -17953,7 +19489,16 @@ "CR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بنما", + "zh": "巴拿馬", + "fr": "Panama", + "ru": "Панама", + "es": "Panamá", + "pt": "Panamá", + "de": "Panama" + } }, { "countryName": "Papua New Guinea", @@ -18091,7 +19636,16 @@ "FM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بابوا غينيا الجديدة", + "zh": "巴布亚新几内亚", + "fr": "Papouasie-Nouvelle-Guinée", + "ru": "Папуа — Новая Гвинея", + "es": "Papúa Nueva Guinea", + "pt": "Papua-Nova Guiné", + "de": "Papua-Neuguinea" + } }, { "countryName": "Paraguay", @@ -18198,7 +19752,16 @@ "BO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "باراغواي", + "zh": "巴拉圭", + "fr": "Paraguay", + "ru": "Парагвай", + "es": "Paraguay", + "pt": "Paraguai", + "de": "Paraguay" + } }, { "countryName": "Peru", @@ -18330,8 +19893,8 @@ "demonym": "Peruvian", "languages": [ "Spanish", - "Aymara", - "Quechua" + "Quechua", + "Aymara" ], "tld": [ ".pe" @@ -18344,7 +19907,16 @@ "BO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بيرو", + "zh": "秘鲁", + "fr": "Pérou", + "ru": "Перу", + "es": "Perú", + "pt": "Peru", + "de": "Peru" + } }, { "countryName": "Philippines", @@ -18690,7 +20262,7 @@ "continent": "Asia", "officialName": "Republic of the Philippines", "nativeName": "Philippines", - "demonym": "Filipina", + "demonym": "Philippine", "languages": [ "English", "Filipino", @@ -18700,15 +20272,24 @@ ".ph" ], "borders": [ + "JP", "CN", "ID", "PW", "MY", - "TW", - "JP" + "TW" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الفلبين", + "zh": "菲律賓", + "fr": "Philippines", + "ru": "Филиппины", + "es": "Filipinas", + "pt": "Filipinas", + "de": "Philippinen" + } }, { "countryName": "Pitcairn", @@ -18746,7 +20327,16 @@ ".pn" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر بيتكيرن", + "zh": "皮特凯恩群岛", + "fr": "îles Pitcairn", + "ru": "Острова Питкэрн", + "es": "Islas Pitcairn", + "pt": "Ilhas Pitcairn", + "de": "Pitcairninseln" + } }, { "countryName": "Poland", @@ -18852,7 +20442,16 @@ "SK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "بولندا", + "zh": "波蘭", + "fr": "Pologne", + "ru": "Польша", + "es": "Polonia", + "pt": "Polónia", + "de": "Polen" + } }, { "countryName": "Portugal", @@ -18982,7 +20581,16 @@ "ES" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "البرتغال", + "zh": "葡萄牙", + "fr": "Portugal", + "ru": "Португалия", + "es": "Portugal", + "pt": "Portugal", + "de": "Portugal" + } }, { "countryName": "Puerto Rico", @@ -19236,7 +20844,16 @@ ".pr" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "بورتوريكو", + "zh": "波多黎各", + "fr": "Porto Rico", + "ru": "Пуэрто-Рико", + "es": "Puerto Rico", + "pt": "Porto Rico", + "de": "Puerto Rico" + } }, { "countryName": "Qatar", @@ -19300,7 +20917,16 @@ "SA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "قطر", + "zh": "卡塔尔", + "fr": "Qatar", + "ru": "Катар", + "es": "Catar", + "pt": "Catar", + "de": "Katar" + } }, { "countryName": "Réunion", @@ -19335,7 +20961,16 @@ ".re" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "ريونيون", + "zh": "留尼汪", + "fr": "La Réunion", + "ru": "Реюньон", + "es": "Reunión", + "pt": "Reunião", + "de": "Réunion" + } }, { "countryName": "Romania", @@ -19539,7 +21174,16 @@ "RS" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "رومانيا", + "zh": "羅馬尼亞", + "fr": "Roumanie", + "ru": "Румыния", + "es": "Rumania", + "pt": "Roménia", + "de": "Rumänien" + } }, { "countryName": "Russian Federation", @@ -20069,7 +21713,7 @@ "capital": "Moscow", "population": 146119928, "area": 17075400, - "continent": "Asia", + "continent": "Europe", "nativeName": "Россия", "demonym": "Russian", "languages": [ @@ -20082,12 +21726,6 @@ ".ru" ], "borders": [ - "UA", - "AZ", - "GE", - "KZ", - "KP", - "MN", "JP", "NO", "US", @@ -20098,10 +21736,25 @@ "CN", "BY", "EE", - "LV" + "LV", + "UA", + "AZ", + "GE", + "KZ", + "KP", + "MN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "روسيا", + "zh": "俄罗斯", + "fr": "Russie", + "ru": "Россия", + "es": "Rusia", + "pt": "Rússia", + "de": "Russland" + } }, { "countryName": "Rwanda", @@ -20146,25 +21799,34 @@ "area": 26338, "continent": "Africa", "officialName": "Republic of Rwanda", - "nativeName": "Rwanda", + "nativeName": "Republic of Rwanda", "demonym": "Rwandese", "languages": [ - "Swahili", - "Kinyarwanda", "French", - "English" + "English", + "Swahili", + "Kinyarwanda" ], "tld": [ ".rw" ], "borders": [ - "UG", "TZ", "BI", - "CD" + "CD", + "UG" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "رواندا", + "zh": "卢旺达", + "fr": "Rwanda", + "ru": "Руанда", + "es": "Ruanda", + "pt": "Ruanda", + "de": "Ruanda" + } }, { "countryName": "Saint Barthélemy", @@ -20203,7 +21865,16 @@ ".bl" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "سان بارتيلمي", + "zh": "聖巴泰勒米", + "fr": "Saint-Barthélemy", + "ru": "Сен-Бартелеми", + "es": "San Bartolomé", + "pt": "São Bartolomeu", + "de": "Saint-Barthélemy" + } }, { "countryName": "Saint Helena, Ascension and Tristan da Cunha", @@ -20245,7 +21916,16 @@ "English" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "سانت هيلانة وأسينشين وتريستان دا كونا", + "zh": "圣赫勒拿、阿森松和特里斯坦-达库尼亚", + "fr": "Sainte-Hélène, Ascension et Tristan da Cunha", + "ru": "Острова Святой Елены, Вознесения и Тристан-да-Кунья", + "es": "Santa Elena, Ascensión y Tristán de Acuña", + "pt": "Santa Helena, Ascensão e Tristão da Cunha", + "de": "St. Helena, Ascension und Tristan da Cunha" + } }, { "countryName": "Saint Kitts and Nevis", @@ -20291,7 +21971,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سانت كيتس ونيفيس", + "zh": "聖克里斯多福及尼維斯", + "fr": "Saint-Christophe-et-Niévès", + "ru": "Сент-Китс и Невис", + "es": "San Cristóbal y Nieves", + "pt": "São Cristóvão e Neves", + "de": "St. Kitts und Nevis" + } }, { "countryName": "Saint Lucia", @@ -20368,7 +22057,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سانت لوسيا", + "zh": "圣卢西亚", + "fr": "Sainte-Lucie", + "ru": "Сент-Люсия", + "es": "Santa Lucía", + "pt": "Santa Lúcia", + "de": "St. Lucia" + } }, { "countryName": "Saint Martin", @@ -20407,7 +22105,16 @@ "SX" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "تجمع سان مارتين", + "zh": "法屬聖馬丁", + "fr": "Saint-Martin", + "ru": "Сен-Мартен", + "es": "San Martín", + "pt": "São Martinho", + "de": "Saint-Martin" + } }, { "countryName": "Saint Pierre and Miquelon", @@ -20449,7 +22156,16 @@ "CA" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "سان بيير وميكلون", + "zh": "圣皮埃尔和密克隆", + "fr": "Saint-Pierre-et-Miquelon", + "ru": "Сен-Пьер и Микелон", + "es": "San Pedro y Miquelón", + "pt": "Saint-Pierre e Miquelon", + "de": "Saint-Pierre und Miquelon" + } }, { "countryName": "Saint Vincent and the Grenadines", @@ -20510,7 +22226,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سانت فينسنت والغرينادين", + "zh": "圣文森特和格林纳丁斯", + "fr": "Saint-Vincent-et-les-Grenadines", + "ru": "Сент-Винсент и Гренадины", + "es": "San Vicente y las Granadinas", + "pt": "São Vicente e Granadinas", + "de": "St. Vincent und die Grenadinen" + } }, { "countryName": "Samoa", @@ -20592,7 +22317,16 @@ "US" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ساموا", + "zh": "萨摩亚", + "fr": "Samoa", + "ru": "Самоа", + "es": "Samoa", + "pt": "Samoa", + "de": "Samoa" + } }, { "countryName": "San Marino", @@ -20664,7 +22398,16 @@ "IT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سان مارينو", + "zh": "圣马力诺", + "fr": "Saint-Marin", + "ru": "Сан-Марино", + "es": "San Marino", + "pt": "San Marino", + "de": "San Marino" + } }, { "countryName": "Sao Tome and Principe", @@ -20710,7 +22453,16 @@ "NG" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ساو تومي وبرينسيب", + "zh": "圣多美和普林西比", + "fr": "Sao Tomé-et-Principe", + "ru": "Сан-Томе и Принсипи", + "es": "Santo Tomé y Príncipe", + "pt": "São Tomé e Príncipe", + "de": "São Tomé und Príncipe" + } }, { "countryName": "Saudi Arabia", @@ -20807,7 +22559,16 @@ "AE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "السعودية", + "zh": "沙特阿拉伯", + "fr": "Arabie saoudite", + "ru": "Саудовская Аравия", + "es": "Arabia Saudí", + "pt": "Arábia Saudita", + "de": "Saudi-Arabien" + } }, { "countryName": "Senegal", @@ -20890,23 +22651,32 @@ "nativeName": "Senegaal", "demonym": "Senegalese", "languages": [ - "French", + "Wolof", "Balanta", "Badyara", - "Wolof" + "French" ], "tld": [ ".sn" ], "borders": [ + "MR", "ML", "GM", "GN", - "GW", - "MR" + "GW" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "السنغال", + "zh": "塞内加尔", + "fr": "Sénégal", + "ru": "Сенегал", + "es": "Senegal", + "pt": "Senegal", + "de": "Senegal" + } }, { "countryName": "Serbia", @@ -21071,7 +22841,16 @@ "XK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "صربيا", + "zh": "塞爾維亞", + "fr": "Serbie", + "ru": "Сербия", + "es": "Serbia", + "pt": "Sérvia", + "de": "Serbien" + } }, { "countryName": "Seychelles", @@ -21214,7 +22993,16 @@ "MU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سيشل", + "zh": "塞舌尔", + "fr": "Seychelles", + "ru": "Сейшельские Острова", + "es": "Seychelles", + "pt": "Seychelles", + "de": "Seychellen" + } }, { "countryName": "Sierra Leone", @@ -21269,7 +23057,16 @@ "LR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سيراليون", + "zh": "塞拉利昂", + "fr": "Sierra Leone", + "ru": "Сьерра-Леоне", + "es": "Sierra Leona", + "pt": "Serra Leoa", + "de": "Sierra Leone" + } }, { "countryName": "Singapore", @@ -21330,7 +23127,16 @@ "MY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سنغافورة", + "zh": "新加坡", + "fr": "Singapour", + "ru": "Сингапур", + "es": "Singapur", + "pt": "Singapura", + "de": "Singapur" + } }, { "countryName": "Sint Maarten (Dutch part)", @@ -21372,7 +23178,16 @@ "MF" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "سينت مارتن", + "zh": "荷屬聖馬丁", + "fr": "Saint-Martin", + "ru": "Синт-Мартен", + "es": "San Martín", + "pt": "São Martinho", + "de": "Sint Maarten" + } }, { "countryName": "Slovakia", @@ -21444,7 +23259,16 @@ "CZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سلوفاكيا", + "zh": "斯洛伐克", + "fr": "Slovaquie", + "ru": "Словакия", + "es": "Eslovaquia", + "pt": "Eslováquia", + "de": "Slowakei" + } }, { "countryName": "Slovenia", @@ -22307,7 +24131,16 @@ "HR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سلوفينيا", + "zh": "斯洛文尼亞", + "fr": "Slovénie", + "ru": "Словения", + "es": "Eslovenia", + "pt": "Eslovénia", + "de": "Slowenien" + } }, { "countryName": "Solomon Islands", @@ -22370,7 +24203,7 @@ "capital": "Honiara", "population": 611343, "area": 28400, - "continent": "Oceania", + "continent": "Insular Oceania", "officialName": "Solomon Islands", "nativeName": "Solomon Islands", "demonym": "Solomon Islander", @@ -22388,7 +24221,16 @@ "FJ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جزر سليمان", + "zh": "所罗门群岛", + "fr": "Îles Salomon", + "ru": "Соломоновы Острова", + "es": "Islas Salomón", + "pt": "Ilhas Salomão", + "de": "Salomonen" + } }, { "countryName": "Somalia", @@ -22488,8 +24330,8 @@ "nativeName": "جمهورية الصومال الفدرالية", "demonym": "Somalian", "languages": [ - "Arabic", - "Somali" + "Somali", + "Arabic" ], "tld": [ ".so" @@ -22500,7 +24342,16 @@ "DJ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الصومال", + "zh": "索馬里", + "fr": "Somalie", + "ru": "Сомали", + "es": "Somalia", + "pt": "Somália", + "de": "Somalia" + } }, { "countryName": "South Africa", @@ -22556,7 +24407,7 @@ "shortCode": "WC" } ], - "capital": "Cape Town", + "capital": "Pretoria", "population": 62027503, "area": 1221037, "continent": "Africa", @@ -22565,17 +24416,17 @@ "demonym": "South African", "languages": [ "English", - "Zulu", "Xhosa", + "Zulu", "Afrikaans", "Swazi", "Northern Sotho", "Venda", - "Tswana", - "Southern Ndebele", "Tsonga", + "Tswana", "Sesotho", - "South African Sign Language" + "South African Sign Language", + "Southern Ndebele" ], "tld": [ ".za" @@ -22589,7 +24440,16 @@ "SZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جنوب إفريقيا", + "zh": "南非", + "fr": "Afrique du Sud", + "ru": "ЮАР", + "es": "Sudáfrica", + "pt": "África do Sul", + "de": "Südafrika" + } }, { "countryName": "South Georgia and South Sandwich Islands", @@ -22647,7 +24507,16 @@ ".gs" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جورجيا الجنوبية وجزر ساندويتش الجنوبية", + "zh": "南乔治亚和南桑威奇群岛", + "fr": "Géorgie du Sud-et-les Îles Sandwich du Sud", + "ru": "Южная Георгия и Южные Сандвичевы острова", + "es": "Islas Georgias del Sur y Sandwich del Sur", + "pt": "Ilhas Geórgia do Sul e Sandwich do Sul", + "de": "Südgeorgien und die Südlichen Sandwichinseln" + } }, { "countryName": "South Sudan", @@ -22729,7 +24598,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "جنوب السودان", + "zh": "南蘇丹", + "fr": "Soudan du Sud", + "ru": "Южный Судан", + "es": "Sudán del Sur", + "pt": "Sudão do Sul", + "de": "Südsudan" + } }, { "countryName": "Spain", @@ -22976,7 +24854,7 @@ "area": 505990, "continent": "Europe", "nativeName": "Reino de España", - "demonym": "Spaniard", + "demonym": "Spanish", "languages": [ "Spanish" ], @@ -22984,14 +24862,23 @@ ".es" ], "borders": [ - "PT", "FR", "AD", "MA", - "GI" + "GI", + "PT" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إسبانيا", + "zh": "西班牙", + "fr": "Espagne", + "ru": "Испания", + "es": "España", + "pt": "Espanha", + "de": "Spanien" + } }, { "countryName": "Sri Lanka", @@ -23065,7 +24952,16 @@ "IN" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سريلانكا", + "zh": "斯里蘭卡", + "fr": "Sri Lanka", + "ru": "Шри-Ланка", + "es": "Sri Lanka", + "pt": "Sri Lanka", + "de": "Sri Lanka" + } }, { "countryName": "Sudan", @@ -23184,7 +25080,16 @@ "UG" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "السودان", + "zh": "苏丹", + "fr": "Soudan", + "ru": "Судан", + "es": "Sudán", + "pt": "Sudão", + "de": "Sudan" + } }, { "countryName": "Suriname", @@ -23262,7 +25167,16 @@ "GY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سورينام", + "zh": "蘇利南", + "fr": "Suriname", + "ru": "Суринам", + "es": "Surinam", + "pt": "Suriname", + "de": "Suriname" + } }, { "countryName": "Svalbard And Jan Mayen Islands", @@ -23291,7 +25205,16 @@ ".sj" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "سفالبارد ويان ماين", + "zh": "斯瓦巴和扬马延", + "fr": "Svalbard et Jan Mayen", + "ru": "Шпицберген и Ян-Майен", + "es": "Svalbard y Jan Mayen", + "pt": "Svalbard e Jan Mayen", + "de": "Svalbard und Jan Mayen" + } }, { "countryName": "Swaziland", @@ -23327,7 +25250,7 @@ "shortCode": "SH" } ], - "capital": "Lobamba", + "capital": "Mbabane", "population": 1230506, "area": 17364, "continent": "Africa", @@ -23346,7 +25269,16 @@ "MZ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "إسواتيني", + "zh": "斯威士兰", + "fr": "Eswatini", + "ru": "Эсватини", + "es": "Suazilandia", + "pt": "Essuatíni", + "de": "Eswatini" + } }, { "countryName": "Sweden", @@ -23468,7 +25400,16 @@ "DK" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "السويد", + "zh": "瑞典", + "fr": "Suède", + "ru": "Швеция", + "es": "Suecia", + "pt": "Suécia", + "de": "Schweden" + } }, { "countryName": "Switzerland", @@ -23617,7 +25558,16 @@ "LI" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سويسرا", + "zh": "瑞士", + "fr": "Suisse", + "ru": "Швейцария", + "es": "Suiza", + "pt": "Suíça", + "de": "Schweiz" + } }, { "countryName": "Syrian Arab Republic", @@ -23698,7 +25648,7 @@ "area": 185180, "continent": "Asia", "officialName": "Syrian Arab Republic", - "nativeName": "الجمهورية العربية السورية", + "nativeName": "سوريا", "demonym": "Syrian", "languages": [ "Arabic" @@ -23707,14 +25657,23 @@ ".sy" ], "borders": [ - "TR", - "IQ", "IL", "JO", - "LB" + "LB", + "TR", + "IQ" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "سوريا", + "zh": "敘利亞", + "fr": "Syrie", + "ru": "Сирия", + "es": "Siria", + "pt": "Síria", + "de": "Syrien" + } }, { "countryName": "Taiwan", @@ -23818,31 +25777,31 @@ "population": 23262544, "area": 36193, "continent": "Asia", - "nativeName": "Tâi-oân", - "demonym": "taiwanese", + "nativeName": "Tiong-hoâ Bîn-kok", + "demonym": "Taiwan", "languages": [ "Taiwanese Sign Language", - "Amis", - "Taiwanese Hokkien", - "Kanakanavu", - "Rukai", - "Bunun", - "Tsou", - "Seediq", - "Puyuma", - "Taiwanese Hakka", - "Truku", "Matsu dialect", "Kinmen dialect", "Wuqiu dialect", + "Amis", + "Taiwanese Hokkien", "Standard Taiwanese Mandarin", "Paiwan", + "Taiwanese Hakka", + "Truku", "Yami", "Atayal", - "Saisiyat", - "Sakizaya", + "Rukai", + "Bunun", + "Kanakanavu", "Saaroa", - "Kavalan" + "Kavalan", + "Tsou", + "Seediq", + "Puyuma", + "Saisiyat", + "Sakizaya" ], "tld": [ ".tw" @@ -23853,7 +25812,16 @@ "PH" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تايوان", + "zh": "中華民國", + "fr": "Taïwan", + "ru": "Китайская Республика (Тайвань)", + "es": "República de China", + "pt": "Taiwan", + "de": "Republik China" + } }, { "countryName": "Tajikistan", @@ -23908,7 +25876,16 @@ "AF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "طاجيكستان", + "zh": "塔吉克斯坦", + "fr": "Tadjikistan", + "ru": "Таджикистан", + "es": "Tayikistán", + "pt": "Tajiquistão", + "de": "Tadschikistan" + } }, { "countryName": "Tanzania, United Republic of", @@ -24046,18 +26023,27 @@ ".tz" ], "borders": [ + "MZ", + "UG", + "RW", + "SC", "KE", "ZM", "BI", "CD", - "MW", - "MZ", - "UG", - "RW", - "SC" + "MW" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تنزانيا", + "zh": "坦桑尼亞", + "fr": "Tanzanie", + "ru": "Танзания", + "es": "Tanzania", + "pt": "Tanzânia", + "de": "Tansania" + } }, { "countryName": "Thailand", @@ -24405,7 +26391,16 @@ "MM" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تايلاند", + "zh": "泰國", + "fr": "Thaïlande", + "ru": "Таиланд", + "es": "Tailandia", + "pt": "Tailândia", + "de": "Thailand" + } }, { "countryName": "Timor-Leste", @@ -24495,7 +26490,16 @@ "AU" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تيمور الشرقية", + "zh": "東帝汶", + "fr": "Timor oriental", + "ru": "Восточный Тимор", + "es": "Timor Oriental", + "pt": "Timor-Leste", + "de": "Osttimor" + } }, { "countryName": "Togo", @@ -24553,7 +26557,16 @@ "BF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "توغو", + "zh": "多哥", + "fr": "Togo", + "ru": "Того", + "es": "Togo", + "pt": "Togo", + "de": "Togo" + } }, { "countryName": "Tokelau", @@ -24596,7 +26609,16 @@ ".tk" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "توكيلاو", + "zh": "托克劳", + "fr": "Tokelau", + "ru": "Токелау", + "es": "Tokelau", + "pt": "Tokelau", + "de": "Tokelau" + } }, { "countryName": "Tonga", @@ -24654,7 +26676,16 @@ "US" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تونغا", + "zh": "東加", + "fr": "Tonga", + "ru": "Тонга", + "es": "Tonga", + "pt": "Tonga", + "de": "Tonga" + } }, { "countryName": "Trinidad and Tobago", @@ -24751,7 +26782,16 @@ "VE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "ترينيداد وتوباغو", + "zh": "千里達及托巴哥", + "fr": "Trinité-et-Tobago", + "ru": "Тринидад и Тобаго", + "es": "Trinidad y Tobago", + "pt": "Trindade e Tobago", + "de": "Trinidad und Tobago" + } }, { "countryName": "Tunisia", @@ -24881,7 +26921,16 @@ "LY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تونس", + "zh": "突尼西亞", + "fr": "Tunisie", + "ru": "Тунис", + "es": "Túnez", + "pt": "Tunísia", + "de": "Tunesien" + } }, { "countryName": "Turkey", @@ -25248,7 +27297,16 @@ "SY" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تركيا", + "zh": "土耳其", + "fr": "Turquie", + "ru": "Турция", + "es": "Turquía", + "pt": "Turquia", + "de": "Türkei" + } }, { "countryName": "Turkmenistan", @@ -25310,7 +27368,16 @@ "AF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "تركمانستان", + "zh": "土庫曼", + "fr": "Turkménistan", + "ru": "Туркменистан", + "es": "Turkmenistán", + "pt": "Turquemenistão", + "de": "Turkmenistan" + } }, { "countryName": "Turks and Caicos Islands", @@ -25352,7 +27419,16 @@ "HT" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر توركس وكيكوس", + "zh": "特克斯和凯科斯群岛", + "fr": "Îles Turques et Caïques", + "ru": "Тёркс и Кайкос", + "es": "Islas Turcas y Caicos", + "pt": "Ilhas Turcas e Caicos", + "de": "Turks- und Caicosinseln" + } }, { "countryName": "Tuvalu", @@ -25407,7 +27483,7 @@ "capital": "Funafuti", "population": 10643, "area": 25.14, - "continent": "Oceania", + "continent": "Insular Oceania", "officialName": "Tuvalu", "demonym": "Tuvaluan", "languages": [ @@ -25418,7 +27494,16 @@ ".tv" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "توفالو", + "zh": "吐瓦魯", + "fr": "Tuvalu", + "ru": "Тувалу", + "es": "Tuvalu", + "pt": "Tuvalu", + "de": "Tuvalu" + } }, { "countryName": "Uganda", @@ -25781,7 +27866,16 @@ "SD" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أوغندا", + "zh": "烏干達", + "fr": "Ouganda", + "ru": "Уганда", + "es": "Uganda", + "pt": "Uganda", + "de": "Uganda" + } }, { "countryName": "Ukraine", @@ -25951,7 +28045,16 @@ "RO" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أوكرانيا", + "zh": "烏克蘭", + "fr": "Ukraine", + "ru": "Украина", + "es": "Ucrania", + "pt": "Ucrânia", + "de": "Ukraine" + } }, { "countryName": "United Arab Emirates", @@ -26018,7 +28121,16 @@ "SA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الإمارات العربية المتحدة", + "zh": "阿拉伯联合酋长国", + "fr": "Émirats arabes unis", + "ru": "Объединённые Арабские Эмираты", + "es": "Emiratos Árabes Unidos", + "pt": "Emirados Árabes Unidos", + "de": "Vereinigte Arabische Emirate" + } }, { "countryName": "United Kingdom", @@ -26923,7 +29035,16 @@ "IE" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "المملكة المتحدة", + "zh": "英国", + "fr": "Royaume-Uni", + "ru": "Великобритания", + "es": "Reino Unido", + "pt": "Reino Unido", + "de": "Vereinigtes Königreich" + } }, { "countryName": "United States", @@ -27406,7 +29527,16 @@ "MX" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الولايات المتحدة", + "zh": "美國", + "fr": "États-Unis", + "ru": "США", + "es": "Estados Unidos", + "pt": "Estados Unidos", + "de": "Vereinigte Staaten" + } }, { "countryName": "United States Minor Outlying Islands", @@ -27487,7 +29617,16 @@ ".um" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر الولايات المتحدة الصغيرة النائية", + "zh": "美国本土外小岛屿", + "fr": "îles mineures éloignées des États-Unis", + "ru": "Внешние малые острова США", + "es": "Islas ultramarinas de Estados Unidos", + "pt": "Ilhas Menores Distantes dos Estados Unidos", + "de": "Kleinere Amerikanische Überseeinseln" + } }, { "countryName": "Uruguay", @@ -27593,11 +29732,20 @@ ".uy" ], "borders": [ - "BR", - "AR" + "AR", + "BR" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "الأوروغواي", + "zh": "烏拉圭", + "fr": "Uruguay", + "ru": "Уругвай", + "es": "Uruguay", + "pt": "Uruguai", + "de": "Uruguay" + } }, { "countryName": "Uzbekistan", @@ -27700,7 +29848,16 @@ "AF" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "أوزبكستان", + "zh": "乌兹别克斯坦", + "fr": "Ouzbékistan", + "ru": "Узбекистан", + "es": "Uzbekistán", + "pt": "Usbequistão", + "de": "Usbekistan" + } }, { "countryName": "Vanuatu", @@ -27764,7 +29921,16 @@ "SB" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "فانواتو", + "zh": "萬那杜", + "fr": "Vanuatu", + "ru": "Вануату", + "es": "Vanuatu", + "pt": "Vanuatu", + "de": "Vanuatu" + } }, { "countryName": "Venezuela, Bolivarian Republic of", @@ -27915,7 +30081,16 @@ "NL" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "فنزويلا", + "zh": "委內瑞拉", + "fr": "Venezuela", + "ru": "Венесуэла", + "es": "Venezuela", + "pt": "Venezuela", + "de": "Venezuela" + } }, { "countryName": "Vietnam", @@ -28146,7 +30321,16 @@ "LA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "فيتنام", + "zh": "越南", + "fr": "Vietnam", + "ru": "Вьетнам", + "es": "Vietnam", + "pt": "Vietname", + "de": "Vietnam" + } }, { "countryName": "Virgin Islands, British", @@ -28198,7 +30382,16 @@ "VI" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر عذراء بريطانية", + "zh": "英屬維爾京群島", + "fr": "îles Vierges britanniques", + "ru": "Британские Виргинские Острова", + "es": "Islas Vírgenes Británicas", + "pt": "Ilhas Virgens Britânicas", + "de": "Britische Jungferninseln" + } }, { "countryName": "Virgin Islands, U.S.", @@ -28247,7 +30440,16 @@ "VG" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "جزر العذراء الأمريكية", + "zh": "美屬維爾京群島", + "fr": "îles Vierges des États-Unis", + "ru": "Американские Виргинские Острова", + "es": "Islas Vírgenes de los Estados Unidos", + "pt": "Ilhas Virgens Americanas", + "de": "Amerikanische Jungferninseln" + } }, { "countryName": "Wallis and Futuna", @@ -28287,14 +30489,23 @@ "demonym": "Wallisian", "languages": [ "French", - "Wallisian", - "Futunan" + "Futunan", + "Wallisian" ], "tld": [ ".wf" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "واليس وفوتونا", + "zh": "瓦利斯和富圖納", + "fr": "Wallis-et-Futuna", + "ru": "Уоллис и Футуна", + "es": "Wallis y Futuna", + "pt": "Wallis e Futuna", + "de": "Wallis und Futuna" + } }, { "countryName": "Western Sahara", @@ -28348,7 +30559,16 @@ "MA" ], "unMember": false, - "independent": false + "independent": false, + "translations": { + "ar": "الصحراء الغربية", + "zh": "西撒哈拉", + "fr": "Sahara occidental", + "ru": "Западная Сахара", + "es": "Sahara Occidental", + "pt": "Sara Ocidental", + "de": "Westsahara" + } }, { "countryName": "Yemen", @@ -28465,7 +30685,16 @@ "SA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "اليمن", + "zh": "也门", + "fr": "Yémen", + "ru": "Йемен", + "es": "Yemen", + "pt": "Iémen", + "de": "Jemen" + } }, { "countryName": "Zambia", @@ -28545,7 +30774,16 @@ "NA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "زامبيا", + "zh": "贊比亞", + "fr": "Zambie", + "ru": "Замбия", + "es": "Zambia", + "pt": "Zâmbia", + "de": "Sambia" + } }, { "countryName": "Zimbabwe", @@ -28613,22 +30851,22 @@ "nativeName": "Zimbabwe", "demonym": "Zimbabwean", "languages": [ - "Kalanga", - "Khoisan", - "Shona", - "Tonga", "Tswana", - "Nambya", - "Tsonga", + "Tonga", + "Chewa", "Sesotho", - "Northern Ndebele", + "Khoisan", + "Kalanga", "Zimbabwe Sign Language", "Barwe", - "Xhosa", "English", "Ndau", + "Xhosa", "Venda", - "Chewa" + "Tsonga", + "Shona", + "Northern Ndebele", + "Nambya" ], "tld": [ ".zw" @@ -28640,6 +30878,15 @@ "ZA" ], "unMember": true, - "independent": true + "independent": true, + "translations": { + "ar": "زيمبابوي", + "zh": "津巴布韦", + "fr": "Zimbabwe", + "ru": "Зимбабве", + "es": "Zimbabue", + "pt": "Zimbábue", + "de": "Simbabwe" + } } ] diff --git a/package.json b/package.json index 6e20c72..da6b3f2 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,9 @@ "main": "dist/index.js", "module": "dist/index.js", "types": "dist/index.d.ts", + "bin": { + "countrydata-export": "./dist/bin.js" + }, "exports": { "./package.json": "./package.json", ".": { diff --git a/scripts/fetch-wikidata.cjs b/scripts/fetch-wikidata.cjs index b5d2fab..ee3bc4c 100644 --- a/scripts/fetch-wikidata.cjs +++ b/scripts/fetch-wikidata.cjs @@ -3,11 +3,12 @@ * * One-time, dev-time data enrichment script — NOT part of the published package and never * imported by src/. Pulls capital, population, area, continent, official/native name, - * demonym, languages, borders, TLDs, and UN-membership/independence flags from Wikidata - * (query.wikidata.org) — CC0 licensed, free, no API key — and merges them into the existing - * data/countries.json records in place. currencyName/currencySymbol are NOT stored here — - * they're computed at load time in src/modules/country.ts from the static ISO 4217 table in - * src/shared/currencies.ts, keyed off the existing currencyCode field. + * demonym, languages, borders, TLDs, UN-membership/independence flags, and translated + * country names (LOCALES below) from Wikidata (query.wikidata.org) — CC0 licensed, free, no + * API key — and merges them into the existing data/countries.json records in place. + * currencyName/currencySymbol are NOT stored here — they're computed at load time in + * src/modules/country.ts from the static ISO 4217 table in src/shared/currencies.ts, keyed + * off the existing currencyCode field. * * Run manually when refreshing country data: node scripts/fetch-wikidata.cjs */ @@ -23,6 +24,9 @@ const SPARQL_ENDPOINT = 'https://query.wikidata.org/sparql'; const USER_AGENT = 'CountryDataJS-Build/1.0 (opokuisaiahclifford123@gmail.com)'; const BATCH_SIZE = 40; const DELAY_MS = 1200; +// ISO 639-1 codes for translated country names (Country.getCountryName(code, locale)). +// English isn't included — it's already the base countryName field. +const LOCALES = ['ar', 'zh', 'fr', 'ru', 'es', 'pt', 'de']; function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); @@ -96,6 +100,24 @@ GROUP BY ?iso2 `; } +function translationsQuery(codes) { + const selectClauses = LOCALES.map((l) => `(SAMPLE(?label_${l}) AS ?${l})`).join('\n '); + const whereClauses = LOCALES + .map((l) => ` OPTIONAL { ?country rdfs:label ?label_${l}. FILTER(LANG(?label_${l}) = "${l}") }`) + .join('\n'); + + return ` +SELECT ?iso2 + ${selectClauses} +WHERE { + VALUES ?iso2 { ${valuesClause(codes)} } + ?country wdt:P297 ?iso2. +${whereClauses} +} +GROUP BY ?iso2 +`; +} + function populationQuery(codes) { return ` SELECT ?iso2 @@ -134,12 +156,16 @@ function splitList(value) { } async function fetchBatch(codes) { - const [mainRows, popRows] = await Promise.all([ + const [mainRows, popRows, translationRows] = await Promise.all([ runQuery(mainQuery(codes)), (async () => { await sleep(DELAY_MS); return runQuery(populationQuery(codes)); })(), + (async () => { + await sleep(DELAY_MS * 2); + return runQuery(translationsQuery(codes)); + })(), ]); const byIso2 = new Map(); @@ -170,6 +196,18 @@ async function fetchBatch(codes) { byIso2.set(iso2, entry); } + for (const row of translationRows) { + const iso2 = row.iso2.value; + const translations = {}; + for (const locale of LOCALES) { + if (row[locale]?.value) translations[locale] = row[locale].value; + } + if (Object.keys(translations).length === 0) continue; + const entry = byIso2.get(iso2) ?? {}; + entry.translations = translations; + byIso2.set(iso2, entry); + } + return byIso2; } @@ -192,6 +230,7 @@ async function main() { borders: 0, unMember: 0, independent: 0, + translations: 0, }; for (let i = 0; i < batches.length; i++) { @@ -216,6 +255,7 @@ async function main() { if (data.languages !== undefined) { country.languages = data.languages; coverage.languages++; } if (data.tld !== undefined) { country.tld = data.tld; coverage.tld++; } if (data.borders !== undefined) { country.borders = data.borders; coverage.borders++; } + if (data.translations !== undefined) { country.translations = data.translations; coverage.translations++; } country.unMember = data.unMember ?? false; country.independent = data.independent ?? false; coverage.unMember += country.unMember ? 1 : 0; diff --git a/src/CountryHelper.ts b/src/CountryHelper.ts index 1d43ca5..1dfa57c 100644 --- a/src/CountryHelper.ts +++ b/src/CountryHelper.ts @@ -6,6 +6,8 @@ import type { ITimezone, ISearchOptions, INearestCityOptions, + ICityPaginationOptions, + IPaginatedCities, } from './shared/interface.js'; import { getAllCountries, @@ -19,6 +21,7 @@ import { getCountriesByRegion, isValidCountryCode, isValidPhoneCode, + getCountryName, } from './modules/country.js'; import { getAllStates, @@ -32,6 +35,7 @@ import { getCitiesOfCountry, getCitiesOfState, sortCities, + getCitiesPaginated, } from './modules/city.js'; import { getRegionsByCountryCode, @@ -117,6 +121,12 @@ export class CountryHelper { return isValidStateCode(stateCode, countryCode); } + // ─── i18n methods ───────────────────────────────────────────────────────── + + public getCountryName(isoCode: string, locale?: string): string | undefined { + return getCountryName(isoCode, locale); + } + // ─── Region methods ─────────────────────────────────────────────────────── public getRegionsByCountryShortCode(countryShortCode: string): IRegion[] { @@ -187,6 +197,10 @@ export class CountryHelper { return sortCities(cities); } + public getCitiesPaginated(options?: ICityPaginationOptions): IPaginatedCities { + return getCitiesPaginated(options); + } + // ─── Search methods ─────────────────────────────────────────────────────── public searchCountries(query: string, options?: ISearchOptions): ICountry[] { diff --git a/src/bin.ts b/src/bin.ts new file mode 100644 index 0000000..d609fa8 --- /dev/null +++ b/src/bin.ts @@ -0,0 +1,4 @@ +#!/usr/bin/env node +import { main } from './cli.js'; + +main(); diff --git a/src/cli.ts b/src/cli.ts new file mode 100644 index 0000000..647d2e5 --- /dev/null +++ b/src/cli.ts @@ -0,0 +1,178 @@ +/** + * countrydata-export — dumps the bundled dataset as CSV or SQL for non-JS consumers. + * + * countrydata-export --entity countries --format csv --out countries.csv + * countrydata-export --entity cities --format sql > cities.sql + * + * Nested fields (timezones, regions) don't fit a flat row and are dropped from + * the export; array fields (languages, borders, tld) are joined with "|". + * + * This module only exports pure functions — nothing runs on import. The actual + * executable entry point (which calls main()) is src/bin.ts. + */ + +import * as fs from 'fs'; +import { getAllCountries } from './modules/country.js'; +import { getAllStates } from './modules/state.js'; +import { getAllCities } from './modules/city.js'; + +type Entity = 'countries' | 'states' | 'cities'; +type Format = 'csv' | 'sql'; +type Row = Record; + +const USAGE = `Usage: countrydata-export --entity [--format csv|sql] [--out ] + + --entity Which dataset to export (required) + --format "csv" (default) or "sql" + --out Output file path (defaults to stdout) + --help Show this message +`; + +function parseArgs(argv: string[]): Record { + const args: Record = {}; + for (let i = 0; i < argv.length; i++) { + const arg = argv[i]!; + if (!arg.startsWith('--')) continue; + const key = arg.slice(2); + const next = argv[i + 1]; + if (next && !next.startsWith('--')) { + args[key] = next; + i++; + } else { + args[key] = 'true'; + } + } + return args; +} + +function csvEscape(value: unknown): string { + const str = value === undefined || value === null ? '' : String(value); + return /[",\n]/.test(str) ? `"${str.replace(/"/g, '""')}"` : str; +} + +function toCsv(rows: Row[]): string { + if (rows.length === 0) return ''; + const headers = Object.keys(rows[0]!); + const lines = [headers.join(',')]; + for (const row of rows) { + lines.push(headers.map((h) => csvEscape(row[h])).join(',')); + } + return lines.join('\n') + '\n'; +} + +function sqlEscape(value: unknown): string { + if (value === undefined || value === null) return 'NULL'; + if (typeof value === 'number' || typeof value === 'boolean') return String(value); + return `'${String(value).replace(/'/g, "''")}'`; +} + +function toSql(tableName: string, rows: Row[]): string { + if (rows.length === 0) return ''; + const headers = Object.keys(rows[0]!); + const createTable = `CREATE TABLE IF NOT EXISTS \`${tableName}\` (\n${headers + .map((h) => ` \`${h}\` TEXT`) + .join(',\n')}\n);\n\n`; + const columns = headers.map((h) => `\`${h}\``).join(', '); + const inserts = rows + .map((row) => `INSERT INTO \`${tableName}\` (${columns}) VALUES (${headers + .map((h) => sqlEscape(row[h])) + .join(', ')});`) + .join('\n'); + return createTable + inserts + '\n'; +} + +function flattenCountry(c: ReturnType[number]): Row { + return { + countryName: c.countryName, + countryShortCode: c.countryShortCode, + phoneCode: c.phoneCode, + countryFlag: c.countryFlag, + currencyCode: c.currencyCode, + currencyName: c.currencyName, + currencySymbol: c.currencySymbol, + latitude: c.latitude, + longitude: c.longitude, + capital: c.capital, + population: c.population, + area: c.area, + continent: c.continent, + officialName: c.officialName, + nativeName: c.nativeName, + demonym: c.demonym, + languages: c.languages?.join('|'), + borders: c.borders?.join('|'), + tld: c.tld?.join('|'), + unMember: c.unMember, + independent: c.independent, + }; +} + +function flattenState(s: ReturnType[number]): Row { + return { + name: s.name, + isoCode: s.isoCode, + countryCode: s.countryCode, + latitude: s.latitude ?? undefined, + longitude: s.longitude ?? undefined, + }; +} + +function flattenCity(c: ReturnType[number]): Row { + return { + name: c.name, + countryCode: c.countryCode, + stateCode: c.stateCode, + latitude: c.latitude ?? undefined, + longitude: c.longitude ?? undefined, + }; +} + +function getRows(entity: Entity): Row[] { + switch (entity) { + case 'countries': + return getAllCountries().map(flattenCountry); + case 'states': + return getAllStates().map(flattenState); + case 'cities': + return getAllCities().map(flattenCity); + } +} + +export function main(): void { + const args = parseArgs(process.argv.slice(2)); + + if (args.help) { + process.stdout.write(USAGE); + return; + } + + const entity = args.entity as Entity | undefined; + if (!entity || !['countries', 'states', 'cities'].includes(entity)) { + process.stderr.write('Error: --entity must be one of countries, states, cities\n\n'); + process.stderr.write(USAGE); + process.exitCode = 1; + return; + } + + const format = (args.format as Format | undefined) ?? 'csv'; + if (format !== 'csv' && format !== 'sql') { + process.stderr.write('Error: --format must be "csv" or "sql"\n\n'); + process.stderr.write(USAGE); + process.exitCode = 1; + return; + } + + const rows = getRows(entity); + const output = format === 'csv' ? toCsv(rows) : toSql(entity, rows); + + if (args.out) { + fs.writeFileSync(args.out, output, 'utf8'); + process.stderr.write(`Wrote ${rows.length} rows to ${args.out}\n`); + } else { + process.stdout.write(output); + } +} + +// ─── exported for testing ────────────────────────────────────────────────────── + +export { parseArgs, csvEscape, toCsv, sqlEscape, toSql, flattenCountry, flattenState, flattenCity }; diff --git a/src/index.ts b/src/index.ts index fc5f009..fda8b30 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,4 +15,6 @@ export type { ITimezone, ISearchOptions, INearestCityOptions, + ICityPaginationOptions, + IPaginatedCities, } from './shared/interface.js'; diff --git a/src/modules/city.ts b/src/modules/city.ts index bfb0431..89e2400 100644 --- a/src/modules/city.ts +++ b/src/modules/city.ts @@ -1,5 +1,5 @@ import * as fs from 'fs'; -import type { ICity } from '../shared/interface.js'; +import type { ICity, ICityPaginationOptions, IPaginatedCities } from '../shared/interface.js'; import { resolveDataPath, convertCityArrays } from '../shared/helpers.js'; // ─── cache ─────────────────────────────────────────────────────────────────── @@ -68,6 +68,33 @@ export function sortCities(cities: ICity[] = getAllCities()): ICity[] { }); } +const DEFAULT_PAGE_SIZE = 50; + +// Slices an already-indexed array (byCountryCode/byStateKey) rather than the +// full ~148k-city cache whenever countryCode/stateCode narrows the source. +export function getCitiesPaginated(options: ICityPaginationOptions = {}): IPaginatedCities { + const { countryCode, stateCode, page = 1, pageSize = DEFAULT_PAGE_SIZE } = options; + + const source = + countryCode && stateCode + ? getCitiesOfState(countryCode, stateCode) + : countryCode + ? getCitiesOfCountry(countryCode) + : getAllCities(); + + const safePage = Math.max(1, page); + const start = (safePage - 1) * pageSize; + const items = source.slice(start, start + pageSize); + + return { + items, + page: safePage, + pageSize, + total: source.length, + hasMore: start + items.length < source.length, + }; +} + // ─── module export (City.getCitiesOfState() style) ─────────────────────────── export default { @@ -75,4 +102,5 @@ export default { getCitiesOfCountry, getCitiesOfState, sortCities, + getCitiesPaginated, }; diff --git a/src/modules/country.ts b/src/modules/country.ts index a850fcb..485cf13 100644 --- a/src/modules/country.ts +++ b/src/modules/country.ts @@ -136,6 +136,17 @@ export function isValidPhoneCode(phoneCode: string): boolean { return getCountryByPhoneCode(phoneCode) !== undefined; } +// ─── i18n ──────────────────────────────────────────────────────────────────── + +// Falls back to the base (English) countryName when the locale is "en", missing, +// or has no translation for that country — never returns undefined for a valid code. +export function getCountryName(isoCode: string, locale?: string): string | undefined { + const country = getCountryByCode(isoCode); + if (!country) return undefined; + if (!locale || locale === 'en') return country.countryName; + return country.translations?.[locale] ?? country.countryName; +} + // ─── module export (Country.getAllCountries() style) ────────────────────────── export default { @@ -150,4 +161,5 @@ export default { getCountriesByRegion, isValidCountryCode, isValidPhoneCode, + getCountryName, }; diff --git a/src/shared/interface.ts b/src/shared/interface.ts index b363504..e3d5e7d 100644 --- a/src/shared/interface.ts +++ b/src/shared/interface.ts @@ -35,6 +35,10 @@ export interface ICountry { tld?: string[]; unMember?: boolean; independent?: boolean; + /** Translated country names keyed by ISO 639-1 locale (e.g. "fr", "ar"). English is + * covered by countryName, not repeated here. Use Country.getCountryName() for lookups + * with a fallback to countryName when a locale is missing. */ + translations?: Record; /** Get all states/provinces for this country */ getStates?(): IState[]; /** Get all cities for this country */ @@ -70,3 +74,23 @@ export interface INearestCityOptions { /** Restrict further to one state — requires countryCode to also be set. */ stateCode?: string; } + +export interface ICityPaginationOptions { + /** Restrict to one country before paginating. */ + countryCode?: string; + /** Restrict further to one state — requires countryCode to also be set. */ + stateCode?: string; + /** 1-indexed page number. Defaults to 1. */ + page?: number; + /** Items per page. Defaults to 50. */ + pageSize?: number; +} + +export interface IPaginatedCities { + items: ICity[]; + page: number; + pageSize: number; + /** Total matching cities across all pages (after countryCode/stateCode filtering). */ + total: number; + hasMore: boolean; +} diff --git a/tsup.config.ts b/tsup.config.ts index 06ddb98..2939670 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from 'tsup'; export default defineConfig({ - entry: ['src/index.ts'], + entry: ['src/index.ts', 'src/bin.ts'], format: ['cjs', 'esm'], dts: true, outDir: 'dist', From 1572037c21b039022424e70a595936a6246ef801 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 08:52:23 +0000 Subject: [PATCH 08/11] Updating the keyword --- README.md | 14 ++++++++++++-- package.json | 19 +++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bcb34f2..9cd5eb1 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,23 @@ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [![CI](https://github.com/Clifftech123/CountryData.js/actions/workflows/main.yml/badge.svg)](https://github.com/Clifftech123/CountryData.js/actions/workflows/main.yml) | [![codecov](https://codecov.io/github/Clifftech123/CountryData.js/graph/badge.svg?token=42Y3GT9MKN)](https://codecov.io/github/Clifftech123/CountryData.js) | [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Clifftech123_CountryData.js&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Clifftech123_CountryData.js) | +[![npm version](https://img.shields.io/npm/v/countrydata.js)](https://www.npmjs.com/package/countrydata.js) [![NPM Downloads](https://img.shields.io/npm/d18m/countrydata.js)](https://www.npmjs.com/package/countrydata.js) +[![License: MIT](https://img.shields.io/npm/l/countrydata.js)](./LICENSE) ## Features -- **250 countries** name, ISO code, phone code, flag emoji, currency code, latitude/longitude, timezones, and regions +- **250 countries** — name, ISO code, phone code, flag emoji, currency (code/name/symbol), + capital, population, area, continent, native/official name, demonym, languages, bordering + countries, TLD, UN membership, latitude/longitude, timezones, and regions - **4 963 states & provinces** with ISO codes and coordinates -- **148 000+ cities** linked to their country and state, lazily loaded +- **148 000+ cities** linked to their country and state, lazily loaded, with paginated access +- **Fuzzy search** — case- and diacritic-insensitive (`Search.searchCountries()`, `searchStates()`, `searchCities()`) +- **Cross-entity filters** — by currency, continent, language, or admin region +- **Validation helpers** — `isValidCountryCode()`, `isValidPhoneCode()`, `isValidStateCode()` +- **Geo utilities** — Haversine distance, nearest country/city lookups +- **i18n** — translated country names in 7 locales via `getCountryName(code, locale)` +- **CLI** — `npx countrydata-export` dumps any dataset as CSV or SQL - Synchronous API with O(1) lookups via Map indexes - Works in both **ESM** and **CommonJS** environments - Full **TypeScript** types included diff --git a/package.json b/package.json index da6b3f2..608c936 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "countrydata.js", "license": "MIT", "version": "2.0.0", - "description": "Offline JavaScript/TypeScript library for country, state/province, and city data — 250 countries, 4963 states, 148k+ cities", + "description": "Offline JavaScript/TypeScript library for country, state, and city data — 250 countries, 4,963 states, 148k+ cities, with fuzzy search, geo distance, validation, i18n names, and a CSV/SQL export CLI.", "keywords": [ "javascript", "typescript", @@ -15,7 +15,22 @@ "iso3166", "timezone", "geo", - "offline" + "offline", + "currency", + "population", + "capital", + "search", + "validation", + "geolocation", + "distance", + "i18n", + "localization", + "cli", + "csv", + "sql", + "address", + "location", + "country-picker" ], "main": "dist/index.js", "module": "dist/index.js", From 5f60bfe6b99c2cc0a688d07c05703830cae0ea87 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 09:11:49 +0000 Subject: [PATCH 09/11] Updating the Sample code --- README.md | 4 +- Sample/TypeScript/countrydata.js.d.ts | 10 -- Sample/TypeScript/index.ts | 73 ++++++++++++- Sample/express/README.md | 44 ++++++++ Sample/express/app.js | 150 ++++++++++++++++++++++++-- Sample/express/package-lock.json | 8 +- Sample/javascript/app.js | 96 ++++++++++++++++- src/shared/helpers.ts | 11 +- 8 files changed, 368 insertions(+), 28 deletions(-) delete mode 100644 Sample/TypeScript/countrydata.js.d.ts diff --git a/README.md b/README.md index 9cd5eb1..da2c532 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ const sorted = Country.sortCountries(); const eurCountries = Country.getCountriesByCurrency('EUR'); const african = Country.getCountriesByContinent('Africa'); const englishSpeaking = Country.getCountriesByLanguage('English'); -const owner = Country.getCountriesByRegion('Bavaria'); // → [Germany] +const owner = Country.getCountriesByRegion('California'); // → [United States] const validCode = Country.isValidCountryCode('GH'); // true const validPhone = Country.isValidPhoneCode('+233'); // true const nameInFrench = Country.getCountryName('GH', 'fr'); // 'Ghana' @@ -129,7 +129,7 @@ All methods are **synchronous** and return data directly no `await`, no `.then() | `getCountriesByCurrency(code)` | `ICountry[]` | Countries sharing a currency code (e.g. `"EUR"`) | | `getCountriesByContinent(name)` | `ICountry[]` | Countries on a continent (e.g. `"Africa"`) | | `getCountriesByLanguage(name)` | `ICountry[]` | Countries with a given official language | -| `getCountriesByRegion(name)` | `ICountry[]` | Country containing a named admin region (e.g. `"Bavaria"`) | +| `getCountriesByRegion(name)` | `ICountry[]` | Country containing a named admin region (e.g. `"California"`) | | `isValidCountryCode(code)` | `boolean` | Whether an ISO code exists in the dataset | | `isValidPhoneCode(code)` | `boolean` | Whether a phone code exists in the dataset | | `getCountryName(code, locale?)` | `string \| undefined` | Translated name; falls back to English if the locale is missing | diff --git a/Sample/TypeScript/countrydata.js.d.ts b/Sample/TypeScript/countrydata.js.d.ts deleted file mode 100644 index 68570fe..0000000 --- a/Sample/TypeScript/countrydata.js.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -// types/countrydata.js.d.ts -declare module 'countrydata.js' { - export class CountryHelper { - getCountries(): Promise; - getCountryByShortCode(shortCode: string): Promise; - getRegionsByCountryShortCode(shortCode: string): Promise; - getCountryByPhoneCode(phoneCode: string): Promise; - getCountryPhoneCodeByShortCode(shortCode: string): Promise; - } -} diff --git a/Sample/TypeScript/index.ts b/Sample/TypeScript/index.ts index 946ea60..11c5de5 100644 --- a/Sample/TypeScript/index.ts +++ b/Sample/TypeScript/index.ts @@ -1,5 +1,6 @@ -// Import from local source instead of npm package -import { CountryHelper } from '../.././src/index.js'; +// Import from the built local package instead of npm — run `npm run build` at the repo +// root first (same convention as the javascript/ and express/ samples). +import { Country, State, City, Search, Geo, CountryHelper } from '../../dist/index.js'; // Create a single instance to use for all operations const countryHelper = new CountryHelper(); @@ -33,3 +34,71 @@ console.log(countryByPhone); console.log('\nPhone Code for US:'); const phoneCode = countryHelper.getCountryPhoneCodeByShortCode('US'); console.log(phoneCode); + +// ─── Enriched country data (capital, population, currency name/symbol, etc.) ── + +console.log('\nEnriched fields for Ghana:'); +const ghana = countryHelper.getCountryByShortCode('GH'); +console.log({ + capital: ghana?.capital, + population: ghana?.population, + area: ghana?.area, + continent: ghana?.continent, + currencyName: ghana?.currencyName, + currencySymbol: ghana?.currencySymbol, + languages: ghana?.languages, +}); + +// ─── Cross-entity filters ────────────────────────────────────────────────────── + +console.log('\nCountries using EUR:'); +console.log(countryHelper.getCountriesByCurrency('EUR').map((c) => c.countryName)); + +console.log('\nCountries in Africa:'); +console.log(countryHelper.getCountriesByContinent('Africa').length, 'countries'); + +console.log('\nCountries speaking French:'); +console.log(countryHelper.getCountriesByLanguage('French').length, 'countries'); + +console.log('\nCountry containing the "California" region:'); +console.log(countryHelper.getCountriesByRegion('California').map((c) => c.countryName)); + +// ─── Validation ───────────────────────────────────────────────────────────── + +console.log('\nValidation checks:'); +console.log('isValidCountryCode("GH"):', countryHelper.isValidCountryCode('GH')); +console.log('isValidPhoneCode("+233"):', countryHelper.isValidPhoneCode('+233')); +console.log('isValidStateCode("CA", "US"):', countryHelper.isValidStateCode('CA', 'US')); + +// ─── i18n ─────────────────────────────────────────────────────────────────── + +console.log('\nGhana in other locales:'); +console.log('fr:', countryHelper.getCountryName('GH', 'fr')); +console.log('ar:', countryHelper.getCountryName('GH', 'ar')); +console.log('de:', countryHelper.getCountryName('GH', 'de')); + +// ─── Fuzzy search ─────────────────────────────────────────────────────────── + +console.log('\nSearch countries matching "ghan":'); +console.log(Search.searchCountries('ghan').map((c) => c.countryName)); + +console.log('\nSearch cities matching "sao paulo" (diacritic-insensitive):'); +console.log(Search.searchCities('sao paulo', { limit: 3 }).map((c) => c.name)); + +// ─── Geo distance ─────────────────────────────────────────────────────────── + +console.log('\nDistance from New York City to London (km):'); +console.log(Geo.haversineDistanceKm(40.7128, -74.006, 51.5074, -0.1278).toFixed(1)); + +console.log('\nNearest city to NYC, scoped to the US:'); +console.log(Geo.getNearestCity(40.7128, -74.006, { countryCode: 'US' })?.name); + +// ─── City pagination ──────────────────────────────────────────────────────── + +console.log('\nFirst page of US cities (pageSize 5):'); +const page = City.getCitiesPaginated({ countryCode: 'US', page: 1, pageSize: 5 }); +console.log(page.items.map((c) => c.name), `(total: ${page.total}, hasMore: ${page.hasMore})`); + +// Module-style access works the same way as the class API, e.g.: +console.log('\nStates of Ghana (module API):', State.getStatesOfCountry('GH').length); +console.log('Country module getAllCountries():', Country.getAllCountries().length); diff --git a/Sample/express/README.md b/Sample/express/README.md index e9b7013..15b111f 100644 --- a/Sample/express/README.md +++ b/Sample/express/README.md @@ -32,6 +32,14 @@ This sample demonstrates how to use CountryData.js in an Express.js application - `GET /api/countries/:shortCode/regions` - Get regions by country short code - `GET /api/phone-code/:phoneCode` - Get country by phone code (e.g., +1, +44) - `GET /api/countries/:shortCode/phone-code` - Get country phone code by short code +- `GET /api/countries/:shortCode/flag` - Get country flag emoji by short code +- `GET /api/countries/currency/:code` - Get countries sharing a currency code (e.g. EUR) +- `GET /api/countries/continent/:name` - Get countries on a continent (e.g. Africa) +- `GET /api/countries/:shortCode/name/:locale` - Get a translated country name (ar, zh, fr, ru, es, pt, de) +- `GET /api/validate/country/:code` - Check whether a country ISO code is valid +- `GET /api/search/countries?q=` - Fuzzy search countries by name +- `GET /api/geo/distance?lat1=&lon1=&lat2=&lon2=` - Great-circle distance in km between two coordinates +- `GET /api/cities?countryCode=&stateCode=&page=&pageSize=` - Paginated city listing ## Example Requests @@ -70,3 +78,39 @@ GET http://localhost:3000/api/countries/US/phone-code ``` GET http://localhost:3000/api/countries/US/flag ``` + +### Get countries sharing a currency + +``` +GET http://localhost:3000/api/countries/currency/EUR +``` + +### Get a translated country name + +``` +GET http://localhost:3000/api/countries/GH/name/fr +``` + +### Validate a country code + +``` +GET http://localhost:3000/api/validate/country/GH +``` + +### Search countries + +``` +GET http://localhost:3000/api/search/countries?q=ghan +``` + +### Great-circle distance between two coordinates + +``` +GET http://localhost:3000/api/geo/distance?lat1=40.7128&lon1=-74.0060&lat2=51.5074&lon2=-0.1278 +``` + +### Paginated cities + +``` +GET http://localhost:3000/api/cities?countryCode=US&page=1&pageSize=25 +``` diff --git a/Sample/express/app.js b/Sample/express/app.js index 42c0f8c..3a320be 100644 --- a/Sample/express/app.js +++ b/Sample/express/app.js @@ -4,20 +4,20 @@ import cors from 'cors'; // Import the CountryHelper class from the dist/index.js file. // But when you install it from npm, you can directly import the CountryHelper class from the index.js file. -import { CountryHelper } from '../../dist/index.js'; +import { CountryHelper, Search, Geo, City } from '../../dist/index.js'; const app = express(); app.disable('x-powered-by'); -const port = process.env.PORT || 3000; +const port = process.env.PORT || 8000; const countryHelper = new CountryHelper(); - - // SECURITY NOTE: CORS is configured for local development only -app.use(cors({ - origin: 'http://localhost:3000', - methods: ['GET'], -})); +app.use( + cors({ + origin: 'http://localhost:3000', + methods: ['GET'], + }), +); app.use(express.json()); @@ -57,6 +57,43 @@ app.get('/', (_req, res) => { path: '/api/countries/:shortCode/flag', description: 'Get country flag by short code', }, + { + method: 'GET', + path: '/api/countries/currency/:code', + description: 'Get countries sharing a currency code (e.g. EUR)', + }, + { + method: 'GET', + path: '/api/countries/continent/:name', + description: 'Get countries on a continent (e.g. Africa)', + }, + { + method: 'GET', + path: '/api/countries/:shortCode/name/:locale', + description: + 'Get a country name translated into a locale (ar, zh, fr, ru, es, pt, de)', + }, + { + method: 'GET', + path: '/api/validate/country/:code', + description: 'Check whether a country ISO code is valid', + }, + { + method: 'GET', + path: '/api/search/countries?q=', + description: 'Fuzzy search countries by name', + }, + { + method: 'GET', + path: '/api/geo/distance?lat1=&lon1=&lat2=&lon2=', + description: 'Great-circle distance in km between two coordinates', + }, + { + method: 'GET', + path: '/api/cities?countryCode=&stateCode=&page=&pageSize=', + description: + 'Paginated city listing, optionally scoped to a country/state', + }, ], }); }); @@ -155,6 +192,103 @@ app.get('/api/countries/:shortCode/flag', (req, res) => { } }); +// Get countries sharing a currency code +app.get('/api/countries/currency/:code', (req, res) => { + try { + const countries = countryHelper.getCountriesByCurrency(req.params.code); + res.json(countries); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Get countries on a continent +app.get('/api/countries/continent/:name', (req, res) => { + try { + const countries = countryHelper.getCountriesByContinent(req.params.name); + res.json(countries); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Get a country name translated into a locale, falling back to English +app.get('/api/countries/:shortCode/name/:locale', (req, res) => { + try { + const { shortCode, locale } = req.params; + const name = countryHelper.getCountryName(shortCode, locale); + + if (!name) { + return res + .status(404) + .json({ error: `Country with short code '${shortCode}' not found` }); + } + + res.json({ shortCode, locale, name }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Validate a country ISO code +app.get('/api/validate/country/:code', (req, res) => { + try { + res.json({ + code: req.params.code, + valid: countryHelper.isValidCountryCode(req.params.code), + }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Fuzzy search countries by name +app.get('/api/search/countries', (req, res) => { + try { + const q = req.query.q ?? ''; + res.json(Search.searchCountries(q, { limit: 20 })); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Great-circle distance between two coordinates +app.get('/api/geo/distance', (req, res) => { + try { + const { lat1, lon1, lat2, lon2 } = req.query; + if ([lat1, lon1, lat2, lon2].some((v) => v === undefined)) { + return res + .status(400) + .json({ error: 'lat1, lon1, lat2, and lon2 are all required' }); + } + const km = Geo.haversineDistanceKm( + Number(lat1), + Number(lon1), + Number(lat2), + Number(lon2), + ); + res.json({ km }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +// Paginated city listing, optionally scoped to a country/state +app.get('/api/cities', (req, res) => { + try { + const { countryCode, stateCode, page, pageSize } = req.query; + const result = City.getCitiesPaginated({ + countryCode, + stateCode, + page: page ? Number(page) : undefined, + pageSize: pageSize ? Number(pageSize) : undefined, + }); + res.json(result); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + // Start the server app.listen(port, () => { console.log(`CountryData.js API Sample running at http://localhost:${port}`); diff --git a/Sample/express/package-lock.json b/Sample/express/package-lock.json index 9802f36..465f898 100644 --- a/Sample/express/package-lock.json +++ b/Sample/express/package-lock.json @@ -1,16 +1,16 @@ { - "name": "express", + "name": "countrydata-express-sample", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "express", + "name": "countrydata-express-sample", "version": "1.0.0", - "license": "ISC", + "license": "MIT", "dependencies": { "cors": "^2.8.5", - "express": "^4.21.2" + "express": "^4.18.2" } }, "node_modules/accepts": { diff --git a/Sample/javascript/app.js b/Sample/javascript/app.js index af6ba3c..6f5ffaf 100644 --- a/Sample/javascript/app.js +++ b/Sample/javascript/app.js @@ -4,7 +4,7 @@ // But when you install it from npm, you can directly import the CountryHelper class from the src/index.js file. // Take note of the import from teh local and production use . If you want to test the local version, you need to build the project firs but for production you can directly import the CountryHelper class from the index.js file. -import { CountryHelper } from '../../dist/index.js'; +import { CountryHelper, Search, Geo, City } from '../../dist/index.js'; // Create an instance of CountryHelper const countryHelper = new CountryHelper(); @@ -64,6 +64,77 @@ const getCountryPhoneCodeByShortCode = (shortCode) => { console.log(phoneCode); }; +/** + * Gets and logs enriched fields (capital, population, currency, etc.) for a country. + * @param {string} shortCode - The short code of the country (e.g., "GH"). + */ +const getEnrichedFields = (shortCode) => { + const country = countryHelper.getCountryByShortCode(shortCode); + console.log({ + capital: country?.capital, + population: country?.population, + area: country?.area, + continent: country?.continent, + currencyName: country?.currencyName, + currencySymbol: country?.currencySymbol, + languages: country?.languages, + }); +}; + +/** + * Gets and logs countries sharing a currency code. + * @param {string} currencyCode - The currency code (e.g., "EUR"). + */ +const getCountriesByCurrency = (currencyCode) => { + const countries = countryHelper.getCountriesByCurrency(currencyCode); + console.log(countries.map((c) => c.countryName)); +}; + +/** + * Validates a country code, phone code, and state code. + */ +const runValidationChecks = () => { + console.log('isValidCountryCode("GH"):', countryHelper.isValidCountryCode('GH')); + console.log('isValidPhoneCode("+233"):', countryHelper.isValidPhoneCode('+233')); + console.log('isValidStateCode("CA", "US"):', countryHelper.isValidStateCode('CA', 'US')); +}; + +/** + * Gets and logs a country's name translated into another locale. + * @param {string} shortCode - The short code of the country (e.g., "GH"). + * @param {string} locale - The locale code (e.g., "fr"). + */ +const getCountryName = (shortCode, locale) => { + console.log(`${locale}:`, countryHelper.getCountryName(shortCode, locale)); +}; + +/** + * Searches countries by a fuzzy, case-insensitive query. + * @param {string} query - The search text. + */ +const searchCountries = (query) => { + console.log(Search.searchCountries(query).map((c) => c.countryName)); +}; + +/** + * Logs the great-circle distance between two coordinates and the nearest US city to one of them. + */ +const runGeoExamples = () => { + const distance = Geo.haversineDistanceKm(40.7128, -74.006, 51.5074, -0.1278); + console.log(`NYC to London: ${distance.toFixed(1)} km`); + + const nearest = Geo.getNearestCity(40.7128, -74.006, { countryCode: 'US' }); + console.log('Nearest US city to NYC coordinates:', nearest?.name); +}; + +/** + * Gets and logs one page of cities for a country. + */ +const runPaginationExample = () => { + const page = City.getCitiesPaginated({ countryCode: 'US', page: 1, pageSize: 5 }); + console.log(page.items.map((c) => c.name), `(total: ${page.total}, hasMore: ${page.hasMore})`); +}; + // Run examples with clear section headers console.log('\n===== ALL COUNTRIES (SAMPLE) ====='); getCountries(); @@ -82,3 +153,26 @@ getCountryByPhoneCode('+233'); console.log('\n===== PHONE CODE FOR US ====='); getCountryPhoneCodeByShortCode('US'); + +console.log('\n===== ENRICHED FIELDS FOR GHANA (GH) ====='); +getEnrichedFields('GH'); + +console.log('\n===== COUNTRIES USING EUR ====='); +getCountriesByCurrency('EUR'); + +console.log('\n===== VALIDATION CHECKS ====='); +runValidationChecks(); + +console.log('\n===== GHANA NAME IN OTHER LOCALES ====='); +getCountryName('GH', 'fr'); +getCountryName('GH', 'ar'); +getCountryName('GH', 'de'); + +console.log('\n===== SEARCH COUNTRIES MATCHING "ghan" ====='); +searchCountries('ghan'); + +console.log('\n===== GEO DISTANCE & NEAREST CITY ====='); +runGeoExamples(); + +console.log('\n===== PAGINATED US CITIES (PAGE 1) ====='); +runPaginationExample(); diff --git a/src/shared/helpers.ts b/src/shared/helpers.ts index c7e14ca..bfc1e7d 100644 --- a/src/shared/helpers.ts +++ b/src/shared/helpers.ts @@ -1,8 +1,17 @@ import * as path from 'path'; +import { fileURLToPath } from 'url'; import type { ICity } from './interface.js'; +// tsup's `shims: true` polyfills __dirname for both its CJS and ESM build outputs, so this +// only ever falls through to the import.meta.url branch when running raw TS source directly +// under a native ESM loader (e.g. `node --loader ts-node/esm`), which has no such shim. +function moduleDir(): string { + if (typeof __dirname !== 'undefined') return __dirname; + return path.dirname(fileURLToPath(import.meta.url)); +} + export function resolveDataPath(fileName: string): string { - return path.join(__dirname, '..', 'data', fileName); + return path.join(moduleDir(), '..', 'data', fileName); } export function compareByName(a: T, b: T): number { From c40bae8266357fca9119da0c57988bcd626fb649 Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 09:19:43 +0000 Subject: [PATCH 10/11] Update codeql config and related files --- .github/codeql/codeql-config.yml | 8 ++++++ .github/workflows/codeql.yml | 11 +++++--- .github/workflows/main.yml | 43 ++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 .github/codeql/codeql-config.yml diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 0000000..a07e2bf --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,8 @@ +name: "CodeQL config" + +# Sample/ holds standalone demo apps (their own package.json/tsconfig, not part of the +# published package) — no need to security-scan throwaway example code. +paths-ignore: + - Sample/** + - coverage/** + - dist/** diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 26f8a7c..8066ca5 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -36,9 +36,14 @@ jobs: with: languages: javascript-typescript queries: security-extended - - - name: Autobuild - uses: github/codeql-action/autobuild@v4 + config-file: ./.github/codeql/codeql-config.yml + + # Autobuild's heuristic crawl picks up Sample/TypeScript's own tsconfig.json and tries + # to `tsc` it, which fails because that sample imports from ../../dist/index.js and this + # job never builds the root package. Build explicitly instead — see + # https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#specifying-build-commands-for-compiled-languages-in-a-github-actions-workflow + - name: Build + run: npm run build - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8f645f6..7323079 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,3 +37,46 @@ jobs: files: ./coverage/*.json flags: unittests name: codecov-umbrella + + samples: + name: Verify samples run against the built package + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Set up Node + uses: actions/setup-node@v6 + with: + node-version: 20.x + cache: 'npm' + + - name: Install root dependencies + run: npm install + + - name: Build the package + run: npm run build + + - name: Run JavaScript sample + working-directory: Sample/javascript + run: | + npm install + node app.js + + - name: Run TypeScript sample + working-directory: Sample/TypeScript + run: | + npm install + node --loader ts-node/esm index.ts + + - name: Run Express sample + working-directory: Sample/express + run: | + npm install + node app.js & + SERVER_PID=$! + sleep 2 + curl -sf http://localhost:8000/api/countries > /dev/null + curl -sf http://localhost:8000/api/countries/GH/name/fr | grep -q Ghana + curl -sf "http://localhost:8000/api/search/countries?q=ghan" | grep -q Ghana + kill $SERVER_PID From 251ca6b7563827bd23bbc78490154ce080a029fc Mon Sep 17 00:00:00 2001 From: Isaiah Clifford Opoku Date: Sat, 18 Jul 2026 09:22:54 +0000 Subject: [PATCH 11/11] Update files --- tsconfig.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 984c5ac..5c81f8d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,7 @@ "module": "NodeNext", "lib": ["es2022"], "noEmit": true - } + }, + "include": ["src/**/*.ts", "Test/**/*.ts"], + "exclude": ["Sample/**", "dist/**", "node_modules/**"] }