country_codes_2 = [
    "AF", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB",
    "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BA", "BA", "BA", "BW", "BV", "BV", "BR", "IO", "BN", "BG", "BF", "BI",
    "KH", "CM", "CA", "CV", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR",
    "HR", "CU", "CY", "CZ", "DK", "DJ", "DM", "DO", "TP", "EC", "EG", "SV", "GQ", "ER", "EE", "ET", "FK", "FK", "FO",
    "FJ", "FI", "FR", "FX", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT",
    "GN", "GW", "GY", "HT", "HM", "VA", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IL", "IT", "JM",
    "JP", "JO", "KZ", "KE", "KI", "KP", "KP", "KR", "KR", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI",
    "LT", "LU",
    "MO", "MK", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "FM", "MD", "MD", "MC",
    "MN", "ME", "MS", "MA", "MZ", "MM", "MM", "NA", "NR", "NP", "NL", "AN", "NC", "NZ", "NI", "NE", "NG", "NU", "NF",
    "MP", "NO", "OM", "PK", "PW", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW",
    "KN", "LC", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SK", "SK", "SI", "SB", "SO", "ZA", "SS",
    "GS", "ES", "LK", "SH", "PM", "SD", "SR", "SJ", "SZ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TZ", "TH", "TG", "TK",
    "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG",
    "VI", "WF", "EH", "YE", "ZM", "ZW"
]

country_codes_3 = [
    "AFG", "ALB", "DZA", "ASM", "AND", "AGO", "AIA", "ATA", "ATG", "ARG", "ARM", "ABW", "AUS", "AUT", "AZE", "BHS",
    "BHR", "BGD", "BRB", "BLR", "BEL", "BLZ", "BEN", "BMU", "BTN", "BOL", "BIH", "BIH", "BIH", "BWA", "BVT", "BVT",
    "BRA", "IOT", "BRN", "BGR", "BFA", "BDI", "KHM", "CMR", "CAN", "CPV", "CYM", "CAF", "TCD", "CHL", "CHN", "CXR",
    "CCK", "COL", "COM", "COG", "COD", "COK", "CRI", "CIV", "HRV", "HRV", "CUB", "CYP", "CZE", "DNK", "DJI", "DMA",
    "DOM", "TMP", "ECU", "EGY", "SLV", "GNQ", "ERI", "EST", "ETH", "FLK", "FLK", "FRO", "FJI", "FIN", "FRA", "FXX",
    "GUF", "PYF", "ATF", "GAB", "GMB", "GEO", "DEU", "GHA", "GIB", "GRC", "GRL", "GRD", "GLP", "GUM", "GTM", "GIN",
    "GNB", "GUY", "HTI", "HMD", "VAT", "VAT", "HND", "HKG", "HUN", "ISL", "IND", "IDN", "IRN", "IRQ", "IRL", "ISR",
    "ITA", "JAM", "JPN", "JOR", "KAZ", "KEN", "KIR", "PRK", "PRK", "KOR", "KOR", "KOR", "KWT", "KGZ", "LAO", "LVA",
    "LBN", "LSO",
    "LBR", "LBY", "LIE", "LTU", "LUX", "MAC", "MKD", "MDG", "MWI", "MYS", "MDV", "MLI", "MLT", "MHL", "MTQ", "MRT",
    "MUS", "MYT", "MEX", "FSM", "FSM", "MDA", "MDA", "MCO", "MNG", "MNE", "MSR", "MAR", "MOZ", "MMR", "MMR", "NAM",
    "NRU", "NPL", "NLD", "ANT", "NCL", "NZL", "NIC", "NER", "NGA", "NIU", "NFK", "MNP", "NOR", "OMN", "PAK", "PLW",
    "PAN", "PNG", "PRY", "PER", "PHL", "PCN", "POL", "PRT", "PRI", "QAT", "REU", "ROM", "RUS", "RWA", "KNA", "LCA",
    "VCT", "WSM", "SMR", "STP", "SAU", "SEN", "SRB", "SYC", "SLE", "SGP", "SVK", "SVK", "SVN", "SLB", "SOM", "ZAF",
    "SSD", "SGS", "ESP", "LKA", "SHN", "SPM", "SDN", "SUR", "SJM", "SWZ", "SWE", "CHE", "SYR", "TWN", "TJK", "TZA",
    "TZA", "THA", "TGO", "TKL", "TON", "TTO", "TUN", "TUR", "TKM", "TCA", "TUV", "UGA", "UKR", "ARE", "GBR", "USA",
    "UMI", "URY", "UZB", "VUT", "VEN", "VNM", "VGB", "VIR", "WLF", "ESH", "YEM", "ZMB", "ZWE"
]

