{- | Module      : Data.Standards.ISO.Country.Primary.Alpha3
 -   Description : The three-character country codes described by ISO 3166-1.
 -   Copyright   : (c) 2018 Samuel May
 -   License     : MPL-2.0
 -   Maintainer  : ag.eitilt@gmail.com
 -   Stability   : provisional
 -   Portability : portable
 -}
module Data.Standards.ISO.Country.Primary.Alpha3
    ( Alpha3 ( .. )
    , Status ( .. )
    , codeStatus
    ) where

import Data.Standards.ISO.Country.Primary.Common

import qualified Data.Hashable as H

{-# DEPRECATED ANT "Divided into BES, CUW and SXM, or use ISO 3166-3 code ANHH" #-}
{-# DEPRECATED BUR "Use new code MMR or ISO 3166-3 code BUMM" #-}
{-# DEPRECATED BYS "Use new code BLR or ISO 3166-3 code BYAA" #-}
{-# DEPRECATED CSK "Divided into CZE and SVK, or use ISO 3166-3 code CSHH" #-}
{-# DEPRECATED NTZ "Divided between IRQ and SAU, or use ISO 3166-3 code NTHH" #-}
{-# DEPRECATED ROM "Use new code ROU" #-}
{-# DEPRECATED SCG "Divided into MNE and SRB, or use ISO 3166-3 code CSXX" #-}
{-# DEPRECATED TMP "Use new code TLS or ISO 3166-3 code TPTL" #-}
{-# DEPRECATED YUG "Use ISO 3166-3 code YUCS" #-}
{-# DEPRECATED ZAR "Use new code COD or ISO 3166-3 code ZRCD" #-}

{-# DEPRECATED ADN "Use new code YEM" #-}
{-# DEPRECATED BDS "Use official code BRB" #-}
{-# DEPRECATED BRU "Use official code BRN" #-}
{-# DEPRECATED CDN "Use official code CAN" #-}
{-# DEPRECATED EAK "Use official code KEN" #-}
{-# DEPRECATED EAT "Use code for entire country TZA" #-}
{-# DEPRECATED EAU "Use official code UGA" #-}
{-# DEPRECATED EAZ "Use code for entire country TZA" #-}
{-# DEPRECATED GBA "Use code for entire region GGY" #-}
{-# DEPRECATED GBG "Use official code GGY" #-}
{-# DEPRECATED GBJ "Use official code JEY" #-}
{-# DEPRECATED GBM "Use official code IMN" #-}
{-# DEPRECATED GBZ "Use official code GIB" #-}
{-# DEPRECATED GCA "Use official code GTM" #-}
{-# DEPRECATED HKJ "Use official code JOR" #-}
{-# DEPRECATED MAL "Use official code MYS" #-}
{-# DEPRECATED RCA "Use official code CAF" #-}
{-# DEPRECATED RCB "Use official code COG" #-}
{-# DEPRECATED RCH "Use official code CHL" #-}
{-# DEPRECATED RMM "Use official code MLI" #-}
{-# DEPRECATED RNR "Use official code ZMB" #-}
{-# DEPRECATED ROK "Use official code KOR" #-}
{-# DEPRECATED RSM "Use official code SMR" #-}
{-# DEPRECATED RSR "Use official code ZWE" #-}
{-# DEPRECATED SLO "Use official code SVN" #-}
{-# DEPRECATED SME "Use official code SUR" #-}
{-# DEPRECATED TMN "Use official code TKN" #-}
{-# DEPRECATED WAG "Use official code GMB" #-}
{-# DEPRECATED WAL "Use official code SLE" #-}
{-# DEPRECATED WAN "Use official code NGA" #-}
{-# DEPRECATED ZRE "Use official code ZAR, new code COD or ISO 3166-3 code ZRCD" #-}

{-# WARNING GBD,GBN,GBO,GBP,GBS,UNA,UNK,UNO "Not an official ISO 3166-1 code" #-}

{-# DEPRECATED AFI "Use new code DJI or ISO 3166-3 code AIDJ" #-}
{-# DEPRECATED ATB "Use new code ATA or ISO 3166-3 code BQAQ" #-}
{-# DEPRECATED ATN "Use new code ATA or ISO 3166-3 code NQAQ" #-}
{-# DEPRECATED CTE "Use new code KIR or ISO 3166-3 code CTKI" #-}
{-# DEPRECATED DDR "Use new code DEU or ISO 3166-3 code DDDE" #-}
{-# DEPRECATED DHY "Use new code BEN or ISO 3166-3 code DYBJ" #-}
{-# DEPRECATED GEL "Divided into KIR and TUV, or use ISO 3166-3 code GEHH" #-}
{-# DEPRECATED HVO "Use new code BFA or ISO 3166-3 code HVBF" #-}
{-# DEPRECATED JTN "Use new code UMI or ISO 3166-3 code JTUM" #-}
{-# DEPRECATED MID "Use new code UMI or ISO 3166-3 code MIUM" #-}
{-# DEPRECATED NHB "Use new code VUT or ISO 3166-3 code NHVU" #-}
{-# DEPRECATED PCI "Divided into FSM, MHL, MNP and PLW, or use ISO 3166-3 code PCHH" #-}
{-# DEPRECATED PCZ "Use new code PAN or ISO 3166-3 code PZPA" #-}
{-# DEPRECATED PHI "Use new code PHL" #-}
{-# DEPRECATED PUS "Use new code UMI or ISO 3166-3 code PUUM" #-}
{-# DEPRECATED RHO "Use new code ZWE or ISO 3166-3 code RHZW" #-}
{-# DEPRECATED SKM "Use new code IND or ISO 3166-3 code SKIN" #-}
{-# DEPRECATED VDR "Use new code VNM or ISO 3166-3 code VDVN" #-}
{-# DEPRECATED WAK "Use new code UMI or ISO 3166-3 code WKUM" #-}
{-# DEPRECATED YMD "Use new code YEM or ISO 3166-3 code YDYE" #-}

-- | The official codes for countries with less collisions and therefore more
-- similar to the full name, translated into a type-safe representation.  Unless
-- otherwise specified, all codes are 'Official'.
data Alpha3
    = ABW  -- ^ Aruba
    | ADN  -- ^ 'IndeterminateReservation': Aden (road vehicles)
    | AFG  -- ^ Afghanistan
    | AFI  -- ^ 'Withdrawn': French Afar and Issas
    | AGO  -- ^ Angola
    | AIA  -- ^ Anguilla
    | ALA  -- ^ Åland Islands
    | ALB  -- ^ Albania
    | AND  -- ^ Andorra
    | ANT  -- ^ 'TransitionalReservation': Netherlands Antilles
    | ARE  -- ^ United Arab Emirates (the)
    | ARG  -- ^ Argentina
    | ARM  -- ^ Armenia
    | ASC  -- ^ 'ExceptionalReservation': Ascension Island
    | ASM  -- ^ American Samoa
    | ATA  -- ^ Antarctica
    | ATB  -- ^ 'Withdrawn': British Antarctic Territory (the)
    | ATF  -- ^ French Southern Territories (the)
    | ATG  -- ^ Antigua and Barbuda
    | ATN  -- ^ 'Withdrawn': Dronning Maud Land
    | AUS  -- ^ Australia
    | AUT  -- ^ Austria
    | AZE  -- ^ Azerbaijan

    | BDI  -- ^ Burundi
    | BDS  -- ^ 'IndeterminateReservation': Barbados (road vehicles)
    | BEL  -- ^ Belgium
    | BEN  -- ^ Benin
    | BES  -- ^ Bonaire, Sint Eustatius and Saba
    | BFA  -- ^ Burkina Faso
    | BGD  -- ^ Bangladesh
    | BGR  -- ^ Bulgaria
    | BHR  -- ^ Bahrain
    | BHS  -- ^ Bahamas (the)
    | BIH  -- ^ Bosnia and Herzegovina
    | BLM  -- ^ Saint Barthélemy
    | BLR  -- ^ Belarus
    | BLZ  -- ^ Belize
    | BMU  -- ^ Bermuda
    | BOL  -- ^ Bolivia (Plurinational State of)
    | BRA  -- ^ Brazil
    | BRB  -- ^ Barbados
    | BRN  -- ^ Brunei Darussalam
    | BRU  -- ^ 'IndeterminateReservation': Brunai (road vehicles)
    | BTN  -- ^ Bhutan
    | BUR  -- ^ 'TransitionalReservation': Burma
    | BVT  -- ^ Bouvet Island
    | BWA  -- ^ Botswana
    | BYS  -- ^ 'TransitionalReservation': Byelorussian SSR

    | CAF  -- ^ Central African Republic (the)
    | CAN  -- ^ Canada
    | CCK  -- ^ Cocos (Keeling) Islands (the)
    | CDN  -- ^ 'IndeterminateReservation': Canada (road vehicles)
    | CHE  -- ^ Switzerland
    | CHL  -- ^ Chile
    | CHN  -- ^ China
    | CIV  -- ^ Côte d'Ivoire
    | CMR  -- ^ Cameroon
    | COD  -- ^ Congo (the Democratic Republic of the)
    | COG  -- ^ Congo (the)
    | COK  -- ^ Cook Islands (the)
    | COL  -- ^ Colombia
    | COM  -- ^ Comoros (the)
    | CPT  -- ^ 'ExceptionalReservation': Clipperton Island
    | CPV  -- ^ Cabo Verde
    | CRI  -- ^ Costa Rica
    | CSK  -- ^ 'TransitionalReservation': Czechoslovakia
    | CTE  -- ^ 'Withdrawn': Canton and Enderbury Islands (the)
    | CUB  -- ^ Cuba
    | CUW  -- ^ Curaçao
    | CXR  -- ^ Christmas Island
    | CYM  -- ^ Cayman Islands (the)
    | CYP  -- ^ Cyprus
    | CZE  -- ^ Czechia

    | DDR  -- ^ 'Withdrawn': German Democratic Republic (the)
    | DEU  -- ^ Germany
    | DGA  -- ^ 'ExceptionalReservation': Diego Garcia
    | DHY  -- ^ 'Withdrawn': Dahomey
    | DJI  -- ^ Djibouti
    | DMA  -- ^ Dominica
    | DNK  -- ^ Denmark
    | DOM  -- ^ Dominican Republic (the)
    | DZA  -- ^ Algeria

    | EAK  -- ^ 'IndeterminateReservation': Kenya (road vehicles)
    | EAT  -- ^ 'IndeterminateReservation': Tanganyika (road vehicles)
    | EAU  -- ^ 'IndeterminateReservation': Uganda (road vehicles)
    | EAZ  -- ^ 'IndeterminateReservation': Zanzibar (road vehicles)
    | ECU  -- ^ Ecuador
    | EGY  -- ^ Egypt
    | ERI  -- ^ Eritrea
    | ESH  -- ^ Western Sahara
    | ESP  -- ^ Spain
    | EST  -- ^ Estonia
    | ETH  -- ^ Ethiopia

    | FIN  -- ^ Finland
    | FJI  -- ^ Fiji
    | FLK  -- ^ Falkland Islands (the) [Malvinas]
    | FRA  -- ^ France
    | FRO  -- ^ Faroe Islands (the)
    | FSM  -- ^ Micronesia (Federated States of)
    | FXX  -- ^ 'ExceptionalReservation': France, Metropolitan

    | GAB  -- ^ Gabon
    | GBA  -- ^ 'IndeterminateReservation': Alderney (road vehicles)
    | GBD  -- ^ 'NotInUse': British Overseas Territories (passport)
    | GBG  -- ^ 'IndeterminateReservation': Guernsey (road vehicles)
    | GBJ  -- ^ 'IndeterminateReservation': Jersey (road vehicles)
    | GBM  -- ^ 'IndeterminateReservation': Isle of Man (road vehicles)
    | GBN  -- ^ 'NotInUse': Overseas British national (passport)
    | GBO  -- ^ 'NotInUse': Overseas Britisn citizen (passport)
    | GBP  -- ^ 'NotInUse': British protected person (passport)
    | GBR  -- ^ United Kingdom of Great Britain and Northern Ireland (the)
    | GBS  -- ^ 'NotInUse': British subject (passport)
    | GBZ  -- ^ 'IndeterminateReservation': Gibraltar (road vehicles)
    | GCA  -- ^ 'IndeterminateReservation': Guatemala (road vehicles)
    | GEO  -- ^ Georgia
    | GEL  -- ^ 'Withdrawn': Gilbert and Ellice Islands (the)
    | GGY  -- ^ Guernsey
    | GHA  -- ^ Ghana
    | GIB  -- ^ Gibraltar
    | GIN  -- ^ Guinea
    | GLP  -- ^ Guadeloupe
    | GMB  -- ^ Gambia (the)
    | GNB  -- ^ Guinea-Bissau
    | GNQ  -- ^ Equatorial Guinea
    | GRC  -- ^ Greece
    | GRD  -- ^ Grenada
    | GRL  -- ^ Greenland
    | GTM  -- ^ Guatemala
    | GUF  -- ^ French Guiana
    | GUM  -- ^ Guam
    | GUY  -- ^ Guyana

    | HKJ  -- ^ 'IndeterminateReservation': Jordan (road vehicles)
    | HKG  -- ^ Hong Kong
    | HMD  -- ^ Heard Island and McDonald Islands
    | HND  -- ^ Honduras
    | HRV  -- ^ Croatia
    | HTI  -- ^ Haiti
    | HUN  -- ^ Hungary
    | HVO  -- ^ 'Withdrawn': Upper Volta

    | IDN  -- ^ Indonesia
    | IMN  -- ^ Isle of Man
    | IND  -- ^ India
    | IOT  -- ^ British Indian Ocean Territory (the)
    | IRL  -- ^ Ireland
    | IRN  -- ^ Iran (Islamic Republic of)
    | IRQ  -- ^ Iraq
    | ISL  -- ^ Iceland
    | ISR  -- ^ Israel
    | ITA  -- ^ Italy

    | JAM  -- ^ Jamaica
    | JEY  -- ^ Jersey
    | JOR  -- ^ Jordan
    | JPN  -- ^ Japan
    | JTN  -- ^ 'Withdrawn': Johnston Island

    | KAZ  -- ^ Kazakhstan
    | KEN  -- ^ Kenya
    | KGZ  -- ^ Kyrgyzstan
    | KHM  -- ^ Cambodia
    | KIR  -- ^ Kiribati
    | KNA  -- ^ Saint Kitts and Nevis
    | KOR  -- ^ Korea (the Republic of)
    | KWT  -- ^ Kuwait

    | LAO  -- ^ Lao People's Democratic Republic (the)
    | LBN  -- ^ Lebanon
    | LBR  -- ^ Liberia
    | LBY  -- ^ Libya
    | LCA  -- ^ Saint Lucia
    | LIE  -- ^ Liechtenstein
    | LKA  -- ^ Sri Lanka
    | LSO  -- ^ Lesotho
    | LTU  -- ^ Lithuania
    | LUX  -- ^ Luxembourg
    | LVA  -- ^ Latvia

    | MAC  -- ^ Macao
    | MAF  -- ^ Saint Martin (French part)
    | MAL  -- ^ 'IndeterminateReservation': Malaysia (road vehicles)
    | MAR  -- ^ Morocco
    | MCO  -- ^ Monaco
    | MDA  -- ^ Moldova (the Republic of)
    | MDG  -- ^ Madagascar
    | MDV  -- ^ Maldives
    | MEX  -- ^ Mexico
    | MHL  -- ^ Marshall Islands (the)
    | MID  -- ^ 'Withdrawn': Midway Islands (the)
    | MKD  -- ^ Macedonia (the former Yugoslav Republic of)
    | MLI  -- ^ Mali
    | MLT  -- ^ Malta
    | MMR  -- ^ Myanmar
    | MNE  -- ^ Montenegro
    | MNG  -- ^ Mongolia
    | MNP  -- ^ Northern Mariana Islands (the)
    | MOZ  -- ^ Mozambique
    | MRT  -- ^ Mauritania
    | MSR  -- ^ Montserrat
    | MTQ  -- ^ Martinique
    | MUS  -- ^ Mauritius
    | MWI  -- ^ Malawi
    | MYS  -- ^ Malaysia
    | MYT  -- ^ Mayotte

    | NAM  -- ^ Namibia
    | NCL  -- ^ New Caledonia
    | NER  -- ^ Niger (the)
    | NFK  -- ^ Norfolk Island
    | NGA  -- ^ Nigeria
    | NHB  -- ^ 'Withdrawn': New Hebrides
    | NIC  -- ^ Nicaragua
    | NIU  -- ^ Niue
    | NLD  -- ^ Netherlands (the)
    | NOR  -- ^ Norway
    | NPL  -- ^ Nepal
    | NRU  -- ^ Nauru
    | NTZ  -- ^ 'TransitionalReservation': Saudi Arabian-Iraqi neutral zone (the)
    | NZL  -- ^ New Zealand

    | OMN  -- ^ Oman

    | PAK  -- ^ Pakistan
    | PAN  -- ^ Panama
    | PCN  -- ^ Pitcairn
    | PCI  -- ^ 'Withdrawn': Pacific Islands (Trust Territory of the)
    | PCZ  -- ^ 'Withdrawn': Panama Canal Zone (the)
    | PER  -- ^ Peru
    | PHI  -- ^ 'Withdrawn': Philippines
    | PHL  -- ^ Philippines (the)
    | PLW  -- ^ Palau
    | PNG  -- ^ Papua New Guinea
    | POL  -- ^ Poland
    | PRI  -- ^ Puerto Rico
    | PRK  -- ^ Korea (the Democratic People's Republic of)
    | PRT  -- ^ Portugal
    | PRY  -- ^ Paraguay
    | PSE  -- ^ Palestine, State of
    | PUS  -- ^ 'Withdrawn': United States Miscellaneous Pacific Islands (the)
    | PYF  -- ^ French Polynesia

    | QAT  -- ^ Qatar

    | RCA  -- ^ 'IndeterminateReservation': Central African Republic (road vehicles)
    | RCB  -- ^ 'IndeterminateReservation': Congo, People's Republic of (road vehicles)
    | RCH  -- ^ 'IndeterminateReservation': Chile (road vehicles)
    | REU  -- ^ Réunion
    | RHO  -- ^ 'Withdrawn': Southern Rhodesia
    | RMM  -- ^ 'IndeterminateReservation': Mali (road vehicles)
    | RNR  -- ^ 'IndeterminateReservation': Zambia (road vehicles)
    | ROK  -- ^ 'IndeterminateReservation': Korea, Republic of (road vehicles)
    | ROM  -- ^ 'TransitionalReservation': Romania
    | ROU  -- ^ Romania
    | RSM  -- ^ 'IndeterminateReservation': San Marino (road vehicles)
    | RSR  -- ^ 'IndeterminateReservation': Zimbabwe (road vehicles)
    | RUS  -- ^ Russian Federation (the)
    | RWA  -- ^ Rwanda

    | SAU  -- ^ Saudi Arabia
    | SCG  -- ^ 'TransitionalReservation': Serbia and Montenegro
    | SDN  -- ^ Sudan (the)
    | SEN  -- ^ Senegal
    | SGP  -- ^ Singapore
    | SGS  -- ^ South Georgia and the South Sandwich Islands
    | SHN  -- ^ Saint Helena, Ascension and Tristan da Cunha
    | SJM  -- ^ Svalbard and Jan Mayen
    | SKM  -- ^ 'Withdrawn': Sikkim
    | SLB  -- ^ Solomon Islands
    | SLE  -- ^ Sierra Leone
    | SLO  -- ^ 'IndeterminateReservation': Slovenia (road vehicles)
    | SLV  -- ^ El Salvador
    | SME  -- ^ 'IndeterminateReservation': Suriname (road vehicles)
    | SMR  -- ^ San Marino
    | SOM  -- ^ Somalia
    | SPM  -- ^ Saint Pierre and Miquelon
    | SRB  -- ^ Serbia
    | SSD  -- ^ South Sudan
    | STP  -- ^ Sao Tome and Principe
    | SUN  -- ^ 'ExceptionalReservation': USSR (the)
    | SUR  -- ^ Suriname
    | SVK  -- ^ Slovakia
    | SVN  -- ^ Slovenia
    | SWE  -- ^ Sweden
    | SWZ  -- ^ Eswatini
    | SXM  -- ^ Sint Maarten (Dutch part)
    | SYC  -- ^ Seychelles
    | SYR  -- ^ Syrian Arab Republic

    | TAA  -- ^ 'ExceptionalReservation': Tristan da Cunha
    | TCA  -- ^ Turks and Caicos Islands (the)
    | TCD  -- ^ Chad
    | TGO  -- ^ Togo
    | THA  -- ^ Thailand
    | TJK  -- ^ Tajikistan
    | TKL  -- ^ Tokelau
    | TKM  -- ^ Turkmenistan
    | TLS  -- ^ Timor-Leste
    | TMN  -- ^ 'IndeterminateReservation': Turkmenistan (road vehicles)
    | TMP  -- ^ 'TransitionalReservation': East Timor
    | TON  -- ^ Tonga
    | TTO  -- ^ Trinidad and Tobago
    | TUN  -- ^ Tunisia
    | TUR  -- ^ Turkey
    | TUV  -- ^ Tuvalu
    | TWN  -- ^ Taiwan (Province of China)
    | TZA  -- ^ Tanzania, United Republic of

    | UGA  -- ^ Uganda
    | UKR  -- ^ Ukraine
    | UMI  -- ^ United States Minor Outlying Islands (the)
    | UNA  -- ^ 'NotInUse': United Nations Specialized Agency (passport)
    | UNK  -- ^ 'NotInUse': United Nations Interim Administration in Kosovo (passport)
    | UNO  -- ^ 'NotInUse': United Nations (passport)
    | URY  -- ^ Uruguay
    | USA  -- ^ United States of America (the)
    | UZB  -- ^ Uzbekistan

    | VAT  -- ^ Holy See (the)
    | VCT  -- ^ Saint Vincent and the Grenadines
    | VDR  -- ^ 'Withdrawn': Viet Nam (Democratic Republic of)
    | VEN  -- ^ Venezuela (Bolivarian Republic of)
    | VGB  -- ^ Virgin Islands (British)
    | VIR  -- ^ Virgin Islands (U.S.)
    | VNM  -- ^ Viet Nam
    | VUT  -- ^ Vanuatu

    | WAG  -- ^ 'IndeterminateReservation': Gambia (road vehicles)
    | WAK  -- ^ 'Withdrawn': Wake Island
    | WAL  -- ^ 'IndeterminateReservation': Sierra Leone (road vehicles)
    | WAN  -- ^ 'IndeterminateReservation': Nigeria (road vehicles)
    | WLF  -- ^ Wallis and Futuna
    | WSM  -- ^ Samoa

    | YEM  -- ^ Yemen
    | YMD  -- ^ 'Withdrawn': Yemen (Democratic)
    | YUG  -- ^ 'TransitionalReservation': Yugoslavia

    | ZAF  -- ^ South Africa
    | ZAR  -- ^ 'TransitionalReservation': Zaire
    | ZMB  -- ^ Zambia
    | ZRE  -- ^ 'IndeterminateReservation': Zaire (road vehicles)
    | ZWE  -- ^ Zimbabwe
  deriving ( Eq, Show, Read, Ord, Enum, Bounded )

instance H.Hashable Alpha3 where
    hashWithSalt = H.hashUsing fromEnum

-- | The stability of any particular country code.
codeStatus :: Alpha3 -> Status
codeStatus ADN = IndeterminateReservation
codeStatus AFI = Withdrawn
codeStatus ANT = TransitionalReservation
codeStatus ASC = ExceptionalReservation
codeStatus ATB = Withdrawn
codeStatus ATN = Withdrawn
codeStatus BDS = IndeterminateReservation
codeStatus BRU = IndeterminateReservation
codeStatus BUR = TransitionalReservation
codeStatus BYS = TransitionalReservation
codeStatus CDN = IndeterminateReservation
codeStatus CPT = ExceptionalReservation
codeStatus CSK = TransitionalReservation
codeStatus CTE = Withdrawn
codeStatus DDR = Withdrawn
codeStatus DGA = ExceptionalReservation
codeStatus DHY = Withdrawn
codeStatus EAK = IndeterminateReservation
codeStatus EAT = IndeterminateReservation
codeStatus EAU = IndeterminateReservation
codeStatus EAZ = IndeterminateReservation
codeStatus FXX = ExceptionalReservation
codeStatus GBA = IndeterminateReservation
codeStatus GBD = NotInUse
codeStatus GBG = IndeterminateReservation
codeStatus GBJ = IndeterminateReservation
codeStatus GBM = IndeterminateReservation
codeStatus GBN = NotInUse
codeStatus GBO = NotInUse
codeStatus GBP = NotInUse
codeStatus GBS = NotInUse
codeStatus GBZ = IndeterminateReservation
codeStatus GCA = IndeterminateReservation
codeStatus GEL = Withdrawn
codeStatus HKJ = IndeterminateReservation
codeStatus HVO = Withdrawn
codeStatus JTN = Withdrawn
codeStatus MAL = IndeterminateReservation
codeStatus MID = Withdrawn
codeStatus NHB = Withdrawn
codeStatus NTZ = TransitionalReservation
codeStatus PCI = Withdrawn
codeStatus PCZ = Withdrawn
codeStatus PHI = Withdrawn
codeStatus PUS = Withdrawn
codeStatus RCA = IndeterminateReservation
codeStatus RCB = IndeterminateReservation
codeStatus RCH = IndeterminateReservation
codeStatus RHO = Withdrawn
codeStatus RMM = IndeterminateReservation
codeStatus RNR = IndeterminateReservation
codeStatus ROK = IndeterminateReservation
codeStatus ROM = TransitionalReservation
codeStatus RSM = IndeterminateReservation
codeStatus RSR = IndeterminateReservation
codeStatus SCG = TransitionalReservation
codeStatus SKM = Withdrawn
codeStatus SLO = IndeterminateReservation
codeStatus SME = IndeterminateReservation
codeStatus SUN = ExceptionalReservation
codeStatus TAA = ExceptionalReservation
codeStatus TMN = IndeterminateReservation
codeStatus TMP = TransitionalReservation
codeStatus UNA = NotInUse
codeStatus UNK = NotInUse
codeStatus UNO = NotInUse
codeStatus VDR = Withdrawn
codeStatus WAG = IndeterminateReservation
codeStatus WAK = Withdrawn
codeStatus WAL = IndeterminateReservation
codeStatus WAN = IndeterminateReservation
codeStatus YMD = Withdrawn
codeStatus YUG = TransitionalReservation
codeStatus ZAR = TransitionalReservation
codeStatus ZRE = IndeterminateReservation
codeStatus _ = Official