# LBR_2_human_2006_population.properties 
#
# This file contains population values for LIBERIA
#
#
#
# /*********************************************************************************************
#
# * Copyright (c) 2006 IBM Corporation and others.
#
# * All rights reserved. This program and the accompanying materials
#
# * are made available under the terms of the Eclipse Public License v1.0
#
# * which accompanies this distribution, and is available at
#
# * http://www.eclipse.org/legal/epl-v10.html
#
# *
#
# * Contributors:
#
# *     IBM Corporation - initial API and implementation
#
# ***********************************************************************************************/
#
#
#
# /**********************************************************************************************
#
# * 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. 
#
# ************************************************************************************************/
#
#
#
# This is the name of the class that will interpret the rest of the file's contents
#
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.CountryPopulationLabelPropertyFileSpecification
#
#
#
# The ISO-3166-1 alpha3 code for the country
#
ISOKEY = LBR
#
#
#
# The administration level of the population data
#
ADMIN_LEVEL = 2
#
#
#
# This is the date range for which the population values in this file are valid 
#
# See http://purl.org/dc/terms/1.1/valid
#
VALID = start=2006-01-01; end=2006-12-31;
#
#
#
# This is the source of the data
#
SOURCE = Primary (https://www.cia.gov/library/publications/the-world-factbook/). 
#
# SOURCE = Distributions (subdivision ratios) validated against ORNL LandScan 2007(TM)/UT-Battelle, LLC 
#
# SOURCE = http://www.statoids.com/ulr.html
#
# SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
#
#
#
# The population identifier
#
POPULATION = human
#
#
#
# The year the data is valid
#
YEAR = 2006
#
#
#
# Level 1 (admin 1 = e.g., state)
#
# Level 2 (admin 2 = e.g., county)
#
#
#
LR-BM-G010001 = 121043
LR-BM-G010002 = 6679
LR-CM-G040004 = 25225
LR-CM-G040003 = 8183
LR-CM-G040002 = 43549
LR-CM-G040001 = 47785
LR-MO-G110004 = 628955
LR-MO-G110003 = 71310
LR-MO-G110002 = 117985
LR-MO-G110001 = 48841
LR-NI-G120001 = 56276
LR-MO-G110006 = 72662
LR-NI-G120002 = 62715
LR-MO-G110005 = 107812
LR-RI-G130002 = 31266
LR-RI-G130001 = 11353
LR-LO-G070003 = 2933
LR-LO-G070004 = 121070
LR-BG-G020001 = 189755
LR-BG-G020002 = 12719
LR-LO-G070001 = 50014
LR-BG-G020003 = 19982
LR-LO-G070002 = 35198
LR-BG-G020004 = 97199
LR-BG-G020005 = 29063
LR-MR-G090002 = 7429
LR-MR-G090001 = 31424
LR-NI-G120006 = 74649
LR-NI-G120005 = 15270
LR-NI-G120004 = 59540
LR-NI-G120003 = 104019
LR-SI-G150002 = 14902
LR-SI-G150001 = 8693
LR-SI-G150004 = 13814
LR-SI-G150003 = 20335
LR-LO-G070006 = 102718
LR-LO-G070005 = 76447
LR-MY-G100003 = 56332
LR-GB-G030004 = 32095
LR-MY-G100002 = 25644
LR-GB-G030003 = 75827
LR-MY-G100001 = 12281
LR-GB-G030002 = 41245
LR-GB-G030001 = 39897
LR-SI-G150005 = 30137
LR-GB-G030005 = 41635
LR-SA-G140001 = 7490
LR-GG-G050004 = 20702
LR-GG-G050005 = 27146
LR-GG-G050002 = 20958
LR-GG-G050003 = 16332
LR-GK-G060002 = 15479
LR-GK-G060001 = 7672
LR-GG-G050001 = 22321

