diff --git a/README b/README index 0b66ef7..36188d3 100644 --- a/README +++ b/README @@ -2,4 +2,7 @@ Welcome to AntiBot GitHub! This is where AntiBot is hosted. -The latest version of AntiBot is found in the downloads section. \ No newline at end of file +The latest version of AntiBot is found in the downloads section. + +This product includes GeoLite data created by MaxMind, available from +http://maxmind.com/ \ No newline at end of file diff --git a/plugin.yml b/plugin.yml index 4e97f88..5a2e5e1 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,6 @@ name: AntiBot main: somebody.is.madbro.AntiBotCore -version: 2.5 +version: 2.6 description: The ultimate spam protection for Minecraft. commands: antibot: @@ -13,7 +13,13 @@ permissions: description: Notifies the player if there is a current invasion. AntiBot.join: default: false - description: IMPORTANT! Allows players to bypass the spam system and join during invasions. Works well with AntiBot.notify. + description: Allow users to bypass anti bot spam. + AntiBot.chatspam: + default: false + description: Allows users to bypass anti chat spam. + AntiBot.countryban: + default: false + description: Users with this permission can join the server if their home country is banned from the server. AntiBot.admin: default: false description: Full permissions! Don't give this to your admins. Use the alternatives below. diff --git a/src/com/maxmind/geoip/Country.java b/src/com/maxmind/geoip/Country.java new file mode 100644 index 0000000..d250eb7 --- /dev/null +++ b/src/com/maxmind/geoip/Country.java @@ -0,0 +1,61 @@ +/** + * Country.java + * + * Copyright (C) 2003 MaxMind LLC. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +package com.maxmind.geoip; + +/** + * Represents a country. + * + * @author Matt Tucker + */ +public class Country { + + private String code; + private String name; + + /** + * Creates a new Country. + * + * @param code the country code. + * @param name the country name. + */ + public Country(String code, String name) { + this.code = code; + this.name = name; + } + + /** + * Returns the ISO two-letter country code of this country. + * + * @return the country code. + */ + public String getCode() { + return code; + } + + /** + * Returns the name of this country. + * + * @return the country name. + */ + public String getName() { + return name; + } +} diff --git a/src/com/maxmind/geoip/DatabaseInfo.java b/src/com/maxmind/geoip/DatabaseInfo.java new file mode 100644 index 0000000..8771b77 --- /dev/null +++ b/src/com/maxmind/geoip/DatabaseInfo.java @@ -0,0 +1,127 @@ +/** + * DatabaseInfo.java + * + * Copyright (C) 2003 MaxMind LLC. All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +package com.maxmind.geoip; + +import java.util.Date; +import java.text.SimpleDateFormat; +import java.text.ParseException; + +/** + * Encapsulates metadata about the GeoIP database. The database has a date, is a premium or + * standard version, and is one of the following types: + * + * + * + * @see com.maxmind.geoip.LookupService#getDatabaseInfo() + * @author Matt Tucker + */ +public class DatabaseInfo { + + public final static int COUNTRY_EDITION = 1; + public final static int REGION_EDITION_REV0 = 7; + public final static int REGION_EDITION_REV1 = 3; + public final static int CITY_EDITION_REV0 = 6; + public final static int CITY_EDITION_REV1 = 2; + public final static int ORG_EDITION = 5; + public final static int ISP_EDITION = 4; + public final static int PROXY_EDITION = 8; + public final static int ASNUM_EDITION = 9; + public final static int NETSPEED_EDITION = 10; + public final static int DOMAIN_EDITION = 11; + public final static int COUNTRY_EDITION_V6 = 12; + public final static int ASNUM_EDITION_V6 = 21; + public final static int ISP_EDITION_V6 = 22; + public final static int ORG_EDITION_V6 = 23; + public final static int DOMAIN_EDITION_V6 = 24; + public final static int CITY_EDITION_REV1_V6 = 30; + public final static int CITY_EDITION_REV0_V6 = 31; + public final static int NETSPEED_EDITION_REV1 = 32; + public final static int NETSPEED_EDITION_REV1_V6 = 33; + + +private static SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + + private String info; + + /** + * Creates a new DatabaseInfo object given the database info String. + * @param info + */ + public DatabaseInfo(String info) { + this.info = info; + } + + public int getType() { + if (info == null || info.equals("")) { + return COUNTRY_EDITION; + } + else { + // Get the type code from the database info string and then + // subtract 105 from the value to preserve compatability with + // databases from April 2003 and earlier. + return Integer.parseInt(info.substring(4, 7)) - 105; + } + } + + /** + * Returns true if the database is the premium version. + * + * @return true if the premium version of the database. + */ + public boolean isPremium() { + return info.indexOf("FREE") < 0; + } + + /** + * Returns the date of the database. + * + * @return the date of the database. + */ + public Date getDate() { + for (int i=0; i + * + * The following code snippet demonstrates looking up the country that an IP + * address is from: + *
+ * // First, create a LookupService instance with the location of the database.
+ * LookupService lookupService = new LookupService("c:\\geoip.dat");
+ * // Assume we have a String ipAddress (in dot-decimal form).
+ * Country country = lookupService.getCountry(ipAddress);
+ * System.out.println("The country is: " + country.getName());
+ * System.out.println("The country code is: " + country.getCode());
+ * 
+ * + * In general, a single LookupService instance should be created and then reused + * repeatedly.

+ * + * Tip: Those deploying the GeoIP API as part of a web application may find it + * difficult to pass in a File to create the lookup service, as the location of the + * database may vary per deployment or may even be part of the web-application. In this + * case, the database should be added to the classpath of the web-app. For example, by + * putting it into the WEB-INF/classes directory of the web application. The following code + * snippet demonstrates how to create a LookupService using a database that can be found + * on the classpath: + * + *

+ * String fileName = getClass().getResource("/GeoIP.dat").toExternalForm().substring(6);
+ * LookupService lookupService = new LookupService(fileName);
+ * + * @author Matt Tucker (matt@jivesoftware.com) + */ +public class LookupService { + + /** + * Database file. + */ + private RandomAccessFile file = null; + private File databaseFile = null; + + /** + * Information about the database. + */ + private DatabaseInfo databaseInfo = null; + + /** + * The database type. Default is the country edition. + */ + byte databaseType = DatabaseInfo.COUNTRY_EDITION; + + int databaseSegments[]; + int recordLength; + + String licenseKey; + int dnsService = 0; + int dboptions; + byte dbbuffer[]; + byte index_cache[]; + long mtime; + int last_netmask; + private final static int US_OFFSET = 1; + private final static int CANADA_OFFSET = 677; + private final static int WORLD_OFFSET = 1353; + private final static int FIPS_RANGE = 360; + private final static int COUNTRY_BEGIN = 16776960; + private final static int STATE_BEGIN_REV0 = 16700000; + private final static int STATE_BEGIN_REV1 = 16000000; + private final static int STRUCTURE_INFO_MAX_SIZE = 20; + private final static int DATABASE_INFO_MAX_SIZE = 100; + public final static int GEOIP_STANDARD = 0; + public final static int GEOIP_MEMORY_CACHE = 1; + public final static int GEOIP_CHECK_CACHE = 2; + public final static int GEOIP_INDEX_CACHE = 4; + public final static int GEOIP_UNKNOWN_SPEED = 0; + public final static int GEOIP_DIALUP_SPEED = 1; + public final static int GEOIP_CABLEDSL_SPEED = 2; + public final static int GEOIP_CORPORATE_SPEED = 3; + + + private final static int SEGMENT_RECORD_LENGTH = 3; + private final static int STANDARD_RECORD_LENGTH = 3; + private final static int ORG_RECORD_LENGTH = 4; + private final static int MAX_RECORD_LENGTH = 4; + + private final static int MAX_ORG_RECORD_LENGTH = 300; + private final static int FULL_RECORD_LENGTH = 60; + + private final Country UNKNOWN_COUNTRY = new Country("--", "N/A"); + + private static final HashMap hashmapcountryCodetoindex = new HashMap(512); + private static final HashMap hashmapcountryNametoindex = new HashMap(512); + private static final String[] countryCode = { + "--","AP","EU","AD","AE","AF","AG","AI","AL","AM","CW", + "AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB", + "BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO", + "BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD", + "CF","CG","CH","CI","CK","CL","CM","CN","CO","CR", + "CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO", + "DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ", + "FK","FM","FO","FR","SX","GA","GB","GD","GE","GF", + "GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT", + "GU","GW","GY","HK","HM","HN","HR","HT","HU","ID", + "IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO", + "JP","KE","KG","KH","KI","KM","KN","KP","KR","KW", + "KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT", + "LU","LV","LY","MA","MC","MD","MG","MH","MK","ML", + "MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV", + "MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI", + "NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF", + "PG","PH","PK","PL","PM","PN","PR","PS","PT","PW", + "PY","QA","RE","RO","RU","RW","SA","SB","SC","SD", + "SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO", + "SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH", + "TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW", + "TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE", + "VG","VI","VN","VU","WF","WS","YE","YT","RS","ZA", + "ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE", + "BL","MF", "BQ"}; + + private static final String[] countryName = { + "N/A","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Curacao", + "Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados", + "Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia", + "Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the", + "Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica", + "Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic", + "Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji", + "Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","Sint Maarten (Dutch part)","Gabon","United Kingdom","Grenada","Georgia","French Guiana", + "Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala", + "Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia", + "Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan", + "Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait", + "Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania", + "Luxembourg","Latvia","Libya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali", + "Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives", + "Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua", + "Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia", + "Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau", + "Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan", + "Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname", + "Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand", + "Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan", + "Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela", + "Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa", + "Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey", + "Saint Barthelemy","Saint Martin", "Bonaire, Saint Eustatius and Saba" + }; + + + /* init the hashmap once at startup time */ + static { + int i; + if(countryCode.length!=countryName.length) + throw new AssertionError("countryCode.length!=countryName.length"); + + // distributed service only + for (i = 0; i < countryCode.length ;i++){ + hashmapcountryCodetoindex.put(countryCode[i],Integer.valueOf(i)); + hashmapcountryNametoindex.put(countryName[i],Integer.valueOf(i)); + } + }; + + + /** + * Create a new distributed lookup service using the license key + * + * @param databaseFile String representation of the database file. + * @param licenseKey license key provided by Maxmind to access distributed service + */ + public LookupService(String databaseFile,String licenseKey) throws IOException { + this(new File(databaseFile)); + this.licenseKey = licenseKey; + dnsService = 1; + } + /** + * Create a new distributed lookup service using the license key + * + * @param databaseFile the database file. + * @param licenseKey license key provided by Maxmind to access distributed service + */ + public LookupService(File databaseFile,String licenseKey) throws IOException { + this(databaseFile); + this.licenseKey = licenseKey; + dnsService = 1; + } + /** + * Create a new distributed lookup service using the license key + * + * @param options Resevered for future use + * @param licenseKey license key provided by Maxmind to access distributed service + */ + public LookupService(int options,String licenseKey) throws IOException { + this.licenseKey = licenseKey; + dnsService = 1; + init(); + } + /** + * Create a new lookup service using the specified database file. + * + * @param databaseFile String representation of the database file. + * @throws java.io.IOException if an error occured creating the lookup service + * from the database file. + */ + public LookupService(String databaseFile) throws IOException { + this(new File(databaseFile)); + } + + /** + * Create a new lookup service using the specified database file. + * + * @param databaseFile the database file. + * @throws java.io.IOException if an error occured creating the lookup service + * from the database file. + */ + public LookupService(File databaseFile) throws IOException { + this.databaseFile = databaseFile; + this.file = new RandomAccessFile(databaseFile, "r"); + init(); + } + + /** + * Create a new lookup service using the specified database file. + * + * @param databaseFile String representation of the database file. + * @param options database flags to use when opening the database + * GEOIP_STANDARD read database from disk + * GEOIP_MEMORY_CACHE cache the database in RAM and read it from RAM + * @throws java.io.IOException if an error occured creating the lookup service + * from the database file. + */ + public LookupService(String databaseFile, int options) throws IOException{ + this(new File(databaseFile),options); + } + + /** + * Create a new lookup service using the specified database file. + * + * @param databaseFile the database file. + * @param options database flags to use when opening the database + * GEOIP_STANDARD read database from disk + * GEOIP_MEMORY_CACHE cache the database in RAM and read it from RAM + * @throws java.io.IOException if an error occured creating the lookup service + * from the database file. + */ + public LookupService(File databaseFile, int options) throws IOException{ + this.databaseFile = databaseFile; + this.file = new RandomAccessFile(databaseFile, "r"); + dboptions = options; + init(); + } + /** + * Reads meta-data from the database file. + * + * @throws java.io.IOException if an error occurs reading from the database file. + */ + private void init() throws IOException { + int i, j; + byte [] delim = new byte[3]; + byte [] buf = new byte[SEGMENT_RECORD_LENGTH]; + + if (file == null) { + return; + } + if ((dboptions & GEOIP_CHECK_CACHE) != 0) { + mtime = databaseFile.lastModified(); + } + file.seek(file.length() - 3); + for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) { + file.readFully(delim); + if (delim[0] == -1 && delim[1] == -1 && delim[2] == -1) { + databaseType = file.readByte(); + if (databaseType >= 106) { + // Backward compatibility with databases from April 2003 and earlier + databaseType -= 105; + } + // Determine the database type. + if (databaseType == DatabaseInfo.REGION_EDITION_REV0) { + databaseSegments = new int[1]; + databaseSegments[0] = STATE_BEGIN_REV0; + recordLength = STANDARD_RECORD_LENGTH; + }else if (databaseType == DatabaseInfo.REGION_EDITION_REV1){ + databaseSegments = new int[1]; + databaseSegments[0] = STATE_BEGIN_REV1; + recordLength = STANDARD_RECORD_LENGTH; + } + else if (databaseType == DatabaseInfo.CITY_EDITION_REV0 || + databaseType == DatabaseInfo.CITY_EDITION_REV1 || + databaseType == DatabaseInfo.ORG_EDITION || + databaseType == DatabaseInfo.ORG_EDITION_V6 || + databaseType == DatabaseInfo.ISP_EDITION || + databaseType == DatabaseInfo.ISP_EDITION_V6 || + databaseType == DatabaseInfo.DOMAIN_EDITION || + databaseType == DatabaseInfo.DOMAIN_EDITION_V6 || + databaseType == DatabaseInfo.ASNUM_EDITION || + databaseType == DatabaseInfo.ASNUM_EDITION_V6 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV0_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV1_V6 + ) { + databaseSegments = new int[1]; + databaseSegments[0] = 0; + if (databaseType == DatabaseInfo.CITY_EDITION_REV0 || + databaseType == DatabaseInfo.CITY_EDITION_REV1 || + databaseType == DatabaseInfo.ASNUM_EDITION_V6 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1 || + databaseType == DatabaseInfo.NETSPEED_EDITION_REV1_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV0_V6 || + databaseType == DatabaseInfo.CITY_EDITION_REV1_V6 || + databaseType == DatabaseInfo.ASNUM_EDITION) { + recordLength = STANDARD_RECORD_LENGTH; + } + else { + recordLength = ORG_RECORD_LENGTH; + } + file.readFully(buf); + for (j = 0; j < SEGMENT_RECORD_LENGTH; j++) { + databaseSegments[0] += (unsignedByteToInt(buf[j]) << (j * 8)); + } + } + break; + } + else { + file.seek(file.getFilePointer() - 4); + } + } + if ((databaseType == DatabaseInfo.COUNTRY_EDITION) || + (databaseType == DatabaseInfo.COUNTRY_EDITION_V6) || + (databaseType == DatabaseInfo.PROXY_EDITION) || + (databaseType == DatabaseInfo.NETSPEED_EDITION)) { + databaseSegments = new int[1]; + databaseSegments[0] = COUNTRY_BEGIN; + recordLength = STANDARD_RECORD_LENGTH; + } + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + int l = (int) file.length(); + dbbuffer = new byte[l]; + file.seek(0); + file.readFully(dbbuffer,0,l); + databaseInfo = this.getDatabaseInfo(); + file.close(); + } + if ((dboptions & GEOIP_INDEX_CACHE) != 0) { + int l = databaseSegments[0] * recordLength * 2; + index_cache = new byte[l]; + if (index_cache != null){ + file.seek(0); + file.readFully(index_cache,0,l); + } + } else { + index_cache = null; + } + } + + /** + * Closes the lookup service. + */ + public void close() { + try { + if (file != null){ + file.close(); + } + file = null; + } + catch (Exception e) { } + } + + /** + * Returns the country the IP address is in. + * + * @param ipAddress String version of an IPv6 address, i.e. "::127.0.0.1" + * @return the country the IP address is from. + */ + public Country getCountryV6(String ipAddress) { + InetAddress addr; + try { + addr = Inet6Address.getByName(ipAddress); + } + catch (UnknownHostException e) { + return UNKNOWN_COUNTRY; + } + return getCountryV6(addr); + } + + /** + * Returns the country the IP address is in. + * + * @param ipAddress String version of an IP address, i.e. "127.0.0.1" + * @return the country the IP address is from. + */ + public Country getCountry(String ipAddress) { + InetAddress addr; + try { + addr = InetAddress.getByName(ipAddress); + } + catch (UnknownHostException e) { + return UNKNOWN_COUNTRY; + } + return getCountry(bytesToLong(addr.getAddress())); + } + + /** + * Returns the country the IP address is in. + * + * @param ipAddress the IP address. + * @return the country the IP address is from. + */ + public synchronized Country getCountry(InetAddress ipAddress) { + return getCountry(bytesToLong(ipAddress.getAddress())); + } + + /** + * Returns the country the IP address is in. + * + * @param addr the IP address as Inet6Address. + * @return the country the IP address is from. + */ + public Country getCountryV6(InetAddress addr) { + if (file == null && (dboptions & GEOIP_MEMORY_CACHE) == 0) { + throw new IllegalStateException("Database has been closed."); + } + int ret = seekCountryV6(addr) - COUNTRY_BEGIN; + if (ret == 0) { + return UNKNOWN_COUNTRY; + } + else { + return new Country(countryCode[ret], countryName[ret]); + } + } + + /** + * Returns the country the IP address is in. + * + * @param ipAddress the IP address in long format. + * @return the country the IP address is from. + */ + public Country getCountry(long ipAddress) { + if (file == null && (dboptions & GEOIP_MEMORY_CACHE) == 0) { + throw new IllegalStateException("Database has been closed."); + } + int ret = seekCountry(ipAddress) - COUNTRY_BEGIN; + if (ret == 0) { + return UNKNOWN_COUNTRY; + } + else { + return new Country(countryCode[ret], countryName[ret]); + } + } + + public int getID(String ipAddress) { + InetAddress addr; + try { + addr = InetAddress.getByName(ipAddress); + } + catch (UnknownHostException e) { + return 0; + } + return getID(bytesToLong(addr.getAddress())); + } + + public int getID(InetAddress ipAddress) { + return getID(bytesToLong(ipAddress.getAddress())); + } + + public synchronized int getID(long ipAddress) { + if (file == null && (dboptions & GEOIP_MEMORY_CACHE) == 0) { + throw new IllegalStateException("Database has been closed."); + } + int ret = seekCountry(ipAddress) - databaseSegments[0]; + return ret; + } + + public int last_netmask() { + return this.last_netmask; + } + + public void netmask(int nm){ + this.last_netmask = nm; + } + + /** + * Returns information about the database. + * + * @return database info. + */ + public synchronized DatabaseInfo getDatabaseInfo() { + if (databaseInfo != null) { + return databaseInfo; + } + try { + _check_mtime(); + boolean hasStructureInfo = false; + byte [] delim = new byte[3]; + // Advance to part of file where database info is stored. + file.seek(file.length() - 3); + for (int i=0; i env = new Hashtable(); + env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory"); + // TODO don't specify ws1, instead use ns servers for s.maxmind.com + env.put("java.naming.provider.url","dns://ws1.maxmind.com/"); + + DirContext ictx = new InitialDirContext(env); + Attributes attrs = ictx.getAttributes(licenseKey + "." + ip + ".s.maxmind.com", new String[] {"txt"}); + //System.out.println(attrs.get("txt").get()); + String str = attrs.get("txt").get().toString(); + return str; + } + catch(NamingException e) { + // TODO fix this to handle exceptions + System.out.println("DNS error"); + return null; + } + + } + + public Location getLocationwithdnsservice(String str) { + Location record = new Location(); + String key; + String value; + StringTokenizer st = new StringTokenizer(str,";=\""); + while (st.hasMoreTokens()) { + key = st.nextToken(); + if (st.hasMoreTokens()) { + value = st.nextToken(); + } else { + value = "";} + if (key.equals("co")) { + Integer i = (Integer)hashmapcountryCodetoindex.get(value); + record.countryCode = value; + record.countryName = countryName[i.intValue()]; + } + if (key.equals("ci")) { + record.city = value; + } + if (key.equals("re")) { + record.region = value; + } + if (key.equals("zi")) { + record.postalCode = value; + } + // TODO, ISP and Organization + //if (key.equals("or")) { + //record.org = value; + //} + //if (key.equals("is")) { + //record.isp = value; + //} + if (key.equals("la")) { + try{ + record.latitude = Float.parseFloat(value); + } catch(NumberFormatException e) { + record.latitude = 0; + } + } + if (key.equals("lo")) { + try{ + record.longitude = Float.parseFloat(value); + } catch(NumberFormatException e) { + record.latitude = 0; + } + } + // dm depreciated use me ( metro_code ) instead + if (key.equals("dm") || key.equals("me")) { + try{ + record.metro_code = record.dma_code = Integer.parseInt(value); + } catch(NumberFormatException e) { + record.metro_code = record.dma_code = 0; + } + } + if (key.equals("ac")) { + try{ + record.area_code = Integer.parseInt(value); + } catch(NumberFormatException e) { + record.area_code = 0; + } + } + } + return record; + } + + public synchronized Region getRegion(String str) { + InetAddress addr; + try { + addr = InetAddress.getByName(str); + } + catch (UnknownHostException e) { + return null; + } + + return getRegion(bytesToLong(addr.getAddress())); + } + + public synchronized Region getRegion(long ipnum) { + Region record = new Region(); + int seek_region = 0; + if (databaseType == DatabaseInfo.REGION_EDITION_REV0) { + seek_region = seekCountry(ipnum) - STATE_BEGIN_REV0; + char ch[] = new char[2]; + if (seek_region >= 1000) { + record.countryCode = "US"; + record.countryName = "United States"; + ch[0] = (char)(((seek_region - 1000)/26) + 65); + ch[1] = (char)(((seek_region - 1000)%26) + 65); + record.region = new String(ch); + } else { + record.countryCode = countryCode[seek_region]; + record.countryName = countryName[seek_region]; + record.region = ""; + } + } else if (databaseType == DatabaseInfo.REGION_EDITION_REV1) { + seek_region = seekCountry(ipnum) - STATE_BEGIN_REV1; + char ch[] = new char[2]; + if (seek_region < US_OFFSET) { + record.countryCode = ""; + record.countryName = ""; + record.region = ""; + } else if (seek_region < CANADA_OFFSET) { + record.countryCode = "US"; + record.countryName = "United States"; + ch[0] = (char)(((seek_region - US_OFFSET)/26) + 65); + ch[1] = (char)(((seek_region - US_OFFSET)%26) + 65); + record.region = new String(ch); + } else if (seek_region < WORLD_OFFSET) { + record.countryCode = "CA"; + record.countryName = "Canada"; + ch[0] = (char)(((seek_region - CANADA_OFFSET)/26) + 65); + ch[1] = (char)(((seek_region - CANADA_OFFSET)%26) + 65); + record.region = new String(ch); + } else { + record.countryCode = countryCode[(seek_region - WORLD_OFFSET) / FIPS_RANGE]; + record.countryName = countryName[(seek_region - WORLD_OFFSET) / FIPS_RANGE]; + record.region = ""; + } + } + return record; + } + + public synchronized Location getLocationV6(InetAddress addr) { + int record_pointer; + byte record_buf[] = new byte[FULL_RECORD_LENGTH]; + int record_buf_offset = 0; + Location record = new Location(); + int str_length = 0; + int j, seek_country; + double latitude = 0, longitude = 0; + + try { + seek_country = seekCountryV6(addr); + if (seek_country == databaseSegments[0]) { + return null; + } + record_pointer = seek_country + (2 * recordLength - 1) * databaseSegments[0]; + + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + //read from memory + System.arraycopy(dbbuffer, record_pointer, record_buf, 0, Math.min(dbbuffer.length - record_pointer, FULL_RECORD_LENGTH)); +} else { + //read from disk + file.seek(record_pointer); + file.readFully(record_buf); + } + + // get country + record.countryCode = countryCode[unsignedByteToInt(record_buf[0])]; + record.countryName = countryName[unsignedByteToInt(record_buf[0])]; + record_buf_offset++; + + // get region + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) { + record.region = new String(record_buf, record_buf_offset, str_length); + } + record_buf_offset += str_length + 1; + str_length = 0; + + // get city + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) { + record.city = new String(record_buf, record_buf_offset, str_length, "ISO-8859-1"); + } + record_buf_offset += str_length + 1; + str_length = 0; + + // get postal code + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) { + record.postalCode = new String(record_buf, record_buf_offset, str_length); + } + record_buf_offset += str_length + 1; + + // get latitude + for (j = 0; j < 3; j++) + latitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.latitude = (float) latitude/10000 - 180; + record_buf_offset += 3; + + // get longitude + for (j = 0; j < 3; j++) + longitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.longitude = (float) longitude/10000 - 180; + + record.dma_code = record.metro_code = 0; + record.area_code = 0; + if (databaseType == DatabaseInfo.CITY_EDITION_REV1) { + // get DMA code + int metroarea_combo = 0; + if (record.countryCode == "US") { + record_buf_offset += 3; + for (j = 0; j < 3; j++) + metroarea_combo += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.metro_code = record.dma_code = metroarea_combo/1000; + record.area_code = metroarea_combo % 1000; + } + } + } + catch (IOException e) { + System.err.println("IO Exception while seting up segments"); + } + return record; + } + + public synchronized Location getLocation(long ipnum) { + int record_pointer; + byte record_buf[] = new byte[FULL_RECORD_LENGTH]; + int record_buf_offset = 0; + Location record = new Location(); + int str_length = 0; + int j, seek_country; + double latitude = 0, longitude = 0; + + try { + seek_country = seekCountry(ipnum); + if (seek_country == databaseSegments[0]) { + return null; + } + record_pointer = seek_country + (2 * recordLength - 1) * databaseSegments[0]; + + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + //read from memory + System.arraycopy(dbbuffer, record_pointer, record_buf, 0, Math.min(dbbuffer.length - record_pointer, FULL_RECORD_LENGTH)); +} else { + //read from disk + file.seek(record_pointer); + file.readFully(record_buf); + } + + // get country + record.countryCode = countryCode[unsignedByteToInt(record_buf[0])]; + record.countryName = countryName[unsignedByteToInt(record_buf[0])]; + record_buf_offset++; + + // get region + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) { + record.region = new String(record_buf, record_buf_offset, str_length); + } + record_buf_offset += str_length + 1; + str_length = 0; + + // get city + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) { + record.city = new String(record_buf, record_buf_offset, str_length, "ISO-8859-1"); + } + record_buf_offset += str_length + 1; + str_length = 0; + + // get postal code + while (record_buf[record_buf_offset + str_length] != '\0') + str_length++; + if (str_length > 0) { + record.postalCode = new String(record_buf, record_buf_offset, str_length); + } + record_buf_offset += str_length + 1; + + // get latitude + for (j = 0; j < 3; j++) + latitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.latitude = (float) latitude/10000 - 180; + record_buf_offset += 3; + + // get longitude + for (j = 0; j < 3; j++) + longitude += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.longitude = (float) longitude/10000 - 180; + + record.dma_code = record.metro_code = 0; + record.area_code = 0; + if (databaseType == DatabaseInfo.CITY_EDITION_REV1) { + // get DMA code + int metroarea_combo = 0; + if (record.countryCode == "US") { + record_buf_offset += 3; + for (j = 0; j < 3; j++) + metroarea_combo += (unsignedByteToInt(record_buf[record_buf_offset + j]) << (j * 8)); + record.metro_code = record.dma_code = metroarea_combo/1000; + record.area_code = metroarea_combo % 1000; + } + } + } + catch (IOException e) { + System.err.println("IO Exception while seting up segments"); + } + return record; + } + + public String getOrg(InetAddress addr) { + return getOrg(bytesToLong(addr.getAddress())); + } + + public String getOrg(String str) { + InetAddress addr; + try { + addr = InetAddress.getByName(str); + } + catch (UnknownHostException e) { + return null; + } + return getOrg(addr); + } + + // GeoIP Organization and ISP Edition methods + public synchronized String getOrg(long ipnum) { + int seek_org; + int record_pointer; + int str_length = 0; + byte [] buf = new byte[MAX_ORG_RECORD_LENGTH]; + String org_buf; + + try { + seek_org = seekCountry(ipnum); + if (seek_org == databaseSegments[0]) { + return null; + } + + record_pointer = seek_org + (2 * recordLength - 1) * databaseSegments[0]; + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + //read from memory + System.arraycopy(dbbuffer, record_pointer, buf, 0, Math.min(dbbuffer.length - record_pointer, MAX_ORG_RECORD_LENGTH)); + } else { + //read from disk + file.seek(record_pointer); + try{ + // read as much as possible + file.readFully(buf); + } + catch(IOException e){} + } + while (buf[str_length] != '\0') { + str_length++; + } + org_buf = new String(buf, 0, str_length, "ISO-8859-1"); + return org_buf; + } + catch (IOException e) { + System.out.println("IO Exception"); + return null; + } + } + + + public String getOrgV6(String str) { + InetAddress addr; + try { + addr = InetAddress.getByName(str); + } + catch (UnknownHostException e) { + return null; + } + return getOrgV6(addr); + } + + // GeoIP Organization and ISP Edition methods + public synchronized String getOrgV6(InetAddress addr) { + int seek_org; + int record_pointer; + int str_length = 0; + byte [] buf = new byte[MAX_ORG_RECORD_LENGTH]; + String org_buf; + + try { + seek_org = seekCountryV6(addr); + if (seek_org == databaseSegments[0]) { + return null; + } + + record_pointer = seek_org + (2 * recordLength - 1) * databaseSegments[0]; + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + //read from memory + System.arraycopy(dbbuffer, record_pointer, buf, 0, Math.min(dbbuffer.length - record_pointer, MAX_ORG_RECORD_LENGTH)); + } else { + //read from disk + file.seek(record_pointer); + file.readFully(buf); + } + while (buf[str_length] != '\0') { + str_length++; + } + org_buf = new String(buf, 0, str_length, "ISO-8859-1"); + return org_buf; + } + catch (IOException e) { + System.out.println("IO Exception"); + return null; + } + } + + + + + /** + * Finds the country index value given an IPv6 address. + * + * @param addr the ip address to find in long format. + * @return the country index. + */ + private synchronized int seekCountryV6(InetAddress addr) { + byte [] v6vec = addr.getAddress(); + byte [] buf = new byte[2 * MAX_RECORD_LENGTH]; + int [] x = new int[2]; + int offset = 0; + _check_mtime(); + for (int depth = 127; depth >= 0; depth--) { + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + //read from memory + for (int i = 0;i < 2 * MAX_RECORD_LENGTH;i++) { + buf[i] = dbbuffer[(2 * recordLength * offset)+i]; + } + } else if ((dboptions & GEOIP_INDEX_CACHE) != 0) { + //read from index cache + for (int i = 0;i < 2 * MAX_RECORD_LENGTH;i++) { + buf[i] = index_cache[(2 * recordLength * offset)+i]; + } + } else { + //read from disk + try { + file.seek(2 * recordLength * offset); + file.readFully(buf); + } + catch (IOException e) { + System.out.println("IO Exception"); + } + } + for (int i = 0; i<2; i++) { + x[i] = 0; + for (int j = 0; j> 3; + int b_mask = 1 << ( bnum & 7 ^ 7 ); + if ((v6vec[idx] & b_mask) > 0) { + if (x[1] >= databaseSegments[0]) { + last_netmask = 128 - depth; + return x[1]; + } + offset = x[1]; + } + else { + if (x[0] >= databaseSegments[0]) { + last_netmask = 128 - depth; + return x[0]; + } + offset = x[0]; + } + } + + // shouldn't reach here + System.err.println("Error seeking country while seeking " + addr.getHostAddress() ); + return 0; + } + /** + * Finds the country index value given an IP address. + * + * @param ipAddress the ip address to find in long format. + * @return the country index. + */ + private synchronized int seekCountry(long ipAddress) { + byte [] buf = new byte[2 * MAX_RECORD_LENGTH]; + int [] x = new int[2]; + int offset = 0; + _check_mtime(); + for (int depth = 31; depth >= 0; depth--) { + if ((dboptions & GEOIP_MEMORY_CACHE) == 1) { + //read from memory + for (int i = 0;i < 2 * MAX_RECORD_LENGTH;i++) { + buf[i] = dbbuffer[(2 * recordLength * offset)+i]; + } + } else if ((dboptions & GEOIP_INDEX_CACHE) != 0) { + //read from index cache + for (int i = 0;i < 2 * MAX_RECORD_LENGTH;i++) { + buf[i] = index_cache[(2 * recordLength * offset)+i]; + } + } else { + //read from disk + try { + file.seek(2 * recordLength * offset); + file.readFully(buf); + } + catch (IOException e) { + System.out.println("IO Exception"); + } + } + for (int i = 0; i<2; i++) { + x[i] = 0; + for (int j = 0; j 0) { + if (x[1] >= databaseSegments[0]) { + last_netmask = 32 - depth; + return x[1]; + } + offset = x[1]; + } + else { + if (x[0] >= databaseSegments[0]) { + last_netmask = 32 - depth; + return x[0]; + } + offset = x[0]; + } + } + + // shouldn't reach here + System.err.println("Error seeking country while seeking " + ipAddress); + return 0; + } + + /** + * Returns the long version of an IP address given an InetAddress object. + * + * @param address the InetAddress. + * @return the long form of the IP address. + */ + private static long bytesToLong(byte [] address) { + long ipnum = 0; + for (int i = 0; i < 4; ++i) { + long y = address[i]; + if (y < 0) { + y+= 256; + } + ipnum += y << ((3-i)*8); + } + return ipnum; + } + + private static int unsignedByteToInt(byte b) { + return (int) b & 0xFF; + } +} diff --git a/src/com/maxmind/geoip/Region.java b/src/com/maxmind/geoip/Region.java new file mode 100644 index 0000000..cba0594 --- /dev/null +++ b/src/com/maxmind/geoip/Region.java @@ -0,0 +1,8 @@ +package com.maxmind.geoip; + +public class Region{ + public String countryCode; + public String countryName; + public String region; +} + diff --git a/src/com/maxmind/geoip/regionName.java b/src/com/maxmind/geoip/regionName.java new file mode 100644 index 0000000..c68a1f5 --- /dev/null +++ b/src/com/maxmind/geoip/regionName.java @@ -0,0 +1,12782 @@ +package com.maxmind.geoip; +// generated automatically from admin/generate_regionName.pl +public class regionName { +static public String regionNameByCode(String country_code,String region_code) { + String name = null; + int region_code2 = -1; + if (region_code == null) { return null; } + if (region_code.equals("")) { return null; } + + if ( ((region_code.charAt(0) >= 48 ) && ( region_code.charAt(0) < ( 48 + 10 ))) + && ((region_code.charAt(1) >= 48 ) && ( region_code.charAt(1) < ( 48 + 10 ))) + ){ + // only numbers, that shorten the large switch statements + region_code2 = (region_code.charAt(0)- 48) * 10 + region_code.charAt(1) - 48; + } + else if ( ( ((region_code.charAt(0) >= 65) && (region_code.charAt(0) < (65 + 26))) + || ((region_code.charAt(0) >= 48) && (region_code.charAt(0) < (48 + 10)))) + && ( ((region_code.charAt(1) >= 65) && (region_code.charAt(1) < (65 + 26))) + || ((region_code.charAt(1) >= 48) && (region_code.charAt(1) < (48 + 10)))) + ) { + + region_code2 = (region_code.charAt(0) - 48) * (65 + 26 - 48) + region_code.charAt(1) - 48 + 100; + } + + if (region_code2 == -1) {return null;} + if (country_code.equals("CA") == true) { + switch (region_code2) { + case 849: + name = "Alberta"; + break; + case 893: + name = "British Columbia"; + break; + case 1365: + name = "Manitoba"; + break; + case 1408: + name = "New Brunswick"; + break; + case 1418: + name = "Newfoundland"; + break; + case 1425: + name = "Nova Scotia"; + break; + case 1427: + name = "Nunavut"; + break; + case 1463: + name = "Ontario"; + break; + case 1497: + name = "Prince Edward Island"; + break; + case 1538: + name = "Quebec"; + break; + case 1632: + name = "Saskatchewan"; + break; + case 1426: + name = "Northwest Territories"; + break; + case 1899: + name = "Yukon Territory"; + break; + } + } + if (country_code.equals("US") == true) { + switch (region_code2) { + case 848: + name = "Armed Forces Americas"; + break; + case 852: + name = "Armed Forces Europe"; + break; + case 858: + name = "Alaska"; + break; + case 859: + name = "Alabama"; + break; + case 863: + name = "Armed Forces Pacific"; + break; + case 865: + name = "Arkansas"; + break; + case 866: + name = "American Samoa"; + break; + case 873: + name = "Arizona"; + break; + case 934: + name = "California"; + break; + case 948: + name = "Colorado"; + break; + case 953: + name = "Connecticut"; + break; + case 979: + name = "District of Columbia"; + break; + case 981: + name = "Delaware"; + break; + case 1074: + name = "Florida"; + break; + case 1075: + name = "Federated States of Micronesia"; + break; + case 1106: + name = "Georgia"; + break; + case 1126: + name = "Guam"; + break; + case 1157: + name = "Hawaii"; + break; + case 1192: + name = "Iowa"; + break; + case 1195: + name = "Idaho"; + break; + case 1203: + name = "Illinois"; + break; + case 1205: + name = "Indiana"; + break; + case 1296: + name = "Kansas"; + break; + case 1302: + name = "Kentucky"; + break; + case 1321: + name = "Louisiana"; + break; + case 1364: + name = "Massachusetts"; + break; + case 1367: + name = "Maryland"; + break; + case 1368: + name = "Maine"; + break; + case 1371: + name = "Marshall Islands"; + break; + case 1372: + name = "Michigan"; + break; + case 1377: + name = "Minnesota"; + break; + case 1378: + name = "Missouri"; + break; + case 1379: + name = "Northern Mariana Islands"; + break; + case 1382: + name = "Mississippi"; + break; + case 1383: + name = "Montana"; + break; + case 1409: + name = "North Carolina"; + break; + case 1410: + name = "North Dakota"; + break; + case 1411: + name = "Nebraska"; + break; + case 1414: + name = "New Hampshire"; + break; + case 1416: + name = "New Jersey"; + break; + case 1419: + name = "New Mexico"; + break; + case 1428: + name = "Nevada"; + break; + case 1431: + name = "New York"; + break; + case 1457: + name = "Ohio"; + break; + case 1460: + name = "Oklahoma"; + break; + case 1467: + name = "Oregon"; + break; + case 1493: + name = "Pennsylvania"; + break; + case 1510: + name = "Puerto Rico"; + break; + case 1515: + name = "Palau"; + break; + case 1587: + name = "Rhode Island"; + break; + case 1624: + name = "South Carolina"; + break; + case 1625: + name = "South Dakota"; + break; + case 1678: + name = "Tennessee"; + break; + case 1688: + name = "Texas"; + break; + case 1727: + name = "Utah"; + break; + case 1751: + name = "Virginia"; + break; + case 1759: + name = "Virgin Islands"; + break; + case 1770: + name = "Vermont"; + break; + case 1794: + name = "Washington"; + break; + case 1815: + name = "West Virginia"; + break; + case 1802: + name = "Wisconsin"; + break; + case 1818: + name = "Wyoming"; + break; + } + } + if (country_code.equals("AD") == true) { + switch (region_code2) { + case 2: + name = "Canillo"; + break; + case 3: + name = "Encamp"; + break; + case 4: + name = "La Massana"; + break; + case 5: + name = "Ordino"; + break; + case 6: + name = "Sant Julia de Loria"; + break; + case 7: + name = "Andorra la Vella"; + break; + case 8: + name = "Escaldes-Engordany"; + break; + } + } + if (country_code.equals("AE") == true) { + switch (region_code2) { + case 1: + name = "Abu Dhabi"; + break; + case 2: + name = "Ajman"; + break; + case 3: + name = "Dubai"; + break; + case 4: + name = "Fujairah"; + break; + case 5: + name = "Ras Al Khaimah"; + break; + case 6: + name = "Sharjah"; + break; + case 7: + name = "Umm Al Quwain"; + break; + } + } + if (country_code.equals("AF") == true) { + switch (region_code2) { + case 1: + name = "Badakhshan"; + break; + case 2: + name = "Badghis"; + break; + case 3: + name = "Baghlan"; + break; + case 5: + name = "Bamian"; + break; + case 6: + name = "Farah"; + break; + case 7: + name = "Faryab"; + break; + case 8: + name = "Ghazni"; + break; + case 9: + name = "Ghowr"; + break; + case 10: + name = "Helmand"; + break; + case 11: + name = "Herat"; + break; + case 13: + name = "Kabol"; + break; + case 14: + name = "Kapisa"; + break; + case 17: + name = "Lowgar"; + break; + case 18: + name = "Nangarhar"; + break; + case 19: + name = "Nimruz"; + break; + case 23: + name = "Kandahar"; + break; + case 24: + name = "Kondoz"; + break; + case 26: + name = "Takhar"; + break; + case 27: + name = "Vardak"; + break; + case 28: + name = "Zabol"; + break; + case 29: + name = "Paktika"; + break; + case 30: + name = "Balkh"; + break; + case 31: + name = "Jowzjan"; + break; + case 32: + name = "Samangan"; + break; + case 33: + name = "Sar-e Pol"; + break; + case 34: + name = "Konar"; + break; + case 35: + name = "Laghman"; + break; + case 36: + name = "Paktia"; + break; + case 37: + name = "Khowst"; + break; + case 38: + name = "Nurestan"; + break; + case 39: + name = "Oruzgan"; + break; + case 40: + name = "Parvan"; + break; + case 41: + name = "Daykondi"; + break; + case 42: + name = "Panjshir"; + break; + } + } + if (country_code.equals("AG") == true) { + switch (region_code2) { + case 1: + name = "Barbuda"; + break; + case 3: + name = "Saint George"; + break; + case 4: + name = "Saint John"; + break; + case 5: + name = "Saint Mary"; + break; + case 6: + name = "Saint Paul"; + break; + case 7: + name = "Saint Peter"; + break; + case 8: + name = "Saint Philip"; + break; + case 9: + name = "Redonda"; + break; + } + } + if (country_code.equals("AL") == true) { + switch (region_code2) { + case 40: + name = "Berat"; + break; + case 41: + name = "Diber"; + break; + case 42: + name = "Durres"; + break; + case 43: + name = "Elbasan"; + break; + case 44: + name = "Fier"; + break; + case 45: + name = "Gjirokaster"; + break; + case 46: + name = "Korce"; + break; + case 47: + name = "Kukes"; + break; + case 48: + name = "Lezhe"; + break; + case 49: + name = "Shkoder"; + break; + case 50: + name = "Tirane"; + break; + case 51: + name = "Vlore"; + break; + } + } + if (country_code.equals("AM") == true) { + switch (region_code2) { + case 1: + name = "Aragatsotn"; + break; + case 2: + name = "Ararat"; + break; + case 3: + name = "Armavir"; + break; + case 4: + name = "Geghark'unik'"; + break; + case 5: + name = "Kotayk'"; + break; + case 6: + name = "Lorri"; + break; + case 7: + name = "Shirak"; + break; + case 8: + name = "Syunik'"; + break; + case 9: + name = "Tavush"; + break; + case 10: + name = "Vayots' Dzor"; + break; + case 11: + name = "Yerevan"; + break; + } + } + if (country_code.equals("AO") == true) { + switch (region_code2) { + case 1: + name = "Benguela"; + break; + case 2: + name = "Bie"; + break; + case 3: + name = "Cabinda"; + break; + case 4: + name = "Cuando Cubango"; + break; + case 5: + name = "Cuanza Norte"; + break; + case 6: + name = "Cuanza Sul"; + break; + case 7: + name = "Cunene"; + break; + case 8: + name = "Huambo"; + break; + case 9: + name = "Huila"; + break; + case 12: + name = "Malanje"; + break; + case 13: + name = "Namibe"; + break; + case 14: + name = "Moxico"; + break; + case 15: + name = "Uige"; + break; + case 16: + name = "Zaire"; + break; + case 17: + name = "Lunda Norte"; + break; + case 18: + name = "Lunda Sul"; + break; + case 19: + name = "Bengo"; + break; + case 20: + name = "Luanda"; + break; + } + } + if (country_code.equals("AR") == true) { + switch (region_code2) { + case 1: + name = "Buenos Aires"; + break; + case 2: + name = "Catamarca"; + break; + case 3: + name = "Chaco"; + break; + case 4: + name = "Chubut"; + break; + case 5: + name = "Cordoba"; + break; + case 6: + name = "Corrientes"; + break; + case 7: + name = "Distrito Federal"; + break; + case 8: + name = "Entre Rios"; + break; + case 9: + name = "Formosa"; + break; + case 10: + name = "Jujuy"; + break; + case 11: + name = "La Pampa"; + break; + case 12: + name = "La Rioja"; + break; + case 13: + name = "Mendoza"; + break; + case 14: + name = "Misiones"; + break; + case 15: + name = "Neuquen"; + break; + case 16: + name = "Rio Negro"; + break; + case 17: + name = "Salta"; + break; + case 18: + name = "San Juan"; + break; + case 19: + name = "San Luis"; + break; + case 20: + name = "Santa Cruz"; + break; + case 21: + name = "Santa Fe"; + break; + case 22: + name = "Santiago del Estero"; + break; + case 23: + name = "Tierra del Fuego"; + break; + case 24: + name = "Tucuman"; + break; + } + } + if (country_code.equals("AT") == true) { + switch (region_code2) { + case 1: + name = "Burgenland"; + break; + case 2: + name = "Karnten"; + break; + case 3: + name = "Niederosterreich"; + break; + case 4: + name = "Oberosterreich"; + break; + case 5: + name = "Salzburg"; + break; + case 6: + name = "Steiermark"; + break; + case 7: + name = "Tirol"; + break; + case 8: + name = "Vorarlberg"; + break; + case 9: + name = "Wien"; + break; + } + } + if (country_code.equals("AU") == true) { + switch (region_code2) { + case 1: + name = "Australian Capital Territory"; + break; + case 2: + name = "New South Wales"; + break; + case 3: + name = "Northern Territory"; + break; + case 4: + name = "Queensland"; + break; + case 5: + name = "South Australia"; + break; + case 6: + name = "Tasmania"; + break; + case 7: + name = "Victoria"; + break; + case 8: + name = "Western Australia"; + break; + } + } + if (country_code.equals("AZ") == true) { + switch (region_code2) { + case 1: + name = "Abseron"; + break; + case 2: + name = "Agcabadi"; + break; + case 3: + name = "Agdam"; + break; + case 4: + name = "Agdas"; + break; + case 5: + name = "Agstafa"; + break; + case 6: + name = "Agsu"; + break; + case 7: + name = "Ali Bayramli"; + break; + case 8: + name = "Astara"; + break; + case 9: + name = "Baki"; + break; + case 10: + name = "Balakan"; + break; + case 11: + name = "Barda"; + break; + case 12: + name = "Beylaqan"; + break; + case 13: + name = "Bilasuvar"; + break; + case 14: + name = "Cabrayil"; + break; + case 15: + name = "Calilabad"; + break; + case 16: + name = "Daskasan"; + break; + case 17: + name = "Davaci"; + break; + case 18: + name = "Fuzuli"; + break; + case 19: + name = "Gadabay"; + break; + case 20: + name = "Ganca"; + break; + case 21: + name = "Goranboy"; + break; + case 22: + name = "Goycay"; + break; + case 23: + name = "Haciqabul"; + break; + case 24: + name = "Imisli"; + break; + case 25: + name = "Ismayilli"; + break; + case 26: + name = "Kalbacar"; + break; + case 27: + name = "Kurdamir"; + break; + case 28: + name = "Lacin"; + break; + case 29: + name = "Lankaran"; + break; + case 30: + name = "Lankaran"; + break; + case 31: + name = "Lerik"; + break; + case 32: + name = "Masalli"; + break; + case 33: + name = "Mingacevir"; + break; + case 34: + name = "Naftalan"; + break; + case 35: + name = "Naxcivan"; + break; + case 36: + name = "Neftcala"; + break; + case 37: + name = "Oguz"; + break; + case 38: + name = "Qabala"; + break; + case 39: + name = "Qax"; + break; + case 40: + name = "Qazax"; + break; + case 41: + name = "Qobustan"; + break; + case 42: + name = "Quba"; + break; + case 43: + name = "Qubadli"; + break; + case 44: + name = "Qusar"; + break; + case 45: + name = "Saatli"; + break; + case 46: + name = "Sabirabad"; + break; + case 47: + name = "Saki"; + break; + case 48: + name = "Saki"; + break; + case 49: + name = "Salyan"; + break; + case 50: + name = "Samaxi"; + break; + case 51: + name = "Samkir"; + break; + case 52: + name = "Samux"; + break; + case 53: + name = "Siyazan"; + break; + case 54: + name = "Sumqayit"; + break; + case 55: + name = "Susa"; + break; + case 56: + name = "Susa"; + break; + case 57: + name = "Tartar"; + break; + case 58: + name = "Tovuz"; + break; + case 59: + name = "Ucar"; + break; + case 60: + name = "Xacmaz"; + break; + case 61: + name = "Xankandi"; + break; + case 62: + name = "Xanlar"; + break; + case 63: + name = "Xizi"; + break; + case 64: + name = "Xocali"; + break; + case 65: + name = "Xocavand"; + break; + case 66: + name = "Yardimli"; + break; + case 67: + name = "Yevlax"; + break; + case 68: + name = "Yevlax"; + break; + case 69: + name = "Zangilan"; + break; + case 70: + name = "Zaqatala"; + break; + case 71: + name = "Zardab"; + break; + } + } + if (country_code.equals("BA") == true) { + switch (region_code2) { + case 1: + name = "Federation of Bosnia and Herzegovina"; + break; + case 2: + name = "Republika Srpska"; + break; + } + } + if (country_code.equals("BB") == true) { + switch (region_code2) { + case 1: + name = "Christ Church"; + break; + case 2: + name = "Saint Andrew"; + break; + case 3: + name = "Saint George"; + break; + case 4: + name = "Saint James"; + break; + case 5: + name = "Saint John"; + break; + case 6: + name = "Saint Joseph"; + break; + case 7: + name = "Saint Lucy"; + break; + case 8: + name = "Saint Michael"; + break; + case 9: + name = "Saint Peter"; + break; + case 10: + name = "Saint Philip"; + break; + case 11: + name = "Saint Thomas"; + break; + } + } + if (country_code.equals("BD") == true) { + switch (region_code2) { + case 81: + name = "Dhaka"; + break; + case 82: + name = "Khulna"; + break; + case 83: + name = "Rajshahi"; + break; + case 84: + name = "Chittagong"; + break; + case 85: + name = "Barisal"; + break; + case 86: + name = "Sylhet"; + break; + } + } + if (country_code.equals("BE") == true) { + switch (region_code2) { + case 1: + name = "Antwerpen"; + break; + case 3: + name = "Hainaut"; + break; + case 4: + name = "Liege"; + break; + case 5: + name = "Limburg"; + break; + case 6: + name = "Luxembourg"; + break; + case 7: + name = "Namur"; + break; + case 8: + name = "Oost-Vlaanderen"; + break; + case 9: + name = "West-Vlaanderen"; + break; + case 10: + name = "Brabant Wallon"; + break; + case 11: + name = "Brussels Hoofdstedelijk Gewest"; + break; + case 12: + name = "Vlaams-Brabant"; + break; + case 13: + name = "Flanders"; + break; + case 14: + name = "Wallonia"; + break; + } + } + if (country_code.equals("BF") == true) { + switch (region_code2) { + case 15: + name = "Bam"; + break; + case 19: + name = "Boulkiemde"; + break; + case 20: + name = "Ganzourgou"; + break; + case 21: + name = "Gnagna"; + break; + case 28: + name = "Kouritenga"; + break; + case 33: + name = "Oudalan"; + break; + case 34: + name = "Passore"; + break; + case 36: + name = "Sanguie"; + break; + case 40: + name = "Soum"; + break; + case 42: + name = "Tapoa"; + break; + case 44: + name = "Zoundweogo"; + break; + case 45: + name = "Bale"; + break; + case 46: + name = "Banwa"; + break; + case 47: + name = "Bazega"; + break; + case 48: + name = "Bougouriba"; + break; + case 49: + name = "Boulgou"; + break; + case 50: + name = "Gourma"; + break; + case 51: + name = "Houet"; + break; + case 52: + name = "Ioba"; + break; + case 53: + name = "Kadiogo"; + break; + case 54: + name = "Kenedougou"; + break; + case 55: + name = "Komoe"; + break; + case 56: + name = "Komondjari"; + break; + case 57: + name = "Kompienga"; + break; + case 58: + name = "Kossi"; + break; + case 59: + name = "Koulpelogo"; + break; + case 60: + name = "Kourweogo"; + break; + case 61: + name = "Leraba"; + break; + case 62: + name = "Loroum"; + break; + case 63: + name = "Mouhoun"; + break; + case 64: + name = "Namentenga"; + break; + case 65: + name = "Naouri"; + break; + case 66: + name = "Nayala"; + break; + case 67: + name = "Noumbiel"; + break; + case 68: + name = "Oubritenga"; + break; + case 69: + name = "Poni"; + break; + case 70: + name = "Sanmatenga"; + break; + case 71: + name = "Seno"; + break; + case 72: + name = "Sissili"; + break; + case 73: + name = "Sourou"; + break; + case 74: + name = "Tuy"; + break; + case 75: + name = "Yagha"; + break; + case 76: + name = "Yatenga"; + break; + case 77: + name = "Ziro"; + break; + case 78: + name = "Zondoma"; + break; + } + } + if (country_code.equals("BG") == true) { + switch (region_code2) { + case 33: + name = "Mikhaylovgrad"; + break; + case 38: + name = "Blagoevgrad"; + break; + case 39: + name = "Burgas"; + break; + case 40: + name = "Dobrich"; + break; + case 41: + name = "Gabrovo"; + break; + case 42: + name = "Grad Sofiya"; + break; + case 43: + name = "Khaskovo"; + break; + case 44: + name = "Kurdzhali"; + break; + case 45: + name = "Kyustendil"; + break; + case 46: + name = "Lovech"; + break; + case 47: + name = "Montana"; + break; + case 48: + name = "Pazardzhik"; + break; + case 49: + name = "Pernik"; + break; + case 50: + name = "Pleven"; + break; + case 51: + name = "Plovdiv"; + break; + case 52: + name = "Razgrad"; + break; + case 53: + name = "Ruse"; + break; + case 54: + name = "Shumen"; + break; + case 55: + name = "Silistra"; + break; + case 56: + name = "Sliven"; + break; + case 57: + name = "Smolyan"; + break; + case 58: + name = "Sofiya"; + break; + case 59: + name = "Stara Zagora"; + break; + case 60: + name = "Turgovishte"; + break; + case 61: + name = "Varna"; + break; + case 62: + name = "Veliko Turnovo"; + break; + case 63: + name = "Vidin"; + break; + case 64: + name = "Vratsa"; + break; + case 65: + name = "Yambol"; + break; + } + } + if (country_code.equals("BH") == true) { + switch (region_code2) { + case 1: + name = "Al Hadd"; + break; + case 2: + name = "Al Manamah"; + break; + case 5: + name = "Jidd Hafs"; + break; + case 6: + name = "Sitrah"; + break; + case 8: + name = "Al Mintaqah al Gharbiyah"; + break; + case 9: + name = "Mintaqat Juzur Hawar"; + break; + case 10: + name = "Al Mintaqah ash Shamaliyah"; + break; + case 11: + name = "Al Mintaqah al Wusta"; + break; + case 12: + name = "Madinat"; + break; + case 13: + name = "Ar Rifa"; + break; + case 14: + name = "Madinat Hamad"; + break; + case 15: + name = "Al Muharraq"; + break; + case 16: + name = "Al Asimah"; + break; + case 17: + name = "Al Janubiyah"; + break; + case 18: + name = "Ash Shamaliyah"; + break; + case 19: + name = "Al Wusta"; + break; + } + } + if (country_code.equals("BI") == true) { + switch (region_code2) { + case 2: + name = "Bujumbura"; + break; + case 9: + name = "Bubanza"; + break; + case 10: + name = "Bururi"; + break; + case 11: + name = "Cankuzo"; + break; + case 12: + name = "Cibitoke"; + break; + case 13: + name = "Gitega"; + break; + case 14: + name = "Karuzi"; + break; + case 15: + name = "Kayanza"; + break; + case 16: + name = "Kirundo"; + break; + case 17: + name = "Makamba"; + break; + case 18: + name = "Muyinga"; + break; + case 19: + name = "Ngozi"; + break; + case 20: + name = "Rutana"; + break; + case 21: + name = "Ruyigi"; + break; + case 22: + name = "Muramvya"; + break; + case 23: + name = "Mwaro"; + break; + } + } + if (country_code.equals("BJ") == true) { + switch (region_code2) { + case 7: + name = "Alibori"; + break; + case 8: + name = "Atakora"; + break; + case 9: + name = "Atlanyique"; + break; + case 10: + name = "Borgou"; + break; + case 11: + name = "Collines"; + break; + case 12: + name = "Kouffo"; + break; + case 13: + name = "Donga"; + break; + case 14: + name = "Littoral"; + break; + case 15: + name = "Mono"; + break; + case 16: + name = "Oueme"; + break; + case 17: + name = "Plateau"; + break; + case 18: + name = "Zou"; + break; + } + } + if (country_code.equals("BM") == true) { + switch (region_code2) { + case 1: + name = "Devonshire"; + break; + case 2: + name = "Hamilton"; + break; + case 3: + name = "Hamilton"; + break; + case 4: + name = "Paget"; + break; + case 5: + name = "Pembroke"; + break; + case 6: + name = "Saint George"; + break; + case 7: + name = "Saint George's"; + break; + case 8: + name = "Sandys"; + break; + case 9: + name = "Smiths"; + break; + case 10: + name = "Southampton"; + break; + case 11: + name = "Warwick"; + break; + } + } + if (country_code.equals("BN") == true) { + switch (region_code2) { + case 7: + name = "Alibori"; + break; + case 8: + name = "Belait"; + break; + case 9: + name = "Brunei and Muara"; + break; + case 10: + name = "Temburong"; + break; + case 11: + name = "Collines"; + break; + case 12: + name = "Kouffo"; + break; + case 13: + name = "Donga"; + break; + case 14: + name = "Littoral"; + break; + case 15: + name = "Tutong"; + break; + case 16: + name = "Oueme"; + break; + case 17: + name = "Plateau"; + break; + case 18: + name = "Zou"; + break; + } + } + if (country_code.equals("BO") == true) { + switch (region_code2) { + case 1: + name = "Chuquisaca"; + break; + case 2: + name = "Cochabamba"; + break; + case 3: + name = "El Beni"; + break; + case 4: + name = "La Paz"; + break; + case 5: + name = "Oruro"; + break; + case 6: + name = "Pando"; + break; + case 7: + name = "Potosi"; + break; + case 8: + name = "Santa Cruz"; + break; + case 9: + name = "Tarija"; + break; + } + } + if (country_code.equals("BR") == true) { + switch (region_code2) { + case 1: + name = "Acre"; + break; + case 2: + name = "Alagoas"; + break; + case 3: + name = "Amapa"; + break; + case 4: + name = "Amazonas"; + break; + case 5: + name = "Bahia"; + break; + case 6: + name = "Ceara"; + break; + case 7: + name = "Distrito Federal"; + break; + case 8: + name = "Espirito Santo"; + break; + case 11: + name = "Mato Grosso do Sul"; + break; + case 13: + name = "Maranhao"; + break; + case 14: + name = "Mato Grosso"; + break; + case 15: + name = "Minas Gerais"; + break; + case 16: + name = "Para"; + break; + case 17: + name = "Paraiba"; + break; + case 18: + name = "Parana"; + break; + case 20: + name = "Piaui"; + break; + case 21: + name = "Rio de Janeiro"; + break; + case 22: + name = "Rio Grande do Norte"; + break; + case 23: + name = "Rio Grande do Sul"; + break; + case 24: + name = "Rondonia"; + break; + case 25: + name = "Roraima"; + break; + case 26: + name = "Santa Catarina"; + break; + case 27: + name = "Sao Paulo"; + break; + case 28: + name = "Sergipe"; + break; + case 29: + name = "Goias"; + break; + case 30: + name = "Pernambuco"; + break; + case 31: + name = "Tocantins"; + break; + } + } + if (country_code.equals("BS") == true) { + switch (region_code2) { + case 5: + name = "Bimini"; + break; + case 6: + name = "Cat Island"; + break; + case 10: + name = "Exuma"; + break; + case 13: + name = "Inagua"; + break; + case 15: + name = "Long Island"; + break; + case 16: + name = "Mayaguana"; + break; + case 18: + name = "Ragged Island"; + break; + case 22: + name = "Harbour Island"; + break; + case 23: + name = "New Providence"; + break; + case 24: + name = "Acklins and Crooked Islands"; + break; + case 25: + name = "Freeport"; + break; + case 26: + name = "Fresh Creek"; + break; + case 27: + name = "Governor's Harbour"; + break; + case 28: + name = "Green Turtle Cay"; + break; + case 29: + name = "High Rock"; + break; + case 30: + name = "Kemps Bay"; + break; + case 31: + name = "Marsh Harbour"; + break; + case 32: + name = "Nichollstown and Berry Islands"; + break; + case 33: + name = "Rock Sound"; + break; + case 34: + name = "Sandy Point"; + break; + case 35: + name = "San Salvador and Rum Cay"; + break; + } + } + if (country_code.equals("BT") == true) { + switch (region_code2) { + case 5: + name = "Bumthang"; + break; + case 6: + name = "Chhukha"; + break; + case 7: + name = "Chirang"; + break; + case 8: + name = "Daga"; + break; + case 9: + name = "Geylegphug"; + break; + case 10: + name = "Ha"; + break; + case 11: + name = "Lhuntshi"; + break; + case 12: + name = "Mongar"; + break; + case 13: + name = "Paro"; + break; + case 14: + name = "Pemagatsel"; + break; + case 15: + name = "Punakha"; + break; + case 16: + name = "Samchi"; + break; + case 17: + name = "Samdrup"; + break; + case 18: + name = "Shemgang"; + break; + case 19: + name = "Tashigang"; + break; + case 20: + name = "Thimphu"; + break; + case 21: + name = "Tongsa"; + break; + case 22: + name = "Wangdi Phodrang"; + break; + } + } + if (country_code.equals("BW") == true) { + switch (region_code2) { + case 1: + name = "Central"; + break; + case 3: + name = "Ghanzi"; + break; + case 4: + name = "Kgalagadi"; + break; + case 5: + name = "Kgatleng"; + break; + case 6: + name = "Kweneng"; + break; + case 8: + name = "North-East"; + break; + case 9: + name = "South-East"; + break; + case 10: + name = "Southern"; + break; + case 11: + name = "North-West"; + break; + } + } + if (country_code.equals("BY") == true) { + switch (region_code2) { + case 1: + name = "Brestskaya Voblasts'"; + break; + case 2: + name = "Homyel'skaya Voblasts'"; + break; + case 3: + name = "Hrodzyenskaya Voblasts'"; + break; + case 4: + name = "Minsk"; + break; + case 5: + name = "Minskaya Voblasts'"; + break; + case 6: + name = "Mahilyowskaya Voblasts'"; + break; + case 7: + name = "Vitsyebskaya Voblasts'"; + break; + } + } + if (country_code.equals("BZ") == true) { + switch (region_code2) { + case 1: + name = "Belize"; + break; + case 2: + name = "Cayo"; + break; + case 3: + name = "Corozal"; + break; + case 4: + name = "Orange Walk"; + break; + case 5: + name = "Stann Creek"; + break; + case 6: + name = "Toledo"; + break; + } + } + if (country_code.equals("CD") == true) { + switch (region_code2) { + case 1: + name = "Bandundu"; + break; + case 2: + name = "Equateur"; + break; + case 4: + name = "Kasai-Oriental"; + break; + case 5: + name = "Katanga"; + break; + case 6: + name = "Kinshasa"; + break; + case 8: + name = "Bas-Congo"; + break; + case 9: + name = "Orientale"; + break; + case 10: + name = "Maniema"; + break; + case 11: + name = "Nord-Kivu"; + break; + case 12: + name = "Sud-Kivu"; + break; + } + } + if (country_code.equals("CF") == true) { + switch (region_code2) { + case 1: + name = "Bamingui-Bangoran"; + break; + case 2: + name = "Basse-Kotto"; + break; + case 3: + name = "Haute-Kotto"; + break; + case 4: + name = "Mambere-Kadei"; + break; + case 5: + name = "Haut-Mbomou"; + break; + case 6: + name = "Kemo"; + break; + case 7: + name = "Lobaye"; + break; + case 8: + name = "Mbomou"; + break; + case 9: + name = "Nana-Mambere"; + break; + case 11: + name = "Ouaka"; + break; + case 12: + name = "Ouham"; + break; + case 13: + name = "Ouham-Pende"; + break; + case 14: + name = "Cuvette-Ouest"; + break; + case 15: + name = "Nana-Grebizi"; + break; + case 16: + name = "Sangha-Mbaere"; + break; + case 17: + name = "Ombella-Mpoko"; + break; + case 18: + name = "Bangui"; + break; + } + } + if (country_code.equals("CG") == true) { + switch (region_code2) { + case 1: + name = "Bouenza"; + break; + case 4: + name = "Kouilou"; + break; + case 5: + name = "Lekoumou"; + break; + case 6: + name = "Likouala"; + break; + case 7: + name = "Niari"; + break; + case 8: + name = "Plateaux"; + break; + case 10: + name = "Sangha"; + break; + case 11: + name = "Pool"; + break; + case 12: + name = "Brazzaville"; + break; + case 13: + name = "Cuvette"; + break; + case 14: + name = "Cuvette-Ouest"; + break; + } + } + if (country_code.equals("CH") == true) { + switch (region_code2) { + case 1: + name = "Aargau"; + break; + case 2: + name = "Ausser-Rhoden"; + break; + case 3: + name = "Basel-Landschaft"; + break; + case 4: + name = "Basel-Stadt"; + break; + case 5: + name = "Bern"; + break; + case 6: + name = "Fribourg"; + break; + case 7: + name = "Geneve"; + break; + case 8: + name = "Glarus"; + break; + case 9: + name = "Graubunden"; + break; + case 10: + name = "Inner-Rhoden"; + break; + case 11: + name = "Luzern"; + break; + case 12: + name = "Neuchatel"; + break; + case 13: + name = "Nidwalden"; + break; + case 14: + name = "Obwalden"; + break; + case 15: + name = "Sankt Gallen"; + break; + case 16: + name = "Schaffhausen"; + break; + case 17: + name = "Schwyz"; + break; + case 18: + name = "Solothurn"; + break; + case 19: + name = "Thurgau"; + break; + case 20: + name = "Ticino"; + break; + case 21: + name = "Uri"; + break; + case 22: + name = "Valais"; + break; + case 23: + name = "Vaud"; + break; + case 24: + name = "Zug"; + break; + case 25: + name = "Zurich"; + break; + case 26: + name = "Jura"; + break; + } + } + if (country_code.equals("CI") == true) { + switch (region_code2) { + case 74: + name = "Agneby"; + break; + case 75: + name = "Bafing"; + break; + case 76: + name = "Bas-Sassandra"; + break; + case 77: + name = "Denguele"; + break; + case 78: + name = "Dix-Huit Montagnes"; + break; + case 79: + name = "Fromager"; + break; + case 80: + name = "Haut-Sassandra"; + break; + case 81: + name = "Lacs"; + break; + case 82: + name = "Lagunes"; + break; + case 83: + name = "Marahoue"; + break; + case 84: + name = "Moyen-Cavally"; + break; + case 85: + name = "Moyen-Comoe"; + break; + case 86: + name = "N'zi-Comoe"; + break; + case 87: + name = "Savanes"; + break; + case 88: + name = "Sud-Bandama"; + break; + case 89: + name = "Sud-Comoe"; + break; + case 90: + name = "Vallee du Bandama"; + break; + case 91: + name = "Worodougou"; + break; + case 92: + name = "Zanzan"; + break; + } + } + if (country_code.equals("CL") == true) { + switch (region_code2) { + case 1: + name = "Valparaiso"; + break; + case 2: + name = "Aisen del General Carlos Ibanez del Campo"; + break; + case 3: + name = "Antofagasta"; + break; + case 4: + name = "Araucania"; + break; + case 5: + name = "Atacama"; + break; + case 6: + name = "Bio-Bio"; + break; + case 7: + name = "Coquimbo"; + break; + case 8: + name = "Libertador General Bernardo O'Higgins"; + break; + case 9: + name = "Los Lagos"; + break; + case 10: + name = "Magallanes y de la Antartica Chilena"; + break; + case 11: + name = "Maule"; + break; + case 12: + name = "Region Metropolitana"; + break; + case 13: + name = "Tarapaca"; + break; + case 14: + name = "Los Lagos"; + break; + case 15: + name = "Tarapaca"; + break; + case 16: + name = "Arica y Parinacota"; + break; + case 17: + name = "Los Rios"; + break; + } + } + if (country_code.equals("CM") == true) { + switch (region_code2) { + case 4: + name = "Est"; + break; + case 5: + name = "Littoral"; + break; + case 7: + name = "Nord-Ouest"; + break; + case 8: + name = "Ouest"; + break; + case 9: + name = "Sud-Ouest"; + break; + case 10: + name = "Adamaoua"; + break; + case 11: + name = "Centre"; + break; + case 12: + name = "Extreme-Nord"; + break; + case 13: + name = "Nord"; + break; + case 14: + name = "Sud"; + break; + } + } + if (country_code.equals("CN") == true) { + switch (region_code2) { + case 1: + name = "Anhui"; + break; + case 2: + name = "Zhejiang"; + break; + case 3: + name = "Jiangxi"; + break; + case 4: + name = "Jiangsu"; + break; + case 5: + name = "Jilin"; + break; + case 6: + name = "Qinghai"; + break; + case 7: + name = "Fujian"; + break; + case 8: + name = "Heilongjiang"; + break; + case 9: + name = "Henan"; + break; + case 10: + name = "Hebei"; + break; + case 11: + name = "Hunan"; + break; + case 12: + name = "Hubei"; + break; + case 13: + name = "Xinjiang"; + break; + case 14: + name = "Xizang"; + break; + case 15: + name = "Gansu"; + break; + case 16: + name = "Guangxi"; + break; + case 18: + name = "Guizhou"; + break; + case 19: + name = "Liaoning"; + break; + case 20: + name = "Nei Mongol"; + break; + case 21: + name = "Ningxia"; + break; + case 22: + name = "Beijing"; + break; + case 23: + name = "Shanghai"; + break; + case 24: + name = "Shanxi"; + break; + case 25: + name = "Shandong"; + break; + case 26: + name = "Shaanxi"; + break; + case 28: + name = "Tianjin"; + break; + case 29: + name = "Yunnan"; + break; + case 30: + name = "Guangdong"; + break; + case 31: + name = "Hainan"; + break; + case 32: + name = "Sichuan"; + break; + case 33: + name = "Chongqing"; + break; + } + } + if (country_code.equals("CO") == true) { + switch (region_code2) { + case 1: + name = "Amazonas"; + break; + case 2: + name = "Antioquia"; + break; + case 3: + name = "Arauca"; + break; + case 4: + name = "Atlantico"; + break; + case 8: + name = "Caqueta"; + break; + case 9: + name = "Cauca"; + break; + case 10: + name = "Cesar"; + break; + case 11: + name = "Choco"; + break; + case 12: + name = "Cordoba"; + break; + case 14: + name = "Guaviare"; + break; + case 15: + name = "Guainia"; + break; + case 16: + name = "Huila"; + break; + case 17: + name = "La Guajira"; + break; + case 19: + name = "Meta"; + break; + case 20: + name = "Narino"; + break; + case 21: + name = "Norte de Santander"; + break; + case 22: + name = "Putumayo"; + break; + case 23: + name = "Quindio"; + break; + case 24: + name = "Risaralda"; + break; + case 25: + name = "San Andres y Providencia"; + break; + case 26: + name = "Santander"; + break; + case 27: + name = "Sucre"; + break; + case 28: + name = "Tolima"; + break; + case 29: + name = "Valle del Cauca"; + break; + case 30: + name = "Vaupes"; + break; + case 31: + name = "Vichada"; + break; + case 32: + name = "Casanare"; + break; + case 33: + name = "Cundinamarca"; + break; + case 34: + name = "Distrito Especial"; + break; + case 35: + name = "Bolivar"; + break; + case 36: + name = "Boyaca"; + break; + case 37: + name = "Caldas"; + break; + case 38: + name = "Magdalena"; + break; + } + } + if (country_code.equals("CR") == true) { + switch (region_code2) { + case 1: + name = "Alajuela"; + break; + case 2: + name = "Cartago"; + break; + case 3: + name = "Guanacaste"; + break; + case 4: + name = "Heredia"; + break; + case 6: + name = "Limon"; + break; + case 7: + name = "Puntarenas"; + break; + case 8: + name = "San Jose"; + break; + } + } + if (country_code.equals("CU") == true) { + switch (region_code2) { + case 1: + name = "Pinar del Rio"; + break; + case 2: + name = "Ciudad de la Habana"; + break; + case 3: + name = "Matanzas"; + break; + case 4: + name = "Isla de la Juventud"; + break; + case 5: + name = "Camaguey"; + break; + case 7: + name = "Ciego de Avila"; + break; + case 8: + name = "Cienfuegos"; + break; + case 9: + name = "Granma"; + break; + case 10: + name = "Guantanamo"; + break; + case 11: + name = "La Habana"; + break; + case 12: + name = "Holguin"; + break; + case 13: + name = "Las Tunas"; + break; + case 14: + name = "Sancti Spiritus"; + break; + case 15: + name = "Santiago de Cuba"; + break; + case 16: + name = "Villa Clara"; + break; + } + } + if (country_code.equals("CV") == true) { + switch (region_code2) { + case 1: + name = "Boa Vista"; + break; + case 2: + name = "Brava"; + break; + case 4: + name = "Maio"; + break; + case 5: + name = "Paul"; + break; + case 7: + name = "Ribeira Grande"; + break; + case 8: + name = "Sal"; + break; + case 10: + name = "Sao Nicolau"; + break; + case 11: + name = "Sao Vicente"; + break; + case 13: + name = "Mosteiros"; + break; + case 14: + name = "Praia"; + break; + case 15: + name = "Santa Catarina"; + break; + case 16: + name = "Santa Cruz"; + break; + case 17: + name = "Sao Domingos"; + break; + case 18: + name = "Sao Filipe"; + break; + case 19: + name = "Sao Miguel"; + break; + case 20: + name = "Tarrafal"; + break; + } + } + if (country_code.equals("CY") == true) { + switch (region_code2) { + case 1: + name = "Famagusta"; + break; + case 2: + name = "Kyrenia"; + break; + case 3: + name = "Larnaca"; + break; + case 4: + name = "Nicosia"; + break; + case 5: + name = "Limassol"; + break; + case 6: + name = "Paphos"; + break; + } + } + if (country_code.equals("CZ") == true) { + switch (region_code2) { + case 52: + name = "Hlavni mesto Praha"; + break; + case 78: + name = "Jihomoravsky kraj"; + break; + case 79: + name = "Jihocesky kraj"; + break; + case 80: + name = "Vysocina"; + break; + case 81: + name = "Karlovarsky kraj"; + break; + case 82: + name = "Kralovehradecky kraj"; + break; + case 83: + name = "Liberecky kraj"; + break; + case 84: + name = "Olomoucky kraj"; + break; + case 85: + name = "Moravskoslezsky kraj"; + break; + case 86: + name = "Pardubicky kraj"; + break; + case 87: + name = "Plzensky kraj"; + break; + case 88: + name = "Stredocesky kraj"; + break; + case 89: + name = "Ustecky kraj"; + break; + case 90: + name = "Zlinsky kraj"; + break; + } + } + if (country_code.equals("DE") == true) { + switch (region_code2) { + case 1: + name = "Baden-Wurttemberg"; + break; + case 2: + name = "Bayern"; + break; + case 3: + name = "Bremen"; + break; + case 4: + name = "Hamburg"; + break; + case 5: + name = "Hessen"; + break; + case 6: + name = "Niedersachsen"; + break; + case 7: + name = "Nordrhein-Westfalen"; + break; + case 8: + name = "Rheinland-Pfalz"; + break; + case 9: + name = "Saarland"; + break; + case 10: + name = "Schleswig-Holstein"; + break; + case 11: + name = "Brandenburg"; + break; + case 12: + name = "Mecklenburg-Vorpommern"; + break; + case 13: + name = "Sachsen"; + break; + case 14: + name = "Sachsen-Anhalt"; + break; + case 15: + name = "Thuringen"; + break; + case 16: + name = "Berlin"; + break; + } + } + if (country_code.equals("DJ") == true) { + switch (region_code2) { + case 1: + name = "Ali Sabieh"; + break; + case 4: + name = "Obock"; + break; + case 5: + name = "Tadjoura"; + break; + case 6: + name = "Dikhil"; + break; + case 7: + name = "Djibouti"; + break; + case 8: + name = "Arta"; + break; + } + } + if (country_code.equals("DK") == true) { + switch (region_code2) { + case 17: + name = "Hovedstaden"; + break; + case 18: + name = "Midtjylland"; + break; + case 19: + name = "Nordjylland"; + break; + case 20: + name = "Sjelland"; + break; + case 21: + name = "Syddanmark"; + break; + } + } + if (country_code.equals("DM") == true) { + switch (region_code2) { + case 2: + name = "Saint Andrew"; + break; + case 3: + name = "Saint David"; + break; + case 4: + name = "Saint George"; + break; + case 5: + name = "Saint John"; + break; + case 6: + name = "Saint Joseph"; + break; + case 7: + name = "Saint Luke"; + break; + case 8: + name = "Saint Mark"; + break; + case 9: + name = "Saint Patrick"; + break; + case 10: + name = "Saint Paul"; + break; + case 11: + name = "Saint Peter"; + break; + } + } + if (country_code.equals("DO") == true) { + switch (region_code2) { + case 1: + name = "Azua"; + break; + case 2: + name = "Baoruco"; + break; + case 3: + name = "Barahona"; + break; + case 4: + name = "Dajabon"; + break; + case 5: + name = "Distrito Nacional"; + break; + case 6: + name = "Duarte"; + break; + case 8: + name = "Espaillat"; + break; + case 9: + name = "Independencia"; + break; + case 10: + name = "La Altagracia"; + break; + case 11: + name = "Elias Pina"; + break; + case 12: + name = "La Romana"; + break; + case 14: + name = "Maria Trinidad Sanchez"; + break; + case 15: + name = "Monte Cristi"; + break; + case 16: + name = "Pedernales"; + break; + case 17: + name = "Peravia"; + break; + case 18: + name = "Puerto Plata"; + break; + case 19: + name = "Salcedo"; + break; + case 20: + name = "Samana"; + break; + case 21: + name = "Sanchez Ramirez"; + break; + case 23: + name = "San Juan"; + break; + case 24: + name = "San Pedro De Macoris"; + break; + case 25: + name = "Santiago"; + break; + case 26: + name = "Santiago Rodriguez"; + break; + case 27: + name = "Valverde"; + break; + case 28: + name = "El Seibo"; + break; + case 29: + name = "Hato Mayor"; + break; + case 30: + name = "La Vega"; + break; + case 31: + name = "Monsenor Nouel"; + break; + case 32: + name = "Monte Plata"; + break; + case 33: + name = "San Cristobal"; + break; + case 34: + name = "Distrito Nacional"; + break; + case 35: + name = "Peravia"; + break; + case 36: + name = "San Jose de Ocoa"; + break; + case 37: + name = "Santo Domingo"; + break; + } + } + if (country_code.equals("DZ") == true) { + switch (region_code2) { + case 1: + name = "Alger"; + break; + case 3: + name = "Batna"; + break; + case 4: + name = "Constantine"; + break; + case 6: + name = "Medea"; + break; + case 7: + name = "Mostaganem"; + break; + case 9: + name = "Oran"; + break; + case 10: + name = "Saida"; + break; + case 12: + name = "Setif"; + break; + case 13: + name = "Tiaret"; + break; + case 14: + name = "Tizi Ouzou"; + break; + case 15: + name = "Tlemcen"; + break; + case 18: + name = "Bejaia"; + break; + case 19: + name = "Biskra"; + break; + case 20: + name = "Blida"; + break; + case 21: + name = "Bouira"; + break; + case 22: + name = "Djelfa"; + break; + case 23: + name = "Guelma"; + break; + case 24: + name = "Jijel"; + break; + case 25: + name = "Laghouat"; + break; + case 26: + name = "Mascara"; + break; + case 27: + name = "M'sila"; + break; + case 29: + name = "Oum el Bouaghi"; + break; + case 30: + name = "Sidi Bel Abbes"; + break; + case 31: + name = "Skikda"; + break; + case 33: + name = "Tebessa"; + break; + case 34: + name = "Adrar"; + break; + case 35: + name = "Ain Defla"; + break; + case 36: + name = "Ain Temouchent"; + break; + case 37: + name = "Annaba"; + break; + case 38: + name = "Bechar"; + break; + case 39: + name = "Bordj Bou Arreridj"; + break; + case 40: + name = "Boumerdes"; + break; + case 41: + name = "Chlef"; + break; + case 42: + name = "El Bayadh"; + break; + case 43: + name = "El Oued"; + break; + case 44: + name = "El Tarf"; + break; + case 45: + name = "Ghardaia"; + break; + case 46: + name = "Illizi"; + break; + case 47: + name = "Khenchela"; + break; + case 48: + name = "Mila"; + break; + case 49: + name = "Naama"; + break; + case 50: + name = "Ouargla"; + break; + case 51: + name = "Relizane"; + break; + case 52: + name = "Souk Ahras"; + break; + case 53: + name = "Tamanghasset"; + break; + case 54: + name = "Tindouf"; + break; + case 55: + name = "Tipaza"; + break; + case 56: + name = "Tissemsilt"; + break; + } + } + if (country_code.equals("EC") == true) { + switch (region_code2) { + case 1: + name = "Galapagos"; + break; + case 2: + name = "Azuay"; + break; + case 3: + name = "Bolivar"; + break; + case 4: + name = "Canar"; + break; + case 5: + name = "Carchi"; + break; + case 6: + name = "Chimborazo"; + break; + case 7: + name = "Cotopaxi"; + break; + case 8: + name = "El Oro"; + break; + case 9: + name = "Esmeraldas"; + break; + case 10: + name = "Guayas"; + break; + case 11: + name = "Imbabura"; + break; + case 12: + name = "Loja"; + break; + case 13: + name = "Los Rios"; + break; + case 14: + name = "Manabi"; + break; + case 15: + name = "Morona-Santiago"; + break; + case 17: + name = "Pastaza"; + break; + case 18: + name = "Pichincha"; + break; + case 19: + name = "Tungurahua"; + break; + case 20: + name = "Zamora-Chinchipe"; + break; + case 22: + name = "Sucumbios"; + break; + case 23: + name = "Napo"; + break; + case 24: + name = "Orellana"; + break; + } + } + if (country_code.equals("EE") == true) { + switch (region_code2) { + case 1: + name = "Harjumaa"; + break; + case 2: + name = "Hiiumaa"; + break; + case 3: + name = "Ida-Virumaa"; + break; + case 4: + name = "Jarvamaa"; + break; + case 5: + name = "Jogevamaa"; + break; + case 6: + name = "Kohtla-Jarve"; + break; + case 7: + name = "Laanemaa"; + break; + case 8: + name = "Laane-Virumaa"; + break; + case 9: + name = "Narva"; + break; + case 10: + name = "Parnu"; + break; + case 11: + name = "Parnumaa"; + break; + case 12: + name = "Polvamaa"; + break; + case 13: + name = "Raplamaa"; + break; + case 14: + name = "Saaremaa"; + break; + case 15: + name = "Sillamae"; + break; + case 16: + name = "Tallinn"; + break; + case 17: + name = "Tartu"; + break; + case 18: + name = "Tartumaa"; + break; + case 19: + name = "Valgamaa"; + break; + case 20: + name = "Viljandimaa"; + break; + case 21: + name = "Vorumaa"; + break; + } + } + if (country_code.equals("EG") == true) { + switch (region_code2) { + case 1: + name = "Ad Daqahliyah"; + break; + case 2: + name = "Al Bahr al Ahmar"; + break; + case 3: + name = "Al Buhayrah"; + break; + case 4: + name = "Al Fayyum"; + break; + case 5: + name = "Al Gharbiyah"; + break; + case 6: + name = "Al Iskandariyah"; + break; + case 7: + name = "Al Isma'iliyah"; + break; + case 8: + name = "Al Jizah"; + break; + case 9: + name = "Al Minufiyah"; + break; + case 10: + name = "Al Minya"; + break; + case 11: + name = "Al Qahirah"; + break; + case 12: + name = "Al Qalyubiyah"; + break; + case 13: + name = "Al Wadi al Jadid"; + break; + case 14: + name = "Ash Sharqiyah"; + break; + case 15: + name = "As Suways"; + break; + case 16: + name = "Aswan"; + break; + case 17: + name = "Asyut"; + break; + case 18: + name = "Bani Suwayf"; + break; + case 19: + name = "Bur Sa'id"; + break; + case 20: + name = "Dumyat"; + break; + case 21: + name = "Kafr ash Shaykh"; + break; + case 22: + name = "Matruh"; + break; + case 23: + name = "Qina"; + break; + case 24: + name = "Suhaj"; + break; + case 26: + name = "Janub Sina'"; + break; + case 27: + name = "Shamal Sina'"; + break; + } + } + if (country_code.equals("ER") == true) { + switch (region_code2) { + case 1: + name = "Anseba"; + break; + case 2: + name = "Debub"; + break; + case 3: + name = "Debubawi K'eyih Bahri"; + break; + case 4: + name = "Gash Barka"; + break; + case 5: + name = "Ma'akel"; + break; + case 6: + name = "Semenawi K'eyih Bahri"; + break; + } + } + if (country_code.equals("ES") == true) { + switch (region_code2) { + case 7: + name = "Islas Baleares"; + break; + case 27: + name = "La Rioja"; + break; + case 29: + name = "Madrid"; + break; + case 31: + name = "Murcia"; + break; + case 32: + name = "Navarra"; + break; + case 34: + name = "Asturias"; + break; + case 39: + name = "Cantabria"; + break; + case 51: + name = "Andalucia"; + break; + case 52: + name = "Aragon"; + break; + case 53: + name = "Canarias"; + break; + case 54: + name = "Castilla-La Mancha"; + break; + case 55: + name = "Castilla y Leon"; + break; + case 56: + name = "Catalonia"; + break; + case 57: + name = "Extremadura"; + break; + case 58: + name = "Galicia"; + break; + case 59: + name = "Pais Vasco"; + break; + case 60: + name = "Comunidad Valenciana"; + break; + } + } + if (country_code.equals("ET") == true) { + switch (region_code2) { + case 44: + name = "Adis Abeba"; + break; + case 45: + name = "Afar"; + break; + case 46: + name = "Amara"; + break; + case 47: + name = "Binshangul Gumuz"; + break; + case 48: + name = "Dire Dawa"; + break; + case 49: + name = "Gambela Hizboch"; + break; + case 50: + name = "Hareri Hizb"; + break; + case 51: + name = "Oromiya"; + break; + case 52: + name = "Sumale"; + break; + case 53: + name = "Tigray"; + break; + case 54: + name = "YeDebub Biheroch Bihereseboch na Hizboch"; + break; + } + } + if (country_code.equals("FI") == true) { + switch (region_code2) { + case 1: + name = "Aland"; + break; + case 6: + name = "Lapland"; + break; + case 8: + name = "Oulu"; + break; + case 13: + name = "Southern Finland"; + break; + case 14: + name = "Eastern Finland"; + break; + case 15: + name = "Western Finland"; + break; + } + } + if (country_code.equals("FJ") == true) { + switch (region_code2) { + case 1: + name = "Central"; + break; + case 2: + name = "Eastern"; + break; + case 3: + name = "Northern"; + break; + case 4: + name = "Rotuma"; + break; + case 5: + name = "Western"; + break; + } + } + if (country_code.equals("FM") == true) { + switch (region_code2) { + case 1: + name = "Kosrae"; + break; + case 2: + name = "Pohnpei"; + break; + case 3: + name = "Chuuk"; + break; + case 4: + name = "Yap"; + break; + } + } + if (country_code.equals("FR") == true) { + switch (region_code2) { + case 97: + name = "Aquitaine"; + break; + case 98: + name = "Auvergne"; + break; + case 99: + name = "Basse-Normandie"; + break; + case 832: + name = "Bourgogne"; + break; + case 833: + name = "Bretagne"; + break; + case 834: + name = "Centre"; + break; + case 835: + name = "Champagne-Ardenne"; + break; + case 836: + name = "Corse"; + break; + case 837: + name = "Franche-Comte"; + break; + case 838: + name = "Haute-Normandie"; + break; + case 839: + name = "Ile-de-France"; + break; + case 840: + name = "Languedoc-Roussillon"; + break; + case 875: + name = "Limousin"; + break; + case 876: + name = "Lorraine"; + break; + case 877: + name = "Midi-Pyrenees"; + break; + case 878: + name = "Nord-Pas-de-Calais"; + break; + case 879: + name = "Pays de la Loire"; + break; + case 880: + name = "Picardie"; + break; + case 881: + name = "Poitou-Charentes"; + break; + case 882: + name = "Provence-Alpes-Cote d'Azur"; + break; + case 883: + name = "Rhone-Alpes"; + break; + case 918: + name = "Alsace"; + break; + } + } + if (country_code.equals("GA") == true) { + switch (region_code2) { + case 1: + name = "Estuaire"; + break; + case 2: + name = "Haut-Ogooue"; + break; + case 3: + name = "Moyen-Ogooue"; + break; + case 4: + name = "Ngounie"; + break; + case 5: + name = "Nyanga"; + break; + case 6: + name = "Ogooue-Ivindo"; + break; + case 7: + name = "Ogooue-Lolo"; + break; + case 8: + name = "Ogooue-Maritime"; + break; + case 9: + name = "Woleu-Ntem"; + break; + } + } + if (country_code.equals("GB") == true) { + switch (region_code2) { + case 832: + name = "Barking and Dagenham"; + break; + case 833: + name = "Barnet"; + break; + case 834: + name = "Barnsley"; + break; + case 835: + name = "Bath and North East Somerset"; + break; + case 836: + name = "Bedfordshire"; + break; + case 837: + name = "Bexley"; + break; + case 838: + name = "Birmingham"; + break; + case 839: + name = "Blackburn with Darwen"; + break; + case 840: + name = "Blackpool"; + break; + case 875: + name = "Bolton"; + break; + case 876: + name = "Bournemouth"; + break; + case 877: + name = "Bracknell Forest"; + break; + case 878: + name = "Bradford"; + break; + case 879: + name = "Brent"; + break; + case 880: + name = "Brighton and Hove"; + break; + case 881: + name = "Bristol"; + break; + case 882: + name = "Bromley"; + break; + case 883: + name = "Buckinghamshire"; + break; + case 918: + name = "Bury"; + break; + case 919: + name = "Calderdale"; + break; + case 920: + name = "Cambridgeshire"; + break; + case 921: + name = "Camden"; + break; + case 922: + name = "Cheshire"; + break; + case 923: + name = "Cornwall"; + break; + case 924: + name = "Coventry"; + break; + case 925: + name = "Croydon"; + break; + case 926: + name = "Cumbria"; + break; + case 961: + name = "Darlington"; + break; + case 962: + name = "Derby"; + break; + case 963: + name = "Derbyshire"; + break; + case 964: + name = "Devon"; + break; + case 965: + name = "Doncaster"; + break; + case 966: + name = "Dorset"; + break; + case 967: + name = "Dudley"; + break; + case 968: + name = "Durham"; + break; + case 969: + name = "Ealing"; + break; + case 1004: + name = "East Riding of Yorkshire"; + break; + case 1005: + name = "East Sussex"; + break; + case 1006: + name = "Enfield"; + break; + case 1007: + name = "Essex"; + break; + case 1008: + name = "Gateshead"; + break; + case 1009: + name = "Gloucestershire"; + break; + case 1010: + name = "Greenwich"; + break; + case 1011: + name = "Hackney"; + break; + case 1012: + name = "Halton"; + break; + case 1047: + name = "Hammersmith and Fulham"; + break; + case 1048: + name = "Hampshire"; + break; + case 1049: + name = "Haringey"; + break; + case 1050: + name = "Harrow"; + break; + case 1051: + name = "Hartlepool"; + break; + case 1052: + name = "Havering"; + break; + case 1053: + name = "Herefordshire"; + break; + case 1054: + name = "Hertford"; + break; + case 1055: + name = "Hillingdon"; + break; + case 1090: + name = "Hounslow"; + break; + case 1091: + name = "Isle of Wight"; + break; + case 1092: + name = "Islington"; + break; + case 1093: + name = "Kensington and Chelsea"; + break; + case 1094: + name = "Kent"; + break; + case 1095: + name = "Kingston upon Hull"; + break; + case 1096: + name = "Kingston upon Thames"; + break; + case 1097: + name = "Kirklees"; + break; + case 1098: + name = "Knowsley"; + break; + case 1133: + name = "Lambeth"; + break; + case 1134: + name = "Lancashire"; + break; + case 1135: + name = "Leeds"; + break; + case 1136: + name = "Leicester"; + break; + case 1137: + name = "Leicestershire"; + break; + case 1138: + name = "Lewisham"; + break; + case 1139: + name = "Lincolnshire"; + break; + case 1140: + name = "Liverpool"; + break; + case 1141: + name = "London"; + break; + case 1176: + name = "Luton"; + break; + case 1177: + name = "Manchester"; + break; + case 1178: + name = "Medway"; + break; + case 1179: + name = "Merton"; + break; + case 1180: + name = "Middlesbrough"; + break; + case 1181: + name = "Milton Keynes"; + break; + case 1182: + name = "Newcastle upon Tyne"; + break; + case 1183: + name = "Newham"; + break; + case 1184: + name = "Norfolk"; + break; + case 1219: + name = "Northamptonshire"; + break; + case 1220: + name = "North East Lincolnshire"; + break; + case 1221: + name = "North Lincolnshire"; + break; + case 1222: + name = "North Somerset"; + break; + case 1223: + name = "North Tyneside"; + break; + case 1224: + name = "Northumberland"; + break; + case 1225: + name = "North Yorkshire"; + break; + case 1226: + name = "Nottingham"; + break; + case 1227: + name = "Nottinghamshire"; + break; + case 1262: + name = "Oldham"; + break; + case 1263: + name = "Oxfordshire"; + break; + case 1264: + name = "Peterborough"; + break; + case 1265: + name = "Plymouth"; + break; + case 1266: + name = "Poole"; + break; + case 1267: + name = "Portsmouth"; + break; + case 1268: + name = "Reading"; + break; + case 1269: + name = "Redbridge"; + break; + case 1270: + name = "Redcar and Cleveland"; + break; + case 1305: + name = "Richmond upon Thames"; + break; + case 1306: + name = "Rochdale"; + break; + case 1307: + name = "Rotherham"; + break; + case 1308: + name = "Rutland"; + break; + case 1309: + name = "Salford"; + break; + case 1310: + name = "Shropshire"; + break; + case 1311: + name = "Sandwell"; + break; + case 1312: + name = "Sefton"; + break; + case 1313: + name = "Sheffield"; + break; + case 1348: + name = "Slough"; + break; + case 1349: + name = "Solihull"; + break; + case 1350: + name = "Somerset"; + break; + case 1351: + name = "Southampton"; + break; + case 1352: + name = "Southend-on-Sea"; + break; + case 1353: + name = "South Gloucestershire"; + break; + case 1354: + name = "South Tyneside"; + break; + case 1355: + name = "Southwark"; + break; + case 1356: + name = "Staffordshire"; + break; + case 1391: + name = "St. Helens"; + break; + case 1392: + name = "Stockport"; + break; + case 1393: + name = "Stockton-on-Tees"; + break; + case 1394: + name = "Stoke-on-Trent"; + break; + case 1395: + name = "Suffolk"; + break; + case 1396: + name = "Sunderland"; + break; + case 1397: + name = "Surrey"; + break; + case 1398: + name = "Sutton"; + break; + case 1399: + name = "Swindon"; + break; + case 1434: + name = "Tameside"; + break; + case 1435: + name = "Telford and Wrekin"; + break; + case 1436: + name = "Thurrock"; + break; + case 1437: + name = "Torbay"; + break; + case 1438: + name = "Tower Hamlets"; + break; + case 1439: + name = "Trafford"; + break; + case 1440: + name = "Wakefield"; + break; + case 1441: + name = "Walsall"; + break; + case 1442: + name = "Waltham Forest"; + break; + case 1477: + name = "Wandsworth"; + break; + case 1478: + name = "Warrington"; + break; + case 1479: + name = "Warwickshire"; + break; + case 1480: + name = "West Berkshire"; + break; + case 1481: + name = "Westminster"; + break; + case 1482: + name = "West Sussex"; + break; + case 1483: + name = "Wigan"; + break; + case 1484: + name = "Wiltshire"; + break; + case 1485: + name = "Windsor and Maidenhead"; + break; + case 1520: + name = "Wirral"; + break; + case 1521: + name = "Wokingham"; + break; + case 1522: + name = "Wolverhampton"; + break; + case 1523: + name = "Worcestershire"; + break; + case 1524: + name = "York"; + break; + case 1525: + name = "Antrim"; + break; + case 1526: + name = "Ards"; + break; + case 1527: + name = "Armagh"; + break; + case 1528: + name = "Ballymena"; + break; + case 1563: + name = "Ballymoney"; + break; + case 1564: + name = "Banbridge"; + break; + case 1565: + name = "Belfast"; + break; + case 1566: + name = "Carrickfergus"; + break; + case 1567: + name = "Castlereagh"; + break; + case 1568: + name = "Coleraine"; + break; + case 1569: + name = "Cookstown"; + break; + case 1570: + name = "Craigavon"; + break; + case 1571: + name = "Down"; + break; + case 1606: + name = "Dungannon"; + break; + case 1607: + name = "Fermanagh"; + break; + case 1608: + name = "Larne"; + break; + case 1609: + name = "Limavady"; + break; + case 1610: + name = "Lisburn"; + break; + case 1611: + name = "Derry"; + break; + case 1612: + name = "Magherafelt"; + break; + case 1613: + name = "Moyle"; + break; + case 1614: + name = "Newry and Mourne"; + break; + case 1649: + name = "Newtownabbey"; + break; + case 1650: + name = "North Down"; + break; + case 1651: + name = "Omagh"; + break; + case 1652: + name = "Strabane"; + break; + case 1653: + name = "Aberdeen City"; + break; + case 1654: + name = "Aberdeenshire"; + break; + case 1655: + name = "Angus"; + break; + case 1656: + name = "Argyll and Bute"; + break; + case 1657: + name = "Scottish Borders"; + break; + case 1692: + name = "Clackmannanshire"; + break; + case 1693: + name = "Dumfries and Galloway"; + break; + case 1694: + name = "Dundee City"; + break; + case 1695: + name = "East Ayrshire"; + break; + case 1696: + name = "East Dunbartonshire"; + break; + case 1697: + name = "East Lothian"; + break; + case 1698: + name = "East Renfrewshire"; + break; + case 1699: + name = "Edinburgh"; + break; + case 1700: + name = "Falkirk"; + break; + case 1735: + name = "Fife"; + break; + case 1736: + name = "Glasgow City"; + break; + case 1737: + name = "Highland"; + break; + case 1738: + name = "Inverclyde"; + break; + case 1739: + name = "Midlothian"; + break; + case 1740: + name = "Moray"; + break; + case 1741: + name = "North Ayrshire"; + break; + case 1742: + name = "North Lanarkshire"; + break; + case 1743: + name = "Orkney"; + break; + case 1778: + name = "Perth and Kinross"; + break; + case 1779: + name = "Renfrewshire"; + break; + case 1780: + name = "Shetland Islands"; + break; + case 1781: + name = "South Ayrshire"; + break; + case 1782: + name = "South Lanarkshire"; + break; + case 1783: + name = "Stirling"; + break; + case 1784: + name = "West Dunbartonshire"; + break; + case 1785: + name = "Eilean Siar"; + break; + case 1786: + name = "West Lothian"; + break; + case 1821: + name = "Isle of Anglesey"; + break; + case 1822: + name = "Blaenau Gwent"; + break; + case 1823: + name = "Bridgend"; + break; + case 1824: + name = "Caerphilly"; + break; + case 1825: + name = "Cardiff"; + break; + case 1826: + name = "Ceredigion"; + break; + case 1827: + name = "Carmarthenshire"; + break; + case 1828: + name = "Conwy"; + break; + case 1829: + name = "Denbighshire"; + break; + case 1864: + name = "Flintshire"; + break; + case 1865: + name = "Gwynedd"; + break; + case 1866: + name = "Merthyr Tydfil"; + break; + case 1867: + name = "Monmouthshire"; + break; + case 1868: + name = "Neath Port Talbot"; + break; + case 1869: + name = "Newport"; + break; + case 1870: + name = "Pembrokeshire"; + break; + case 1871: + name = "Powys"; + break; + case 1872: + name = "Rhondda Cynon Taff"; + break; + case 1907: + name = "Swansea"; + break; + case 1908: + name = "Torfaen"; + break; + case 1909: + name = "Vale of Glamorgan"; + break; + case 1910: + name = "Wrexham"; + break; + } + } + if (country_code.equals("GD") == true) { + switch (region_code2) { + case 1: + name = "Saint Andrew"; + break; + case 2: + name = "Saint David"; + break; + case 3: + name = "Saint George"; + break; + case 4: + name = "Saint John"; + break; + case 5: + name = "Saint Mark"; + break; + case 6: + name = "Saint Patrick"; + break; + } + } + if (country_code.equals("GE") == true) { + switch (region_code2) { + case 1: + name = "Abashis Raioni"; + break; + case 2: + name = "Abkhazia"; + break; + case 3: + name = "Adigenis Raioni"; + break; + case 4: + name = "Ajaria"; + break; + case 5: + name = "Akhalgoris Raioni"; + break; + case 6: + name = "Akhalk'alak'is Raioni"; + break; + case 7: + name = "Akhalts'ikhis Raioni"; + break; + case 8: + name = "Akhmetis Raioni"; + break; + case 9: + name = "Ambrolauris Raioni"; + break; + case 10: + name = "Aspindzis Raioni"; + break; + case 11: + name = "Baghdat'is Raioni"; + break; + case 12: + name = "Bolnisis Raioni"; + break; + case 13: + name = "Borjomis Raioni"; + break; + case 14: + name = "Chiat'ura"; + break; + case 15: + name = "Ch'khorotsqus Raioni"; + break; + case 16: + name = "Ch'okhatauris Raioni"; + break; + case 17: + name = "Dedop'listsqaros Raioni"; + break; + case 18: + name = "Dmanisis Raioni"; + break; + case 19: + name = "Dushet'is Raioni"; + break; + case 20: + name = "Gardabanis Raioni"; + break; + case 21: + name = "Gori"; + break; + case 22: + name = "Goris Raioni"; + break; + case 23: + name = "Gurjaanis Raioni"; + break; + case 24: + name = "Javis Raioni"; + break; + case 25: + name = "K'arelis Raioni"; + break; + case 26: + name = "Kaspis Raioni"; + break; + case 27: + name = "Kharagaulis Raioni"; + break; + case 28: + name = "Khashuris Raioni"; + break; + case 29: + name = "Khobis Raioni"; + break; + case 30: + name = "Khonis Raioni"; + break; + case 31: + name = "K'ut'aisi"; + break; + case 32: + name = "Lagodekhis Raioni"; + break; + case 33: + name = "Lanch'khut'is Raioni"; + break; + case 34: + name = "Lentekhis Raioni"; + break; + case 35: + name = "Marneulis Raioni"; + break; + case 36: + name = "Martvilis Raioni"; + break; + case 37: + name = "Mestiis Raioni"; + break; + case 38: + name = "Mts'khet'is Raioni"; + break; + case 39: + name = "Ninotsmindis Raioni"; + break; + case 40: + name = "Onis Raioni"; + break; + case 41: + name = "Ozurget'is Raioni"; + break; + case 42: + name = "P'ot'i"; + break; + case 43: + name = "Qazbegis Raioni"; + break; + case 44: + name = "Qvarlis Raioni"; + break; + case 45: + name = "Rust'avi"; + break; + case 46: + name = "Sach'kheris Raioni"; + break; + case 47: + name = "Sagarejos Raioni"; + break; + case 48: + name = "Samtrediis Raioni"; + break; + case 49: + name = "Senakis Raioni"; + break; + case 50: + name = "Sighnaghis Raioni"; + break; + case 51: + name = "T'bilisi"; + break; + case 52: + name = "T'elavis Raioni"; + break; + case 53: + name = "T'erjolis Raioni"; + break; + case 54: + name = "T'et'ritsqaros Raioni"; + break; + case 55: + name = "T'ianet'is Raioni"; + break; + case 56: + name = "Tqibuli"; + break; + case 57: + name = "Ts'ageris Raioni"; + break; + case 58: + name = "Tsalenjikhis Raioni"; + break; + case 59: + name = "Tsalkis Raioni"; + break; + case 60: + name = "Tsqaltubo"; + break; + case 61: + name = "Vanis Raioni"; + break; + case 62: + name = "Zestap'onis Raioni"; + break; + case 63: + name = "Zugdidi"; + break; + case 64: + name = "Zugdidis Raioni"; + break; + } + } + if (country_code.equals("GH") == true) { + switch (region_code2) { + case 1: + name = "Greater Accra"; + break; + case 2: + name = "Ashanti"; + break; + case 3: + name = "Brong-Ahafo"; + break; + case 4: + name = "Central"; + break; + case 5: + name = "Eastern"; + break; + case 6: + name = "Northern"; + break; + case 8: + name = "Volta"; + break; + case 9: + name = "Western"; + break; + case 10: + name = "Upper East"; + break; + case 11: + name = "Upper West"; + break; + } + } + if (country_code.equals("GL") == true) { + switch (region_code2) { + case 1: + name = "Nordgronland"; + break; + case 2: + name = "Ostgronland"; + break; + case 3: + name = "Vestgronland"; + break; + } + } + if (country_code.equals("GM") == true) { + switch (region_code2) { + case 1: + name = "Banjul"; + break; + case 2: + name = "Lower River"; + break; + case 3: + name = "Central River"; + break; + case 4: + name = "Upper River"; + break; + case 5: + name = "Western"; + break; + case 7: + name = "North Bank"; + break; + } + } + if (country_code.equals("GN") == true) { + switch (region_code2) { + case 1: + name = "Beyla"; + break; + case 2: + name = "Boffa"; + break; + case 3: + name = "Boke"; + break; + case 4: + name = "Conakry"; + break; + case 5: + name = "Dabola"; + break; + case 6: + name = "Dalaba"; + break; + case 7: + name = "Dinguiraye"; + break; + case 9: + name = "Faranah"; + break; + case 10: + name = "Forecariah"; + break; + case 11: + name = "Fria"; + break; + case 12: + name = "Gaoual"; + break; + case 13: + name = "Gueckedou"; + break; + case 15: + name = "Kerouane"; + break; + case 16: + name = "Kindia"; + break; + case 17: + name = "Kissidougou"; + break; + case 18: + name = "Koundara"; + break; + case 19: + name = "Kouroussa"; + break; + case 21: + name = "Macenta"; + break; + case 22: + name = "Mali"; + break; + case 23: + name = "Mamou"; + break; + case 25: + name = "Pita"; + break; + case 27: + name = "Telimele"; + break; + case 28: + name = "Tougue"; + break; + case 29: + name = "Yomou"; + break; + case 30: + name = "Coyah"; + break; + case 31: + name = "Dubreka"; + break; + case 32: + name = "Kankan"; + break; + case 33: + name = "Koubia"; + break; + case 34: + name = "Labe"; + break; + case 35: + name = "Lelouma"; + break; + case 36: + name = "Lola"; + break; + case 37: + name = "Mandiana"; + break; + case 38: + name = "Nzerekore"; + break; + case 39: + name = "Siguiri"; + break; + } + } + if (country_code.equals("GQ") == true) { + switch (region_code2) { + case 3: + name = "Annobon"; + break; + case 4: + name = "Bioko Norte"; + break; + case 5: + name = "Bioko Sur"; + break; + case 6: + name = "Centro Sur"; + break; + case 7: + name = "Kie-Ntem"; + break; + case 8: + name = "Litoral"; + break; + case 9: + name = "Wele-Nzas"; + break; + } + } + if (country_code.equals("GR") == true) { + switch (region_code2) { + case 1: + name = "Evros"; + break; + case 2: + name = "Rodhopi"; + break; + case 3: + name = "Xanthi"; + break; + case 4: + name = "Drama"; + break; + case 5: + name = "Serrai"; + break; + case 6: + name = "Kilkis"; + break; + case 7: + name = "Pella"; + break; + case 8: + name = "Florina"; + break; + case 9: + name = "Kastoria"; + break; + case 10: + name = "Grevena"; + break; + case 11: + name = "Kozani"; + break; + case 12: + name = "Imathia"; + break; + case 13: + name = "Thessaloniki"; + break; + case 14: + name = "Kavala"; + break; + case 15: + name = "Khalkidhiki"; + break; + case 16: + name = "Pieria"; + break; + case 17: + name = "Ioannina"; + break; + case 18: + name = "Thesprotia"; + break; + case 19: + name = "Preveza"; + break; + case 20: + name = "Arta"; + break; + case 21: + name = "Larisa"; + break; + case 22: + name = "Trikala"; + break; + case 23: + name = "Kardhitsa"; + break; + case 24: + name = "Magnisia"; + break; + case 25: + name = "Kerkira"; + break; + case 26: + name = "Levkas"; + break; + case 27: + name = "Kefallinia"; + break; + case 28: + name = "Zakinthos"; + break; + case 29: + name = "Fthiotis"; + break; + case 30: + name = "Evritania"; + break; + case 31: + name = "Aitolia kai Akarnania"; + break; + case 32: + name = "Fokis"; + break; + case 33: + name = "Voiotia"; + break; + case 34: + name = "Evvoia"; + break; + case 35: + name = "Attiki"; + break; + case 36: + name = "Argolis"; + break; + case 37: + name = "Korinthia"; + break; + case 38: + name = "Akhaia"; + break; + case 39: + name = "Ilia"; + break; + case 40: + name = "Messinia"; + break; + case 41: + name = "Arkadhia"; + break; + case 42: + name = "Lakonia"; + break; + case 43: + name = "Khania"; + break; + case 44: + name = "Rethimni"; + break; + case 45: + name = "Iraklion"; + break; + case 46: + name = "Lasithi"; + break; + case 47: + name = "Dhodhekanisos"; + break; + case 48: + name = "Samos"; + break; + case 49: + name = "Kikladhes"; + break; + case 50: + name = "Khios"; + break; + case 51: + name = "Lesvos"; + break; + } + } + if (country_code.equals("GT") == true) { + switch (region_code2) { + case 1: + name = "Alta Verapaz"; + break; + case 2: + name = "Baja Verapaz"; + break; + case 3: + name = "Chimaltenango"; + break; + case 4: + name = "Chiquimula"; + break; + case 5: + name = "El Progreso"; + break; + case 6: + name = "Escuintla"; + break; + case 7: + name = "Guatemala"; + break; + case 8: + name = "Huehuetenango"; + break; + case 9: + name = "Izabal"; + break; + case 10: + name = "Jalapa"; + break; + case 11: + name = "Jutiapa"; + break; + case 12: + name = "Peten"; + break; + case 13: + name = "Quetzaltenango"; + break; + case 14: + name = "Quiche"; + break; + case 15: + name = "Retalhuleu"; + break; + case 16: + name = "Sacatepequez"; + break; + case 17: + name = "San Marcos"; + break; + case 18: + name = "Santa Rosa"; + break; + case 19: + name = "Solola"; + break; + case 20: + name = "Suchitepequez"; + break; + case 21: + name = "Totonicapan"; + break; + case 22: + name = "Zacapa"; + break; + } + } + if (country_code.equals("GW") == true) { + switch (region_code2) { + case 1: + name = "Bafata"; + break; + case 2: + name = "Quinara"; + break; + case 4: + name = "Oio"; + break; + case 5: + name = "Bolama"; + break; + case 6: + name = "Cacheu"; + break; + case 7: + name = "Tombali"; + break; + case 10: + name = "Gabu"; + break; + case 11: + name = "Bissau"; + break; + case 12: + name = "Biombo"; + break; + } + } + if (country_code.equals("GY") == true) { + switch (region_code2) { + case 10: + name = "Barima-Waini"; + break; + case 11: + name = "Cuyuni-Mazaruni"; + break; + case 12: + name = "Demerara-Mahaica"; + break; + case 13: + name = "East Berbice-Corentyne"; + break; + case 14: + name = "Essequibo Islands-West Demerara"; + break; + case 15: + name = "Mahaica-Berbice"; + break; + case 16: + name = "Pomeroon-Supenaam"; + break; + case 17: + name = "Potaro-Siparuni"; + break; + case 18: + name = "Upper Demerara-Berbice"; + break; + case 19: + name = "Upper Takutu-Upper Essequibo"; + break; + } + } + if (country_code.equals("HN") == true) { + switch (region_code2) { + case 1: + name = "Atlantida"; + break; + case 2: + name = "Choluteca"; + break; + case 3: + name = "Colon"; + break; + case 4: + name = "Comayagua"; + break; + case 5: + name = "Copan"; + break; + case 6: + name = "Cortes"; + break; + case 7: + name = "El Paraiso"; + break; + case 8: + name = "Francisco Morazan"; + break; + case 9: + name = "Gracias a Dios"; + break; + case 10: + name = "Intibuca"; + break; + case 11: + name = "Islas de la Bahia"; + break; + case 12: + name = "La Paz"; + break; + case 13: + name = "Lempira"; + break; + case 14: + name = "Ocotepeque"; + break; + case 15: + name = "Olancho"; + break; + case 16: + name = "Santa Barbara"; + break; + case 17: + name = "Valle"; + break; + case 18: + name = "Yoro"; + break; + } + } + if (country_code.equals("HR") == true) { + switch (region_code2) { + case 1: + name = "Bjelovarsko-Bilogorska"; + break; + case 2: + name = "Brodsko-Posavska"; + break; + case 3: + name = "Dubrovacko-Neretvanska"; + break; + case 4: + name = "Istarska"; + break; + case 5: + name = "Karlovacka"; + break; + case 6: + name = "Koprivnicko-Krizevacka"; + break; + case 7: + name = "Krapinsko-Zagorska"; + break; + case 8: + name = "Licko-Senjska"; + break; + case 9: + name = "Medimurska"; + break; + case 10: + name = "Osjecko-Baranjska"; + break; + case 11: + name = "Pozesko-Slavonska"; + break; + case 12: + name = "Primorsko-Goranska"; + break; + case 13: + name = "Sibensko-Kninska"; + break; + case 14: + name = "Sisacko-Moslavacka"; + break; + case 15: + name = "Splitsko-Dalmatinska"; + break; + case 16: + name = "Varazdinska"; + break; + case 17: + name = "Viroviticko-Podravska"; + break; + case 18: + name = "Vukovarsko-Srijemska"; + break; + case 19: + name = "Zadarska"; + break; + case 20: + name = "Zagrebacka"; + break; + case 21: + name = "Grad Zagreb"; + break; + } + } + if (country_code.equals("HT") == true) { + switch (region_code2) { + case 3: + name = "Nord-Ouest"; + break; + case 6: + name = "Artibonite"; + break; + case 7: + name = "Centre"; + break; + case 9: + name = "Nord"; + break; + case 10: + name = "Nord-Est"; + break; + case 11: + name = "Ouest"; + break; + case 12: + name = "Sud"; + break; + case 13: + name = "Sud-Est"; + break; + case 14: + name = "Grand' Anse"; + break; + case 15: + name = "Nippes"; + break; + } + } + if (country_code.equals("HU") == true) { + switch (region_code2) { + case 1: + name = "Bacs-Kiskun"; + break; + case 2: + name = "Baranya"; + break; + case 3: + name = "Bekes"; + break; + case 4: + name = "Borsod-Abauj-Zemplen"; + break; + case 5: + name = "Budapest"; + break; + case 6: + name = "Csongrad"; + break; + case 7: + name = "Debrecen"; + break; + case 8: + name = "Fejer"; + break; + case 9: + name = "Gyor-Moson-Sopron"; + break; + case 10: + name = "Hajdu-Bihar"; + break; + case 11: + name = "Heves"; + break; + case 12: + name = "Komarom-Esztergom"; + break; + case 13: + name = "Miskolc"; + break; + case 14: + name = "Nograd"; + break; + case 15: + name = "Pecs"; + break; + case 16: + name = "Pest"; + break; + case 17: + name = "Somogy"; + break; + case 18: + name = "Szabolcs-Szatmar-Bereg"; + break; + case 19: + name = "Szeged"; + break; + case 20: + name = "Jasz-Nagykun-Szolnok"; + break; + case 21: + name = "Tolna"; + break; + case 22: + name = "Vas"; + break; + case 23: + name = "Veszprem"; + break; + case 24: + name = "Zala"; + break; + case 25: + name = "Gyor"; + break; + case 26: + name = "Bekescsaba"; + break; + case 27: + name = "Dunaujvaros"; + break; + case 28: + name = "Eger"; + break; + case 29: + name = "Hodmezovasarhely"; + break; + case 30: + name = "Kaposvar"; + break; + case 31: + name = "Kecskemet"; + break; + case 32: + name = "Nagykanizsa"; + break; + case 33: + name = "Nyiregyhaza"; + break; + case 34: + name = "Sopron"; + break; + case 35: + name = "Szekesfehervar"; + break; + case 36: + name = "Szolnok"; + break; + case 37: + name = "Szombathely"; + break; + case 38: + name = "Tatabanya"; + break; + case 39: + name = "Veszprem"; + break; + case 40: + name = "Zalaegerszeg"; + break; + case 41: + name = "Salgotarjan"; + break; + case 42: + name = "Szekszard"; + break; + case 43: + name = "Erd"; + break; + } + } + if (country_code.equals("ID") == true) { + switch (region_code2) { + case 1: + name = "Aceh"; + break; + case 2: + name = "Bali"; + break; + case 3: + name = "Bengkulu"; + break; + case 4: + name = "Jakarta Raya"; + break; + case 5: + name = "Jambi"; + break; + case 7: + name = "Jawa Tengah"; + break; + case 8: + name = "Jawa Timur"; + break; + case 10: + name = "Yogyakarta"; + break; + case 11: + name = "Kalimantan Barat"; + break; + case 12: + name = "Kalimantan Selatan"; + break; + case 13: + name = "Kalimantan Tengah"; + break; + case 14: + name = "Kalimantan Timur"; + break; + case 15: + name = "Lampung"; + break; + case 17: + name = "Nusa Tenggara Barat"; + break; + case 18: + name = "Nusa Tenggara Timur"; + break; + case 21: + name = "Sulawesi Tengah"; + break; + case 22: + name = "Sulawesi Tenggara"; + break; + case 24: + name = "Sumatera Barat"; + break; + case 26: + name = "Sumatera Utara"; + break; + case 28: + name = "Maluku"; + break; + case 29: + name = "Maluku Utara"; + break; + case 30: + name = "Jawa Barat"; + break; + case 31: + name = "Sulawesi Utara"; + break; + case 32: + name = "Sumatera Selatan"; + break; + case 33: + name = "Banten"; + break; + case 34: + name = "Gorontalo"; + break; + case 35: + name = "Kepulauan Bangka Belitung"; + break; + case 36: + name = "Papua"; + break; + case 37: + name = "Riau"; + break; + case 38: + name = "Sulawesi Selatan"; + break; + case 39: + name = "Irian Jaya Barat"; + break; + case 40: + name = "Kepulauan Riau"; + break; + case 41: + name = "Sulawesi Barat"; + break; + } + } + if (country_code.equals("IE") == true) { + switch (region_code2) { + case 1: + name = "Carlow"; + break; + case 2: + name = "Cavan"; + break; + case 3: + name = "Clare"; + break; + case 4: + name = "Cork"; + break; + case 6: + name = "Donegal"; + break; + case 7: + name = "Dublin"; + break; + case 10: + name = "Galway"; + break; + case 11: + name = "Kerry"; + break; + case 12: + name = "Kildare"; + break; + case 13: + name = "Kilkenny"; + break; + case 14: + name = "Leitrim"; + break; + case 15: + name = "Laois"; + break; + case 16: + name = "Limerick"; + break; + case 18: + name = "Longford"; + break; + case 19: + name = "Louth"; + break; + case 20: + name = "Mayo"; + break; + case 21: + name = "Meath"; + break; + case 22: + name = "Monaghan"; + break; + case 23: + name = "Offaly"; + break; + case 24: + name = "Roscommon"; + break; + case 25: + name = "Sligo"; + break; + case 26: + name = "Tipperary"; + break; + case 27: + name = "Waterford"; + break; + case 29: + name = "Westmeath"; + break; + case 30: + name = "Wexford"; + break; + case 31: + name = "Wicklow"; + break; + } + } + if (country_code.equals("IL") == true) { + switch (region_code2) { + case 1: + name = "HaDarom"; + break; + case 2: + name = "HaMerkaz"; + break; + case 3: + name = "HaZafon"; + break; + case 4: + name = "Hefa"; + break; + case 5: + name = "Tel Aviv"; + break; + case 6: + name = "Yerushalayim"; + break; + } + } + if (country_code.equals("IN") == true) { + switch (region_code2) { + case 1: + name = "Andaman and Nicobar Islands"; + break; + case 2: + name = "Andhra Pradesh"; + break; + case 3: + name = "Assam"; + break; + case 5: + name = "Chandigarh"; + break; + case 6: + name = "Dadra and Nagar Haveli"; + break; + case 7: + name = "Delhi"; + break; + case 9: + name = "Gujarat"; + break; + case 10: + name = "Haryana"; + break; + case 11: + name = "Himachal Pradesh"; + break; + case 12: + name = "Jammu and Kashmir"; + break; + case 13: + name = "Kerala"; + break; + case 14: + name = "Lakshadweep"; + break; + case 16: + name = "Maharashtra"; + break; + case 17: + name = "Manipur"; + break; + case 18: + name = "Meghalaya"; + break; + case 19: + name = "Karnataka"; + break; + case 20: + name = "Nagaland"; + break; + case 21: + name = "Orissa"; + break; + case 22: + name = "Puducherry"; + break; + case 23: + name = "Punjab"; + break; + case 24: + name = "Rajasthan"; + break; + case 25: + name = "Tamil Nadu"; + break; + case 26: + name = "Tripura"; + break; + case 28: + name = "West Bengal"; + break; + case 29: + name = "Sikkim"; + break; + case 30: + name = "Arunachal Pradesh"; + break; + case 31: + name = "Mizoram"; + break; + case 32: + name = "Daman and Diu"; + break; + case 33: + name = "Goa"; + break; + case 34: + name = "Bihar"; + break; + case 35: + name = "Madhya Pradesh"; + break; + case 36: + name = "Uttar Pradesh"; + break; + case 37: + name = "Chhattisgarh"; + break; + case 38: + name = "Jharkhand"; + break; + case 39: + name = "Uttarakhand"; + break; + } + } + if (country_code.equals("IQ") == true) { + switch (region_code2) { + case 1: + name = "Al Anbar"; + break; + case 2: + name = "Al Basrah"; + break; + case 3: + name = "Al Muthanna"; + break; + case 4: + name = "Al Qadisiyah"; + break; + case 5: + name = "As Sulaymaniyah"; + break; + case 6: + name = "Babil"; + break; + case 7: + name = "Baghdad"; + break; + case 8: + name = "Dahuk"; + break; + case 9: + name = "Dhi Qar"; + break; + case 10: + name = "Diyala"; + break; + case 11: + name = "Arbil"; + break; + case 12: + name = "Karbala'"; + break; + case 13: + name = "At Ta'mim"; + break; + case 14: + name = "Maysan"; + break; + case 15: + name = "Ninawa"; + break; + case 16: + name = "Wasit"; + break; + case 17: + name = "An Najaf"; + break; + case 18: + name = "Salah ad Din"; + break; + } + } + if (country_code.equals("IR") == true) { + switch (region_code2) { + case 1: + name = "Azarbayjan-e Bakhtari"; + break; + case 3: + name = "Chahar Mahall va Bakhtiari"; + break; + case 4: + name = "Sistan va Baluchestan"; + break; + case 5: + name = "Kohkiluyeh va Buyer Ahmadi"; + break; + case 7: + name = "Fars"; + break; + case 8: + name = "Gilan"; + break; + case 9: + name = "Hamadan"; + break; + case 10: + name = "Ilam"; + break; + case 11: + name = "Hormozgan"; + break; + case 12: + name = "Kerman"; + break; + case 13: + name = "Bakhtaran"; + break; + case 15: + name = "Khuzestan"; + break; + case 16: + name = "Kordestan"; + break; + case 17: + name = "Mazandaran"; + break; + case 18: + name = "Semnan Province"; + break; + case 19: + name = "Markazi"; + break; + case 21: + name = "Zanjan"; + break; + case 22: + name = "Bushehr"; + break; + case 23: + name = "Lorestan"; + break; + case 24: + name = "Markazi"; + break; + case 25: + name = "Semnan"; + break; + case 26: + name = "Tehran"; + break; + case 27: + name = "Zanjan"; + break; + case 28: + name = "Esfahan"; + break; + case 29: + name = "Kerman"; + break; + case 30: + name = "Khorasan"; + break; + case 31: + name = "Yazd"; + break; + case 32: + name = "Ardabil"; + break; + case 33: + name = "East Azarbaijan"; + break; + case 34: + name = "Markazi"; + break; + case 35: + name = "Mazandaran"; + break; + case 36: + name = "Zanjan"; + break; + case 37: + name = "Golestan"; + break; + case 38: + name = "Qazvin"; + break; + case 39: + name = "Qom"; + break; + case 40: + name = "Yazd"; + break; + case 41: + name = "Khorasan-e Janubi"; + break; + case 42: + name = "Khorasan-e Razavi"; + break; + case 43: + name = "Khorasan-e Shemali"; + break; + } + } + if (country_code.equals("IS") == true) { + switch (region_code2) { + case 3: + name = "Arnessysla"; + break; + case 5: + name = "Austur-Hunavatnssysla"; + break; + case 6: + name = "Austur-Skaftafellssysla"; + break; + case 7: + name = "Borgarfjardarsysla"; + break; + case 9: + name = "Eyjafjardarsysla"; + break; + case 10: + name = "Gullbringusysla"; + break; + case 15: + name = "Kjosarsysla"; + break; + case 17: + name = "Myrasysla"; + break; + case 20: + name = "Nordur-Mulasysla"; + break; + case 21: + name = "Nordur-Tingeyjarsysla"; + break; + case 23: + name = "Rangarvallasysla"; + break; + case 28: + name = "Skagafjardarsysla"; + break; + case 29: + name = "Snafellsnes- og Hnappadalssysla"; + break; + case 30: + name = "Strandasysla"; + break; + case 31: + name = "Sudur-Mulasysla"; + break; + case 32: + name = "Sudur-Tingeyjarsysla"; + break; + case 34: + name = "Vestur-Bardastrandarsysla"; + break; + case 35: + name = "Vestur-Hunavatnssysla"; + break; + case 36: + name = "Vestur-Isafjardarsysla"; + break; + case 37: + name = "Vestur-Skaftafellssysla"; + break; + case 40: + name = "Norourland Eystra"; + break; + case 41: + name = "Norourland Vestra"; + break; + case 42: + name = "Suourland"; + break; + case 43: + name = "Suournes"; + break; + case 44: + name = "Vestfiroir"; + break; + case 45: + name = "Vesturland"; + break; + } + } + if (country_code.equals("IT") == true) { + switch (region_code2) { + case 1: + name = "Abruzzi"; + break; + case 2: + name = "Basilicata"; + break; + case 3: + name = "Calabria"; + break; + case 4: + name = "Campania"; + break; + case 5: + name = "Emilia-Romagna"; + break; + case 6: + name = "Friuli-Venezia Giulia"; + break; + case 7: + name = "Lazio"; + break; + case 8: + name = "Liguria"; + break; + case 9: + name = "Lombardia"; + break; + case 10: + name = "Marche"; + break; + case 11: + name = "Molise"; + break; + case 12: + name = "Piemonte"; + break; + case 13: + name = "Puglia"; + break; + case 14: + name = "Sardegna"; + break; + case 15: + name = "Sicilia"; + break; + case 16: + name = "Toscana"; + break; + case 17: + name = "Trentino-Alto Adige"; + break; + case 18: + name = "Umbria"; + break; + case 19: + name = "Valle d'Aosta"; + break; + case 20: + name = "Veneto"; + break; + } + } + if (country_code.equals("JM") == true) { + switch (region_code2) { + case 1: + name = "Clarendon"; + break; + case 2: + name = "Hanover"; + break; + case 4: + name = "Manchester"; + break; + case 7: + name = "Portland"; + break; + case 8: + name = "Saint Andrew"; + break; + case 9: + name = "Saint Ann"; + break; + case 10: + name = "Saint Catherine"; + break; + case 11: + name = "Saint Elizabeth"; + break; + case 12: + name = "Saint James"; + break; + case 13: + name = "Saint Mary"; + break; + case 14: + name = "Saint Thomas"; + break; + case 15: + name = "Trelawny"; + break; + case 16: + name = "Westmoreland"; + break; + case 17: + name = "Kingston"; + break; + } + } + if (country_code.equals("JO") == true) { + switch (region_code2) { + case 2: + name = "Al Balqa'"; + break; + case 9: + name = "Al Karak"; + break; + case 12: + name = "At Tafilah"; + break; + case 15: + name = "Al Mafraq"; + break; + case 16: + name = "Amman"; + break; + case 17: + name = "Az Zaraqa"; + break; + case 18: + name = "Irbid"; + break; + case 19: + name = "Ma'an"; + break; + case 20: + name = "Ajlun"; + break; + case 21: + name = "Al Aqabah"; + break; + case 22: + name = "Jarash"; + break; + case 23: + name = "Madaba"; + break; + } + } + if (country_code.equals("JP") == true) { + switch (region_code2) { + case 1: + name = "Aichi"; + break; + case 2: + name = "Akita"; + break; + case 3: + name = "Aomori"; + break; + case 4: + name = "Chiba"; + break; + case 5: + name = "Ehime"; + break; + case 6: + name = "Fukui"; + break; + case 7: + name = "Fukuoka"; + break; + case 8: + name = "Fukushima"; + break; + case 9: + name = "Gifu"; + break; + case 10: + name = "Gumma"; + break; + case 11: + name = "Hiroshima"; + break; + case 12: + name = "Hokkaido"; + break; + case 13: + name = "Hyogo"; + break; + case 14: + name = "Ibaraki"; + break; + case 15: + name = "Ishikawa"; + break; + case 16: + name = "Iwate"; + break; + case 17: + name = "Kagawa"; + break; + case 18: + name = "Kagoshima"; + break; + case 19: + name = "Kanagawa"; + break; + case 20: + name = "Kochi"; + break; + case 21: + name = "Kumamoto"; + break; + case 22: + name = "Kyoto"; + break; + case 23: + name = "Mie"; + break; + case 24: + name = "Miyagi"; + break; + case 25: + name = "Miyazaki"; + break; + case 26: + name = "Nagano"; + break; + case 27: + name = "Nagasaki"; + break; + case 28: + name = "Nara"; + break; + case 29: + name = "Niigata"; + break; + case 30: + name = "Oita"; + break; + case 31: + name = "Okayama"; + break; + case 32: + name = "Osaka"; + break; + case 33: + name = "Saga"; + break; + case 34: + name = "Saitama"; + break; + case 35: + name = "Shiga"; + break; + case 36: + name = "Shimane"; + break; + case 37: + name = "Shizuoka"; + break; + case 38: + name = "Tochigi"; + break; + case 39: + name = "Tokushima"; + break; + case 40: + name = "Tokyo"; + break; + case 41: + name = "Tottori"; + break; + case 42: + name = "Toyama"; + break; + case 43: + name = "Wakayama"; + break; + case 44: + name = "Yamagata"; + break; + case 45: + name = "Yamaguchi"; + break; + case 46: + name = "Yamanashi"; + break; + case 47: + name = "Okinawa"; + break; + } + } + if (country_code.equals("KE") == true) { + switch (region_code2) { + case 1: + name = "Central"; + break; + case 2: + name = "Coast"; + break; + case 3: + name = "Eastern"; + break; + case 5: + name = "Nairobi Area"; + break; + case 6: + name = "North-Eastern"; + break; + case 7: + name = "Nyanza"; + break; + case 8: + name = "Rift Valley"; + break; + case 9: + name = "Western"; + break; + } + } + if (country_code.equals("KG") == true) { + switch (region_code2) { + case 1: + name = "Bishkek"; + break; + case 2: + name = "Chuy"; + break; + case 3: + name = "Jalal-Abad"; + break; + case 4: + name = "Naryn"; + break; + case 5: + name = "Osh"; + break; + case 6: + name = "Talas"; + break; + case 7: + name = "Ysyk-Kol"; + break; + case 8: + name = "Osh"; + break; + case 9: + name = "Batken"; + break; + } + } + if (country_code.equals("KH") == true) { + switch (region_code2) { + case 1: + name = "Batdambang"; + break; + case 2: + name = "Kampong Cham"; + break; + case 3: + name = "Kampong Chhnang"; + break; + case 4: + name = "Kampong Speu"; + break; + case 5: + name = "Kampong Thum"; + break; + case 6: + name = "Kampot"; + break; + case 7: + name = "Kandal"; + break; + case 8: + name = "Koh Kong"; + break; + case 9: + name = "Kracheh"; + break; + case 10: + name = "Mondulkiri"; + break; + case 11: + name = "Phnum Penh"; + break; + case 12: + name = "Pursat"; + break; + case 13: + name = "Preah Vihear"; + break; + case 14: + name = "Prey Veng"; + break; + case 15: + name = "Ratanakiri Kiri"; + break; + case 16: + name = "Siem Reap"; + break; + case 17: + name = "Stung Treng"; + break; + case 18: + name = "Svay Rieng"; + break; + case 19: + name = "Takeo"; + break; + case 25: + name = "Banteay Meanchey"; + break; + case 29: + name = "Batdambang"; + break; + case 30: + name = "Pailin"; + break; + } + } + if (country_code.equals("KI") == true) { + switch (region_code2) { + case 1: + name = "Gilbert Islands"; + break; + case 2: + name = "Line Islands"; + break; + case 3: + name = "Phoenix Islands"; + break; + } + } + if (country_code.equals("KM") == true) { + switch (region_code2) { + case 1: + name = "Anjouan"; + break; + case 2: + name = "Grande Comore"; + break; + case 3: + name = "Moheli"; + break; + } + } + if (country_code.equals("KN") == true) { + switch (region_code2) { + case 1: + name = "Christ Church Nichola Town"; + break; + case 2: + name = "Saint Anne Sandy Point"; + break; + case 3: + name = "Saint George Basseterre"; + break; + case 4: + name = "Saint George Gingerland"; + break; + case 5: + name = "Saint James Windward"; + break; + case 6: + name = "Saint John Capisterre"; + break; + case 7: + name = "Saint John Figtree"; + break; + case 8: + name = "Saint Mary Cayon"; + break; + case 9: + name = "Saint Paul Capisterre"; + break; + case 10: + name = "Saint Paul Charlestown"; + break; + case 11: + name = "Saint Peter Basseterre"; + break; + case 12: + name = "Saint Thomas Lowland"; + break; + case 13: + name = "Saint Thomas Middle Island"; + break; + case 15: + name = "Trinity Palmetto Point"; + break; + } + } + if (country_code.equals("KP") == true) { + switch (region_code2) { + case 1: + name = "Chagang-do"; + break; + case 3: + name = "Hamgyong-namdo"; + break; + case 6: + name = "Hwanghae-namdo"; + break; + case 7: + name = "Hwanghae-bukto"; + break; + case 8: + name = "Kaesong-si"; + break; + case 9: + name = "Kangwon-do"; + break; + case 11: + name = "P'yongan-bukto"; + break; + case 12: + name = "P'yongyang-si"; + break; + case 13: + name = "Yanggang-do"; + break; + case 14: + name = "Namp'o-si"; + break; + case 15: + name = "P'yongan-namdo"; + break; + case 17: + name = "Hamgyong-bukto"; + break; + case 18: + name = "Najin Sonbong-si"; + break; + } + } + if (country_code.equals("KR") == true) { + switch (region_code2) { + case 1: + name = "Cheju-do"; + break; + case 3: + name = "Cholla-bukto"; + break; + case 5: + name = "Ch'ungch'ong-bukto"; + break; + case 6: + name = "Kangwon-do"; + break; + case 10: + name = "Pusan-jikhalsi"; + break; + case 11: + name = "Seoul-t'ukpyolsi"; + break; + case 12: + name = "Inch'on-jikhalsi"; + break; + case 13: + name = "Kyonggi-do"; + break; + case 14: + name = "Kyongsang-bukto"; + break; + case 15: + name = "Taegu-jikhalsi"; + break; + case 16: + name = "Cholla-namdo"; + break; + case 17: + name = "Ch'ungch'ong-namdo"; + break; + case 18: + name = "Kwangju-jikhalsi"; + break; + case 19: + name = "Taejon-jikhalsi"; + break; + case 20: + name = "Kyongsang-namdo"; + break; + case 21: + name = "Ulsan-gwangyoksi"; + break; + } + } + if (country_code.equals("KW") == true) { + switch (region_code2) { + case 1: + name = "Al Ahmadi"; + break; + case 2: + name = "Al Kuwayt"; + break; + case 5: + name = "Al Jahra"; + break; + case 7: + name = "Al Farwaniyah"; + break; + case 8: + name = "Hawalli"; + break; + case 9: + name = "Mubarak al Kabir"; + break; + } + } + if (country_code.equals("KY") == true) { + switch (region_code2) { + case 1: + name = "Creek"; + break; + case 2: + name = "Eastern"; + break; + case 3: + name = "Midland"; + break; + case 4: + name = "South Town"; + break; + case 5: + name = "Spot Bay"; + break; + case 6: + name = "Stake Bay"; + break; + case 7: + name = "West End"; + break; + case 8: + name = "Western"; + break; + } + } + if (country_code.equals("KZ") == true) { + switch (region_code2) { + case 1: + name = "Almaty"; + break; + case 2: + name = "Almaty City"; + break; + case 3: + name = "Aqmola"; + break; + case 4: + name = "Aqtobe"; + break; + case 5: + name = "Astana"; + break; + case 6: + name = "Atyrau"; + break; + case 7: + name = "West Kazakhstan"; + break; + case 8: + name = "Bayqonyr"; + break; + case 9: + name = "Mangghystau"; + break; + case 10: + name = "South Kazakhstan"; + break; + case 11: + name = "Pavlodar"; + break; + case 12: + name = "Qaraghandy"; + break; + case 13: + name = "Qostanay"; + break; + case 14: + name = "Qyzylorda"; + break; + case 15: + name = "East Kazakhstan"; + break; + case 16: + name = "North Kazakhstan"; + break; + case 17: + name = "Zhambyl"; + break; + } + } + if (country_code.equals("LA") == true) { + switch (region_code2) { + case 1: + name = "Attapu"; + break; + case 2: + name = "Champasak"; + break; + case 3: + name = "Houaphan"; + break; + case 4: + name = "Khammouan"; + break; + case 5: + name = "Louang Namtha"; + break; + case 7: + name = "Oudomxai"; + break; + case 8: + name = "Phongsali"; + break; + case 9: + name = "Saravan"; + break; + case 10: + name = "Savannakhet"; + break; + case 11: + name = "Vientiane"; + break; + case 13: + name = "Xaignabouri"; + break; + case 14: + name = "Xiangkhoang"; + break; + case 17: + name = "Louangphrabang"; + break; + } + } + if (country_code.equals("LB") == true) { + switch (region_code2) { + case 1: + name = "Beqaa"; + break; + case 2: + name = "Al Janub"; + break; + case 3: + name = "Liban-Nord"; + break; + case 4: + name = "Beyrouth"; + break; + case 5: + name = "Mont-Liban"; + break; + case 6: + name = "Liban-Sud"; + break; + case 7: + name = "Nabatiye"; + break; + case 8: + name = "Beqaa"; + break; + case 9: + name = "Liban-Nord"; + break; + case 10: + name = "Aakk"; + break; + case 11: + name = "Baalbek-Hermel"; + break; + } + } + if (country_code.equals("LC") == true) { + switch (region_code2) { + case 1: + name = "Anse-la-Raye"; + break; + case 2: + name = "Dauphin"; + break; + case 3: + name = "Castries"; + break; + case 4: + name = "Choiseul"; + break; + case 5: + name = "Dennery"; + break; + case 6: + name = "Gros-Islet"; + break; + case 7: + name = "Laborie"; + break; + case 8: + name = "Micoud"; + break; + case 9: + name = "Soufriere"; + break; + case 10: + name = "Vieux-Fort"; + break; + case 11: + name = "Praslin"; + break; + } + } + if (country_code.equals("LI") == true) { + switch (region_code2) { + case 1: + name = "Balzers"; + break; + case 2: + name = "Eschen"; + break; + case 3: + name = "Gamprin"; + break; + case 4: + name = "Mauren"; + break; + case 5: + name = "Planken"; + break; + case 6: + name = "Ruggell"; + break; + case 7: + name = "Schaan"; + break; + case 8: + name = "Schellenberg"; + break; + case 9: + name = "Triesen"; + break; + case 10: + name = "Triesenberg"; + break; + case 11: + name = "Vaduz"; + break; + case 21: + name = "Gbarpolu"; + break; + case 22: + name = "River Gee"; + break; + } + } + if (country_code.equals("LK") == true) { + switch (region_code2) { + case 1: + name = "Amparai"; + break; + case 2: + name = "Anuradhapura"; + break; + case 3: + name = "Badulla"; + break; + case 4: + name = "Batticaloa"; + break; + case 6: + name = "Galle"; + break; + case 7: + name = "Hambantota"; + break; + case 9: + name = "Kalutara"; + break; + case 10: + name = "Kandy"; + break; + case 11: + name = "Kegalla"; + break; + case 12: + name = "Kurunegala"; + break; + case 14: + name = "Matale"; + break; + case 15: + name = "Matara"; + break; + case 16: + name = "Moneragala"; + break; + case 17: + name = "Nuwara Eliya"; + break; + case 18: + name = "Polonnaruwa"; + break; + case 19: + name = "Puttalam"; + break; + case 20: + name = "Ratnapura"; + break; + case 21: + name = "Trincomalee"; + break; + case 23: + name = "Colombo"; + break; + case 24: + name = "Gampaha"; + break; + case 25: + name = "Jaffna"; + break; + case 26: + name = "Mannar"; + break; + case 27: + name = "Mullaittivu"; + break; + case 28: + name = "Vavuniya"; + break; + case 29: + name = "Central"; + break; + case 30: + name = "North Central"; + break; + case 31: + name = "Northern"; + break; + case 32: + name = "North Western"; + break; + case 33: + name = "Sabaragamuwa"; + break; + case 34: + name = "Southern"; + break; + case 35: + name = "Uva"; + break; + case 36: + name = "Western"; + break; + } + } + if (country_code.equals("LR") == true) { + switch (region_code2) { + case 1: + name = "Bong"; + break; + case 4: + name = "Grand Cape Mount"; + break; + case 5: + name = "Lofa"; + break; + case 6: + name = "Maryland"; + break; + case 7: + name = "Monrovia"; + break; + case 9: + name = "Nimba"; + break; + case 10: + name = "Sino"; + break; + case 11: + name = "Grand Bassa"; + break; + case 12: + name = "Grand Cape Mount"; + break; + case 13: + name = "Maryland"; + break; + case 14: + name = "Montserrado"; + break; + case 17: + name = "Margibi"; + break; + case 18: + name = "River Cess"; + break; + case 19: + name = "Grand Gedeh"; + break; + case 20: + name = "Lofa"; + break; + case 21: + name = "Gbarpolu"; + break; + case 22: + name = "River Gee"; + break; + } + } + if (country_code.equals("LS") == true) { + switch (region_code2) { + case 10: + name = "Berea"; + break; + case 11: + name = "Butha-Buthe"; + break; + case 12: + name = "Leribe"; + break; + case 13: + name = "Mafeteng"; + break; + case 14: + name = "Maseru"; + break; + case 15: + name = "Mohales Hoek"; + break; + case 16: + name = "Mokhotlong"; + break; + case 17: + name = "Qachas Nek"; + break; + case 18: + name = "Quthing"; + break; + case 19: + name = "Thaba-Tseka"; + break; + } + } + if (country_code.equals("LT") == true) { + switch (region_code2) { + case 56: + name = "Alytaus Apskritis"; + break; + case 57: + name = "Kauno Apskritis"; + break; + case 58: + name = "Klaipedos Apskritis"; + break; + case 59: + name = "Marijampoles Apskritis"; + break; + case 60: + name = "Panevezio Apskritis"; + break; + case 61: + name = "Siauliu Apskritis"; + break; + case 62: + name = "Taurages Apskritis"; + break; + case 63: + name = "Telsiu Apskritis"; + break; + case 64: + name = "Utenos Apskritis"; + break; + case 65: + name = "Vilniaus Apskritis"; + break; + } + } + if (country_code.equals("LU") == true) { + switch (region_code2) { + case 1: + name = "Diekirch"; + break; + case 2: + name = "Grevenmacher"; + break; + case 3: + name = "Luxembourg"; + break; + } + } + if (country_code.equals("LV") == true) { + switch (region_code2) { + case 1: + name = "Aizkraukles"; + break; + case 2: + name = "Aluksnes"; + break; + case 3: + name = "Balvu"; + break; + case 4: + name = "Bauskas"; + break; + case 5: + name = "Cesu"; + break; + case 6: + name = "Daugavpils"; + break; + case 7: + name = "Daugavpils"; + break; + case 8: + name = "Dobeles"; + break; + case 9: + name = "Gulbenes"; + break; + case 10: + name = "Jekabpils"; + break; + case 11: + name = "Jelgava"; + break; + case 12: + name = "Jelgavas"; + break; + case 13: + name = "Jurmala"; + break; + case 14: + name = "Kraslavas"; + break; + case 15: + name = "Kuldigas"; + break; + case 16: + name = "Liepaja"; + break; + case 17: + name = "Liepajas"; + break; + case 18: + name = "Limbazu"; + break; + case 19: + name = "Ludzas"; + break; + case 20: + name = "Madonas"; + break; + case 21: + name = "Ogres"; + break; + case 22: + name = "Preilu"; + break; + case 23: + name = "Rezekne"; + break; + case 24: + name = "Rezeknes"; + break; + case 25: + name = "Riga"; + break; + case 26: + name = "Rigas"; + break; + case 27: + name = "Saldus"; + break; + case 28: + name = "Talsu"; + break; + case 29: + name = "Tukuma"; + break; + case 30: + name = "Valkas"; + break; + case 31: + name = "Valmieras"; + break; + case 32: + name = "Ventspils"; + break; + case 33: + name = "Ventspils"; + break; + } + } + if (country_code.equals("LY") == true) { + switch (region_code2) { + case 3: + name = "Al Aziziyah"; + break; + case 5: + name = "Al Jufrah"; + break; + case 8: + name = "Al Kufrah"; + break; + case 13: + name = "Ash Shati'"; + break; + case 30: + name = "Murzuq"; + break; + case 34: + name = "Sabha"; + break; + case 41: + name = "Tarhunah"; + break; + case 42: + name = "Tubruq"; + break; + case 45: + name = "Zlitan"; + break; + case 47: + name = "Ajdabiya"; + break; + case 48: + name = "Al Fatih"; + break; + case 49: + name = "Al Jabal al Akhdar"; + break; + case 50: + name = "Al Khums"; + break; + case 51: + name = "An Nuqat al Khams"; + break; + case 52: + name = "Awbari"; + break; + case 53: + name = "Az Zawiyah"; + break; + case 54: + name = "Banghazi"; + break; + case 55: + name = "Darnah"; + break; + case 56: + name = "Ghadamis"; + break; + case 57: + name = "Gharyan"; + break; + case 58: + name = "Misratah"; + break; + case 59: + name = "Sawfajjin"; + break; + case 60: + name = "Surt"; + break; + case 61: + name = "Tarabulus"; + break; + case 62: + name = "Yafran"; + break; + } + } + if (country_code.equals("MA") == true) { + switch (region_code2) { + case 45: + name = "Grand Casablanca"; + break; + case 46: + name = "Fes-Boulemane"; + break; + case 47: + name = "Marrakech-Tensift-Al Haouz"; + break; + case 48: + name = "Meknes-Tafilalet"; + break; + case 49: + name = "Rabat-Sale-Zemmour-Zaer"; + break; + case 50: + name = "Chaouia-Ouardigha"; + break; + case 51: + name = "Doukkala-Abda"; + break; + case 52: + name = "Gharb-Chrarda-Beni Hssen"; + break; + case 53: + name = "Guelmim-Es Smara"; + break; + case 54: + name = "Oriental"; + break; + case 55: + name = "Souss-Massa-Dr"; + break; + case 56: + name = "Tadla-Azilal"; + break; + case 57: + name = "Tanger-Tetouan"; + break; + case 58: + name = "Taza-Al Hoceima-Taounate"; + break; + case 59: + name = "La"; + break; + } + } + if (country_code.equals("MC") == true) { + switch (region_code2) { + case 1: + name = "La Condamine"; + break; + case 2: + name = "Monaco"; + break; + case 3: + name = "Monte-Carlo"; + break; + } + } + if (country_code.equals("MD") == true) { + switch (region_code2) { + case 51: + name = "Gagauzia"; + break; + case 57: + name = "Chisinau"; + break; + case 58: + name = "Stinga Nistrului"; + break; + case 59: + name = "Anenii Noi"; + break; + case 60: + name = "Balti"; + break; + case 61: + name = "Basarabeasca"; + break; + case 62: + name = "Bender"; + break; + case 63: + name = "Briceni"; + break; + case 64: + name = "Cahul"; + break; + case 65: + name = "Cantemir"; + break; + case 66: + name = "Calarasi"; + break; + case 67: + name = "Causeni"; + break; + case 68: + name = "Cimislia"; + break; + case 69: + name = "Criuleni"; + break; + case 70: + name = "Donduseni"; + break; + case 71: + name = "Drochia"; + break; + case 72: + name = "Dubasari"; + break; + case 73: + name = "Edinet"; + break; + case 74: + name = "Falesti"; + break; + case 75: + name = "Floresti"; + break; + case 76: + name = "Glodeni"; + break; + case 77: + name = "Hincesti"; + break; + case 78: + name = "Ialoveni"; + break; + case 79: + name = "Leova"; + break; + case 80: + name = "Nisporeni"; + break; + case 81: + name = "Ocnita"; + break; + case 82: + name = "Orhei"; + break; + case 83: + name = "Rezina"; + break; + case 84: + name = "Riscani"; + break; + case 85: + name = "Singerei"; + break; + case 86: + name = "Soldanesti"; + break; + case 87: + name = "Soroca"; + break; + case 88: + name = "Stefan-Voda"; + break; + case 89: + name = "Straseni"; + break; + case 90: + name = "Taraclia"; + break; + case 91: + name = "Telenesti"; + break; + case 92: + name = "Ungheni"; + break; + } + } + if (country_code.equals("MG") == true) { + switch (region_code2) { + case 1: + name = "Antsiranana"; + break; + case 2: + name = "Fianarantsoa"; + break; + case 3: + name = "Mahajanga"; + break; + case 4: + name = "Toamasina"; + break; + case 5: + name = "Antananarivo"; + break; + case 6: + name = "Toliara"; + break; + } + } + if (country_code.equals("MK") == true) { + switch (region_code2) { + case 1: + name = "Aracinovo"; + break; + case 2: + name = "Bac"; + break; + case 3: + name = "Belcista"; + break; + case 4: + name = "Berovo"; + break; + case 5: + name = "Bistrica"; + break; + case 6: + name = "Bitola"; + break; + case 7: + name = "Blatec"; + break; + case 8: + name = "Bogdanci"; + break; + case 9: + name = "Bogomila"; + break; + case 10: + name = "Bogovinje"; + break; + case 11: + name = "Bosilovo"; + break; + case 12: + name = "Brvenica"; + break; + case 13: + name = "Cair"; + break; + case 14: + name = "Capari"; + break; + case 15: + name = "Caska"; + break; + case 16: + name = "Cegrane"; + break; + case 17: + name = "Centar"; + break; + case 18: + name = "Centar Zupa"; + break; + case 19: + name = "Cesinovo"; + break; + case 20: + name = "Cucer-Sandevo"; + break; + case 21: + name = "Debar"; + break; + case 22: + name = "Delcevo"; + break; + case 23: + name = "Delogozdi"; + break; + case 24: + name = "Demir Hisar"; + break; + case 25: + name = "Demir Kapija"; + break; + case 26: + name = "Dobrusevo"; + break; + case 27: + name = "Dolna Banjica"; + break; + case 28: + name = "Dolneni"; + break; + case 29: + name = "Dorce Petrov"; + break; + case 30: + name = "Drugovo"; + break; + case 31: + name = "Dzepciste"; + break; + case 32: + name = "Gazi Baba"; + break; + case 33: + name = "Gevgelija"; + break; + case 34: + name = "Gostivar"; + break; + case 35: + name = "Gradsko"; + break; + case 36: + name = "Ilinden"; + break; + case 37: + name = "Izvor"; + break; + case 38: + name = "Jegunovce"; + break; + case 39: + name = "Kamenjane"; + break; + case 40: + name = "Karbinci"; + break; + case 41: + name = "Karpos"; + break; + case 42: + name = "Kavadarci"; + break; + case 43: + name = "Kicevo"; + break; + case 44: + name = "Kisela Voda"; + break; + case 45: + name = "Klecevce"; + break; + case 46: + name = "Kocani"; + break; + case 47: + name = "Konce"; + break; + case 48: + name = "Kondovo"; + break; + case 49: + name = "Konopiste"; + break; + case 50: + name = "Kosel"; + break; + case 51: + name = "Kratovo"; + break; + case 52: + name = "Kriva Palanka"; + break; + case 53: + name = "Krivogastani"; + break; + case 54: + name = "Krusevo"; + break; + case 55: + name = "Kuklis"; + break; + case 56: + name = "Kukurecani"; + break; + case 57: + name = "Kumanovo"; + break; + case 58: + name = "Labunista"; + break; + case 59: + name = "Lipkovo"; + break; + case 60: + name = "Lozovo"; + break; + case 61: + name = "Lukovo"; + break; + case 62: + name = "Makedonska Kamenica"; + break; + case 63: + name = "Makedonski Brod"; + break; + case 64: + name = "Mavrovi Anovi"; + break; + case 65: + name = "Meseista"; + break; + case 66: + name = "Miravci"; + break; + case 67: + name = "Mogila"; + break; + case 68: + name = "Murtino"; + break; + case 69: + name = "Negotino"; + break; + case 70: + name = "Negotino-Polosko"; + break; + case 71: + name = "Novaci"; + break; + case 72: + name = "Novo Selo"; + break; + case 73: + name = "Oblesevo"; + break; + case 74: + name = "Ohrid"; + break; + case 75: + name = "Orasac"; + break; + case 76: + name = "Orizari"; + break; + case 77: + name = "Oslomej"; + break; + case 78: + name = "Pehcevo"; + break; + case 79: + name = "Petrovec"; + break; + case 80: + name = "Plasnica"; + break; + case 81: + name = "Podares"; + break; + case 82: + name = "Prilep"; + break; + case 83: + name = "Probistip"; + break; + case 84: + name = "Radovis"; + break; + case 85: + name = "Rankovce"; + break; + case 86: + name = "Resen"; + break; + case 87: + name = "Rosoman"; + break; + case 88: + name = "Rostusa"; + break; + case 89: + name = "Samokov"; + break; + case 90: + name = "Saraj"; + break; + case 91: + name = "Sipkovica"; + break; + case 92: + name = "Sopiste"; + break; + case 93: + name = "Sopotnica"; + break; + case 94: + name = "Srbinovo"; + break; + case 95: + name = "Staravina"; + break; + case 96: + name = "Star Dojran"; + break; + case 97: + name = "Staro Nagoricane"; + break; + case 98: + name = "Stip"; + break; + case 99: + name = "Struga"; + break; + case 832: + name = "Strumica"; + break; + case 833: + name = "Studenicani"; + break; + case 834: + name = "Suto Orizari"; + break; + case 835: + name = "Sveti Nikole"; + break; + case 836: + name = "Tearce"; + break; + case 837: + name = "Tetovo"; + break; + case 838: + name = "Topolcani"; + break; + case 839: + name = "Valandovo"; + break; + case 840: + name = "Vasilevo"; + break; + case 875: + name = "Veles"; + break; + case 876: + name = "Velesta"; + break; + case 877: + name = "Vevcani"; + break; + case 878: + name = "Vinica"; + break; + case 879: + name = "Vitoliste"; + break; + case 880: + name = "Vranestica"; + break; + case 881: + name = "Vrapciste"; + break; + case 882: + name = "Vratnica"; + break; + case 883: + name = "Vrutok"; + break; + case 918: + name = "Zajas"; + break; + case 919: + name = "Zelenikovo"; + break; + case 920: + name = "Zelino"; + break; + case 921: + name = "Zitose"; + break; + case 922: + name = "Zletovo"; + break; + case 923: + name = "Zrnovci"; + break; + } + } + if (country_code.equals("ML") == true) { + switch (region_code2) { + case 1: + name = "Bamako"; + break; + case 3: + name = "Kayes"; + break; + case 4: + name = "Mopti"; + break; + case 5: + name = "Segou"; + break; + case 6: + name = "Sikasso"; + break; + case 7: + name = "Koulikoro"; + break; + case 8: + name = "Tombouctou"; + break; + case 9: + name = "Gao"; + break; + case 10: + name = "Kidal"; + break; + } + } + if (country_code.equals("MM") == true) { + switch (region_code2) { + case 1: + name = "Rakhine State"; + break; + case 2: + name = "Chin State"; + break; + case 3: + name = "Irrawaddy"; + break; + case 4: + name = "Kachin State"; + break; + case 5: + name = "Karan State"; + break; + case 6: + name = "Kayah State"; + break; + case 7: + name = "Magwe"; + break; + case 8: + name = "Mandalay"; + break; + case 9: + name = "Pegu"; + break; + case 10: + name = "Sagaing"; + break; + case 11: + name = "Shan State"; + break; + case 12: + name = "Tenasserim"; + break; + case 13: + name = "Mon State"; + break; + case 14: + name = "Rangoon"; + break; + case 17: + name = "Yangon"; + break; + } + } + if (country_code.equals("MN") == true) { + switch (region_code2) { + case 1: + name = "Arhangay"; + break; + case 2: + name = "Bayanhongor"; + break; + case 3: + name = "Bayan-Olgiy"; + break; + case 5: + name = "Darhan"; + break; + case 6: + name = "Dornod"; + break; + case 7: + name = "Dornogovi"; + break; + case 8: + name = "Dundgovi"; + break; + case 9: + name = "Dzavhan"; + break; + case 10: + name = "Govi-Altay"; + break; + case 11: + name = "Hentiy"; + break; + case 12: + name = "Hovd"; + break; + case 13: + name = "Hovsgol"; + break; + case 14: + name = "Omnogovi"; + break; + case 15: + name = "Ovorhangay"; + break; + case 16: + name = "Selenge"; + break; + case 17: + name = "Suhbaatar"; + break; + case 18: + name = "Tov"; + break; + case 19: + name = "Uvs"; + break; + case 20: + name = "Ulaanbaatar"; + break; + case 21: + name = "Bulgan"; + break; + case 22: + name = "Erdenet"; + break; + case 23: + name = "Darhan-Uul"; + break; + case 24: + name = "Govisumber"; + break; + case 25: + name = "Orhon"; + break; + } + } + if (country_code.equals("MO") == true) { + switch (region_code2) { + case 1: + name = "Ilhas"; + break; + case 2: + name = "Macau"; + break; + } + } + if (country_code.equals("MR") == true) { + switch (region_code2) { + case 1: + name = "Hodh Ech Chargui"; + break; + case 2: + name = "Hodh El Gharbi"; + break; + case 3: + name = "Assaba"; + break; + case 4: + name = "Gorgol"; + break; + case 5: + name = "Brakna"; + break; + case 6: + name = "Trarza"; + break; + case 7: + name = "Adrar"; + break; + case 8: + name = "Dakhlet Nouadhibou"; + break; + case 9: + name = "Tagant"; + break; + case 10: + name = "Guidimaka"; + break; + case 11: + name = "Tiris Zemmour"; + break; + case 12: + name = "Inchiri"; + break; + } + } + if (country_code.equals("MS") == true) { + switch (region_code2) { + case 1: + name = "Saint Anthony"; + break; + case 2: + name = "Saint Georges"; + break; + case 3: + name = "Saint Peter"; + break; + } + } + if (country_code.equals("MU") == true) { + switch (region_code2) { + case 12: + name = "Black River"; + break; + case 13: + name = "Flacq"; + break; + case 14: + name = "Grand Port"; + break; + case 15: + name = "Moka"; + break; + case 16: + name = "Pamplemousses"; + break; + case 17: + name = "Plaines Wilhems"; + break; + case 18: + name = "Port Louis"; + break; + case 19: + name = "Riviere du Rempart"; + break; + case 20: + name = "Savanne"; + break; + case 21: + name = "Agalega Islands"; + break; + case 22: + name = "Cargados Carajos"; + break; + case 23: + name = "Rodrigues"; + break; + } + } + if (country_code.equals("MV") == true) { + switch (region_code2) { + case 1: + name = "Seenu"; + break; + case 5: + name = "Laamu"; + break; + case 30: + name = "Alifu"; + break; + case 31: + name = "Baa"; + break; + case 32: + name = "Dhaalu"; + break; + case 33: + name = "Faafu "; + break; + case 34: + name = "Gaafu Alifu"; + break; + case 35: + name = "Gaafu Dhaalu"; + break; + case 36: + name = "Haa Alifu"; + break; + case 37: + name = "Haa Dhaalu"; + break; + case 38: + name = "Kaafu"; + break; + case 39: + name = "Lhaviyani"; + break; + case 40: + name = "Maale"; + break; + case 41: + name = "Meemu"; + break; + case 42: + name = "Gnaviyani"; + break; + case 43: + name = "Noonu"; + break; + case 44: + name = "Raa"; + break; + case 45: + name = "Shaviyani"; + break; + case 46: + name = "Thaa"; + break; + case 47: + name = "Vaavu"; + break; + } + } + if (country_code.equals("MW") == true) { + switch (region_code2) { + case 2: + name = "Chikwawa"; + break; + case 3: + name = "Chiradzulu"; + break; + case 4: + name = "Chitipa"; + break; + case 5: + name = "Thyolo"; + break; + case 6: + name = "Dedza"; + break; + case 7: + name = "Dowa"; + break; + case 8: + name = "Karonga"; + break; + case 9: + name = "Kasungu"; + break; + case 11: + name = "Lilongwe"; + break; + case 12: + name = "Mangochi"; + break; + case 13: + name = "Mchinji"; + break; + case 15: + name = "Mzimba"; + break; + case 16: + name = "Ntcheu"; + break; + case 17: + name = "Nkhata Bay"; + break; + case 18: + name = "Nkhotakota"; + break; + case 19: + name = "Nsanje"; + break; + case 20: + name = "Ntchisi"; + break; + case 21: + name = "Rumphi"; + break; + case 22: + name = "Salima"; + break; + case 23: + name = "Zomba"; + break; + case 24: + name = "Blantyre"; + break; + case 25: + name = "Mwanza"; + break; + case 26: + name = "Balaka"; + break; + case 27: + name = "Likoma"; + break; + case 28: + name = "Machinga"; + break; + case 29: + name = "Mulanje"; + break; + case 30: + name = "Phalombe"; + break; + } + } + if (country_code.equals("MX") == true) { + switch (region_code2) { + case 1: + name = "Aguascalientes"; + break; + case 2: + name = "Baja California"; + break; + case 3: + name = "Baja California Sur"; + break; + case 4: + name = "Campeche"; + break; + case 5: + name = "Chiapas"; + break; + case 6: + name = "Chihuahua"; + break; + case 7: + name = "Coahuila de Zaragoza"; + break; + case 8: + name = "Colima"; + break; + case 9: + name = "Distrito Federal"; + break; + case 10: + name = "Durango"; + break; + case 11: + name = "Guanajuato"; + break; + case 12: + name = "Guerrero"; + break; + case 13: + name = "Hidalgo"; + break; + case 14: + name = "Jalisco"; + break; + case 15: + name = "Mexico"; + break; + case 16: + name = "Michoacan de Ocampo"; + break; + case 17: + name = "Morelos"; + break; + case 18: + name = "Nayarit"; + break; + case 19: + name = "Nuevo Leon"; + break; + case 20: + name = "Oaxaca"; + break; + case 21: + name = "Puebla"; + break; + case 22: + name = "Queretaro de Arteaga"; + break; + case 23: + name = "Quintana Roo"; + break; + case 24: + name = "San Luis Potosi"; + break; + case 25: + name = "Sinaloa"; + break; + case 26: + name = "Sonora"; + break; + case 27: + name = "Tabasco"; + break; + case 28: + name = "Tamaulipas"; + break; + case 29: + name = "Tlaxcala"; + break; + case 30: + name = "Veracruz-Llave"; + break; + case 31: + name = "Yucatan"; + break; + case 32: + name = "Zacatecas"; + break; + } + } + if (country_code.equals("MY") == true) { + switch (region_code2) { + case 1: + name = "Johor"; + break; + case 2: + name = "Kedah"; + break; + case 3: + name = "Kelantan"; + break; + case 4: + name = "Melaka"; + break; + case 5: + name = "Negeri Sembilan"; + break; + case 6: + name = "Pahang"; + break; + case 7: + name = "Perak"; + break; + case 8: + name = "Perlis"; + break; + case 9: + name = "Pulau Pinang"; + break; + case 11: + name = "Sarawak"; + break; + case 12: + name = "Selangor"; + break; + case 13: + name = "Terengganu"; + break; + case 14: + name = "Kuala Lumpur"; + break; + case 15: + name = "Labuan"; + break; + case 16: + name = "Sabah"; + break; + case 17: + name = "Putrajaya"; + break; + } + } + if (country_code.equals("MZ") == true) { + switch (region_code2) { + case 1: + name = "Cabo Delgado"; + break; + case 2: + name = "Gaza"; + break; + case 3: + name = "Inhambane"; + break; + case 4: + name = "Maputo"; + break; + case 5: + name = "Sofala"; + break; + case 6: + name = "Nampula"; + break; + case 7: + name = "Niassa"; + break; + case 8: + name = "Tete"; + break; + case 9: + name = "Zambezia"; + break; + case 10: + name = "Manica"; + break; + case 11: + name = "Maputo"; + break; + } + } + if (country_code.equals("NA") == true) { + switch (region_code2) { + case 1: + name = "Bethanien"; + break; + case 2: + name = "Caprivi Oos"; + break; + case 3: + name = "Boesmanland"; + break; + case 4: + name = "Gobabis"; + break; + case 5: + name = "Grootfontein"; + break; + case 6: + name = "Kaokoland"; + break; + case 7: + name = "Karibib"; + break; + case 8: + name = "Keetmanshoop"; + break; + case 9: + name = "Luderitz"; + break; + case 10: + name = "Maltahohe"; + break; + case 11: + name = "Okahandja"; + break; + case 12: + name = "Omaruru"; + break; + case 13: + name = "Otjiwarongo"; + break; + case 14: + name = "Outjo"; + break; + case 15: + name = "Owambo"; + break; + case 16: + name = "Rehoboth"; + break; + case 17: + name = "Swakopmund"; + break; + case 18: + name = "Tsumeb"; + break; + case 20: + name = "Karasburg"; + break; + case 21: + name = "Windhoek"; + break; + case 22: + name = "Damaraland"; + break; + case 23: + name = "Hereroland Oos"; + break; + case 24: + name = "Hereroland Wes"; + break; + case 25: + name = "Kavango"; + break; + case 26: + name = "Mariental"; + break; + case 27: + name = "Namaland"; + break; + case 28: + name = "Caprivi"; + break; + case 29: + name = "Erongo"; + break; + case 30: + name = "Hardap"; + break; + case 31: + name = "Karas"; + break; + case 32: + name = "Kunene"; + break; + case 33: + name = "Ohangwena"; + break; + case 34: + name = "Okavango"; + break; + case 35: + name = "Omaheke"; + break; + case 36: + name = "Omusati"; + break; + case 37: + name = "Oshana"; + break; + case 38: + name = "Oshikoto"; + break; + case 39: + name = "Otjozondjupa"; + break; + } + } + if (country_code.equals("NE") == true) { + switch (region_code2) { + case 1: + name = "Agadez"; + break; + case 2: + name = "Diffa"; + break; + case 3: + name = "Dosso"; + break; + case 4: + name = "Maradi"; + break; + case 5: + name = "Niamey"; + break; + case 6: + name = "Tahoua"; + break; + case 7: + name = "Zinder"; + break; + case 8: + name = "Niamey"; + break; + } + } + if (country_code.equals("NG") == true) { + switch (region_code2) { + case 5: + name = "Lagos"; + break; + case 11: + name = "Federal Capital Territory"; + break; + case 16: + name = "Ogun"; + break; + case 21: + name = "Akwa Ibom"; + break; + case 22: + name = "Cross River"; + break; + case 23: + name = "Kaduna"; + break; + case 24: + name = "Katsina"; + break; + case 25: + name = "Anambra"; + break; + case 26: + name = "Benue"; + break; + case 27: + name = "Borno"; + break; + case 28: + name = "Imo"; + break; + case 29: + name = "Kano"; + break; + case 30: + name = "Kwara"; + break; + case 31: + name = "Niger"; + break; + case 32: + name = "Oyo"; + break; + case 35: + name = "Adamawa"; + break; + case 36: + name = "Delta"; + break; + case 37: + name = "Edo"; + break; + case 39: + name = "Jigawa"; + break; + case 40: + name = "Kebbi"; + break; + case 41: + name = "Kogi"; + break; + case 42: + name = "Osun"; + break; + case 43: + name = "Taraba"; + break; + case 44: + name = "Yobe"; + break; + case 45: + name = "Abia"; + break; + case 46: + name = "Bauchi"; + break; + case 47: + name = "Enugu"; + break; + case 48: + name = "Ondo"; + break; + case 49: + name = "Plateau"; + break; + case 50: + name = "Rivers"; + break; + case 51: + name = "Sokoto"; + break; + case 52: + name = "Bayelsa"; + break; + case 53: + name = "Ebonyi"; + break; + case 54: + name = "Ekiti"; + break; + case 55: + name = "Gombe"; + break; + case 56: + name = "Nassarawa"; + break; + case 57: + name = "Zamfara"; + break; + } + } + if (country_code.equals("NI") == true) { + switch (region_code2) { + case 1: + name = "Boaco"; + break; + case 2: + name = "Carazo"; + break; + case 3: + name = "Chinandega"; + break; + case 4: + name = "Chontales"; + break; + case 5: + name = "Esteli"; + break; + case 6: + name = "Granada"; + break; + case 7: + name = "Jinotega"; + break; + case 8: + name = "Leon"; + break; + case 9: + name = "Madriz"; + break; + case 10: + name = "Managua"; + break; + case 11: + name = "Masaya"; + break; + case 12: + name = "Matagalpa"; + break; + case 13: + name = "Nueva Segovia"; + break; + case 14: + name = "Rio San Juan"; + break; + case 15: + name = "Rivas"; + break; + case 16: + name = "Zelaya"; + break; + case 17: + name = "Autonoma Atlantico Norte"; + break; + case 18: + name = "Region Autonoma Atlantico Sur"; + break; + } + } + if (country_code.equals("NL") == true) { + switch (region_code2) { + case 1: + name = "Drenthe"; + break; + case 2: + name = "Friesland"; + break; + case 3: + name = "Gelderland"; + break; + case 4: + name = "Groningen"; + break; + case 5: + name = "Limburg"; + break; + case 6: + name = "Noord-Brabant"; + break; + case 7: + name = "Noord-Holland"; + break; + case 9: + name = "Utrecht"; + break; + case 10: + name = "Zeeland"; + break; + case 11: + name = "Zuid-Holland"; + break; + case 15: + name = "Overijssel"; + break; + case 16: + name = "Flevoland"; + break; + } + } + if (country_code.equals("NO") == true) { + switch (region_code2) { + case 1: + name = "Akershus"; + break; + case 2: + name = "Aust-Agder"; + break; + case 4: + name = "Buskerud"; + break; + case 5: + name = "Finnmark"; + break; + case 6: + name = "Hedmark"; + break; + case 7: + name = "Hordaland"; + break; + case 8: + name = "More og Romsdal"; + break; + case 9: + name = "Nordland"; + break; + case 10: + name = "Nord-Trondelag"; + break; + case 11: + name = "Oppland"; + break; + case 12: + name = "Oslo"; + break; + case 13: + name = "Ostfold"; + break; + case 14: + name = "Rogaland"; + break; + case 15: + name = "Sogn og Fjordane"; + break; + case 16: + name = "Sor-Trondelag"; + break; + case 17: + name = "Telemark"; + break; + case 18: + name = "Troms"; + break; + case 19: + name = "Vest-Agder"; + break; + case 20: + name = "Vestfold"; + break; + } + } + if (country_code.equals("NP") == true) { + switch (region_code2) { + case 1: + name = "Bagmati"; + break; + case 2: + name = "Bheri"; + break; + case 3: + name = "Dhawalagiri"; + break; + case 4: + name = "Gandaki"; + break; + case 5: + name = "Janakpur"; + break; + case 6: + name = "Karnali"; + break; + case 7: + name = "Kosi"; + break; + case 8: + name = "Lumbini"; + break; + case 9: + name = "Mahakali"; + break; + case 10: + name = "Mechi"; + break; + case 11: + name = "Narayani"; + break; + case 12: + name = "Rapti"; + break; + case 13: + name = "Sagarmatha"; + break; + case 14: + name = "Seti"; + break; + } + } + if (country_code.equals("NR") == true) { + switch (region_code2) { + case 1: + name = "Aiwo"; + break; + case 2: + name = "Anabar"; + break; + case 3: + name = "Anetan"; + break; + case 4: + name = "Anibare"; + break; + case 5: + name = "Baiti"; + break; + case 6: + name = "Boe"; + break; + case 7: + name = "Buada"; + break; + case 8: + name = "Denigomodu"; + break; + case 9: + name = "Ewa"; + break; + case 10: + name = "Ijuw"; + break; + case 11: + name = "Meneng"; + break; + case 12: + name = "Nibok"; + break; + case 13: + name = "Uaboe"; + break; + case 14: + name = "Yaren"; + break; + } + } + if (country_code.equals("NZ") == true) { + switch (region_code2) { + case 10: + name = "Chatham Islands"; + break; + case 1010: + name = "Auckland"; + break; + case 1011: + name = "Bay of Plenty"; + break; + case 1012: + name = "Canterbury"; + break; + case 1047: + name = "Gisborne"; + break; + case 1048: + name = "Hawke's Bay"; + break; + case 1049: + name = "Manawatu-Wanganui"; + break; + case 1050: + name = "Marlborough"; + break; + case 1051: + name = "Nelson"; + break; + case 1052: + name = "Northland"; + break; + case 1053: + name = "Otago"; + break; + case 1054: + name = "Southland"; + break; + case 1055: + name = "Taranaki"; + break; + case 1090: + name = "Waikato"; + break; + case 1091: + name = "Wellington"; + break; + case 1092: + name = "West Coast"; + break; + } + } + if (country_code.equals("OM") == true) { + switch (region_code2) { + case 1: + name = "Ad Dakhiliyah"; + break; + case 2: + name = "Al Batinah"; + break; + case 3: + name = "Al Wusta"; + break; + case 4: + name = "Ash Sharqiyah"; + break; + case 5: + name = "Az Zahirah"; + break; + case 6: + name = "Masqat"; + break; + case 7: + name = "Musandam"; + break; + case 8: + name = "Zufar"; + break; + } + } + if (country_code.equals("PA") == true) { + switch (region_code2) { + case 1: + name = "Bocas del Toro"; + break; + case 2: + name = "Chiriqui"; + break; + case 3: + name = "Cocle"; + break; + case 4: + name = "Colon"; + break; + case 5: + name = "Darien"; + break; + case 6: + name = "Herrera"; + break; + case 7: + name = "Los Santos"; + break; + case 8: + name = "Panama"; + break; + case 9: + name = "San Blas"; + break; + case 10: + name = "Veraguas"; + break; + } + } + if (country_code.equals("PE") == true) { + switch (region_code2) { + case 1: + name = "Amazonas"; + break; + case 2: + name = "Ancash"; + break; + case 3: + name = "Apurimac"; + break; + case 4: + name = "Arequipa"; + break; + case 5: + name = "Ayacucho"; + break; + case 6: + name = "Cajamarca"; + break; + case 7: + name = "Callao"; + break; + case 8: + name = "Cusco"; + break; + case 9: + name = "Huancavelica"; + break; + case 10: + name = "Huanuco"; + break; + case 11: + name = "Ica"; + break; + case 12: + name = "Junin"; + break; + case 13: + name = "La Libertad"; + break; + case 14: + name = "Lambayeque"; + break; + case 15: + name = "Lima"; + break; + case 16: + name = "Loreto"; + break; + case 17: + name = "Madre de Dios"; + break; + case 18: + name = "Moquegua"; + break; + case 19: + name = "Pasco"; + break; + case 20: + name = "Piura"; + break; + case 21: + name = "Puno"; + break; + case 22: + name = "San Martin"; + break; + case 23: + name = "Tacna"; + break; + case 24: + name = "Tumbes"; + break; + case 25: + name = "Ucayali"; + break; + } + } + if (country_code.equals("PG") == true) { + switch (region_code2) { + case 1: + name = "Central"; + break; + case 2: + name = "Gulf"; + break; + case 3: + name = "Milne Bay"; + break; + case 4: + name = "Northern"; + break; + case 5: + name = "Southern Highlands"; + break; + case 6: + name = "Western"; + break; + case 7: + name = "North Solomons"; + break; + case 8: + name = "Chimbu"; + break; + case 9: + name = "Eastern Highlands"; + break; + case 10: + name = "East New Britain"; + break; + case 11: + name = "East Sepik"; + break; + case 12: + name = "Madang"; + break; + case 13: + name = "Manus"; + break; + case 14: + name = "Morobe"; + break; + case 15: + name = "New Ireland"; + break; + case 16: + name = "Western Highlands"; + break; + case 17: + name = "West New Britain"; + break; + case 18: + name = "Sandaun"; + break; + case 19: + name = "Enga"; + break; + case 20: + name = "National Capital"; + break; + } + } + if (country_code.equals("PH") == true) { + switch (region_code2) { + case 1: + name = "Abra"; + break; + case 2: + name = "Agusan del Norte"; + break; + case 3: + name = "Agusan del Sur"; + break; + case 4: + name = "Aklan"; + break; + case 5: + name = "Albay"; + break; + case 6: + name = "Antique"; + break; + case 7: + name = "Bataan"; + break; + case 8: + name = "Batanes"; + break; + case 9: + name = "Batangas"; + break; + case 10: + name = "Benguet"; + break; + case 11: + name = "Bohol"; + break; + case 12: + name = "Bukidnon"; + break; + case 13: + name = "Bulacan"; + break; + case 14: + name = "Cagayan"; + break; + case 15: + name = "Camarines Norte"; + break; + case 16: + name = "Camarines Sur"; + break; + case 17: + name = "Camiguin"; + break; + case 18: + name = "Capiz"; + break; + case 19: + name = "Catanduanes"; + break; + case 20: + name = "Cavite"; + break; + case 21: + name = "Cebu"; + break; + case 22: + name = "Basilan"; + break; + case 23: + name = "Eastern Samar"; + break; + case 24: + name = "Davao"; + break; + case 25: + name = "Davao del Sur"; + break; + case 26: + name = "Davao Oriental"; + break; + case 27: + name = "Ifugao"; + break; + case 28: + name = "Ilocos Norte"; + break; + case 29: + name = "Ilocos Sur"; + break; + case 30: + name = "Iloilo"; + break; + case 31: + name = "Isabela"; + break; + case 32: + name = "Kalinga-Apayao"; + break; + case 33: + name = "Laguna"; + break; + case 34: + name = "Lanao del Norte"; + break; + case 35: + name = "Lanao del Sur"; + break; + case 36: + name = "La Union"; + break; + case 37: + name = "Leyte"; + break; + case 38: + name = "Marinduque"; + break; + case 39: + name = "Masbate"; + break; + case 40: + name = "Mindoro Occidental"; + break; + case 41: + name = "Mindoro Oriental"; + break; + case 42: + name = "Misamis Occidental"; + break; + case 43: + name = "Misamis Oriental"; + break; + case 44: + name = "Mountain"; + break; + case 45: + name = "Negros Occidental"; + break; + case 46: + name = "Negros Oriental"; + break; + case 47: + name = "Nueva Ecija"; + break; + case 48: + name = "Nueva Vizcaya"; + break; + case 49: + name = "Palawan"; + break; + case 50: + name = "Pampanga"; + break; + case 51: + name = "Pangasinan"; + break; + case 53: + name = "Rizal"; + break; + case 54: + name = "Romblon"; + break; + case 55: + name = "Samar"; + break; + case 56: + name = "Maguindanao"; + break; + case 57: + name = "North Cotabato"; + break; + case 58: + name = "Sorsogon"; + break; + case 59: + name = "Southern Leyte"; + break; + case 60: + name = "Sulu"; + break; + case 61: + name = "Surigao del Norte"; + break; + case 62: + name = "Surigao del Sur"; + break; + case 63: + name = "Tarlac"; + break; + case 64: + name = "Zambales"; + break; + case 65: + name = "Zamboanga del Norte"; + break; + case 66: + name = "Zamboanga del Sur"; + break; + case 67: + name = "Northern Samar"; + break; + case 68: + name = "Quirino"; + break; + case 69: + name = "Siquijor"; + break; + case 70: + name = "South Cotabato"; + break; + case 71: + name = "Sultan Kudarat"; + break; + case 72: + name = "Tawitawi"; + break; + case 832: + name = "Angeles"; + break; + case 833: + name = "Bacolod"; + break; + case 834: + name = "Bago"; + break; + case 835: + name = "Baguio"; + break; + case 836: + name = "Bais"; + break; + case 837: + name = "Basilan City"; + break; + case 838: + name = "Batangas City"; + break; + case 839: + name = "Butuan"; + break; + case 840: + name = "Cabanatuan"; + break; + case 875: + name = "Cadiz"; + break; + case 876: + name = "Cagayan de Oro"; + break; + case 877: + name = "Calbayog"; + break; + case 878: + name = "Caloocan"; + break; + case 879: + name = "Canlaon"; + break; + case 880: + name = "Cavite City"; + break; + case 881: + name = "Cebu City"; + break; + case 882: + name = "Cotabato"; + break; + case 883: + name = "Dagupan"; + break; + case 918: + name = "Danao"; + break; + case 919: + name = "Dapitan"; + break; + case 920: + name = "Davao City"; + break; + case 921: + name = "Dipolog"; + break; + case 922: + name = "Dumaguete"; + break; + case 923: + name = "General Santos"; + break; + case 924: + name = "Gingoog"; + break; + case 925: + name = "Iligan"; + break; + case 926: + name = "Iloilo City"; + break; + case 961: + name = "Iriga"; + break; + case 962: + name = "La Carlota"; + break; + case 963: + name = "Laoag"; + break; + case 964: + name = "Lapu-Lapu"; + break; + case 965: + name = "Legaspi"; + break; + case 966: + name = "Lipa"; + break; + case 967: + name = "Lucena"; + break; + case 968: + name = "Mandaue"; + break; + case 969: + name = "Manila"; + break; + case 1004: + name = "Marawi"; + break; + case 1005: + name = "Naga"; + break; + case 1006: + name = "Olongapo"; + break; + case 1007: + name = "Ormoc"; + break; + case 1008: + name = "Oroquieta"; + break; + case 1009: + name = "Ozamis"; + break; + case 1010: + name = "Pagadian"; + break; + case 1011: + name = "Palayan"; + break; + case 1012: + name = "Pasay"; + break; + case 1047: + name = "Puerto Princesa"; + break; + case 1048: + name = "Quezon City"; + break; + case 1049: + name = "Roxas"; + break; + case 1050: + name = "San Carlos"; + break; + case 1051: + name = "San Carlos"; + break; + case 1052: + name = "San Jose"; + break; + case 1053: + name = "San Pablo"; + break; + case 1054: + name = "Silay"; + break; + case 1055: + name = "Surigao"; + break; + case 1090: + name = "Tacloban"; + break; + case 1091: + name = "Tagaytay"; + break; + case 1092: + name = "Tagbilaran"; + break; + case 1093: + name = "Tangub"; + break; + case 1094: + name = "Toledo"; + break; + case 1095: + name = "Trece Martires"; + break; + case 1096: + name = "Zamboanga"; + break; + case 1097: + name = "Aurora"; + break; + case 1134: + name = "Quezon"; + break; + case 1135: + name = "Negros Occidental"; + break; + } + } + if (country_code.equals("PK") == true) { + switch (region_code2) { + case 1: + name = "Federally Administered Tribal Areas"; + break; + case 2: + name = "Balochistan"; + break; + case 3: + name = "North-West Frontier"; + break; + case 4: + name = "Punjab"; + break; + case 5: + name = "Sindh"; + break; + case 6: + name = "Azad Kashmir"; + break; + case 7: + name = "Northern Areas"; + break; + case 8: + name = "Islamabad"; + break; + } + } + if (country_code.equals("PL") == true) { + switch (region_code2) { + case 72: + name = "Dolnoslaskie"; + break; + case 73: + name = "Kujawsko-Pomorskie"; + break; + case 74: + name = "Lodzkie"; + break; + case 75: + name = "Lubelskie"; + break; + case 76: + name = "Lubuskie"; + break; + case 77: + name = "Malopolskie"; + break; + case 78: + name = "Mazowieckie"; + break; + case 79: + name = "Opolskie"; + break; + case 80: + name = "Podkarpackie"; + break; + case 81: + name = "Podlaskie"; + break; + case 82: + name = "Pomorskie"; + break; + case 83: + name = "Slaskie"; + break; + case 84: + name = "Swietokrzyskie"; + break; + case 85: + name = "Warminsko-Mazurskie"; + break; + case 86: + name = "Wielkopolskie"; + break; + case 87: + name = "Zachodniopomorskie"; + break; + } + } + if (country_code.equals("PS") == true) { + switch (region_code2) { + case 1131: + name = "Gaza"; + break; + case 1798: + name = "West Bank"; + break; + } + } + if (country_code.equals("PT") == true) { + switch (region_code2) { + case 2: + name = "Aveiro"; + break; + case 3: + name = "Beja"; + break; + case 4: + name = "Braga"; + break; + case 5: + name = "Braganca"; + break; + case 6: + name = "Castelo Branco"; + break; + case 7: + name = "Coimbra"; + break; + case 8: + name = "Evora"; + break; + case 9: + name = "Faro"; + break; + case 10: + name = "Madeira"; + break; + case 11: + name = "Guarda"; + break; + case 13: + name = "Leiria"; + break; + case 14: + name = "Lisboa"; + break; + case 16: + name = "Portalegre"; + break; + case 17: + name = "Porto"; + break; + case 18: + name = "Santarem"; + break; + case 19: + name = "Setubal"; + break; + case 20: + name = "Viana do Castelo"; + break; + case 21: + name = "Vila Real"; + break; + case 22: + name = "Viseu"; + break; + case 23: + name = "Azores"; + break; + } + } + if (country_code.equals("PY") == true) { + switch (region_code2) { + case 1: + name = "Alto Parana"; + break; + case 2: + name = "Amambay"; + break; + case 3: + name = "Boqueron"; + break; + case 4: + name = "Caaguazu"; + break; + case 5: + name = "Caazapa"; + break; + case 6: + name = "Central"; + break; + case 7: + name = "Concepcion"; + break; + case 8: + name = "Cordillera"; + break; + case 10: + name = "Guaira"; + break; + case 11: + name = "Itapua"; + break; + case 12: + name = "Misiones"; + break; + case 13: + name = "Neembucu"; + break; + case 15: + name = "Paraguari"; + break; + case 16: + name = "Presidente Hayes"; + break; + case 17: + name = "San Pedro"; + break; + case 19: + name = "Canindeyu"; + break; + case 20: + name = "Chaco"; + break; + case 21: + name = "Nueva Asuncion"; + break; + case 23: + name = "Alto Paraguay"; + break; + } + } + if (country_code.equals("QA") == true) { + switch (region_code2) { + case 1: + name = "Ad Dawhah"; + break; + case 2: + name = "Al Ghuwariyah"; + break; + case 3: + name = "Al Jumaliyah"; + break; + case 4: + name = "Al Khawr"; + break; + case 5: + name = "Al Wakrah Municipality"; + break; + case 6: + name = "Ar Rayyan"; + break; + case 8: + name = "Madinat ach Shamal"; + break; + case 9: + name = "Umm Salal"; + break; + case 10: + name = "Al Wakrah"; + break; + case 11: + name = "Jariyan al Batnah"; + break; + case 12: + name = "Umm Sa'id"; + break; + } + } + if (country_code.equals("RO") == true) { + switch (region_code2) { + case 1: + name = "Alba"; + break; + case 2: + name = "Arad"; + break; + case 3: + name = "Arges"; + break; + case 4: + name = "Bacau"; + break; + case 5: + name = "Bihor"; + break; + case 6: + name = "Bistrita-Nasaud"; + break; + case 7: + name = "Botosani"; + break; + case 8: + name = "Braila"; + break; + case 9: + name = "Brasov"; + break; + case 10: + name = "Bucuresti"; + break; + case 11: + name = "Buzau"; + break; + case 12: + name = "Caras-Severin"; + break; + case 13: + name = "Cluj"; + break; + case 14: + name = "Constanta"; + break; + case 15: + name = "Covasna"; + break; + case 16: + name = "Dambovita"; + break; + case 17: + name = "Dolj"; + break; + case 18: + name = "Galati"; + break; + case 19: + name = "Gorj"; + break; + case 20: + name = "Harghita"; + break; + case 21: + name = "Hunedoara"; + break; + case 22: + name = "Ialomita"; + break; + case 23: + name = "Iasi"; + break; + case 25: + name = "Maramures"; + break; + case 26: + name = "Mehedinti"; + break; + case 27: + name = "Mures"; + break; + case 28: + name = "Neamt"; + break; + case 29: + name = "Olt"; + break; + case 30: + name = "Prahova"; + break; + case 31: + name = "Salaj"; + break; + case 32: + name = "Satu Mare"; + break; + case 33: + name = "Sibiu"; + break; + case 34: + name = "Suceava"; + break; + case 35: + name = "Teleorman"; + break; + case 36: + name = "Timis"; + break; + case 37: + name = "Tulcea"; + break; + case 38: + name = "Vaslui"; + break; + case 39: + name = "Valcea"; + break; + case 40: + name = "Vrancea"; + break; + case 41: + name = "Calarasi"; + break; + case 42: + name = "Giurgiu"; + break; + case 43: + name = "Ilfov"; + break; + } + } + if (country_code.equals("RS") == true) { + switch (region_code2) { + case 1: + name = "Kosovo"; + break; + case 2: + name = "Vojvodina"; + break; + } + } + if (country_code.equals("RU") == true) { + switch (region_code2) { + case 1: + name = "Adygeya"; + break; + case 2: + name = "Aginsky Buryatsky AO"; + break; + case 3: + name = "Gorno-Altay"; + break; + case 4: + name = "Altaisky krai"; + break; + case 5: + name = "Amur"; + break; + case 6: + name = "Arkhangel'sk"; + break; + case 7: + name = "Astrakhan'"; + break; + case 8: + name = "Bashkortostan"; + break; + case 9: + name = "Belgorod"; + break; + case 10: + name = "Bryansk"; + break; + case 11: + name = "Buryat"; + break; + case 12: + name = "Chechnya"; + break; + case 13: + name = "Chelyabinsk"; + break; + case 14: + name = "Chita"; + break; + case 15: + name = "Chukot"; + break; + case 16: + name = "Chuvashia"; + break; + case 17: + name = "Dagestan"; + break; + case 18: + name = "Evenk"; + break; + case 19: + name = "Ingush"; + break; + case 20: + name = "Irkutsk"; + break; + case 21: + name = "Ivanovo"; + break; + case 22: + name = "Kabardin-Balkar"; + break; + case 23: + name = "Kaliningrad"; + break; + case 24: + name = "Kalmyk"; + break; + case 25: + name = "Kaluga"; + break; + case 26: + name = "Kamchatka"; + break; + case 27: + name = "Karachay-Cherkess"; + break; + case 28: + name = "Karelia"; + break; + case 29: + name = "Kemerovo"; + break; + case 30: + name = "Khabarovsk"; + break; + case 31: + name = "Khakass"; + break; + case 32: + name = "Khanty-Mansiy"; + break; + case 33: + name = "Kirov"; + break; + case 34: + name = "Komi"; + break; + case 35: + name = "Komi-Permyak"; + break; + case 36: + name = "Koryak"; + break; + case 37: + name = "Kostroma"; + break; + case 38: + name = "Krasnodar"; + break; + case 39: + name = "Krasnoyarsk"; + break; + case 40: + name = "Kurgan"; + break; + case 41: + name = "Kursk"; + break; + case 42: + name = "Leningrad"; + break; + case 43: + name = "Lipetsk"; + break; + case 44: + name = "Magadan"; + break; + case 45: + name = "Mariy-El"; + break; + case 46: + name = "Mordovia"; + break; + case 47: + name = "Moskva"; + break; + case 48: + name = "Moscow City"; + break; + case 49: + name = "Murmansk"; + break; + case 50: + name = "Nenets"; + break; + case 51: + name = "Nizhegorod"; + break; + case 52: + name = "Novgorod"; + break; + case 53: + name = "Novosibirsk"; + break; + case 54: + name = "Omsk"; + break; + case 55: + name = "Orenburg"; + break; + case 56: + name = "Orel"; + break; + case 57: + name = "Penza"; + break; + case 58: + name = "Perm'"; + break; + case 59: + name = "Primor'ye"; + break; + case 60: + name = "Pskov"; + break; + case 61: + name = "Rostov"; + break; + case 62: + name = "Ryazan'"; + break; + case 63: + name = "Sakha"; + break; + case 64: + name = "Sakhalin"; + break; + case 65: + name = "Samara"; + break; + case 66: + name = "Saint Petersburg City"; + break; + case 67: + name = "Saratov"; + break; + case 68: + name = "North Ossetia"; + break; + case 69: + name = "Smolensk"; + break; + case 70: + name = "Stavropol'"; + break; + case 71: + name = "Sverdlovsk"; + break; + case 72: + name = "Tambovskaya oblast"; + break; + case 73: + name = "Tatarstan"; + break; + case 74: + name = "Taymyr"; + break; + case 75: + name = "Tomsk"; + break; + case 76: + name = "Tula"; + break; + case 77: + name = "Tver'"; + break; + case 78: + name = "Tyumen'"; + break; + case 79: + name = "Tuva"; + break; + case 80: + name = "Udmurt"; + break; + case 81: + name = "Ul'yanovsk"; + break; + case 82: + name = "Ust-Orda Buryat"; + break; + case 83: + name = "Vladimir"; + break; + case 84: + name = "Volgograd"; + break; + case 85: + name = "Vologda"; + break; + case 86: + name = "Voronezh"; + break; + case 87: + name = "Yamal-Nenets"; + break; + case 88: + name = "Yaroslavl'"; + break; + case 89: + name = "Yevrey"; + break; + case 90: + name = "Permskiy Kray"; + break; + case 91: + name = "Krasnoyarskiy Kray"; + break; + case 92: + name = "Kamchatskiy Kray"; + break; + case 93: + name = "Zabaykal'skiy Kray"; + break; + } + } + if (country_code.equals("RW") == true) { + switch (region_code2) { + case 1: + name = "Butare"; + break; + case 6: + name = "Gitarama"; + break; + case 7: + name = "Kibungo"; + break; + case 9: + name = "Kigali"; + break; + case 11: + name = "Est"; + break; + case 12: + name = "Kigali"; + break; + case 13: + name = "Nord"; + break; + case 14: + name = "Ouest"; + break; + case 15: + name = "Sud"; + break; + } + } + if (country_code.equals("SA") == true) { + switch (region_code2) { + case 2: + name = "Al Bahah"; + break; + case 5: + name = "Al Madinah"; + break; + case 6: + name = "Ash Sharqiyah"; + break; + case 8: + name = "Al Qasim"; + break; + case 10: + name = "Ar Riyad"; + break; + case 11: + name = "Asir Province"; + break; + case 13: + name = "Ha'il"; + break; + case 14: + name = "Makkah"; + break; + case 15: + name = "Al Hudud ash Shamaliyah"; + break; + case 16: + name = "Najran"; + break; + case 17: + name = "Jizan"; + break; + case 19: + name = "Tabuk"; + break; + case 20: + name = "Al Jawf"; + break; + } + } + if (country_code.equals("SB") == true) { + switch (region_code2) { + case 3: + name = "Malaita"; + break; + case 6: + name = "Guadalcanal"; + break; + case 7: + name = "Isabel"; + break; + case 8: + name = "Makira"; + break; + case 9: + name = "Temotu"; + break; + case 10: + name = "Central"; + break; + case 11: + name = "Western"; + break; + case 12: + name = "Choiseul"; + break; + case 13: + name = "Rennell and Bellona"; + break; + } + } + if (country_code.equals("SC") == true) { + switch (region_code2) { + case 1: + name = "Anse aux Pins"; + break; + case 2: + name = "Anse Boileau"; + break; + case 3: + name = "Anse Etoile"; + break; + case 4: + name = "Anse Louis"; + break; + case 5: + name = "Anse Royale"; + break; + case 6: + name = "Baie Lazare"; + break; + case 7: + name = "Baie Sainte Anne"; + break; + case 8: + name = "Beau Vallon"; + break; + case 9: + name = "Bel Air"; + break; + case 10: + name = "Bel Ombre"; + break; + case 11: + name = "Cascade"; + break; + case 12: + name = "Glacis"; + break; + case 13: + name = "Grand' Anse"; + break; + case 14: + name = "Grand' Anse"; + break; + case 15: + name = "La Digue"; + break; + case 16: + name = "La Riviere Anglaise"; + break; + case 17: + name = "Mont Buxton"; + break; + case 18: + name = "Mont Fleuri"; + break; + case 19: + name = "Plaisance"; + break; + case 20: + name = "Pointe La Rue"; + break; + case 21: + name = "Port Glaud"; + break; + case 22: + name = "Saint Louis"; + break; + case 23: + name = "Takamaka"; + break; + } + } + if (country_code.equals("SD") == true) { + switch (region_code2) { + case 27: + name = "Al Wusta"; + break; + case 28: + name = "Al Istiwa'iyah"; + break; + case 29: + name = "Al Khartum"; + break; + case 30: + name = "Ash Shamaliyah"; + break; + case 31: + name = "Ash Sharqiyah"; + break; + case 32: + name = "Bahr al Ghazal"; + break; + case 33: + name = "Darfur"; + break; + case 34: + name = "Kurdufan"; + break; + case 35: + name = "Upper Nile"; + break; + case 40: + name = "Al Wahadah State"; + break; + case 44: + name = "Central Equatoria State"; + break; + } + } + if (country_code.equals("SE") == true) { + switch (region_code2) { + case 2: + name = "Blekinge Lan"; + break; + case 3: + name = "Gavleborgs Lan"; + break; + case 5: + name = "Gotlands Lan"; + break; + case 6: + name = "Hallands Lan"; + break; + case 7: + name = "Jamtlands Lan"; + break; + case 8: + name = "Jonkopings Lan"; + break; + case 9: + name = "Kalmar Lan"; + break; + case 10: + name = "Dalarnas Lan"; + break; + case 12: + name = "Kronobergs Lan"; + break; + case 14: + name = "Norrbottens Lan"; + break; + case 15: + name = "Orebro Lan"; + break; + case 16: + name = "Ostergotlands Lan"; + break; + case 18: + name = "Sodermanlands Lan"; + break; + case 21: + name = "Uppsala Lan"; + break; + case 22: + name = "Varmlands Lan"; + break; + case 23: + name = "Vasterbottens Lan"; + break; + case 24: + name = "Vasternorrlands Lan"; + break; + case 25: + name = "Vastmanlands Lan"; + break; + case 26: + name = "Stockholms Lan"; + break; + case 27: + name = "Skane Lan"; + break; + case 28: + name = "Vastra Gotaland"; + break; + } + } + if (country_code.equals("SH") == true) { + switch (region_code2) { + case 1: + name = "Ascension"; + break; + case 2: + name = "Saint Helena"; + break; + case 3: + name = "Tristan da Cunha"; + break; + } + } + if (country_code.equals("SI") == true) { + switch (region_code2) { + case 1: + name = "Ajdovscina"; + break; + case 2: + name = "Beltinci"; + break; + case 3: + name = "Bled"; + break; + case 4: + name = "Bohinj"; + break; + case 5: + name = "Borovnica"; + break; + case 6: + name = "Bovec"; + break; + case 7: + name = "Brda"; + break; + case 8: + name = "Brezice"; + break; + case 9: + name = "Brezovica"; + break; + case 11: + name = "Celje"; + break; + case 12: + name = "Cerklje na Gorenjskem"; + break; + case 13: + name = "Cerknica"; + break; + case 14: + name = "Cerkno"; + break; + case 15: + name = "Crensovci"; + break; + case 16: + name = "Crna na Koroskem"; + break; + case 17: + name = "Crnomelj"; + break; + case 19: + name = "Divaca"; + break; + case 20: + name = "Dobrepolje"; + break; + case 22: + name = "Dol pri Ljubljani"; + break; + case 24: + name = "Dornava"; + break; + case 25: + name = "Dravograd"; + break; + case 26: + name = "Duplek"; + break; + case 27: + name = "Gorenja Vas-Poljane"; + break; + case 28: + name = "Gorisnica"; + break; + case 29: + name = "Gornja Radgona"; + break; + case 30: + name = "Gornji Grad"; + break; + case 31: + name = "Gornji Petrovci"; + break; + case 32: + name = "Grosuplje"; + break; + case 34: + name = "Hrastnik"; + break; + case 35: + name = "Hrpelje-Kozina"; + break; + case 36: + name = "Idrija"; + break; + case 37: + name = "Ig"; + break; + case 38: + name = "Ilirska Bistrica"; + break; + case 39: + name = "Ivancna Gorica"; + break; + case 40: + name = "Izola-Isola"; + break; + case 42: + name = "Jursinci"; + break; + case 44: + name = "Kanal"; + break; + case 45: + name = "Kidricevo"; + break; + case 46: + name = "Kobarid"; + break; + case 47: + name = "Kobilje"; + break; + case 49: + name = "Komen"; + break; + case 50: + name = "Koper-Capodistria"; + break; + case 51: + name = "Kozje"; + break; + case 52: + name = "Kranj"; + break; + case 53: + name = "Kranjska Gora"; + break; + case 54: + name = "Krsko"; + break; + case 55: + name = "Kungota"; + break; + case 57: + name = "Lasko"; + break; + case 61: + name = "Ljubljana"; + break; + case 62: + name = "Ljubno"; + break; + case 64: + name = "Logatec"; + break; + case 66: + name = "Loski Potok"; + break; + case 68: + name = "Lukovica"; + break; + case 71: + name = "Medvode"; + break; + case 72: + name = "Menges"; + break; + case 73: + name = "Metlika"; + break; + case 74: + name = "Mezica"; + break; + case 76: + name = "Mislinja"; + break; + case 77: + name = "Moravce"; + break; + case 78: + name = "Moravske Toplice"; + break; + case 79: + name = "Mozirje"; + break; + case 80: + name = "Murska Sobota"; + break; + case 81: + name = "Muta"; + break; + case 82: + name = "Naklo"; + break; + case 83: + name = "Nazarje"; + break; + case 84: + name = "Nova Gorica"; + break; + case 86: + name = "Odranci"; + break; + case 87: + name = "Ormoz"; + break; + case 88: + name = "Osilnica"; + break; + case 89: + name = "Pesnica"; + break; + case 91: + name = "Pivka"; + break; + case 92: + name = "Podcetrtek"; + break; + case 94: + name = "Postojna"; + break; + case 97: + name = "Puconci"; + break; + case 98: + name = "Racam"; + break; + case 99: + name = "Radece"; + break; + case 832: + name = "Radenci"; + break; + case 833: + name = "Radlje ob Dravi"; + break; + case 834: + name = "Radovljica"; + break; + case 837: + name = "Rogasovci"; + break; + case 838: + name = "Rogaska Slatina"; + break; + case 839: + name = "Rogatec"; + break; + case 875: + name = "Semic"; + break; + case 876: + name = "Sencur"; + break; + case 877: + name = "Sentilj"; + break; + case 878: + name = "Sentjernej"; + break; + case 880: + name = "Sevnica"; + break; + case 881: + name = "Sezana"; + break; + case 882: + name = "Skocjan"; + break; + case 883: + name = "Skofja Loka"; + break; + case 918: + name = "Skofljica"; + break; + case 919: + name = "Slovenj Gradec"; + break; + case 921: + name = "Slovenske Konjice"; + break; + case 922: + name = "Smarje pri Jelsah"; + break; + case 923: + name = "Smartno ob Paki"; + break; + case 924: + name = "Sostanj"; + break; + case 925: + name = "Starse"; + break; + case 926: + name = "Store"; + break; + case 961: + name = "Sveti Jurij"; + break; + case 962: + name = "Tolmin"; + break; + case 963: + name = "Trbovlje"; + break; + case 964: + name = "Trebnje"; + break; + case 965: + name = "Trzic"; + break; + case 966: + name = "Turnisce"; + break; + case 967: + name = "Velenje"; + break; + case 968: + name = "Velike Lasce"; + break; + case 1004: + name = "Vipava"; + break; + case 1005: + name = "Vitanje"; + break; + case 1006: + name = "Vodice"; + break; + case 1008: + name = "Vrhnika"; + break; + case 1009: + name = "Vuzenica"; + break; + case 1010: + name = "Zagorje ob Savi"; + break; + case 1012: + name = "Zavrc"; + break; + case 1047: + name = "Zelezniki"; + break; + case 1048: + name = "Ziri"; + break; + case 1049: + name = "Zrece"; + break; + case 1093: + name = "Dobrova-Horjul-Polhov Gradec"; + break; + case 1096: + name = "Domzale"; + break; + case 1136: + name = "Jesenice"; + break; + case 1138: + name = "Kamnik"; + break; + case 1139: + name = "Kocevje"; + break; + case 1177: + name = "Kuzma"; + break; + case 1178: + name = "Lenart"; + break; + case 1180: + name = "Litija"; + break; + case 1181: + name = "Ljutomer"; + break; + case 1182: + name = "Loska Dolina"; + break; + case 1184: + name = "Luce"; + break; + case 1219: + name = "Majsperk"; + break; + case 1220: + name = "Maribor"; + break; + case 1223: + name = "Miren-Kostanjevica"; + break; + case 1225: + name = "Novo Mesto"; + break; + case 1227: + name = "Piran"; + break; + case 1266: + name = "Preddvor"; + break; + case 1268: + name = "Ptuj"; + break; + case 1305: + name = "Ribnica"; + break; + case 1307: + name = "Ruse"; + break; + case 1311: + name = "Sentjur pri Celju"; + break; + case 1312: + name = "Slovenska Bistrica"; + break; + case 1392: + name = "Videm"; + break; + case 1393: + name = "Vojnik"; + break; + case 1395: + name = "Zalec"; + break; + } + } + if (country_code.equals("SK") == true) { + switch (region_code2) { + case 1: + name = "Banska Bystrica"; + break; + case 2: + name = "Bratislava"; + break; + case 3: + name = "Kosice"; + break; + case 4: + name = "Nitra"; + break; + case 5: + name = "Presov"; + break; + case 6: + name = "Trencin"; + break; + case 7: + name = "Trnava"; + break; + case 8: + name = "Zilina"; + break; + } + } + if (country_code.equals("SL") == true) { + switch (region_code2) { + case 1: + name = "Eastern"; + break; + case 2: + name = "Northern"; + break; + case 3: + name = "Southern"; + break; + case 4: + name = "Western Area"; + break; + } + } + if (country_code.equals("SM") == true) { + switch (region_code2) { + case 1: + name = "Acquaviva"; + break; + case 2: + name = "Chiesanuova"; + break; + case 3: + name = "Domagnano"; + break; + case 4: + name = "Faetano"; + break; + case 5: + name = "Fiorentino"; + break; + case 6: + name = "Borgo Maggiore"; + break; + case 7: + name = "San Marino"; + break; + case 8: + name = "Monte Giardino"; + break; + case 9: + name = "Serravalle"; + break; + } + } + if (country_code.equals("SN") == true) { + switch (region_code2) { + case 1: + name = "Dakar"; + break; + case 3: + name = "Diourbel"; + break; + case 5: + name = "Tambacounda"; + break; + case 7: + name = "Thies"; + break; + case 9: + name = "Fatick"; + break; + case 10: + name = "Kaolack"; + break; + case 11: + name = "Kolda"; + break; + case 12: + name = "Ziguinchor"; + break; + case 13: + name = "Louga"; + break; + case 14: + name = "Saint-Louis"; + break; + case 15: + name = "Matam"; + break; + } + } + if (country_code.equals("SO") == true) { + switch (region_code2) { + case 1: + name = "Bakool"; + break; + case 2: + name = "Banaadir"; + break; + case 3: + name = "Bari"; + break; + case 4: + name = "Bay"; + break; + case 5: + name = "Galguduud"; + break; + case 6: + name = "Gedo"; + break; + case 7: + name = "Hiiraan"; + break; + case 8: + name = "Jubbada Dhexe"; + break; + case 9: + name = "Jubbada Hoose"; + break; + case 10: + name = "Mudug"; + break; + case 11: + name = "Nugaal"; + break; + case 12: + name = "Sanaag"; + break; + case 13: + name = "Shabeellaha Dhexe"; + break; + case 14: + name = "Shabeellaha Hoose"; + break; + case 16: + name = "Woqooyi Galbeed"; + break; + case 18: + name = "Nugaal"; + break; + case 19: + name = "Togdheer"; + break; + case 20: + name = "Woqooyi Galbeed"; + break; + case 21: + name = "Awdal"; + break; + case 22: + name = "Sool"; + break; + } + } + if (country_code.equals("SR") == true) { + switch (region_code2) { + case 10: + name = "Brokopondo"; + break; + case 11: + name = "Commewijne"; + break; + case 12: + name = "Coronie"; + break; + case 13: + name = "Marowijne"; + break; + case 14: + name = "Nickerie"; + break; + case 15: + name = "Para"; + break; + case 16: + name = "Paramaribo"; + break; + case 17: + name = "Saramacca"; + break; + case 18: + name = "Sipaliwini"; + break; + case 19: + name = "Wanica"; + break; + } + } + if (country_code.equals("ST") == true) { + switch (region_code2) { + case 1: + name = "Principe"; + break; + case 2: + name = "Sao Tome"; + break; + } + } + if (country_code.equals("SV") == true) { + switch (region_code2) { + case 1: + name = "Ahuachapan"; + break; + case 2: + name = "Cabanas"; + break; + case 3: + name = "Chalatenango"; + break; + case 4: + name = "Cuscatlan"; + break; + case 5: + name = "La Libertad"; + break; + case 6: + name = "La Paz"; + break; + case 7: + name = "La Union"; + break; + case 8: + name = "Morazan"; + break; + case 9: + name = "San Miguel"; + break; + case 10: + name = "San Salvador"; + break; + case 11: + name = "Santa Ana"; + break; + case 12: + name = "San Vicente"; + break; + case 13: + name = "Sonsonate"; + break; + case 14: + name = "Usulutan"; + break; + } + } + if (country_code.equals("SY") == true) { + switch (region_code2) { + case 1: + name = "Al Hasakah"; + break; + case 2: + name = "Al Ladhiqiyah"; + break; + case 3: + name = "Al Qunaytirah"; + break; + case 4: + name = "Ar Raqqah"; + break; + case 5: + name = "As Suwayda'"; + break; + case 6: + name = "Dar"; + break; + case 7: + name = "Dayr az Zawr"; + break; + case 8: + name = "Rif Dimashq"; + break; + case 9: + name = "Halab"; + break; + case 10: + name = "Hamah"; + break; + case 11: + name = "Hims"; + break; + case 12: + name = "Idlib"; + break; + case 13: + name = "Dimashq"; + break; + case 14: + name = "Tartus"; + break; + } + } + if (country_code.equals("SZ") == true) { + switch (region_code2) { + case 1: + name = "Hhohho"; + break; + case 2: + name = "Lubombo"; + break; + case 3: + name = "Manzini"; + break; + case 4: + name = "Shiselweni"; + break; + case 5: + name = "Praslin"; + break; + } + } + if (country_code.equals("TD") == true) { + switch (region_code2) { + case 1: + name = "Batha"; + break; + case 2: + name = "Biltine"; + break; + case 3: + name = "Borkou-Ennedi-Tibesti"; + break; + case 4: + name = "Chari-Baguirmi"; + break; + case 5: + name = "Guera"; + break; + case 6: + name = "Kanem"; + break; + case 7: + name = "Lac"; + break; + case 8: + name = "Logone Occidental"; + break; + case 9: + name = "Logone Oriental"; + break; + case 10: + name = "Mayo-Kebbi"; + break; + case 11: + name = "Moyen-Chari"; + break; + case 12: + name = "Ouaddai"; + break; + case 13: + name = "Salamat"; + break; + case 14: + name = "Tandjile"; + break; + } + } + if (country_code.equals("TG") == true) { + switch (region_code2) { + case 22: + name = "Centrale"; + break; + case 23: + name = "Kara"; + break; + case 24: + name = "Maritime"; + break; + case 25: + name = "Plateaux"; + break; + case 26: + name = "Savanes"; + break; + } + } + if (country_code.equals("TH") == true) { + switch (region_code2) { + case 1: + name = "Mae Hong Son"; + break; + case 2: + name = "Chiang Mai"; + break; + case 3: + name = "Chiang Rai"; + break; + case 4: + name = "Nan"; + break; + case 5: + name = "Lamphun"; + break; + case 6: + name = "Lampang"; + break; + case 7: + name = "Phrae"; + break; + case 8: + name = "Tak"; + break; + case 9: + name = "Sukhothai"; + break; + case 10: + name = "Uttaradit"; + break; + case 11: + name = "Kamphaeng Phet"; + break; + case 12: + name = "Phitsanulok"; + break; + case 13: + name = "Phichit"; + break; + case 14: + name = "Phetchabun"; + break; + case 15: + name = "Uthai Thani"; + break; + case 16: + name = "Nakhon Sawan"; + break; + case 17: + name = "Nong Khai"; + break; + case 18: + name = "Loei"; + break; + case 20: + name = "Sakon Nakhon"; + break; + case 21: + name = "Nakhon Phanom"; + break; + case 22: + name = "Khon Kaen"; + break; + case 23: + name = "Kalasin"; + break; + case 24: + name = "Maha Sarakham"; + break; + case 25: + name = "Roi Et"; + break; + case 26: + name = "Chaiyaphum"; + break; + case 27: + name = "Nakhon Ratchasima"; + break; + case 28: + name = "Buriram"; + break; + case 29: + name = "Surin"; + break; + case 30: + name = "Sisaket"; + break; + case 31: + name = "Narathiwat"; + break; + case 32: + name = "Chai Nat"; + break; + case 33: + name = "Sing Buri"; + break; + case 34: + name = "Lop Buri"; + break; + case 35: + name = "Ang Thong"; + break; + case 36: + name = "Phra Nakhon Si Ayutthaya"; + break; + case 37: + name = "Saraburi"; + break; + case 38: + name = "Nonthaburi"; + break; + case 39: + name = "Pathum Thani"; + break; + case 40: + name = "Krung Thep"; + break; + case 41: + name = "Phayao"; + break; + case 42: + name = "Samut Prakan"; + break; + case 43: + name = "Nakhon Nayok"; + break; + case 44: + name = "Chachoengsao"; + break; + case 45: + name = "Prachin Buri"; + break; + case 46: + name = "Chon Buri"; + break; + case 47: + name = "Rayong"; + break; + case 48: + name = "Chanthaburi"; + break; + case 49: + name = "Trat"; + break; + case 50: + name = "Kanchanaburi"; + break; + case 51: + name = "Suphan Buri"; + break; + case 52: + name = "Ratchaburi"; + break; + case 53: + name = "Nakhon Pathom"; + break; + case 54: + name = "Samut Songkhram"; + break; + case 55: + name = "Samut Sakhon"; + break; + case 56: + name = "Phetchaburi"; + break; + case 57: + name = "Prachuap Khiri Khan"; + break; + case 58: + name = "Chumphon"; + break; + case 59: + name = "Ranong"; + break; + case 60: + name = "Surat Thani"; + break; + case 61: + name = "Phangnga"; + break; + case 62: + name = "Phuket"; + break; + case 63: + name = "Krabi"; + break; + case 64: + name = "Nakhon Si Thammarat"; + break; + case 65: + name = "Trang"; + break; + case 66: + name = "Phatthalung"; + break; + case 67: + name = "Satun"; + break; + case 68: + name = "Songkhla"; + break; + case 69: + name = "Pattani"; + break; + case 70: + name = "Yala"; + break; + case 71: + name = "Ubon Ratchathani"; + break; + case 72: + name = "Yasothon"; + break; + case 73: + name = "Nakhon Phanom"; + break; + case 75: + name = "Ubon Ratchathani"; + break; + case 76: + name = "Udon Thani"; + break; + case 77: + name = "Amnat Charoen"; + break; + case 78: + name = "Mukdahan"; + break; + case 79: + name = "Nong Bua Lamphu"; + break; + case 80: + name = "Sa Kaeo"; + break; + } + } + if (country_code.equals("TJ") == true) { + switch (region_code2) { + case 1: + name = "Kuhistoni Badakhshon"; + break; + case 2: + name = "Khatlon"; + break; + case 3: + name = "Sughd"; + break; + } + } + if (country_code.equals("TM") == true) { + switch (region_code2) { + case 1: + name = "Ahal"; + break; + case 2: + name = "Balkan"; + break; + case 3: + name = "Dashoguz"; + break; + case 4: + name = "Lebap"; + break; + case 5: + name = "Mary"; + break; + } + } + if (country_code.equals("TN") == true) { + switch (region_code2) { + case 2: + name = "Kasserine"; + break; + case 3: + name = "Kairouan"; + break; + case 6: + name = "Jendouba"; + break; + case 10: + name = "Qafsah"; + break; + case 14: + name = "El Kef"; + break; + case 15: + name = "Al Mahdia"; + break; + case 16: + name = "Al Munastir"; + break; + case 17: + name = "Bajah"; + break; + case 18: + name = "Bizerte"; + break; + case 19: + name = "Nabeul"; + break; + case 22: + name = "Siliana"; + break; + case 23: + name = "Sousse"; + break; + case 27: + name = "Ben Arous"; + break; + case 28: + name = "Madanin"; + break; + case 29: + name = "Gabes"; + break; + case 31: + name = "Kebili"; + break; + case 32: + name = "Sfax"; + break; + case 33: + name = "Sidi Bou Zid"; + break; + case 34: + name = "Tataouine"; + break; + case 35: + name = "Tozeur"; + break; + case 36: + name = "Tunis"; + break; + case 37: + name = "Zaghouan"; + break; + case 38: + name = "Aiana"; + break; + case 39: + name = "Manouba"; + break; + } + } + if (country_code.equals("TO") == true) { + switch (region_code2) { + case 1: + name = "Ha"; + break; + case 2: + name = "Tongatapu"; + break; + case 3: + name = "Vava"; + break; + } + } + if (country_code.equals("TR") == true) { + switch (region_code2) { + case 2: + name = "Adiyaman"; + break; + case 3: + name = "Afyonkarahisar"; + break; + case 4: + name = "Agri"; + break; + case 5: + name = "Amasya"; + break; + case 7: + name = "Antalya"; + break; + case 8: + name = "Artvin"; + break; + case 9: + name = "Aydin"; + break; + case 10: + name = "Balikesir"; + break; + case 11: + name = "Bilecik"; + break; + case 12: + name = "Bingol"; + break; + case 13: + name = "Bitlis"; + break; + case 14: + name = "Bolu"; + break; + case 15: + name = "Burdur"; + break; + case 16: + name = "Bursa"; + break; + case 17: + name = "Canakkale"; + break; + case 19: + name = "Corum"; + break; + case 20: + name = "Denizli"; + break; + case 21: + name = "Diyarbakir"; + break; + case 22: + name = "Edirne"; + break; + case 23: + name = "Elazig"; + break; + case 24: + name = "Erzincan"; + break; + case 25: + name = "Erzurum"; + break; + case 26: + name = "Eskisehir"; + break; + case 28: + name = "Giresun"; + break; + case 31: + name = "Hatay"; + break; + case 32: + name = "Mersin"; + break; + case 33: + name = "Isparta"; + break; + case 34: + name = "Istanbul"; + break; + case 35: + name = "Izmir"; + break; + case 37: + name = "Kastamonu"; + break; + case 38: + name = "Kayseri"; + break; + case 39: + name = "Kirklareli"; + break; + case 40: + name = "Kirsehir"; + break; + case 41: + name = "Kocaeli"; + break; + case 43: + name = "Kutahya"; + break; + case 44: + name = "Malatya"; + break; + case 45: + name = "Manisa"; + break; + case 46: + name = "Kahramanmaras"; + break; + case 48: + name = "Mugla"; + break; + case 49: + name = "Mus"; + break; + case 50: + name = "Nevsehir"; + break; + case 52: + name = "Ordu"; + break; + case 53: + name = "Rize"; + break; + case 54: + name = "Sakarya"; + break; + case 55: + name = "Samsun"; + break; + case 57: + name = "Sinop"; + break; + case 58: + name = "Sivas"; + break; + case 59: + name = "Tekirdag"; + break; + case 60: + name = "Tokat"; + break; + case 61: + name = "Trabzon"; + break; + case 62: + name = "Tunceli"; + break; + case 63: + name = "Sanliurfa"; + break; + case 64: + name = "Usak"; + break; + case 65: + name = "Van"; + break; + case 66: + name = "Yozgat"; + break; + case 68: + name = "Ankara"; + break; + case 69: + name = "Gumushane"; + break; + case 70: + name = "Hakkari"; + break; + case 71: + name = "Konya"; + break; + case 72: + name = "Mardin"; + break; + case 73: + name = "Nigde"; + break; + case 74: + name = "Siirt"; + break; + case 75: + name = "Aksaray"; + break; + case 76: + name = "Batman"; + break; + case 77: + name = "Bayburt"; + break; + case 78: + name = "Karaman"; + break; + case 79: + name = "Kirikkale"; + break; + case 80: + name = "Sirnak"; + break; + case 81: + name = "Adana"; + break; + case 82: + name = "Cankiri"; + break; + case 83: + name = "Gaziantep"; + break; + case 84: + name = "Kars"; + break; + case 85: + name = "Zonguldak"; + break; + case 86: + name = "Ardahan"; + break; + case 87: + name = "Bartin"; + break; + case 88: + name = "Igdir"; + break; + case 89: + name = "Karabuk"; + break; + case 90: + name = "Kilis"; + break; + case 91: + name = "Osmaniye"; + break; + case 92: + name = "Yalova"; + break; + case 93: + name = "Duzce"; + break; + } + } + if (country_code.equals("TT") == true) { + switch (region_code2) { + case 1: + name = "Arima"; + break; + case 2: + name = "Caroni"; + break; + case 3: + name = "Mayaro"; + break; + case 4: + name = "Nariva"; + break; + case 5: + name = "Port-of-Spain"; + break; + case 6: + name = "Saint Andrew"; + break; + case 7: + name = "Saint David"; + break; + case 8: + name = "Saint George"; + break; + case 9: + name = "Saint Patrick"; + break; + case 10: + name = "San Fernando"; + break; + case 11: + name = "Tobago"; + break; + case 12: + name = "Victoria"; + break; + } + } + if (country_code.equals("TW") == true) { + switch (region_code2) { + case 1: + name = "Fu-chien"; + break; + case 2: + name = "Kao-hsiung"; + break; + case 3: + name = "T'ai-pei"; + break; + case 4: + name = "T'ai-wan"; + break; + } + } + if (country_code.equals("TZ") == true) { + switch (region_code2) { + case 2: + name = "Pwani"; + break; + case 3: + name = "Dodoma"; + break; + case 4: + name = "Iringa"; + break; + case 5: + name = "Kigoma"; + break; + case 6: + name = "Kilimanjaro"; + break; + case 7: + name = "Lindi"; + break; + case 8: + name = "Mara"; + break; + case 9: + name = "Mbeya"; + break; + case 10: + name = "Morogoro"; + break; + case 11: + name = "Mtwara"; + break; + case 12: + name = "Mwanza"; + break; + case 13: + name = "Pemba North"; + break; + case 14: + name = "Ruvuma"; + break; + case 15: + name = "Shinyanga"; + break; + case 16: + name = "Singida"; + break; + case 17: + name = "Tabora"; + break; + case 18: + name = "Tanga"; + break; + case 19: + name = "Kagera"; + break; + case 20: + name = "Pemba South"; + break; + case 21: + name = "Zanzibar Central"; + break; + case 22: + name = "Zanzibar North"; + break; + case 23: + name = "Dar es Salaam"; + break; + case 24: + name = "Rukwa"; + break; + case 25: + name = "Zanzibar Urban"; + break; + case 26: + name = "Arusha"; + break; + case 27: + name = "Manyara"; + break; + } + } + if (country_code.equals("UA") == true) { + switch (region_code2) { + case 1: + name = "Cherkas'ka Oblast'"; + break; + case 2: + name = "Chernihivs'ka Oblast'"; + break; + case 3: + name = "Chernivets'ka Oblast'"; + break; + case 4: + name = "Dnipropetrovs'ka Oblast'"; + break; + case 5: + name = "Donets'ka Oblast'"; + break; + case 6: + name = "Ivano-Frankivs'ka Oblast'"; + break; + case 7: + name = "Kharkivs'ka Oblast'"; + break; + case 8: + name = "Khersons'ka Oblast'"; + break; + case 9: + name = "Khmel'nyts'ka Oblast'"; + break; + case 10: + name = "Kirovohrads'ka Oblast'"; + break; + case 11: + name = "Krym"; + break; + case 12: + name = "Kyyiv"; + break; + case 13: + name = "Kyyivs'ka Oblast'"; + break; + case 14: + name = "Luhans'ka Oblast'"; + break; + case 15: + name = "L'vivs'ka Oblast'"; + break; + case 16: + name = "Mykolayivs'ka Oblast'"; + break; + case 17: + name = "Odes'ka Oblast'"; + break; + case 18: + name = "Poltavs'ka Oblast'"; + break; + case 19: + name = "Rivnens'ka Oblast'"; + break; + case 20: + name = "Sevastopol'"; + break; + case 21: + name = "Sums'ka Oblast'"; + break; + case 22: + name = "Ternopil's'ka Oblast'"; + break; + case 23: + name = "Vinnyts'ka Oblast'"; + break; + case 24: + name = "Volyns'ka Oblast'"; + break; + case 25: + name = "Zakarpats'ka Oblast'"; + break; + case 26: + name = "Zaporiz'ka Oblast'"; + break; + case 27: + name = "Zhytomyrs'ka Oblast'"; + break; + } + } + if (country_code.equals("UG") == true) { + switch (region_code2) { + case 26: + name = "Apac"; + break; + case 28: + name = "Bundibugyo"; + break; + case 29: + name = "Bushenyi"; + break; + case 30: + name = "Gulu"; + break; + case 31: + name = "Hoima"; + break; + case 33: + name = "Jinja"; + break; + case 36: + name = "Kalangala"; + break; + case 37: + name = "Kampala"; + break; + case 38: + name = "Kamuli"; + break; + case 39: + name = "Kapchorwa"; + break; + case 40: + name = "Kasese"; + break; + case 41: + name = "Kibale"; + break; + case 42: + name = "Kiboga"; + break; + case 43: + name = "Kisoro"; + break; + case 45: + name = "Kotido"; + break; + case 46: + name = "Kumi"; + break; + case 47: + name = "Lira"; + break; + case 50: + name = "Masindi"; + break; + case 52: + name = "Mbarara"; + break; + case 56: + name = "Mubende"; + break; + case 58: + name = "Nebbi"; + break; + case 59: + name = "Ntungamo"; + break; + case 60: + name = "Pallisa"; + break; + case 61: + name = "Rakai"; + break; + case 65: + name = "Adjumani"; + break; + case 66: + name = "Bugiri"; + break; + case 67: + name = "Busia"; + break; + case 69: + name = "Katakwi"; + break; + case 70: + name = "Luwero"; + break; + case 71: + name = "Masaka"; + break; + case 72: + name = "Moyo"; + break; + case 73: + name = "Nakasongola"; + break; + case 74: + name = "Sembabule"; + break; + case 76: + name = "Tororo"; + break; + case 77: + name = "Arua"; + break; + case 78: + name = "Iganga"; + break; + case 79: + name = "Kabarole"; + break; + case 80: + name = "Kaberamaido"; + break; + case 81: + name = "Kamwenge"; + break; + case 82: + name = "Kanungu"; + break; + case 83: + name = "Kayunga"; + break; + case 84: + name = "Kitgum"; + break; + case 85: + name = "Kyenjojo"; + break; + case 86: + name = "Mayuge"; + break; + case 87: + name = "Mbale"; + break; + case 88: + name = "Moroto"; + break; + case 89: + name = "Mpigi"; + break; + case 90: + name = "Mukono"; + break; + case 91: + name = "Nakapiripirit"; + break; + case 92: + name = "Pader"; + break; + case 93: + name = "Rukungiri"; + break; + case 94: + name = "Sironko"; + break; + case 95: + name = "Soroti"; + break; + case 96: + name = "Wakiso"; + break; + case 97: + name = "Yumbe"; + break; + } + } + if (country_code.equals("UY") == true) { + switch (region_code2) { + case 1: + name = "Artigas"; + break; + case 2: + name = "Canelones"; + break; + case 3: + name = "Cerro Largo"; + break; + case 4: + name = "Colonia"; + break; + case 5: + name = "Durazno"; + break; + case 6: + name = "Flores"; + break; + case 7: + name = "Florida"; + break; + case 8: + name = "Lavalleja"; + break; + case 9: + name = "Maldonado"; + break; + case 10: + name = "Montevideo"; + break; + case 11: + name = "Paysandu"; + break; + case 12: + name = "Rio Negro"; + break; + case 13: + name = "Rivera"; + break; + case 14: + name = "Rocha"; + break; + case 15: + name = "Salto"; + break; + case 16: + name = "San Jose"; + break; + case 17: + name = "Soriano"; + break; + case 18: + name = "Tacuarembo"; + break; + case 19: + name = "Treinta y Tres"; + break; + } + } + if (country_code.equals("UZ") == true) { + switch (region_code2) { + case 1: + name = "Andijon"; + break; + case 2: + name = "Bukhoro"; + break; + case 3: + name = "Farghona"; + break; + case 4: + name = "Jizzakh"; + break; + case 5: + name = "Khorazm"; + break; + case 6: + name = "Namangan"; + break; + case 7: + name = "Nawoiy"; + break; + case 8: + name = "Qashqadaryo"; + break; + case 9: + name = "Qoraqalpoghiston"; + break; + case 10: + name = "Samarqand"; + break; + case 11: + name = "Sirdaryo"; + break; + case 12: + name = "Surkhondaryo"; + break; + case 13: + name = "Toshkent"; + break; + case 14: + name = "Toshkent"; + break; + } + } + if (country_code.equals("VC") == true) { + switch (region_code2) { + case 1: + name = "Charlotte"; + break; + case 2: + name = "Saint Andrew"; + break; + case 3: + name = "Saint David"; + break; + case 4: + name = "Saint George"; + break; + case 5: + name = "Saint Patrick"; + break; + case 6: + name = "Grenadines"; + break; + } + } + if (country_code.equals("VE") == true) { + switch (region_code2) { + case 1: + name = "Amazonas"; + break; + case 2: + name = "Anzoategui"; + break; + case 3: + name = "Apure"; + break; + case 4: + name = "Aragua"; + break; + case 5: + name = "Barinas"; + break; + case 6: + name = "Bolivar"; + break; + case 7: + name = "Carabobo"; + break; + case 8: + name = "Cojedes"; + break; + case 9: + name = "Delta Amacuro"; + break; + case 11: + name = "Falcon"; + break; + case 12: + name = "Guarico"; + break; + case 13: + name = "Lara"; + break; + case 14: + name = "Merida"; + break; + case 15: + name = "Miranda"; + break; + case 16: + name = "Monagas"; + break; + case 17: + name = "Nueva Esparta"; + break; + case 18: + name = "Portuguesa"; + break; + case 19: + name = "Sucre"; + break; + case 20: + name = "Tachira"; + break; + case 21: + name = "Trujillo"; + break; + case 22: + name = "Yaracuy"; + break; + case 23: + name = "Zulia"; + break; + case 24: + name = "Dependencias Federales"; + break; + case 25: + name = "Distrito Federal"; + break; + case 26: + name = "Vargas"; + break; + } + } + if (country_code.equals("VN") == true) { + switch (region_code2) { + case 1: + name = "An Giang"; + break; + case 3: + name = "Ben Tre"; + break; + case 5: + name = "Cao Bang"; + break; + case 9: + name = "Dong Thap"; + break; + case 13: + name = "Hai Phong"; + break; + case 20: + name = "Ho Chi Minh"; + break; + case 21: + name = "Kien Giang"; + break; + case 23: + name = "Lam Dong"; + break; + case 24: + name = "Long An"; + break; + case 30: + name = "Quang Ninh"; + break; + case 32: + name = "Son La"; + break; + case 33: + name = "Tay Ninh"; + break; + case 34: + name = "Thanh Hoa"; + break; + case 35: + name = "Thai Binh"; + break; + case 37: + name = "Tien Giang"; + break; + case 39: + name = "Lang Son"; + break; + case 43: + name = "An Giang"; + break; + case 44: + name = "Dac Lac"; + break; + case 45: + name = "Dong Nai"; + break; + case 46: + name = "Dong Thap"; + break; + case 47: + name = "Kien Giang"; + break; + case 49: + name = "Song Be"; + break; + case 50: + name = "Vinh Phu"; + break; + case 51: + name = "Ha Noi"; + break; + case 52: + name = "Ho Chi Minh"; + break; + case 53: + name = "Ba Ria-Vung Tau"; + break; + case 54: + name = "Binh Dinh"; + break; + case 55: + name = "Binh Thuan"; + break; + case 58: + name = "Ha Giang"; + break; + case 59: + name = "Ha Tay"; + break; + case 60: + name = "Ha Tinh"; + break; + case 61: + name = "Hoa Binh"; + break; + case 62: + name = "Khanh Hoa"; + break; + case 63: + name = "Kon Tum"; + break; + case 64: + name = "Quang Tri"; + break; + case 65: + name = "Nam Ha"; + break; + case 66: + name = "Nghe An"; + break; + case 67: + name = "Ninh Binh"; + break; + case 68: + name = "Ninh Thuan"; + break; + case 69: + name = "Phu Yen"; + break; + case 70: + name = "Quang Binh"; + break; + case 71: + name = "Quang Ngai"; + break; + case 72: + name = "Quang Tri"; + break; + case 73: + name = "Soc Trang"; + break; + case 74: + name = "Thua Thien"; + break; + case 75: + name = "Tra Vinh"; + break; + case 76: + name = "Tuyen Quang"; + break; + case 77: + name = "Vinh Long"; + break; + case 78: + name = "Da Nang"; + break; + case 79: + name = "Hai Duong"; + break; + case 80: + name = "Ha Nam"; + break; + case 81: + name = "Hung Yen"; + break; + case 82: + name = "Nam Dinh"; + break; + case 83: + name = "Phu Tho"; + break; + case 84: + name = "Quang Nam"; + break; + case 85: + name = "Thai Nguyen"; + break; + case 86: + name = "Vinh Puc Province"; + break; + case 87: + name = "Can Tho"; + break; + case 88: + name = "Dak Lak"; + break; + case 89: + name = "Lai Chau"; + break; + case 90: + name = "Lao Cai"; + break; + case 91: + name = "Dak Nong"; + break; + case 92: + name = "Dien Bien"; + break; + case 93: + name = "Hau Giang"; + break; + } + } + if (country_code.equals("VU") == true) { + switch (region_code2) { + case 5: + name = "Ambrym"; + break; + case 6: + name = "Aoba"; + break; + case 7: + name = "Torba"; + break; + case 8: + name = "Efate"; + break; + case 9: + name = "Epi"; + break; + case 10: + name = "Malakula"; + break; + case 11: + name = "Paama"; + break; + case 12: + name = "Pentecote"; + break; + case 13: + name = "Sanma"; + break; + case 14: + name = "Shepherd"; + break; + case 15: + name = "Tafea"; + break; + case 16: + name = "Malampa"; + break; + case 17: + name = "Penama"; + break; + case 18: + name = "Shefa"; + break; + } + } + if (country_code.equals("WS") == true) { + switch (region_code2) { + case 2: + name = "Aiga-i-le-Tai"; + break; + case 3: + name = "Atua"; + break; + case 4: + name = "Fa"; + break; + case 5: + name = "Gaga"; + break; + case 6: + name = "Va"; + break; + case 7: + name = "Gagaifomauga"; + break; + case 8: + name = "Palauli"; + break; + case 9: + name = "Satupa"; + break; + case 10: + name = "Tuamasaga"; + break; + case 11: + name = "Vaisigano"; + break; + } + } + if (country_code.equals("YE") == true) { + switch (region_code2) { + case 1: + name = "Abyan"; + break; + case 2: + name = "Adan"; + break; + case 3: + name = "Al Mahrah"; + break; + case 4: + name = "Hadramawt"; + break; + case 5: + name = "Shabwah"; + break; + case 6: + name = "Lahij"; + break; + case 7: + name = "Al Bayda'"; + break; + case 8: + name = "Al Hudaydah"; + break; + case 9: + name = "Al Jawf"; + break; + case 10: + name = "Al Mahwit"; + break; + case 11: + name = "Dhamar"; + break; + case 12: + name = "Hajjah"; + break; + case 13: + name = "Ibb"; + break; + case 14: + name = "Ma'rib"; + break; + case 15: + name = "Sa'dah"; + break; + case 16: + name = "San'a'"; + break; + case 17: + name = "Taizz"; + break; + case 18: + name = "Ad Dali"; + break; + case 19: + name = "Amran"; + break; + case 20: + name = "Al Bayda'"; + break; + case 21: + name = "Al Jawf"; + break; + case 22: + name = "Hajjah"; + break; + case 23: + name = "Ibb"; + break; + case 24: + name = "Lahij"; + break; + case 25: + name = "Taizz"; + break; + } + } + if (country_code.equals("ZA") == true) { + switch (region_code2) { + case 1: + name = "North-Western Province"; + break; + case 2: + name = "KwaZulu-Natal"; + break; + case 3: + name = "Free State"; + break; + case 5: + name = "Eastern Cape"; + break; + case 6: + name = "Gauteng"; + break; + case 7: + name = "Mpumalanga"; + break; + case 8: + name = "Northern Cape"; + break; + case 9: + name = "Limpopo"; + break; + case 10: + name = "North-West"; + break; + case 11: + name = "Western Cape"; + break; + } + } + if (country_code.equals("ZM") == true) { + switch (region_code2) { + case 1: + name = "Western"; + break; + case 2: + name = "Central"; + break; + case 3: + name = "Eastern"; + break; + case 4: + name = "Luapula"; + break; + case 5: + name = "Northern"; + break; + case 6: + name = "North-Western"; + break; + case 7: + name = "Southern"; + break; + case 8: + name = "Copperbelt"; + break; + case 9: + name = "Lusaka"; + break; + } + } + if (country_code.equals("ZW") == true) { + switch (region_code2) { + case 1: + name = "Manicaland"; + break; + case 2: + name = "Midlands"; + break; + case 3: + name = "Mashonaland Central"; + break; + case 4: + name = "Mashonaland East"; + break; + case 5: + name = "Mashonaland West"; + break; + case 6: + name = "Matabeleland North"; + break; + case 7: + name = "Matabeleland South"; + break; + case 8: + name = "Masvingo"; + break; + case 9: + name = "Bulawayo"; + break; + case 10: + name = "Harare"; + break; + } + } + return name; + } +} diff --git a/src/com/maxmind/geoip/timeZone.java b/src/com/maxmind/geoip/timeZone.java new file mode 100644 index 0000000..5a26ed6 --- /dev/null +++ b/src/com/maxmind/geoip/timeZone.java @@ -0,0 +1,1459 @@ +package com.maxmind.geoip; +// generated automatically from admin/generate_timeZone.pl +public class timeZone { + static public String timeZoneByCountryAndRegion(String country,String region) { + String timezone = null; + if (country == null) { + return null; + } + if (region == null) { + region = ""; + } + if (country.equals("AD") == true) { + timezone = "Europe/Andorra"; + } else if (country.equals("AE") == true) { + timezone = "Asia/Dubai"; + } else if (country.equals("AF") == true) { + timezone = "Asia/Kabul"; + } else if (country.equals("AG") == true) { + timezone = "America/Antigua"; + } else if (country.equals("AI") == true) { + timezone = "America/Anguilla"; + } else if (country.equals("AL") == true) { + timezone = "Europe/Tirane"; + } else if (country.equals("AM") == true) { + timezone = "Asia/Yerevan"; + } else if (country.equals("AN") == true) { + timezone = "America/Curacao"; + } else if (country.equals("AO") == true) { + timezone = "Africa/Luanda"; + } else if (country.equals("AQ") == true) { + timezone = "Antarctica/South_Pole"; + } else if (country.equals("AR") == true) { + if (region.equals("01") == true) { + timezone = "America/Argentina/Buenos_Aires"; + } else if (region.equals("02") == true) { + timezone = "America/Argentina/Catamarca"; + } else if (region.equals("03") == true) { + timezone = "America/Argentina/Tucuman"; + } else if (region.equals("04") == true) { + timezone = "America/Argentina/Rio_Gallegos"; + } else if (region.equals("05") == true) { + timezone = "America/Argentina/Cordoba"; + } else if (region.equals("06") == true) { + timezone = "America/Argentina/Buenos_Aires"; + } else if (region.equals("07") == true) { + timezone = "America/Argentina/Buenos_Aires"; + } else if (region.equals("08") == true) { + timezone = "America/Argentina/Buenos_Aires"; + } else if (region.equals("09") == true) { + timezone = "America/Argentina/Tucuman"; + } else if (region.equals("10") == true) { + timezone = "America/Argentina/Jujuy"; + } else if (region.equals("11") == true) { + timezone = "America/Argentina/San_Luis"; + } else if (region.equals("12") == true) { + timezone = "America/Argentina/La_Rioja"; + } else if (region.equals("13") == true) { + timezone = "America/Argentina/Mendoza"; + } else if (region.equals("14") == true) { + timezone = "America/Argentina/Buenos_Aires"; + } else if (region.equals("15") == true) { + timezone = "America/Argentina/Mendoza"; + } else if (region.equals("16") == true) { + timezone = "America/Argentina/San_Luis"; + } else if (region.equals("17") == true) { + timezone = "America/Argentina/Salta"; + } else if (region.equals("18") == true) { + timezone = "America/Argentina/San_Juan"; + } else if (region.equals("19") == true) { + timezone = "America/Argentina/San_Luis"; + } else if (region.equals("20") == true) { + timezone = "America/Argentina/Rio_Gallegos"; + } else if (region.equals("21") == true) { + timezone = "America/Argentina/Cordoba"; + } else if (region.equals("22") == true) { + timezone = "America/Argentina/Catamarca"; + } else if (region.equals("23") == true) { + timezone = "America/Argentina/Ushuaia"; + } else if (region.equals("24") == true) { + timezone = "America/Argentina/Tucuman"; + } + } else if (country.equals("AS") == true) { + timezone = "Pacific/Pago_Pago"; + } else if (country.equals("AT") == true) { + timezone = "Europe/Vienna"; + } else if (country.equals("AU") == true) { + if (region.equals("01") == true) { + timezone = "Australia/Sydney"; + } else if (region.equals("02") == true) { + timezone = "Australia/Sydney"; + } else if (region.equals("03") == true) { + timezone = "Australia/Darwin"; + } else if (region.equals("04") == true) { + timezone = "Australia/Brisbane"; + } else if (region.equals("05") == true) { + timezone = "Australia/Adelaide"; + } else if (region.equals("06") == true) { + timezone = "Australia/Hobart"; + } else if (region.equals("07") == true) { + timezone = "Australia/Melbourne"; + } else if (region.equals("08") == true) { + timezone = "Australia/Perth"; + } + } else if (country.equals("AW") == true) { + timezone = "America/Aruba"; + } else if (country.equals("AX") == true) { + timezone = "Europe/Mariehamn"; + } else if (country.equals("AZ") == true) { + timezone = "Asia/Baku"; + } else if (country.equals("BA") == true) { + timezone = "Europe/Sarajevo"; + } else if (country.equals("BB") == true) { + timezone = "America/Barbados"; + } else if (country.equals("BD") == true) { + timezone = "Asia/Dhaka"; + } else if (country.equals("BE") == true) { + timezone = "Europe/Brussels"; + } else if (country.equals("BF") == true) { + timezone = "Africa/Ouagadougou"; + } else if (country.equals("BG") == true) { + timezone = "Europe/Sofia"; + } else if (country.equals("BH") == true) { + timezone = "Asia/Bahrain"; + } else if (country.equals("BI") == true) { + timezone = "Africa/Bujumbura"; + } else if (country.equals("BJ") == true) { + timezone = "Africa/Porto-Novo"; + } else if (country.equals("BM") == true) { + timezone = "Atlantic/Bermuda"; + } else if (country.equals("BN") == true) { + timezone = "Asia/Brunei"; + } else if (country.equals("BO") == true) { + timezone = "America/La_Paz"; + } else if (country.equals("BR") == true) { + if (region.equals("01") == true) { + timezone = "America/Rio_Branco"; + } else if (region.equals("02") == true) { + timezone = "America/Maceio"; + } else if (region.equals("03") == true) { + timezone = "America/Belem"; + } else if (region.equals("04") == true) { + timezone = "America/Manaus"; + } else if (region.equals("05") == true) { + timezone = "America/Bahia"; + } else if (region.equals("06") == true) { + timezone = "America/Fortaleza"; + } else if (region.equals("07") == true) { + timezone = "America/Cuiaba"; + } else if (region.equals("08") == true) { + timezone = "America/Sao_Paulo"; + } else if (region.equals("11") == true) { + timezone = "America/Campo_Grande"; + } else if (region.equals("13") == true) { + timezone = "America/Araguaina"; + } else if (region.equals("14") == true) { + timezone = "America/Cuiaba"; + } else if (region.equals("15") == true) { + timezone = "America/Sao_Paulo"; + } else if (region.equals("16") == true) { + timezone = "America/Belem"; + } else if (region.equals("17") == true) { + timezone = "America/Recife"; + } else if (region.equals("18") == true) { + timezone = "America/Campo_Grande"; + } else if (region.equals("20") == true) { + timezone = "America/Fortaleza"; + } else if (region.equals("21") == true) { + timezone = "America/Sao_Paulo"; + } else if (region.equals("22") == true) { + timezone = "America/Recife"; + } else if (region.equals("23") == true) { + timezone = "America/Sao_Paulo"; + } else if (region.equals("24") == true) { + timezone = "America/Porto_Velho"; + } else if (region.equals("25") == true) { + timezone = "America/Boa_Vista"; + } else if (region.equals("26") == true) { + timezone = "America/Sao_Paulo"; + } else if (region.equals("27") == true) { + timezone = "America/Sao_Paulo"; + } else if (region.equals("28") == true) { + timezone = "America/Maceio"; + } else if (region.equals("29") == true) { + timezone = "America/Campo_Grande"; + } else if (region.equals("30") == true) { + timezone = "America/Recife"; + } else if (region.equals("31") == true) { + timezone = "America/Araguaina"; + } + } else if (country.equals("BS") == true) { + timezone = "America/Nassau"; + } else if (country.equals("BT") == true) { + timezone = "Asia/Thimphu"; + } else if (country.equals("BV") == true) { + timezone = "Antarctica/Syowa"; + } else if (country.equals("BW") == true) { + timezone = "Africa/Gaborone"; + } else if (country.equals("BY") == true) { + timezone = "Europe/Minsk"; + } else if (country.equals("BZ") == true) { + timezone = "America/Belize"; + } else if (country.equals("CA") == true) { + if (region.equals("AB") == true) { + timezone = "America/Edmonton"; + } else if (region.equals("BC") == true) { + timezone = "America/Vancouver"; + } else if (region.equals("MB") == true) { + timezone = "America/Winnipeg"; + } else if (region.equals("NB") == true) { + timezone = "America/Halifax"; + } else if (region.equals("NL") == true) { + timezone = "America/St_Johns"; + } else if (region.equals("NS") == true) { + timezone = "America/Halifax"; + } else if (region.equals("NT") == true) { + timezone = "America/Yellowknife"; + } else if (region.equals("NU") == true) { + timezone = "America/Rankin_Inlet"; + } else if (region.equals("ON") == true) { + timezone = "America/Rainy_River"; + } else if (region.equals("PE") == true) { + timezone = "America/Halifax"; + } else if (region.equals("QC") == true) { + timezone = "America/Montreal"; + } else if (region.equals("SK") == true) { + timezone = "America/Regina"; + } else if (region.equals("YT") == true) { + timezone = "America/Whitehorse"; + } + } else if (country.equals("CC") == true) { + timezone = "Indian/Cocos"; + } else if (country.equals("CD") == true) { + if (region.equals("01") == true) { + timezone = "Africa/Kinshasa"; + } else if (region.equals("02") == true) { + timezone = "Africa/Kinshasa"; + } else if (region.equals("03") == true) { + timezone = "Africa/Kinshasa"; + } else if (region.equals("04") == true) { + timezone = "Africa/Lubumbashi"; + } else if (region.equals("05") == true) { + timezone = "Africa/Lubumbashi"; + } else if (region.equals("06") == true) { + timezone = "Africa/Kinshasa"; + } else if (region.equals("07") == true) { + timezone = "Africa/Lubumbashi"; + } else if (region.equals("08") == true) { + timezone = "Africa/Kinshasa"; + } else if (region.equals("09") == true) { + timezone = "Africa/Lubumbashi"; + } else if (region.equals("10") == true) { + timezone = "Africa/Lubumbashi"; + } else if (region.equals("11") == true) { + timezone = "Africa/Lubumbashi"; + } else if (region.equals("12") == true) { + timezone = "Africa/Lubumbashi"; + } + } else if (country.equals("CF") == true) { + timezone = "Africa/Bangui"; + } else if (country.equals("CG") == true) { + timezone = "Africa/Brazzaville"; + } else if (country.equals("CH") == true) { + timezone = "Europe/Zurich"; + } else if (country.equals("CI") == true) { + timezone = "Africa/Abidjan"; + } else if (country.equals("CK") == true) { + timezone = "Pacific/Rarotonga"; + } else if (country.equals("CL") == true) { + timezone = "America/Santiago"; + } else if (country.equals("CM") == true) { + timezone = "Africa/Douala"; + } else if (country.equals("CN") == true) { + if (region.equals("01") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("02") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("03") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("04") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("05") == true) { + timezone = "Asia/Harbin"; + } else if (region.equals("06") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("07") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("08") == true) { + timezone = "Asia/Harbin"; + } else if (region.equals("09") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("10") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("11") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("12") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("13") == true) { + timezone = "Asia/Urumqi"; + } else if (region.equals("14") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("15") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("16") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("18") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("19") == true) { + timezone = "Asia/Harbin"; + } else if (region.equals("20") == true) { + timezone = "Asia/Harbin"; + } else if (region.equals("21") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("22") == true) { + timezone = "Asia/Harbin"; + } else if (region.equals("23") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("24") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("25") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("26") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("28") == true) { + timezone = "Asia/Shanghai"; + } else if (region.equals("29") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("30") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("31") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("32") == true) { + timezone = "Asia/Chongqing"; + } else if (region.equals("33") == true) { + timezone = "Asia/Chongqing"; + } + } else if (country.equals("CO") == true) { + timezone = "America/Bogota"; + } else if (country.equals("CR") == true) { + timezone = "America/Costa_Rica"; + } else if (country.equals("CU") == true) { + timezone = "America/Havana"; + } else if (country.equals("CV") == true) { + timezone = "Atlantic/Cape_Verde"; + } else if (country.equals("CX") == true) { + timezone = "Indian/Christmas"; + } else if (country.equals("CY") == true) { + timezone = "Asia/Nicosia"; + } else if (country.equals("CZ") == true) { + timezone = "Europe/Prague"; + } else if (country.equals("DE") == true) { + timezone = "Europe/Berlin"; + } else if (country.equals("DJ") == true) { + timezone = "Africa/Djibouti"; + } else if (country.equals("DK") == true) { + timezone = "Europe/Copenhagen"; + } else if (country.equals("DM") == true) { + timezone = "America/Dominica"; + } else if (country.equals("DO") == true) { + timezone = "America/Santo_Domingo"; + } else if (country.equals("DZ") == true) { + timezone = "Africa/Algiers"; + } else if (country.equals("EC") == true) { + if (region.equals("01") == true) { + timezone = "Pacific/Galapagos"; + } else if (region.equals("02") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("03") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("04") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("05") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("06") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("07") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("08") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("09") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("10") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("11") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("12") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("13") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("14") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("15") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("17") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("18") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("19") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("22") == true) { + timezone = "America/Guayaquil"; + } else if (region.equals("24") == true) { + timezone = "America/Guayaquil"; + } + } else if (country.equals("EE") == true) { + timezone = "Europe/Tallinn"; + } else if (country.equals("EG") == true) { + timezone = "Africa/Cairo"; + } else if (country.equals("EH") == true) { + timezone = "Africa/El_Aaiun"; + } else if (country.equals("ER") == true) { + timezone = "Africa/Asmara"; + } else if (country.equals("ES") == true) { + if (region.equals("07") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("27") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("29") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("31") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("32") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("34") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("39") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("51") == true) { + timezone = "Africa/Ceuta"; + } else if (region.equals("52") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("53") == true) { + timezone = "Atlantic/Canary"; + } else if (region.equals("54") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("55") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("56") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("57") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("58") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("59") == true) { + timezone = "Europe/Madrid"; + } else if (region.equals("60") == true) { + timezone = "Europe/Madrid"; + } + } else if (country.equals("ET") == true) { + timezone = "Africa/Addis_Ababa"; + } else if (country.equals("FI") == true) { + timezone = "Europe/Helsinki"; + } else if (country.equals("FJ") == true) { + timezone = "Pacific/Fiji"; + } else if (country.equals("FK") == true) { + timezone = "Atlantic/Stanley"; + } else if (country.equals("FM") == true) { + timezone = "Pacific/Pohnpei"; + } else if (country.equals("FO") == true) { + timezone = "Atlantic/Faroe"; + } else if (country.equals("FR") == true) { + timezone = "Europe/Paris"; + } else if (country.equals("GA") == true) { + timezone = "Africa/Libreville"; + } else if (country.equals("GB") == true) { + timezone = "Europe/London"; + } else if (country.equals("GD") == true) { + timezone = "America/Grenada"; + } else if (country.equals("GE") == true) { + timezone = "Asia/Tbilisi"; + } else if (country.equals("GF") == true) { + timezone = "America/Cayenne"; + } else if (country.equals("GG") == true) { + timezone = "Europe/Guernsey"; + } else if (country.equals("GH") == true) { + timezone = "Africa/Accra"; + } else if (country.equals("GI") == true) { + timezone = "Europe/Gibraltar"; + } else if (country.equals("GL") == true) { + if (region.equals("01") == true) { + timezone = "America/Thule"; + } else if (region.equals("02") == true) { + timezone = "America/Scoresbysund"; + } else if (region.equals("03") == true) { + timezone = "America/Godthab"; + } + } else if (country.equals("GM") == true) { + timezone = "Africa/Banjul"; + } else if (country.equals("GN") == true) { + timezone = "Africa/Conakry"; + } else if (country.equals("GP") == true) { + timezone = "America/Guadeloupe"; + } else if (country.equals("GQ") == true) { + timezone = "Africa/Malabo"; + } else if (country.equals("GR") == true) { + timezone = "Europe/Athens"; + } else if (country.equals("GS") == true) { + timezone = "Atlantic/South_Georgia"; + } else if (country.equals("GT") == true) { + timezone = "America/Guatemala"; + } else if (country.equals("GU") == true) { + timezone = "Pacific/Guam"; + } else if (country.equals("GW") == true) { + timezone = "Africa/Bissau"; + } else if (country.equals("GY") == true) { + timezone = "America/Guyana"; + } else if (country.equals("HK") == true) { + timezone = "Asia/Hong_Kong"; + } else if (country.equals("HN") == true) { + timezone = "America/Tegucigalpa"; + } else if (country.equals("HR") == true) { + timezone = "Europe/Zagreb"; + } else if (country.equals("HT") == true) { + timezone = "America/Port-au-Prince"; + } else if (country.equals("HU") == true) { + timezone = "Europe/Budapest"; + } else if (country.equals("ID") == true) { + if (region.equals("01") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("02") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("03") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("04") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("05") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("07") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("08") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("10") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("11") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("12") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("13") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("14") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("15") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("17") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("18") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("21") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("22") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("24") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("26") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("28") == true) { + timezone = "Asia/Jayapura"; + } else if (region.equals("29") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("30") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("31") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("32") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("33") == true) { + timezone = "Asia/Jakarta"; + } else if (region.equals("34") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("35") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("36") == true) { + timezone = "Asia/Jayapura"; + } else if (region.equals("37") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("38") == true) { + timezone = "Asia/Makassar"; + } else if (region.equals("39") == true) { + timezone = "Asia/Jayapura"; + } else if (region.equals("40") == true) { + timezone = "Asia/Pontianak"; + } else if (region.equals("41") == true) { + timezone = "Asia/Makassar"; + } + } else if (country.equals("IE") == true) { + timezone = "Europe/Dublin"; + } else if (country.equals("IL") == true) { + timezone = "Asia/Jerusalem"; + } else if (country.equals("IM") == true) { + timezone = "Europe/Isle_of_Man"; + } else if (country.equals("IN") == true) { + timezone = "Asia/Kolkata"; + } else if (country.equals("IO") == true) { + timezone = "Indian/Chagos"; + } else if (country.equals("IQ") == true) { + timezone = "Asia/Baghdad"; + } else if (country.equals("IR") == true) { + timezone = "Asia/Tehran"; + } else if (country.equals("IS") == true) { + timezone = "Atlantic/Reykjavik"; + } else if (country.equals("IT") == true) { + timezone = "Europe/Rome"; + } else if (country.equals("JE") == true) { + timezone = "Europe/Jersey"; + } else if (country.equals("JM") == true) { + timezone = "America/Jamaica"; + } else if (country.equals("JO") == true) { + timezone = "Asia/Amman"; + } else if (country.equals("JP") == true) { + timezone = "Asia/Tokyo"; + } else if (country.equals("KE") == true) { + timezone = "Africa/Nairobi"; + } else if (country.equals("KG") == true) { + timezone = "Asia/Bishkek"; + } else if (country.equals("KH") == true) { + timezone = "Asia/Phnom_Penh"; + } else if (country.equals("KI") == true) { + timezone = "Pacific/Tarawa"; + } else if (country.equals("KM") == true) { + timezone = "Indian/Comoro"; + } else if (country.equals("KN") == true) { + timezone = "America/St_Kitts"; + } else if (country.equals("KP") == true) { + timezone = "Asia/Pyongyang"; + } else if (country.equals("KR") == true) { + timezone = "Asia/Seoul"; + } else if (country.equals("KW") == true) { + timezone = "Asia/Kuwait"; + } else if (country.equals("KY") == true) { + timezone = "America/Cayman"; + } else if (country.equals("KZ") == true) { + if (region.equals("01") == true) { + timezone = "Asia/Almaty"; + } else if (region.equals("02") == true) { + timezone = "Asia/Almaty"; + } else if (region.equals("03") == true) { + timezone = "Asia/Qyzylorda"; + } else if (region.equals("04") == true) { + timezone = "Asia/Aqtobe"; + } else if (region.equals("05") == true) { + timezone = "Asia/Qyzylorda"; + } else if (region.equals("06") == true) { + timezone = "Asia/Aqtau"; + } else if (region.equals("07") == true) { + timezone = "Asia/Oral"; + } else if (region.equals("08") == true) { + timezone = "Asia/Qyzylorda"; + } else if (region.equals("09") == true) { + timezone = "Asia/Aqtau"; + } else if (region.equals("10") == true) { + timezone = "Asia/Qyzylorda"; + } else if (region.equals("11") == true) { + timezone = "Asia/Almaty"; + } else if (region.equals("12") == true) { + timezone = "Asia/Almaty"; + } else if (region.equals("13") == true) { + timezone = "Asia/Aqtobe"; + } else if (region.equals("14") == true) { + timezone = "Asia/Qyzylorda"; + } else if (region.equals("15") == true) { + timezone = "Asia/Almaty"; + } else if (region.equals("16") == true) { + timezone = "Asia/Aqtobe"; + } else if (region.equals("17") == true) { + timezone = "Asia/Almaty"; + } + } else if (country.equals("LA") == true) { + timezone = "Asia/Vientiane"; + } else if (country.equals("LB") == true) { + timezone = "Asia/Beirut"; + } else if (country.equals("LC") == true) { + timezone = "America/St_Lucia"; + } else if (country.equals("LI") == true) { + timezone = "Europe/Vaduz"; + } else if (country.equals("LK") == true) { + timezone = "Asia/Colombo"; + } else if (country.equals("LR") == true) { + timezone = "Africa/Monrovia"; + } else if (country.equals("LS") == true) { + timezone = "Africa/Maseru"; + } else if (country.equals("LT") == true) { + timezone = "Europe/Vilnius"; + } else if (country.equals("LU") == true) { + timezone = "Europe/Luxembourg"; + } else if (country.equals("LV") == true) { + timezone = "Europe/Riga"; + } else if (country.equals("LY") == true) { + timezone = "Africa/Tripoli"; + } else if (country.equals("MA") == true) { + timezone = "Africa/Casablanca"; + } else if (country.equals("MC") == true) { + timezone = "Europe/Monaco"; + } else if (country.equals("MD") == true) { + timezone = "Europe/Chisinau"; + } else if (country.equals("ME") == true) { + timezone = "Europe/Podgorica"; + } else if (country.equals("MG") == true) { + timezone = "Indian/Antananarivo"; + } else if (country.equals("MH") == true) { + timezone = "Pacific/Kwajalein"; + } else if (country.equals("MK") == true) { + timezone = "Europe/Skopje"; + } else if (country.equals("ML") == true) { + timezone = "Africa/Bamako"; + } else if (country.equals("MM") == true) { + timezone = "Asia/Rangoon"; + } else if (country.equals("MN") == true) { + if (region.equals("06") == true) { + timezone = "Asia/Choibalsan"; + } else if (region.equals("11") == true) { + timezone = "Asia/Ulaanbaatar"; + } else if (region.equals("17") == true) { + timezone = "Asia/Choibalsan"; + } else if (region.equals("19") == true) { + timezone = "Asia/Hovd"; + } else if (region.equals("20") == true) { + timezone = "Asia/Ulaanbaatar"; + } else if (region.equals("21") == true) { + timezone = "Asia/Ulaanbaatar"; + } else if (region.equals("25") == true) { + timezone = "Asia/Ulaanbaatar"; + } + } else if (country.equals("MO") == true) { + timezone = "Asia/Macau"; + } else if (country.equals("MP") == true) { + timezone = "Pacific/Saipan"; + } else if (country.equals("MQ") == true) { + timezone = "America/Martinique"; + } else if (country.equals("MR") == true) { + timezone = "Africa/Nouakchott"; + } else if (country.equals("MS") == true) { + timezone = "America/Montserrat"; + } else if (country.equals("MT") == true) { + timezone = "Europe/Malta"; + } else if (country.equals("MU") == true) { + timezone = "Indian/Mauritius"; + } else if (country.equals("MV") == true) { + timezone = "Indian/Maldives"; + } else if (country.equals("MW") == true) { + timezone = "Africa/Blantyre"; + } else if (country.equals("MX") == true) { + if (region.equals("01") == true) { + timezone = "America/Bahia_Banderas"; + } else if (region.equals("02") == true) { + timezone = "America/Tijuana"; + } else if (region.equals("03") == true) { + timezone = "America/Mazatlan"; + } else if (region.equals("04") == true) { + timezone = "America/Merida"; + } else if (region.equals("05") == true) { + timezone = "America/Merida"; + } else if (region.equals("06") == true) { + timezone = "America/Chihuahua"; + } else if (region.equals("07") == true) { + timezone = "America/Monterrey"; + } else if (region.equals("08") == true) { + timezone = "America/Bahia_Banderas"; + } else if (region.equals("09") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("10") == true) { + timezone = "America/Mazatlan"; + } else if (region.equals("11") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("12") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("13") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("14") == true) { + timezone = "America/Bahia_Banderas"; + } else if (region.equals("15") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("16") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("17") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("18") == true) { + timezone = "America/Bahia_Banderas"; + } else if (region.equals("19") == true) { + timezone = "America/Monterrey"; + } else if (region.equals("20") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("21") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("22") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("23") == true) { + timezone = "America/Cancun"; + } else if (region.equals("24") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("25") == true) { + timezone = "America/Mazatlan"; + } else if (region.equals("26") == true) { + timezone = "America/Hermosillo"; + } else if (region.equals("27") == true) { + timezone = "America/Merida"; + } else if (region.equals("28") == true) { + timezone = "America/Matamoros"; + } else if (region.equals("29") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("30") == true) { + timezone = "America/Mexico_City"; + } else if (region.equals("31") == true) { + timezone = "America/Merida"; + } else if (region.equals("32") == true) { + timezone = "America/Bahia_Banderas"; + } + } else if (country.equals("MY") == true) { + if (region.equals("01") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("02") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("03") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("04") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("05") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("06") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("07") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("08") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("09") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("11") == true) { + timezone = "Asia/Kuching"; + } else if (region.equals("12") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("13") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("14") == true) { + timezone = "Asia/Kuala_Lumpur"; + } else if (region.equals("15") == true) { + timezone = "Asia/Kuching"; + } else if (region.equals("16") == true) { + timezone = "Asia/Kuching"; + } + } else if (country.equals("MZ") == true) { + timezone = "Africa/Maputo"; + } else if (country.equals("NA") == true) { + timezone = "Africa/Windhoek"; + } else if (country.equals("NC") == true) { + timezone = "Pacific/Noumea"; + } else if (country.equals("NE") == true) { + timezone = "Africa/Niamey"; + } else if (country.equals("NF") == true) { + timezone = "Pacific/Norfolk"; + } else if (country.equals("NG") == true) { + timezone = "Africa/Lagos"; + } else if (country.equals("NI") == true) { + timezone = "America/Managua"; + } else if (country.equals("NL") == true) { + timezone = "Europe/Amsterdam"; + } else if (country.equals("NO") == true) { + timezone = "Europe/Oslo"; + } else if (country.equals("NP") == true) { + timezone = "Asia/Kathmandu"; + } else if (country.equals("NR") == true) { + timezone = "Pacific/Nauru"; + } else if (country.equals("NU") == true) { + timezone = "Pacific/Niue"; + } else if (country.equals("NZ") == true) { + if (region.equals("E7") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("E8") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("E9") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F1") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F2") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F3") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F4") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F5") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F6") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F7") == true) { + timezone = "Pacific/Chatham"; + } else if (region.equals("F8") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("F9") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("G1") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("G2") == true) { + timezone = "Pacific/Auckland"; + } else if (region.equals("G3") == true) { + timezone = "Pacific/Auckland"; + } + } else if (country.equals("OM") == true) { + timezone = "Asia/Muscat"; + } else if (country.equals("PA") == true) { + timezone = "America/Panama"; + } else if (country.equals("PE") == true) { + timezone = "America/Lima"; + } else if (country.equals("PF") == true) { + timezone = "Pacific/Marquesas"; + } else if (country.equals("PG") == true) { + timezone = "Pacific/Port_Moresby"; + } else if (country.equals("PH") == true) { + timezone = "Asia/Manila"; + } else if (country.equals("PK") == true) { + timezone = "Asia/Karachi"; + } else if (country.equals("PL") == true) { + timezone = "Europe/Warsaw"; + } else if (country.equals("PM") == true) { + timezone = "America/Miquelon"; + } else if (country.equals("PR") == true) { + timezone = "America/Puerto_Rico"; + } else if (country.equals("PS") == true) { + timezone = "Asia/Gaza"; + } else if (country.equals("PT") == true) { + if (region.equals("02") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("03") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("04") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("05") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("06") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("07") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("08") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("09") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("10") == true) { + timezone = "Atlantic/Madeira"; + } else if (region.equals("11") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("13") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("14") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("16") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("17") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("18") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("19") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("20") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("21") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("22") == true) { + timezone = "Europe/Lisbon"; + } else if (region.equals("23") == true) { + timezone = "Atlantic/Azores"; + } + } else if (country.equals("PW") == true) { + timezone = "Pacific/Palau"; + } else if (country.equals("PY") == true) { + timezone = "America/Asuncion"; + } else if (country.equals("QA") == true) { + timezone = "Asia/Qatar"; + } else if (country.equals("RE") == true) { + timezone = "Indian/Reunion"; + } else if (country.equals("RO") == true) { + timezone = "Europe/Bucharest"; + } else if (country.equals("RS") == true) { + timezone = "Europe/Belgrade"; + } else if (country.equals("RU") == true) { + if (region.equals("01") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("02") == true) { + timezone = "Asia/Irkutsk"; + } else if (region.equals("03") == true) { + timezone = "Asia/Novokuznetsk"; + } else if (region.equals("04") == true) { + timezone = "Asia/Novosibirsk"; + } else if (region.equals("05") == true) { + timezone = "Asia/Vladivostok"; + } else if (region.equals("06") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("07") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("08") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("09") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("10") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("11") == true) { + timezone = "Asia/Irkutsk"; + } else if (region.equals("12") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("13") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("14") == true) { + timezone = "Asia/Irkutsk"; + } else if (region.equals("15") == true) { + timezone = "Asia/Anadyr"; + } else if (region.equals("16") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("17") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("18") == true) { + timezone = "Asia/Krasnoyarsk"; + } else if (region.equals("20") == true) { + timezone = "Asia/Irkutsk"; + } else if (region.equals("21") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("22") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("23") == true) { + timezone = "Europe/Kaliningrad"; + } else if (region.equals("24") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("25") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("26") == true) { + timezone = "Asia/Kamchatka"; + } else if (region.equals("27") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("28") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("29") == true) { + timezone = "Asia/Novokuznetsk"; + } else if (region.equals("30") == true) { + timezone = "Asia/Sakhalin"; + } else if (region.equals("31") == true) { + timezone = "Asia/Krasnoyarsk"; + } else if (region.equals("32") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("33") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("34") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("36") == true) { + timezone = "Asia/Anadyr"; + } else if (region.equals("37") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("38") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("39") == true) { + timezone = "Asia/Krasnoyarsk"; + } else if (region.equals("40") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("41") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("42") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("43") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("44") == true) { + timezone = "Asia/Magadan"; + } else if (region.equals("45") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("46") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("47") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("48") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("49") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("50") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("51") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("52") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("53") == true) { + timezone = "Asia/Novosibirsk"; + } else if (region.equals("54") == true) { + timezone = "Asia/Omsk"; + } else if (region.equals("55") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("56") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("57") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("58") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("59") == true) { + timezone = "Asia/Vladivostok"; + } else if (region.equals("60") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("61") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("62") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("63") == true) { + timezone = "Asia/Yakutsk"; + } else if (region.equals("64") == true) { + timezone = "Asia/Sakhalin"; + } else if (region.equals("65") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("66") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("67") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("68") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("69") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("70") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("71") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("72") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("73") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("74") == true) { + timezone = "Asia/Yakutsk"; + } else if (region.equals("75") == true) { + timezone = "Asia/Novosibirsk"; + } else if (region.equals("76") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("77") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("78") == true) { + timezone = "Asia/Omsk"; + } else if (region.equals("79") == true) { + timezone = "Asia/Irkutsk"; + } else if (region.equals("80") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("81") == true) { + timezone = "Europe/Samara"; + } else if (region.equals("83") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("84") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("85") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("86") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("87") == true) { + timezone = "Asia/Omsk"; + } else if (region.equals("88") == true) { + timezone = "Europe/Moscow"; + } else if (region.equals("89") == true) { + timezone = "Asia/Vladivostok"; + } else if (region.equals("90") == true) { + timezone = "Asia/Yekaterinburg"; + } else if (region.equals("91") == true) { + timezone = "Asia/Krasnoyarsk"; + } else if (region.equals("92") == true) { + timezone = "Asia/Anadyr"; + } else if (region.equals("93") == true) { + timezone = "Asia/Irkutsk"; + } else if (region.equals("CI") == true) { + timezone = "Europe/Volgograd"; + } else if (region.equals("JA") == true) { + timezone = "Asia/Sakhalin"; + } + } else if (country.equals("RW") == true) { + timezone = "Africa/Kigali"; + } else if (country.equals("SA") == true) { + timezone = "Asia/Riyadh"; + } else if (country.equals("SB") == true) { + timezone = "Pacific/Guadalcanal"; + } else if (country.equals("SC") == true) { + timezone = "Indian/Mahe"; + } else if (country.equals("SD") == true) { + timezone = "Africa/Khartoum"; + } else if (country.equals("SE") == true) { + timezone = "Europe/Stockholm"; + } else if (country.equals("SG") == true) { + timezone = "Asia/Singapore"; + } else if (country.equals("SH") == true) { + timezone = "Atlantic/St_Helena"; + } else if (country.equals("SI") == true) { + timezone = "Europe/Ljubljana"; + } else if (country.equals("SJ") == true) { + timezone = "Arctic/Longyearbyen"; + } else if (country.equals("SK") == true) { + timezone = "Europe/Bratislava"; + } else if (country.equals("SL") == true) { + timezone = "Africa/Freetown"; + } else if (country.equals("SM") == true) { + timezone = "Europe/San_Marino"; + } else if (country.equals("SN") == true) { + timezone = "Africa/Dakar"; + } else if (country.equals("SO") == true) { + timezone = "Africa/Mogadishu"; + } else if (country.equals("SR") == true) { + timezone = "America/Paramaribo"; + } else if (country.equals("ST") == true) { + timezone = "Africa/Sao_Tome"; + } else if (country.equals("SV") == true) { + timezone = "America/El_Salvador"; + } else if (country.equals("SY") == true) { + timezone = "Asia/Damascus"; + } else if (country.equals("SZ") == true) { + timezone = "Africa/Mbabane"; + } else if (country.equals("TC") == true) { + timezone = "America/Grand_Turk"; + } else if (country.equals("TD") == true) { + timezone = "Africa/Ndjamena"; + } else if (country.equals("TF") == true) { + timezone = "Indian/Kerguelen"; + } else if (country.equals("TG") == true) { + timezone = "Africa/Lome"; + } else if (country.equals("TH") == true) { + timezone = "Asia/Bangkok"; + } else if (country.equals("TJ") == true) { + timezone = "Asia/Dushanbe"; + } else if (country.equals("TK") == true) { + timezone = "Pacific/Fakaofo"; + } else if (country.equals("TL") == true) { + timezone = "Asia/Dili"; + } else if (country.equals("TM") == true) { + timezone = "Asia/Ashgabat"; + } else if (country.equals("TN") == true) { + timezone = "Africa/Tunis"; + } else if (country.equals("TO") == true) { + timezone = "Pacific/Tongatapu"; + } else if (country.equals("TR") == true) { + timezone = "Europe/Istanbul"; + } else if (country.equals("TT") == true) { + timezone = "America/Port_of_Spain"; + } else if (country.equals("TV") == true) { + timezone = "Pacific/Funafuti"; + } else if (country.equals("TW") == true) { + timezone = "Asia/Taipei"; + } else if (country.equals("TZ") == true) { + timezone = "Africa/Dar_es_Salaam"; + } else if (country.equals("UA") == true) { + if (region.equals("01") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("02") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("03") == true) { + timezone = "Europe/Uzhgorod"; + } else if (region.equals("04") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("05") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("06") == true) { + timezone = "Europe/Uzhgorod"; + } else if (region.equals("07") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("08") == true) { + timezone = "Europe/Simferopol"; + } else if (region.equals("09") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("10") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("11") == true) { + timezone = "Europe/Simferopol"; + } else if (region.equals("12") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("13") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("14") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("15") == true) { + timezone = "Europe/Uzhgorod"; + } else if (region.equals("16") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("17") == true) { + timezone = "Europe/Simferopol"; + } else if (region.equals("18") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("19") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("20") == true) { + timezone = "Europe/Simferopol"; + } else if (region.equals("21") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("22") == true) { + timezone = "Europe/Uzhgorod"; + } else if (region.equals("23") == true) { + timezone = "Europe/Kiev"; + } else if (region.equals("24") == true) { + timezone = "Europe/Uzhgorod"; + } else if (region.equals("25") == true) { + timezone = "Europe/Uzhgorod"; + } else if (region.equals("26") == true) { + timezone = "Europe/Zaporozhye"; + } else if (region.equals("27") == true) { + timezone = "Europe/Kiev"; + } + } else if (country.equals("UG") == true) { + timezone = "Africa/Kampala"; + } else if (country.equals("UM") == true) { + timezone = "Pacific/Wake"; + } else if (country.equals("US") == true) { + if (region.equals("AK") == true) { + timezone = "America/Anchorage"; + } else if (region.equals("AL") == true) { + timezone = "America/Chicago"; + } else if (region.equals("AR") == true) { + timezone = "America/Chicago"; + } else if (region.equals("AZ") == true) { + timezone = "America/Phoenix"; + } else if (region.equals("CA") == true) { + timezone = "America/Los_Angeles"; + } else if (region.equals("CO") == true) { + timezone = "America/Denver"; + } else if (region.equals("CT") == true) { + timezone = "America/New_York"; + } else if (region.equals("DC") == true) { + timezone = "America/New_York"; + } else if (region.equals("DE") == true) { + timezone = "America/New_York"; + } else if (region.equals("FL") == true) { + timezone = "America/New_York"; + } else if (region.equals("GA") == true) { + timezone = "America/New_York"; + } else if (region.equals("HI") == true) { + timezone = "Pacific/Honolulu"; + } else if (region.equals("IA") == true) { + timezone = "America/Chicago"; + } else if (region.equals("ID") == true) { + timezone = "America/Denver"; + } else if (region.equals("IL") == true) { + timezone = "America/Chicago"; + } else if (region.equals("IN") == true) { + timezone = "America/Indianapolis"; + } else if (region.equals("KS") == true) { + timezone = "America/Chicago"; + } else if (region.equals("KY") == true) { + timezone = "America/New_York"; + } else if (region.equals("LA") == true) { + timezone = "America/Chicago"; + } else if (region.equals("MA") == true) { + timezone = "America/New_York"; + } else if (region.equals("MD") == true) { + timezone = "America/New_York"; + } else if (region.equals("ME") == true) { + timezone = "America/New_York"; + } else if (region.equals("MI") == true) { + timezone = "America/New_York"; + } else if (region.equals("MN") == true) { + timezone = "America/Chicago"; + } else if (region.equals("MO") == true) { + timezone = "America/Chicago"; + } else if (region.equals("MS") == true) { + timezone = "America/Chicago"; + } else if (region.equals("MT") == true) { + timezone = "America/Denver"; + } else if (region.equals("NC") == true) { + timezone = "America/New_York"; + } else if (region.equals("ND") == true) { + timezone = "America/Chicago"; + } else if (region.equals("NE") == true) { + timezone = "America/Chicago"; + } else if (region.equals("NH") == true) { + timezone = "America/New_York"; + } else if (region.equals("NJ") == true) { + timezone = "America/New_York"; + } else if (region.equals("NM") == true) { + timezone = "America/Denver"; + } else if (region.equals("NV") == true) { + timezone = "America/Los_Angeles"; + } else if (region.equals("NY") == true) { + timezone = "America/New_York"; + } else if (region.equals("OH") == true) { + timezone = "America/New_York"; + } else if (region.equals("OK") == true) { + timezone = "America/Chicago"; + } else if (region.equals("OR") == true) { + timezone = "America/Los_Angeles"; + } else if (region.equals("PA") == true) { + timezone = "America/New_York"; + } else if (region.equals("RI") == true) { + timezone = "America/New_York"; + } else if (region.equals("SC") == true) { + timezone = "America/New_York"; + } else if (region.equals("SD") == true) { + timezone = "America/Chicago"; + } else if (region.equals("TN") == true) { + timezone = "America/Chicago"; + } else if (region.equals("TX") == true) { + timezone = "America/Chicago"; + } else if (region.equals("UT") == true) { + timezone = "America/Denver"; + } else if (region.equals("VA") == true) { + timezone = "America/New_York"; + } else if (region.equals("VT") == true) { + timezone = "America/New_York"; + } else if (region.equals("WA") == true) { + timezone = "America/Los_Angeles"; + } else if (region.equals("WI") == true) { + timezone = "America/Chicago"; + } else if (region.equals("WV") == true) { + timezone = "America/New_York"; + } else if (region.equals("WY") == true) { + timezone = "America/Denver"; + } + } else if (country.equals("UY") == true) { + timezone = "America/Montevideo"; + } else if (country.equals("UZ") == true) { + if (region.equals("01") == true) { + timezone = "Asia/Tashkent"; + } else if (region.equals("02") == true) { + timezone = "Asia/Samarkand"; + } else if (region.equals("03") == true) { + timezone = "Asia/Tashkent"; + } else if (region.equals("05") == true) { + timezone = "Asia/Samarkand"; + } else if (region.equals("06") == true) { + timezone = "Asia/Tashkent"; + } else if (region.equals("07") == true) { + timezone = "Asia/Samarkand"; + } else if (region.equals("08") == true) { + timezone = "Asia/Samarkand"; + } else if (region.equals("10") == true) { + timezone = "Asia/Samarkand"; + } else if (region.equals("12") == true) { + timezone = "Asia/Samarkand"; + } else if (region.equals("13") == true) { + timezone = "Asia/Tashkent"; + } else if (region.equals("14") == true) { + timezone = "Asia/Tashkent"; + } + } else if (country.equals("VA") == true) { + timezone = "Europe/Vatican"; + } else if (country.equals("VC") == true) { + timezone = "America/St_Vincent"; + } else if (country.equals("VE") == true) { + timezone = "America/Caracas"; + } else if (country.equals("VG") == true) { + timezone = "America/Tortola"; + } else if (country.equals("VI") == true) { + timezone = "America/St_Thomas"; + } else if (country.equals("VN") == true) { + timezone = "Asia/Ho_Chi_Minh"; + } else if (country.equals("VU") == true) { + timezone = "Pacific/Efate"; + } else if (country.equals("WF") == true) { + timezone = "Pacific/Wallis"; + } else if (country.equals("WS") == true) { + timezone = "Pacific/Apia"; + } else if (country.equals("YE") == true) { + timezone = "Asia/Aden"; + } else if (country.equals("YT") == true) { + timezone = "Indian/Mayotte"; + } else if (country.equals("ZA") == true) { + timezone = "Africa/Johannesburg"; + } else if (country.equals("ZM") == true) { + timezone = "Africa/Lusaka"; + } else if (country.equals("ZW") == true) { + timezone = "Africa/Harare"; + } else if (country.equals("SX") == true) { + timezone = "America/Curacao"; + } else if (country.equals("BQ") == true) { + timezone = "America/Curacao"; + } else if (country.equals("CW") == true) { + timezone = "America/Curacao"; + } else if (country.equals("BL") == true) { + timezone = "America/St_Barthelemy"; + } else if (country.equals("PN") == true) { + timezone = "Pacific/Pitcairn"; + } + return timezone; + } +} diff --git a/src/somebody/is/madbro/AntiBotCore.java b/src/somebody/is/madbro/AntiBotCore.java index 1ca225b..08637e4 100644 --- a/src/somebody/is/madbro/AntiBotCore.java +++ b/src/somebody/is/madbro/AntiBotCore.java @@ -5,6 +5,7 @@ import java.util.Date; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; @@ -12,6 +13,8 @@ import somebody.is.madbro.datatrack.DataTrackCore; import somebody.is.madbro.handlers.HandlerCore; import somebody.is.madbro.listeners.BotListener; +import somebody.is.madbro.listeners.ChatListener; +import somebody.is.madbro.listeners.CountryListener; import somebody.is.madbro.settings.Settings; import somebody.is.madbro.settings.SettingsCore; import somebody.is.madbro.toolbox.UtilityCore; @@ -20,6 +23,8 @@ public class AntiBotCore extends JavaPlugin { // listeners private BotListener botlistener = null; + private ChatListener chatlistener = null; + private CountryListener countrylistener = null; // utilities private UtilityCore utilitycore = null; @@ -48,18 +53,19 @@ public void onEnable() { dataFolder.mkdir(); } - settings = new SettingsCore(this); - settings.saveSettings(dataFolder); - settings.loadSettings(dataFolder); - + // listeners botlistener = new BotListener(this); + chatlistener = new ChatListener(this); + countrylistener = new CountryListener(this); + // cores + settings = new SettingsCore(this); datatrackcore = new DataTrackCore(this); - handlercore = new HandlerCore(this, datatrackcore); - utilitycore = new UtilityCore(this); + settings.saveSettings(dataFolder); + settings.loadSettings(dataFolder); try { Metrics metrics = new Metrics(this); @@ -87,8 +93,17 @@ public int getValue() { System.out.println("Metrics haz failed."); } + // load geoip if our memogram tells us to. + if (Settings.geoIP) { + utilitycore.getGeoIP().initialize(); + } + // register listeners getServer().getPluginManager().registerEvents(botlistener, this); + getServer().getPluginManager().registerEvents(chatlistener, this); + getServer().getPluginManager().registerEvents(countrylistener, this); + + // all finished. PluginDescriptionFile pdfFile = getDescription(); version = pdfFile.getVersion(); System.out.println(pdfFile.getName() + " version " + getVersion() @@ -98,8 +113,13 @@ public int getValue() { public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { - return getHandler().getCommands().handle(sender, cmd, commandLabel, + if(sender instanceof Player) { + return getHandler().getCommands().handle(sender, cmd, commandLabel, args); + } else { + return getHandler().getCommands().handle(sender, cmd, commandLabel, + args); + } } public void debug(String msg, CommandSender sender) { @@ -132,10 +152,6 @@ public SettingsCore getSettings() { return settings; } - public File getFolder() { - return dataFolder; - } - public long getInstalldate() { return installdate; } diff --git a/src/somebody/is/madbro/datatrack/BotDataTrack.java b/src/somebody/is/madbro/datatrack/BotDataTrack.java index 1381973..8aaa3ea 100644 --- a/src/somebody/is/madbro/datatrack/BotDataTrack.java +++ b/src/somebody/is/madbro/datatrack/BotDataTrack.java @@ -20,10 +20,8 @@ public BotDataTrack(AntiBotCore instance) { public ArrayList autokick = new ArrayList(); public ArrayList autoipkick = new ArrayList(); - public ArrayList spammyPlayers = new ArrayList(); public HashMap ipList = new HashMap(); public List< String > connected = new CopyOnWriteArrayList< String >(); - public HashMap trackplayers = new HashMap(); public long time; public long lasttime; public long botattempt; @@ -76,19 +74,21 @@ public void addConnected(String playerName) { } } catch (Exception e) { e.printStackTrace(); - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("Adding new player failed: " + e.getMessage()); } } - - public boolean checkConnection(String usr) { - if (trackplayers.containsKey(usr)) { - PlayerData mp = (PlayerData) trackplayers.get(usr); - if (mp.connectedForLonger()) { - return true; + + public void removeConnected(String playerName) { + try { + if (connected.contains(playerName)) { + connected.remove(playerName); } + } catch (Exception e) { + e.printStackTrace(); + botclass.getUtility().getDebug() + .debug("Removing player failed: " + e.getMessage()); } - return false; } } diff --git a/src/somebody/is/madbro/datatrack/ChatDataTrack.java b/src/somebody/is/madbro/datatrack/ChatDataTrack.java new file mode 100644 index 0000000..c907200 --- /dev/null +++ b/src/somebody/is/madbro/datatrack/ChatDataTrack.java @@ -0,0 +1,29 @@ +package somebody.is.madbro.datatrack; + +import java.util.ArrayList; +import java.util.HashMap; + +import somebody.is.madbro.AntiBotCore; + +public class ChatDataTrack { + + public AntiBotCore botclass = null; + + public ChatDataTrack(AntiBotCore instance) { + botclass = instance; + } + + public ArrayList spammyPlayers = new ArrayList(); + public HashMap trackplayers = new HashMap(); + + public boolean checkConnection(String usr) { + if (trackplayers.containsKey(usr)) { + PlayerData mp = (PlayerData) trackplayers.get(usr); + if (mp.connectedForLonger()) { + return true; + } + } + return false; + } + +} diff --git a/src/somebody/is/madbro/datatrack/CountryDataTrack.java b/src/somebody/is/madbro/datatrack/CountryDataTrack.java new file mode 100644 index 0000000..1be66b2 --- /dev/null +++ b/src/somebody/is/madbro/datatrack/CountryDataTrack.java @@ -0,0 +1,18 @@ +package somebody.is.madbro.datatrack; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +import somebody.is.madbro.AntiBotCore; + +public class CountryDataTrack { + + public AntiBotCore botclass = null; + + public CountryDataTrack(AntiBotCore instance) { + botclass = instance; + } + + public List countryBans = new CopyOnWriteArrayList< String >(); + +} diff --git a/src/somebody/is/madbro/datatrack/DataTrackCore.java b/src/somebody/is/madbro/datatrack/DataTrackCore.java index 901945a..e3b9d42 100644 --- a/src/somebody/is/madbro/datatrack/DataTrackCore.java +++ b/src/somebody/is/madbro/datatrack/DataTrackCore.java @@ -8,11 +8,16 @@ public class DataTrackCore { public AntiBotCore antibot = null; + // trackers public BotDataTrack botdata = null; + public ChatDataTrack chatdata = null; + public CountryDataTrack countrydata = null; public DataTrackCore(AntiBotCore instance) { antibot = instance; botdata = new BotDataTrack(instance); + chatdata = new ChatDataTrack(instance); + countrydata = new CountryDataTrack(instance); } public PlayerData getPlayer(String username, ChatSpamHandler thi) { @@ -26,5 +31,13 @@ public PlayerData getPlayer(String username, BotHandler thi) { public BotDataTrack getBotTracker() { return botdata; } + + public ChatDataTrack getChatTracker() { + return chatdata; + } + + public CountryDataTrack getCountryTracker() { + return countrydata; + } } diff --git a/src/somebody/is/madbro/datatrack/PlayerData.java b/src/somebody/is/madbro/datatrack/PlayerData.java index 056b66d..cf4eea1 100644 --- a/src/somebody/is/madbro/datatrack/PlayerData.java +++ b/src/somebody/is/madbro/datatrack/PlayerData.java @@ -39,7 +39,7 @@ public boolean connectedForLonger() { public void moved() { hasMoved = true; antibot.getUtility() - .getDebugUtility() + .getDebug() .debug("Player " + username + " has moved! Exempt from false antibot kicks!"); } diff --git a/src/somebody/is/madbro/handlers/BotHandler.java b/src/somebody/is/madbro/handlers/BotHandler.java index 46702e4..66093f7 100644 --- a/src/somebody/is/madbro/handlers/BotHandler.java +++ b/src/somebody/is/madbro/handlers/BotHandler.java @@ -44,6 +44,11 @@ public void onPlayerQuit(PlayerQuitEvent event) { if (botclass.getHandler().getPermissions().hasPerms(event.getPlayer())) { return; } else { + // TODO: organize tracker removals/unregisterers. + botclass.getDataTrack().getBotTracker() + .removeConnected(event.getPlayer().getName()); + botclass.getDataTrack().getChatTracker().trackplayers.remove(event + .getPlayer().getName()); if (data.getBotTracker().botcts < 1) { return; } else { @@ -58,14 +63,14 @@ public void onPlayerMove(PlayerMoveEvent event) { } try { String pl = event.getPlayer().getName(); - if (data.getBotTracker().trackplayers.containsKey(pl)) { - if (!(data.getBotTracker().trackplayers.get(pl)).hasMoved) { - (data.getBotTracker().trackplayers.get(pl)).moved(); + if (data.getChatTracker().trackplayers.containsKey(pl)) { + if (!(data.getChatTracker().trackplayers.get(pl)).hasMoved) { + (data.getChatTracker().trackplayers.get(pl)).moved(); } } } catch (Exception e) { botclass.getUtility() - .getDebugUtility() + .getDebug() .debug("Player " + event.getPlayer().getName() + " did not get updated successfully for move."); } @@ -76,13 +81,13 @@ public void onPlayerJoin(PlayerJoinEvent event) { return; } try { - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("User is trying to connect.."); data.getBotTracker().time = System.currentTimeMillis(); if (botclass.getHandler().getPermissions() .hasPerms(event.getPlayer())) { - botclass.getUtility().getDebugUtility().debug("Whitelisted."); + botclass.getUtility().getDebug().debug("Whitelisted."); if (data.getBotTracker().reanibo && botclass .getHandler() @@ -122,16 +127,16 @@ public void onPlayerJoin(PlayerJoinEvent event) { event.getPlayer(), event.getPlayer().getAddress().toString() .split(":")[0]); - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("Added user to tracking"); data.getBotTracker().addConnected(event.getPlayer().getName()); - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("Added user to connected"); - data.getBotTracker().trackplayers.put( + data.getChatTracker().trackplayers.put( event.getPlayer().getName(), botclass.getDataTrack().getPlayer( event.getPlayer().getName(), this)); - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("Added user to trackplayer"); } @@ -143,7 +148,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { // bug workaround if (Settings.interval < 1) { - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("Bug detected! Fixing bug."); // lets try setting this back to default Settings.intervals, if // not, @@ -160,25 +165,23 @@ public void onPlayerJoin(PlayerJoinEvent event) { long math = data.getBotTracker().time - data.getBotTracker().lasttime; int cb = Settings.interval - + botclass.getUtility().getBotUtility() - .getRandomIntInvasion(); - botclass.getUtility().getDebugUtility().debug("Checking....0"); - botclass.getUtility().getDebugUtility().debug("Math: " + math); - botclass.getUtility().getDebugUtility() + + botclass.getUtility().getBot().getRandomIntInvasion(); + botclass.getUtility().getDebug().debug("Checking....0"); + botclass.getUtility().getDebug().debug("Math: " + math); + botclass.getUtility().getDebug() .debug("Time: " + data.getBotTracker().time); - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug() .debug("Current Interval: " + Settings.interval); - botclass.getUtility().getDebugUtility() - .debug("Random Interval: " + cb); - botclass.getUtility().getDebugUtility() + botclass.getUtility().getDebug().debug("Random Interval: " + cb); + botclass.getUtility().getDebug() .debug("Lasttime: " + data.getBotTracker().lasttime); botclass.getUtility() - .getDebugUtility() + .getDebug() .debug("BotCts: " + data.getBotTracker().botcts + " Accs: " + Settings.accounts); if (data.getBotTracker().botcts > Settings.accounts && math < cb) { - botclass.getUtility().getDebugUtility().debug("Hit #1!"); + botclass.getUtility().getDebug().debug("Hit #1!"); // Incoming invasion. if (!data.getBotTracker().reanibo) { if (Settings.whiteList) { @@ -197,10 +200,9 @@ public void onPlayerJoin(PlayerJoinEvent event) { + "\247chas detected minecraft spam!"); } } - botclass.getUtility().getDebugUtility() - .debug("Tripswitched!"); - botclass.getUtility().getBotUtility().kickConnected(); - botclass.getUtility().getBotUtility().flush(); + botclass.getUtility().getDebug().debug("Tripswitched!"); + botclass.getUtility().getBot().kickConnected(); + botclass.getUtility().getBot().flush(); } data.getBotTracker().botattempt = System.currentTimeMillis(); data.getBotTracker().botcts += 1; @@ -208,17 +210,17 @@ public void onPlayerJoin(PlayerJoinEvent event) { event.setJoinMessage(""); } else if (data.getBotTracker().botattempt < Settings.interval && data.getBotTracker().reanibo) { - botclass.getUtility().getDebugUtility().debug("Hit #2"); + botclass.getUtility().getDebug().debug("Hit #2"); // Attempting to connect. data.getBotTracker().botattempt = System.currentTimeMillis(); data.getBotTracker().botcts += 1; event.getPlayer().kickPlayer(Settings.connectMsg); event.setJoinMessage(""); } else { - botclass.getUtility().getDebugUtility().debug("Hit #3"); + botclass.getUtility().getDebug().debug("Hit #3"); if (data.getBotTracker().reanibo) { - botclass.getUtility().getBotUtility().flush(); + botclass.getUtility().getBot().flush(); } // No invasion. data.getBotTracker().lasttime = System.currentTimeMillis(); diff --git a/src/somebody/is/madbro/handlers/ChatSpamHandler.java b/src/somebody/is/madbro/handlers/ChatSpamHandler.java index 3aa65e7..27585fc 100644 --- a/src/somebody/is/madbro/handlers/ChatSpamHandler.java +++ b/src/somebody/is/madbro/handlers/ChatSpamHandler.java @@ -26,7 +26,7 @@ public void handle(Player player, PlayerChatEvent event) { String pN = player.getName(); - if (antibot.getHandler().getPermissions().hasPerms(player) + if (antibot.getHandler().getPermissions().hasPermission("AntiBot.chatspam", player) || !Settings.enableAntiSpam) { return; } @@ -45,19 +45,19 @@ public void handle(Player player, PlayerChatEvent event) { return; } - if (antibot.getDataTrack().getBotTracker().spammyPlayers + if (antibot.getDataTrack().getChatTracker().spammyPlayers .contains(pN)) { event.setCancelled(true); return; } - if (!antibot.getDataTrack().getBotTracker().trackplayers + if (!antibot.getDataTrack().getChatTracker().trackplayers .containsKey(pN)) { - antibot.getDataTrack().getBotTracker().trackplayers.put(pN, + antibot.getDataTrack().getChatTracker().trackplayers.put(pN, antibot.getDataTrack().getPlayer(pN, this)); } else { try { - PlayerData pc = antibot.getDataTrack().getBotTracker().trackplayers + PlayerData pc = antibot.getDataTrack().getChatTracker().trackplayers .get(pN); long math = System.currentTimeMillis() - pc.lastChatMsg; if (pc.amoumt > Settings.spamam && math < Settings.spamtime) { @@ -68,14 +68,14 @@ public void handle(Player player, PlayerChatEvent event) { + "\247chas detected chat spam!"); } if (!Settings.chatMute) { - antibot.getDataTrack().getBotTracker().trackplayers + antibot.getDataTrack().getChatTracker().trackplayers .remove(pN); player.kickPlayer(Settings.kickMsg); event.setCancelled(true); } else { - antibot.getDataTrack().getBotTracker().trackplayers + antibot.getDataTrack().getChatTracker().trackplayers .remove(pN); - antibot.getDataTrack().getBotTracker().spammyPlayers + antibot.getDataTrack().getChatTracker().spammyPlayers .add(pN); event.setCancelled(true); } diff --git a/src/somebody/is/madbro/handlers/CommandHandler.java b/src/somebody/is/madbro/handlers/CommandHandler.java index 2102165..a3c3116 100644 --- a/src/somebody/is/madbro/handlers/CommandHandler.java +++ b/src/somebody/is/madbro/handlers/CommandHandler.java @@ -23,7 +23,7 @@ public boolean handle(CommandSender sender, Command cmd, try { player = (Player) sender; } catch (Exception e) { - return true; + // console! } if (args.length < 1) { @@ -113,9 +113,8 @@ public boolean handle(CommandSender sender, Command cmd, "\247f[\247bAntiBot\247f] \247cOh no! A minecraft bot invasion has began. Connection Throttling: \247aEnabled"); } antibot.getDataTrack().getBotTracker().reanibo = true; - antibot.getUtility().getDebugUtility() - .debug("Tripswitched!"); - antibot.getUtility().getBotUtility().kickConnected(); + antibot.getUtility().getDebug().debug("Tripswitched!"); + antibot.getUtility().getBot().kickConnected(); } antibot.getDataTrack().getBotTracker().botattempt = System .currentTimeMillis(); @@ -143,7 +142,7 @@ public boolean handle(CommandSender sender, Command cmd, if (args[0].compareToIgnoreCase("flush") == 0) { if (antibot.getHandler().getPermissions() .ownPermission("AntiBot.admin.flush", player, 2)) { - if (antibot.getUtility().getBotUtility().flush2()) { + if (antibot.getUtility().getBot().flush2()) { sender.sendMessage(Settings.prefix + ChatColor.GREEN + "System flushed successfully!"); } else { @@ -163,7 +162,7 @@ public boolean handle(CommandSender sender, Command cmd, sender.sendMessage(Settings.prefix + "The system is already enabled!"); } else { - if (antibot.getUtility().getBotUtility().toggle(true)) { + if (antibot.getUtility().getBot().toggle(true)) { sender.sendMessage(Settings.prefix + ChatColor.GREEN + "System has been enabled!"); } else { @@ -185,7 +184,7 @@ public boolean handle(CommandSender sender, Command cmd, sender.sendMessage(Settings.prefix + "The system is already disabled!"); } else { - if (antibot.getUtility().getBotUtility().toggle(false)) { + if (antibot.getUtility().getBot().toggle(false)) { sender.sendMessage(Settings.prefix + ChatColor.RED + "System has been disabled!"); } else { diff --git a/src/somebody/is/madbro/handlers/CountryBanHandler.java b/src/somebody/is/madbro/handlers/CountryBanHandler.java new file mode 100644 index 0000000..6714c91 --- /dev/null +++ b/src/somebody/is/madbro/handlers/CountryBanHandler.java @@ -0,0 +1,44 @@ +package somebody.is.madbro.handlers; + +import org.bukkit.event.player.PlayerJoinEvent; + +import somebody.is.madbro.AntiBotCore; +import somebody.is.madbro.settings.Settings; + +public class CountryBanHandler { + + public AntiBotCore antibot = null; + + public CountryBanHandler(AntiBotCore instance) { + antibot = instance; + } + + public void handle(PlayerJoinEvent event) { + String IP = event.getPlayer().getAddress().toString().split(":")[0].replace("/", ""); + // check against countrybans! + antibot.getUtility().getDebug().debug("Countrybans size " + antibot.getDataTrack().getCountryTracker().countryBans.size()); + antibot.getUtility().getDebug().debug("Checking IP " + IP); + String country = antibot.getUtility().getGeoIP().lookupIp(IP); + antibot.getUtility().getDebug().debug("Country " + country); + if (antibot.getDataTrack().getCountryTracker().countryBans + .contains(country)) { + antibot.getUtility().getDebug().debug("Banned IP " + IP); + // oh noes! he's in a forbidden country! + event.getPlayer().kickPlayer(Settings.countryBanMsg); + // TODO: organize tracker removals/unregisterers. + antibot.getDataTrack().getBotTracker() + .removeConnected(event.getPlayer().getName()); + antibot.getDataTrack().getChatTracker().trackplayers.remove(event + .getPlayer().getName()); + + if(Settings.banUsers) { + // well, we have permission to autoIP ban these country invaders. + // so lets use our powers (evilface) + antibot.getDataTrack().getBotTracker().autoipkick.add(IP); + } + } + + // okie! we're ok! + } + +} diff --git a/src/somebody/is/madbro/handlers/HandlerCore.java b/src/somebody/is/madbro/handlers/HandlerCore.java index e00aed9..b6cd252 100644 --- a/src/somebody/is/madbro/handlers/HandlerCore.java +++ b/src/somebody/is/madbro/handlers/HandlerCore.java @@ -13,6 +13,7 @@ public class HandlerCore { private PermissionsHandler permissionhandler = null; private BotHandler bothandler = null; private ChatSpamHandler chatspamhandler = null; + private CountryBanHandler countrybanhandler = null; public HandlerCore(AntiBotCore instance, DataTrackCore instance2) { antibot = instance; @@ -20,6 +21,7 @@ public HandlerCore(AntiBotCore instance, DataTrackCore instance2) { permissionhandler = new PermissionsHandler(instance); bothandler = new BotHandler(instance, instance2); chatspamhandler = new ChatSpamHandler(instance); + countrybanhandler = new CountryBanHandler(instance); } public PermissionsHandler getPermissions() { @@ -37,5 +39,9 @@ public BotHandler getBotHandler() { public ChatSpamHandler getChatSpamHandler() { return chatspamhandler; } + + public CountryBanHandler getCountryBanHandler() { + return countrybanhandler; + } } diff --git a/src/somebody/is/madbro/handlers/PermissionsHandler.java b/src/somebody/is/madbro/handlers/PermissionsHandler.java index d86cc2a..a8b8f10 100644 --- a/src/somebody/is/madbro/handlers/PermissionsHandler.java +++ b/src/somebody/is/madbro/handlers/PermissionsHandler.java @@ -13,7 +13,7 @@ public class PermissionsHandler { public AntiBotCore antibot = null; - + public PermissionsHandler(AntiBotCore instance) { antibot = instance; // TODO Auto-generated constructor stub @@ -24,16 +24,14 @@ public void returnMotd(CommandSender sender) { SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy"); sender.sendMessage(Settings.prefix + "AntiBot " + antibot.getVersion() + " - Coded By .SuPaH sPii"); - sender.sendMessage(Settings.prefix - + "Inspired by Wolflink289 <3"); + sender.sendMessage(Settings.prefix + "Inspired by Wolflink289 <3"); sender.sendMessage(Settings.prefix + "Continued inspiration by Evenprime & Fafaffy <3"); Random random = new Random(); switch (random.nextInt(20)) { case 0: - sender.sendMessage(Settings.prefix - + "System Installed on " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "System Installed on " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 1: sender.sendMessage(Settings.prefix @@ -41,9 +39,8 @@ public void returnMotd(CommandSender sender) { + sdf.format(antibot.getInstall())); break; case 2: - sender.sendMessage(Settings.prefix - + "Combatting spam since " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "Combatting spam since " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 3: sender.sendMessage(Settings.prefix @@ -56,14 +53,12 @@ public void returnMotd(CommandSender sender) { + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 5: - sender.sendMessage(Settings.prefix - + "Making people mad since " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "Making people mad since " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 6: - sender.sendMessage(Settings.prefix - + "Trolling spammers since " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "Trolling spammers since " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 7: sender.sendMessage(Settings.prefix @@ -96,9 +91,8 @@ public void returnMotd(CommandSender sender) { + sdf.format(antibot.getInstall())); break; case 13: - sender.sendMessage(Settings.prefix - + "Injected the Vaccine on " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "Injected the Vaccine on " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 14: sender.sendMessage(Settings.prefix @@ -111,9 +105,8 @@ public void returnMotd(CommandSender sender) { + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 16: - sender.sendMessage(Settings.prefix - + "Chinese secret happened on " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "Chinese secret happened on " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; case 17: sender.sendMessage(Settings.prefix @@ -136,9 +129,8 @@ public void returnMotd(CommandSender sender) { + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; default: - sender.sendMessage(Settings.prefix - + "System Installed on " + ChatColor.GREEN - + sdf.format(antibot.getInstall())); + sender.sendMessage(Settings.prefix + "System Installed on " + + ChatColor.GREEN + sdf.format(antibot.getInstall())); break; } } @@ -149,29 +141,35 @@ public void noPermission(CommandSender sender) { } public boolean ownPermission(String perm, Player player, Integer level) { - if (player.hasPermission(perm)) { - return true; - } - if (player.isOp() && Settings.useOpPerms) { - return true; - } - if (player.hasPermission("AntiBot.admin")) { - return true; - } - if (player.hasPermission("AntiBot.admin.root") && level <= 3) { - return true; - } - if (player.hasPermission("AntiBot.admin.plus") && level <= 2) { - return true; - } - if (player.hasPermission("AntiBot.admin.basic") && level <= 1) { - return true; - } + if (player != null) { + + if (player.hasPermission(perm)) { + return true; + } + if (player.isOp() && Settings.useOpPerms) { + return true; + } - return false; + if (player.hasPermission("AntiBot.admin")) { + return true; + } + if (player.hasPermission("AntiBot.admin.root") && level <= 3) { + return true; + } + if (player.hasPermission("AntiBot.admin.plus") && level <= 2) { + return true; + } + if (player.hasPermission("AntiBot.admin.basic") && level <= 1) { + return true; + } + + return false; + } else { + return true; // console. + } } - + public boolean useWhitelist(Player pl) { if (Settings.useWhiteListPerms) { return pl.isWhitelisted(); @@ -188,9 +186,16 @@ public boolean useOp(Player pl) { } } + public boolean hasPermission(String perm, Player pl) { + if (useOp(pl) || ownPermission(perm, pl, 1)) { + return true; + } else { + return false; + } + } + public boolean hasPerms(Player pl) { - if (useOp(pl) - || useWhitelist(pl) + if (useOp(pl) || useWhitelist(pl) || ownPermission("AntiBot.join", pl, 1)) { return true; } else { diff --git a/src/somebody/is/madbro/listeners/BotListener.java b/src/somebody/is/madbro/listeners/BotListener.java index 1e2904d..f5f35f5 100644 --- a/src/somebody/is/madbro/listeners/BotListener.java +++ b/src/somebody/is/madbro/listeners/BotListener.java @@ -5,8 +5,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerChatEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerMoveEvent; @@ -31,22 +29,6 @@ public void onPlayerKick(PlayerKickEvent event) { } antibot.getHandler().getBotHandler().onPlayerKick(event); } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerCommand(PlayerCommandPreprocessEvent event) { - if (!Settings.enabled) { - return; - } - antibot.getHandler().getChatSpamHandler().handle(event.getPlayer(), (PlayerChatEvent) event); - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerChat(PlayerChatEvent event) { - if (!Settings.enabled) { - return; - } - antibot.getHandler().getChatSpamHandler().handle(event.getPlayer(), (PlayerChatEvent) event); - } @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerMove(PlayerMoveEvent event) { diff --git a/src/somebody/is/madbro/listeners/ChatListener.java b/src/somebody/is/madbro/listeners/ChatListener.java new file mode 100644 index 0000000..6feef83 --- /dev/null +++ b/src/somebody/is/madbro/listeners/ChatListener.java @@ -0,0 +1,37 @@ +package somebody.is.madbro.listeners; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerChatEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import somebody.is.madbro.AntiBotCore; +import somebody.is.madbro.settings.Settings; + +public class ChatListener implements Listener { + + public AntiBotCore antibot = null; + + public ChatListener(AntiBotCore instance) { + antibot = instance; + } + + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerCommand(PlayerCommandPreprocessEvent event) { + if (!Settings.enabled) { + return; + } + antibot.getHandler().getChatSpamHandler().handle(event.getPlayer(), (PlayerChatEvent) event); + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerChat(PlayerChatEvent event) { + if (!Settings.enabled) { + return; + } + antibot.getHandler().getChatSpamHandler().handle(event.getPlayer(), (PlayerChatEvent) event); + } + +} diff --git a/src/somebody/is/madbro/listeners/CountryListener.java b/src/somebody/is/madbro/listeners/CountryListener.java new file mode 100644 index 0000000..1d20fca --- /dev/null +++ b/src/somebody/is/madbro/listeners/CountryListener.java @@ -0,0 +1,27 @@ +package somebody.is.madbro.listeners; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +import somebody.is.madbro.AntiBotCore; +import somebody.is.madbro.settings.Settings; + +public class CountryListener implements Listener { + + public AntiBotCore antibot = null; + + public CountryListener(AntiBotCore instance) { + antibot = instance; + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerJoin(PlayerJoinEvent event) { + if (!Settings.enabled || antibot.getDataTrack().getCountryTracker().countryBans.size() < 1 || !Settings.geoIP) { + return; + } + antibot.getHandler().getCountryBanHandler().handle(event); + } + +} diff --git a/src/somebody/is/madbro/settings/Settings.java b/src/somebody/is/madbro/settings/Settings.java index a306160..8cf9961 100644 --- a/src/somebody/is/madbro/settings/Settings.java +++ b/src/somebody/is/madbro/settings/Settings.java @@ -17,10 +17,11 @@ public class Settings { public static boolean chatMute = false; public static boolean enableMultiAccs = true; public static boolean banUsers = false; + public static boolean geoIP = true; public static String kickMsg = "The Ban Hammer has spoken!"; + public static String countryBanMsg = "Your country is banned from this server!"; public static String connectMsg = "You are not on the whitelist!"; public static String connectInvasion = "The server is currently under attack."; - public static String lastMessage = ""; public static String prefix = "\247f[\247bAntiBot\247f] "; } diff --git a/src/somebody/is/madbro/settings/SettingsCore.java b/src/somebody/is/madbro/settings/SettingsCore.java index 1c6f6b6..7be0b1a 100644 --- a/src/somebody/is/madbro/settings/SettingsCore.java +++ b/src/somebody/is/madbro/settings/SettingsCore.java @@ -28,10 +28,12 @@ public void saveSettings(File dataFolder) { try { Config.createNewFile(); Properties propConfig = new Properties(); - propConfig.setProperty("connect-message", - Settings.connectMsg); + propConfig.setProperty("connect-message", Settings.connectMsg); propConfig.setProperty("kick-message", Settings.kickMsg); propConfig.setProperty("prefix", Settings.prefix); + propConfig.setProperty("countryban-message", + Settings.countryBanMsg); + propConfig.setProperty("countrybans", ""); propConfig.setProperty("connect-join-invasion", Settings.connectInvasion); propConfig.setProperty("joins-sec", @@ -64,6 +66,8 @@ public void saveSettings(File dataFolder) { Integer.toString(Settings.connectFor)); propConfig.setProperty("ban-users", Boolean.toString(Settings.banUsers)); + propConfig.setProperty("enable-geoip", + Boolean.toString(Settings.geoIP)); propConfig.setProperty("install-date", Long.toString(System.currentTimeMillis())); BufferedOutputStream stream = new BufferedOutputStream( @@ -101,6 +105,16 @@ public boolean loadSettings(File dataFolder1) { if (load != null && load != Settings.kickMsg) { Settings.kickMsg = load; } + + load = propConfig.getProperty("countryban-message"); + if (load != null && load != Settings.countryBanMsg) { + Settings.countryBanMsg = load; + } + + load = propConfig.getProperty("countrybans"); + if (load != null) { + antibot.getUtility().getGeoIP().loadCountryBanList(load); + } load = propConfig.getProperty("connect-join-invasion"); if (load != null && load != Settings.connectInvasion) { @@ -118,8 +132,7 @@ public boolean loadSettings(File dataFolder1) { } else { load2 = Settings.interval; } - if (load != null && load2 > 999 - && !load2.equals(Settings.interval)) { + if (load != null && load2 > 999 && !load2.equals(Settings.interval)) { Settings.interval = load2; antibot.setDefaultinterval(Settings.interval); } @@ -173,6 +186,16 @@ public boolean loadSettings(File dataFolder1) { if (load != null && !load3.equals(Settings.banUsers)) { Settings.banUsers = load3; } + + load = propConfig.getProperty("enable-geoip"); + if (load != null) { + load3 = Boolean.parseBoolean(load); + } else { + load3 = Settings.geoIP; + } + if (load != null && !load3.equals(Settings.geoIP)) { + Settings.geoIP = load3; + } load = propConfig.getProperty("enable-antispam"); if (load != null) { @@ -183,7 +206,7 @@ public boolean loadSettings(File dataFolder1) { if (load != null && !load3.equals(Settings.enableAntiSpam)) { Settings.enableAntiSpam = load3; } - + load = propConfig.getProperty("enable-multiacc-detection"); if (load != null) { load3 = Boolean.parseBoolean(load); @@ -275,8 +298,7 @@ public boolean loadSettings(File dataFolder1) { } else { load2 = Settings.accounts; } - if (load != null && load2 > 0 - && !load2.equals(Settings.accounts)) { + if (load != null && load2 > 0 && !load2.equals(Settings.accounts)) { Settings.accounts = load2; antibot.setDefaultaccounts(Settings.accounts); } @@ -289,18 +311,22 @@ public boolean loadSettings(File dataFolder1) { return false; } } - + public boolean saveConfig(String prp, String val) { try { Properties propConfig = new Properties(); BufferedInputStream stream = new BufferedInputStream( - new FileInputStream(antibot.getDataFolder().getAbsolutePath() - + File.separator + "c.properties")); + new FileInputStream(antibot.getDataFolder() + .getAbsolutePath() + + File.separator + + "c.properties")); propConfig.load(stream); propConfig.setProperty(prp, val); BufferedOutputStream strea2m = new BufferedOutputStream( - new FileOutputStream(antibot.getDataFolder().getAbsolutePath() - + File.separator + "c.properties")); + new FileOutputStream(antibot.getDataFolder() + .getAbsolutePath() + + File.separator + + "c.properties")); propConfig .store(strea2m, "AntiBot V2 - The ultimate AntiSpam protection for Minecraft."); diff --git a/src/somebody/is/madbro/toolbox/BotUtility.java b/src/somebody/is/madbro/toolbox/BotUtility.java index 26d268e..fc4d2a3 100644 --- a/src/somebody/is/madbro/toolbox/BotUtility.java +++ b/src/somebody/is/madbro/toolbox/BotUtility.java @@ -27,7 +27,7 @@ public boolean toggle(Boolean e) { public boolean flush() { try { if (antibot.getDataTrack().getBotTracker().reanibo) { - antibot.getUtility().getDebugUtility() + antibot.getUtility().getDebug() .debug("Disabled Reanibios."); antibot.getDataTrack().getBotTracker().reanibo = false; Settings.interval = antibot.getDefaultinterval(); @@ -56,7 +56,7 @@ public boolean flush2() { antibot.getDataTrack().getBotTracker().connected.clear(); antibot.getDataTrack().getBotTracker().autokick.clear(); antibot.getDataTrack().getBotTracker().autoipkick.clear(); - antibot.getDataTrack().getBotTracker().spammyPlayers.clear(); + antibot.getDataTrack().getChatTracker().spammyPlayers.clear(); antibot.getDataTrack().getBotTracker().ipList.clear(); Settings.accounts = antibot.getDefaultaccounts(); antibot.getDataTrack().getBotTracker().lasttime = 0; @@ -95,17 +95,17 @@ public int getRandomIntInvasion() { public void kickConnected() { // int kicked = 0; antibot.getUtility() - .getDebugUtility() + .getDebug() .debug("Kicking players with method #1 Size: " + antibot.getDataTrack().getBotTracker().connected .size()); for (String pl : antibot.getDataTrack().getBotTracker().connected) { try { - antibot.getUtility().getDebugUtility() + antibot.getUtility().getDebug() .debug("Checking if kick possible for player..." + pl); Player p2 = antibot.getServer().getPlayerExact(pl); - if (!antibot.getDataTrack().getBotTracker().checkConnection(pl)) { - antibot.getUtility().getDebugUtility() + if (!antibot.getDataTrack().getChatTracker().checkConnection(pl)) { + antibot.getUtility().getDebug() .debug("Yes, Kicking player..." + pl); antibot.getServer().getPlayerExact(pl) .kickPlayer(Settings.kickMsg); @@ -116,10 +116,10 @@ public void kickConnected() { antibot.getDataTrack().getBotTracker().autokick.add(pl); } // kicked += 1; - antibot.getUtility().getDebugUtility() + antibot.getUtility().getDebug() .debug("Kicked player with method #1"); antibot.getUtility() - .getDebugUtility() + .getDebug() .debug("We now have autokick: " + antibot.getDataTrack().getBotTracker().autokick .size() @@ -127,14 +127,14 @@ public void kickConnected() { + antibot.getDataTrack().getBotTracker().autoipkick .size()); } else { - antibot.getUtility().getDebugUtility() + antibot.getUtility().getDebug() .debug("Not possible for player ...." + pl); antibot.getDataTrack().getBotTracker().connected.remove(pl); } } catch (Exception e) { // if it fails. go down here. e.printStackTrace(); - antibot.getUtility().getDebugUtility() + antibot.getUtility().getDebug() .debug("Failed to kick: " + pl); } } @@ -142,13 +142,13 @@ public void kickConnected() { // kick players if the above method doesn't work :| /* - * antibot.getUtility().getDebugUtility().debug("Checking if " + kicked + * antibot.getUtility().getDebug().debug("Checking if " + kicked * + " is less than 1"); if (kicked < 1) { - * antibot.getUtility().getDebugUtility() + * antibot.getUtility().getDebug() * .debug("Kicking player with method #2"); Player[] players = * antibot.getServer().getOnlinePlayers(); for (Player pl : players) { * if (!hasPerms(pl)) { pl.kickPlayer(Settings.connectMsg); - * autokick.add(pl); antibot.getUtility().getDebugUtility().debug( + * autokick.add(pl); antibot.getUtility().getDebug().debug( * "Kicked player with method #2" ); } } } */ diff --git a/src/somebody/is/madbro/toolbox/DeregisterUtility.java b/src/somebody/is/madbro/toolbox/DeregisterUtility.java new file mode 100644 index 0000000..8f57b8b --- /dev/null +++ b/src/somebody/is/madbro/toolbox/DeregisterUtility.java @@ -0,0 +1,5 @@ +package somebody.is.madbro.toolbox; + +public class DeregisterUtility { + +} diff --git a/src/somebody/is/madbro/toolbox/GeoIPUtility.java b/src/somebody/is/madbro/toolbox/GeoIPUtility.java new file mode 100644 index 0000000..e9ce84b --- /dev/null +++ b/src/somebody/is/madbro/toolbox/GeoIPUtility.java @@ -0,0 +1,102 @@ +package somebody.is.madbro.toolbox; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.net.URLConnection; +import java.util.zip.GZIPInputStream; + +import com.maxmind.geoip.LookupService; + +import somebody.is.madbro.AntiBotCore; + +public class GeoIPUtility { + + public AntiBotCore antibot = null; + private LookupService lkup = null; + + private File db = null; + + public GeoIPUtility(AntiBotCore instance) { + antibot = instance; + db = new File(instance.getDataFolder(), "GeoIP.dat"); + } + + public void initialize() { + try { + if (!checkIfDownloaded()) { + System.out + .println("Our memogram tells us to install GeoIP. Lets try dis."); + preDownload(); + System.out + .println("GeoIP, by Maximind! Now installed. Never to be seen again!"); + } + System.out.println("Loading GeoIP.."); + lkup = new LookupService(db, LookupService.GEOIP_MEMORY_CACHE); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + System.out.println("Loading failed!"); + } + } + + // lookup functions + + public String lookupIp(String ip) { + String code = lkup.getCountry(ip).getCode(); + return code; + } + + // loading shit. + public boolean checkIfDownloaded() { + if (db.exists()) { + return true; + } else { + return false; + } + } + + public void loadCountryBanList(String list) { + if(list.length() == 0) { + return; + } + String[] liz = list.split(","); + for (int i = 0; i < liz.length; i++) { + antibot.getDataTrack().getCountryTracker().countryBans.add(liz[i]); + System.out.println("Loaded Country " + liz[i]); + } + System.out.println("Loaded " + liz.length + " entries to CountryBans list."); + } + + public void preDownload() { + try { + String URL = "http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz"; + URL downloadUrl = new URL(URL); + URLConnection conn = downloadUrl.openConnection(); + conn.setConnectTimeout(10000); + conn.connect(); + InputStream input = conn.getInputStream(); + if (URL.endsWith(".gz")) { + input = new GZIPInputStream(input); + } + OutputStream output = new FileOutputStream(db); + byte[] buffer = new byte[2048]; + int length = input.read(buffer); + while (length >= 0) { + output.write(buffer, 0, length); + length = input.read(buffer); + } + output.close(); + input.close(); + + System.out.println("Download Complete?"); + } catch (Exception e) { + System.out + .println("An error had occured while trying to download DB."); + } + + } +} diff --git a/src/somebody/is/madbro/toolbox/UtilityCore.java b/src/somebody/is/madbro/toolbox/UtilityCore.java index 5da8d05..21857c6 100644 --- a/src/somebody/is/madbro/toolbox/UtilityCore.java +++ b/src/somebody/is/madbro/toolbox/UtilityCore.java @@ -8,6 +8,7 @@ public class UtilityCore { //utilities private BotUtility botutility = null; private DebugUtility debugutility = null; + private GeoIPUtility geoiputility = null; //listeners protected BotListener botlistener = null; @@ -19,16 +20,20 @@ public UtilityCore(AntiBotCore instance) { botlistener = instance.getBotListener(); botutility = new BotUtility(instance); debugutility = new DebugUtility(instance); - + geoiputility = new GeoIPUtility(instance); } - public BotUtility getBotUtility() { + public BotUtility getBot() { return botutility; } - public DebugUtility getDebugUtility() { + public DebugUtility getDebug() { return debugutility; } + public GeoIPUtility getGeoIP() { + return geoiputility; + } + }