country_dialing_codes = [
    "93", "355", "213", "1 684", "376", "244", "1 264", "672", "1 268", "54", "374", "297", "61", "43", "994", "1 242",
    "973", "880", "1 246", "375", "32", "501", "229", "1 441", "975", "591", "387", "387", "387", "387", "61", "61",
    "55", "246", "672", "359", "226", "257", "855", "237", "1", "238", "1 345", "236", "235", "56", "86", "61", "891",
    "57", "269", "242", "243", "682", "506", "225", "385", "385", "53", "357", "420", "45", "253", "1 767", "1 809",
    "670", "593", "20", "503", "240", "291", "372", "251", "500", "500", "298", "679", "358", "33", "33", "594", "689",
    "262", "241", "220", "995", "49", "233", "350", "30", "299", "1 473", "590", "1 671", "502", "224", "245", "592",
    "509", "672", "379", "379", "504", "852", "36", "354", "91", "62", "98", "964", "353", "972", "39", "1 876", "81",
    "962", "7", "254", "686", "850", "850", "82", "82", "82", "965", "996", "856", "371", "961", "266", "231", "218",
    "423", "370",
    "352", "853", "389", "261", "265", "60", "960", "223", "356", "692", "596", "222", "230", "262", "52", "691", "691",
    "373", "373", "377", "976", "382", "1 664", "212", "258", "95", "95", "264", "674", "977", "31", "599", "687", "64",
    "505", "227", "234", "683", "672", "1 670", "47", "968", "92", "680", "507", "675", "595", "51", "63", "870", "48",
    "351", "1", "974", "262", "40", "7", "250", "1 869", "1 758", "1 784", "685", "378", "239", "966", "221", "381",
    "248", "232", "65", "421", "421", "386", "677", "252", "27", "211", "500", "34", "94", "290", "508", "249", "597",
    "47", "268", "46", "41", "963", "886", "992", "255", "255", "66", "228", "690", "676", "1 868", "216", "90", "993",
    "1 649", "688", "256", "380", "971", "44", "1", "1", "598", "998", "678", "58", "84", "1 284", "1 430", "681",
    "212", "967", "260", "263"
]

