# /**********************************************************************************************
# * Key Format: 
# * 
# * 	 For level 1 data, the key is the ISO3166-2 code. An ISO3166-2 code is composed as follows: 
# * a two letter country code followed by up to three alphanumeric characters for the level 1 administration.
# *
# * 	 For level 2 data, the key is the ISO3166-2 code followed by six digits. The leftmost two digits indicate
# * the level 1 container of a level 2 administration (i.e. California is a level 1 container for Orange County
# * which is a level 2 administration).  The two digits were taken from a lexicographic sorting of all the
# * level 1 administrations within a country. Similarly, the four leftmost digits indicate a level 2 administration.
# * Again, these four digits are an index into the lexicographic sorting of all level 2 administrations within 
# * a level 1 administration. 
# ************************************************************************************************/

# SAO TOME AND PRINCIPE_names.properties # Level 0
STP = Sao Tome and Principe

# Level 1 (admin 1 = e.g., state)
ST-P = Principe
ST-S = Sao Tome

# Level 2 (admin 2 = e.g., country)
# Generated key details :  Level 1 ( ST-P = PRINCIPE ). Level 2 ( 010001 = STP.L2.1 ). 
ST-P-G010001 = ST-P-G010001
# Generated key details :  Level 1 ( ST-S = SAO TOME ). Level 2 ( 020001 = STP.L2.2 ). 
ST-S-G020001 = ST-S-G020001