country_names = [
    "AFGHANISTAN", "ALBANIA", "ALGERIA", "AMERICANSAMOA", "ANDORRA", "ANGOLA", "ANGUILLA", "ANTARCTICA",
    "ANTIGUAANDBARBUDA", "ARGENTINA", "ARMENIA", "ARUBA", "AUSTRALIA", "AUSTRIA", "AZERBAIJAN", "BAHAMAS", "BAHRAIN",
    "BANGLADESH", "BARBADOS", "BELARUS", "BELGIUM", "BELIZE", "BENIN", "BERMUDA", "BHUTAN", "BOLIVIA",
    "BOSNIAANDHERZEGOWINA", "BOSNIA", "HERZEGOWINA", "BOTSWANA", "BOUVETISLAND", "NORWAY", "BRAZIL",
    "BRITISHINDIANOCEANTERRITORY", "BRUNEIDARUSSALAM", "BULGARIA", "BURKINAFASO", "BURUNDI", "CAMBODIA",
    "CAMEROON", "CANADA", "CAPEVERDE", "CAYMANISLANDS", "CENTRALAFRICANREPUBLIC", "CHAD", "CHILE", "CHINA",
    "CHRISTMASISLAND", "COCOSISLANDS", "COLOMBIA", "COMOROS", "CONGO", "CONGOTHEDRC", "COOKISLANDS", "COSTARICA",
    "COTED'IVOIRE", "CROATIA", "HRVATSKA", "CUBA", "CYPRUS", "CZECHREPUBLIC", "DENMARK", "DJIBOUTI", "DOMINICA",
    "DOMINICANREPUBLIC", "EASTTIMOR", "ECUADOR", "EGYPT", "ELSALVADOR", "EQUATORIALGUINEA", "ERITREA", "ESTONIA",
    "ETHIOPIA", "FALKLANDISLANDS", "MALVINAS", "FAROEISLANDS", "FIJI", "FINLAND", "FRANCE", "FRANCEMETROPOLITAN",
    "FRENCHGUIANA", "FRENCHPOLYNESIA", "FRENCHSOUTHERNTERRITORIES", "GABON", "GAMBIA", "GEORGIA", "GERMANY",
    "GHANA", "GIBRALTAR", "GREECE", "GREENLAND", "GRENADA", "GUADELOUPE", "GUAM", "GUATEMALA", "GUINEA",
    "GUINEA-BISSAU", "GUYANA", "HAITI", "HEARDANDMCDONALDISLANDS", "HOLYSEE", "VATICANCITYSTATE", "HONDURAS",
    "HONGKONG", "HUNGARY", "ICELAND", "INDIA", "INDONESIA", "IRAN", "IRAQ", "IRELAND", "ISRAEL", "ITALY", "JAMAICA",
    "JAPAN", "JORDAN", "KAZAKHSTAN", "KENYA", "KIRIBATI", "KOREADPRO", "NORTHKOREA", "KOREAREPUBLICOF",
    "SOUTHKOREA", "REPUBLICOFKOREA",
    "KUWAIT", "KYRGYZSTAN", "LAOS", "LATVIA", "LEBANON", "LESOTHO", "LIBERIA", "LIBYANARABJAMAHIRIYA",
    "LIECHTENSTEIN", "LITHUANIA", "LUXEMBOURG", "MACAU", "MACEDONIA", "MADAGASCAR", "MALAWI", "MALAYSIA", "MALDIVES",
    "MALI", "MALTA", "MARSHALLISLANDS", "MARTINIQUE", "MAURITANIA", "MAURITIUS", "MAYOTTE", "MEXICO",
    "MICRONESIA,FEDERATEDSTATESOF", "FEDERATEDSTATESOFMICRONESIA", "MOLDOVAREPUBLICOF", "REPUBLICOFMOLDOVA",
    "MONACO", "MONGOLIA", "MONTENEGRO", "MONTSERRAT", "MOROCCO", "MOZAMBIQUE", "MYANMAR", "BURMA", "NAMIBIA", "NAURU",
    "NEPAL", "NETHERLANDS", "NETHERLANDSANTILLES", "NEWCALEDONIA", "NEWZEALAND", "NICARAGUA", "NIGER", "NIGERIA",
    "NIUE", "NORFOLKISLAND", "NORTHERNMARIANAISLANDS", "NORWAY", "OMAN", "PAKISTAN", "PALAU", "PANAMA",
    "PAPUANEWGUINEA", "PARAGUAY", "PERU", "PHILIPPINES", "PITCAIRN", "POLAND", "PORTUGAL", "PUERTORICO", "QATAR",
    "REUNION", "ROMANIA", "RUSSIANFEDERATION", "RWANDA", "SAINTKITTSANDNEVIS", "SAINTLUCIA",
    "SAINTVINCENTANDTHEGRENADINES", "SAMOA", "SANMARINO", "SAOTOMEANDPRINCIPE", "SAUDIARABIA", "SENEGAL",
    "SERBIA", "SEYCHELLES", "SIERRALEONE", "SINGAPORE", "SLOVAKIA", "SLOVAKREPUBLIC", "SLOVENIA", "SOLOMONISLANDS",
    "SOMALIA", "SOUTHAFRICA", "SOUTHSUDAN", "SOUTHGEORGIAANDSOUTHSS", "SPAIN", "SRILANKA", "STHELENA",
    "STPIERREANDMIQUELON", "SUDAN", "SURINAME", "SVALBARDANDJANMAYENISLANDS", "SWAZILAND", "SWEDEN",
    "SWITZERLAND", "SYRIANARABREPUBLIC", "TAIWAN", "TAJIKISTAN", "TANZANIA", "UNITEDREPUBLICOFTANZANIA",
    "THAILAND", "TOGO", "TOKELAU", "TONGA", "TRINIDADANDTOBAGO", "TUNISIA", "TURKEY", "TURKMENISTAN",
    "TURKSANDCAICOSISLANDS", "TUVALU", "UGANDA", "UKRAINE", "UNITEDARABEMIRATES", "UNITEDKINGDOM",
    "UNITEDSTATES", "USMINORISLANDS", "URUGUAY", "UZBEKISTAN", "VANUATU", "VENEZUELA", "VIETNAM",
    "VIRGINISLANDSBRITISH", "VIRGINISLANDSUS", "WALLISANDFUTUNAISLANDS", "WESTERNSAHARA", "YEMEN",
    "ZAMBIA", "ZIMBABWE"
]

country_names_readable = [
    "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica",
    "Antigua And Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain",
    "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
    "Bosnia And Herzegowina", "Bosnia", "Herzegowina", "Botswana", "Bouvet Island", "Norway", "Brazil",
    "British Indian Ocean Territory", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia",
    "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
    "Christmas Island", "Cocos Islands", "Colombia", "Comoros", "Congo", "Congo, The Drc", "Cook Islands", "Costa Rica",
    "Cote D'ivoire", "Croatia", "Hrvatska", "Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica",
    "Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia",
    "Ethiopia", "Falkland Islands", "Malvinas", "Faroe Islands", "Fiji", "Finland", "France", "France, Metropolitan",
    "French Guiana", "French Polynesia", "French Southern Territories", "Gabon", "Gambia", "Georgia", "Germany",
    "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea",
    "Guinea-bissau", "Guyana", "Haiti", "Heard And Mc Donald Islands", "Holy See", "Vatican City State", "Honduras",
    "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
    "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, D.p.r.o.", "North Korea", "Korea, Republic Of", "South Korea", "Republic Of Korea",
    "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya",
    "Liechtenstein", "Lithuania", "Luxembourg", "Macau", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives",
    "Mali", "Malta", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico",
    "Micronesia, Federated States Of", "Federated States Of Micronesia", "Moldova, Republic Of", "Republic Of Moldova",
    "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Burma", "Namibia", "Nauru",
    "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria",
    "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Panama",
    "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Puerto Rico", "Qatar",
    "Reunion", "Romania", "Russian Federation", "Rwanda", "Saint Kitts And Nevis", "Saint Lucia",
    "Saint Vincent And The Grenadines", "Samoa", "San Marino", "Sao Tome And Principe", "Saudi Arabia", "Senegal",
    "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovak Republic", "Slovenia", "Solomon Islands",
    "Somalia", "South Africa", "South Sudan", "South Georgia And South S.S.", "Spain", "Sri Lanka", "St. Helena",
     "St. Pierre And Miquelon", "Sudan", "Suriname", "Svalbard and Jan Mayen Islands", "Swaziland", "Sweden",
    "Switzerland", "Syrian Arab Republic", "Taiwan", "Tajikistan", "Tanzania", "United Republic Of Tanzania",
    "Thailand", "Togo", "Tokelau", "Tonga", "Trinidad And Tobago", "Tunisia", "Turkey", "Turkmenistan",
    "Turks And Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom",
    "United States", "U.S. Minor Islands", "Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam",
    "Virgin Islands (British)", "Virgin Islands (U.S.)", "Wallis And Futuna Islands", "Western Sahara", "Yemen",
    "Zambia", "Zimbabwe"
]

us_states_names = [
    "ALABAMA", "ALASKA", "ARIZONA", "ARKANSAS", "CALIFORNIA", "COLORADO", "CONNECTICUT", "DELAWARE", "FLORIDA",
    "GEORGIA", "HAWAII", "IDAHO", "ILLINOIS", "INDIANA", "IOWA", "KANSAS", "KENTUCKY", "LOUISIANA", "MAINE", "MARYLAND",
    "MASSACHUSETTS", "MICHIGAN", "MINNESOTA", "MISSISSIPPI", "MISSOURI", "MONTANA", "NEBRASKA", "NEVADA",
    "NEWHAMPSHIRE", "NEWJERSEY", "NEWMEXICO", "NEWYORK", "NORTHCAROLINA", "NORTHDAKOTA", "OHIO", "OKLAHOMA", "OREGON",
    "PENNSYLVANIA", "RHODEISLAND", "SOUTHCAROLINA", "SOUTHDAKOTA", "TENNESSEE", "TEXAS", "UTAH", "VERMONT", "VIRGINIA",
    "WASHINGTON", "WESTVIRGINIA", "WISCONSIN", "WYOMING"
]

us_states_names_readable = [
     "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida",
    "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland",
    "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
    "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon",
    "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia",
    "Washington", "West Virginia", "Wisconsin", "Wyoming"
]

us_states_codes = [
    "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME",
    "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA",
    "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"
]

canada_states_names = [
    "ALBERTA", "BRITISHCOLUMBIA", "MANITOBA", "NEWBRUNSWICK", "NEWFOUNDLANDANDLABRADOR", "NOVASCOTIA",
    "NORTHWESTTERRITORIES", "NUNAVUT", "ONTARIO", "PRINCEEDWARDISLAND", "QUEBEC", "SASKATCHEWAN", "YUKON"
]

canada_states_names_readable = [
    "Alberta", "British Columbia", "Manitoba", "New Brunswick", "Newfoundland and Labrador", "Nova Scotia",
    "Northwest Territories", "Nunavut", "Ontario", "Prince Edward Island", "Quebec", "Saskatchewan", "Yukon"
]

canada_states_codes = [
    "AB", "BC", "MB", "NB", "NL", "NS", "NT", "NU", "ON", "PE", "QC", "SK", "YT"
]

def standardize_country_code(country):
    if(len(country) == 0):
        return ''

    country = country.upper()
    if (len(country) == 2):
        try:
            idx = country_codes_2.index(country)
            return country
        except ValueError:
            idx = -1
    if (len(country) == 3):
        try:
            idx = country_codes_3.index(country)
            code = country_codes_2[idx]
            return code
        except ValueError:
            idx = -1
    try:
        country = alphaOnly(country).upper()
        idx = country_names.index(country)
        code = country_codes_2[idx]
        return code
    except ValueError:
        return ''


def standardize_country_name(country):
    if(len(country) == 0):
        return ''

    country = country.upper()
    if (len(country) == 2):
        try:
            idx = country_codes_2.index(country)
            return country_names_readable[idx]
        except ValueError:
            idx = -1
    if (len(country) == 3):
        try:
            idx = country_codes_3.index(country)
            return country_names_readable[idx]
        except ValueError:
            idx = -1
    try:
        country = alphaOnly(country).upper()
        idx = country_names.index(country)
        return country_names_readable[idx]
    except ValueError:
        return ''

#For Patents - Return the actual issuing authority if it's not a country
def standardize_wipocountry_name(country):
    if(len(country) == 0):
        return ''

    country = country.upper()

    if (country == 'OA'):
        return 'African Intellectual Property Organization'
    if (country == 'AP'):
        return 'African Regional IP Organization'
    if (country == 'BX'):
        return 'Benelux Office for Intellectual Property'
    if (country == 'BQ'):
        return 'Bonaire, Saint Eustatius and Saba'
    if (country == 'DD'):
        return 'German Democratic Republic'
    if (country == 'GC'):
        return 'Gulf Cooperation Council'
    if (country == 'IB'):
        return 'International Bureau of WIPO'
    if (country == 'TP'):
        return 'International Technology Disclosures'
    if (country == 'SX'):
        return 'Sint Maarten'
    if (country == 'QZ'):
        return 'Community Plant Variety Office (EU)'
    if (country == 'EA'):
        return 'Eurasian Patent Organization'
    if (country == 'EP'):
        return 'European Patent Office'
    if (country == 'XN'):
        return 'Nordic Patent Institute'
    if (country == 'TL'):
        return 'Timor–Leste'
    if (country == 'WO'):
        return 'World Intellectual Property Organization'
    if (len(country) == 2):
        try:
            idx = country_codes_2.index(country)
            return country_names_readable[idx]
        except ValueError:
            idx = -1
    if (len(country) == 3):
        try:
            idx = country_codes_3.index(country)
            return country_names_readable[idx]
        except ValueError:
            idx = -1
    try:
        country = alphaOnly(country).upper()
        idx = country_names.index(country)
        return country_names_readable[idx]
    except ValueError:
        return ''


def standardize_state_code(country, state):
    if(len(state) == 0):
        return ''

    codesArr = []
    namesArr = []

    if country == "US" or country == "United States":
        codesArr = us_states_codes
        namesArr = us_states_names

    if country == "CA" or country == "Canada":
        codesArr = canada_states_codes
        namesArr = canada_states_names

    if (len(codesArr) > 0):
        state = state.upper()
        if (len(state) == 2):
            try:
                idx = codesArr.index(state)
                return state
            except ValueError:
                idx = -1

        try:
            state = alphaOnly(state).upper()
            idx = namesArr.index(state)
            code = codesArr[idx]
            return code
        except ValueError:
            return ''

    return state


def standardize_state_name(country, state):
    if(len(state) == 0):
        return ''

    codesArr = []
    namesArr = []
    namesReadableArr = []

    if country == "US" or country == "United States":
        codesArr = us_states_codes
        namesArr = us_states_names
        namesReadableArr = us_states_names_readable

    if country == "CA" or country == "Canada":
        codesArr = canada_states_codes
        namesArr = canada_states_names
        namesReadableArr = canada_states_names_readable

    if (len(codesArr) > 0):
        state = state.upper()
        if (len(state) == 2):
            try:
                idx = codesArr.index(state)
                return namesReadableArr[idx]
            except ValueError:
                idx = -1

        try:
            state = alphaOnly(state).upper()
            idx = namesArr.index(state)
            return namesReadableArr[idx]
        except ValueError:
            return ''

    return state

def detectCountryCode(phonenumber):
    if phonenumber.find("+") == 0:
        ph = phonenumber[1:]
        for i in range(1, 5):
            cc = ph[0:i]
            try:
                idx = country_dialing_codes.index(cc)
                return cc
            except ValueError:
                idx = -1
    return None


