From 9177f93d5723c1a513a37157a715f6fb4b1ad6ed Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 13:38:42 -0300 Subject: [PATCH 01/86] add mercadolivre pipeline --- pipelines/datasets/__init__.py | 1 + .../datasets/mercadolivre_ofertas/__init__.py | 0 .../mercadolivre_ofertas/constants.py | 14 + .../datasets/mercadolivre_ofertas/flows.py | 88 ++++ .../mercadolivre_ofertas/schedules.py | 31 ++ .../datasets/mercadolivre_ofertas/tasks.py | 77 ++++ .../datasets/mercadolivre_ofertas/utils.py | 377 ++++++++++++++++++ 7 files changed, 588 insertions(+) create mode 100644 pipelines/datasets/mercadolivre_ofertas/__init__.py create mode 100644 pipelines/datasets/mercadolivre_ofertas/constants.py create mode 100644 pipelines/datasets/mercadolivre_ofertas/flows.py create mode 100644 pipelines/datasets/mercadolivre_ofertas/schedules.py create mode 100644 pipelines/datasets/mercadolivre_ofertas/tasks.py create mode 100644 pipelines/datasets/mercadolivre_ofertas/utils.py diff --git a/pipelines/datasets/__init__.py b/pipelines/datasets/__init__.py index e6a52ad1a..06a2e2d48 100644 --- a/pipelines/datasets/__init__.py +++ b/pipelines/datasets/__init__.py @@ -34,3 +34,4 @@ from pipelines.datasets.br_ons_avaliacao_operacao.flows import * from pipelines.datasets.br_ons_estimativa_custos.flows import * from pipelines.datasets.br_b3_cotacoes.flows import * +from pipelines.datasets.mercadolivre_ofertas.flows import * diff --git a/pipelines/datasets/mercadolivre_ofertas/__init__.py b/pipelines/datasets/mercadolivre_ofertas/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pipelines/datasets/mercadolivre_ofertas/constants.py b/pipelines/datasets/mercadolivre_ofertas/constants.py new file mode 100644 index 000000000..e72ed00aa --- /dev/null +++ b/pipelines/datasets/mercadolivre_ofertas/constants.py @@ -0,0 +1,14 @@ +from enum import Enum + + +class constants(Enum): # pylint: disable=c0103 + """ + Constant values for the mercadolivre_ofertas project + """ + + LESS100 = 'https://www.mercadolivre.com.br/ofertas?container_id=MLB779362-1&price=0.0-100.0#origin=scut&filter_applied=price&filter_position=6&is_recommended_domain=false' + OFERTA_DIA = 'https://www.mercadolivre.com.br/ofertas#nav-header' + RELAMPAGO = 'https://www.mercadolivre.com.br/ofertas?promotion_type=lightning&container_id=MLB779362-1#origin=scut&filter_applied=promotion_type&filter_position=2&is_recommended_domain=false' + BARATO_DIA = 'https://www.mercadolivre.com.br/ofertas?deal_ids=MLB861109-2&container_id=MLB861109-2#origin=scut&filter_applied=deal_ids&filter_position=3&is_recommended_domain=false' + KWARGS_LIST = [{'class_':'ui-pdp-title'}, { 'class_':'ui-pdp-review__amount'} , { 'class_':'andes-money-amount__discount'}, { 'class_':'ui-pdp-color--BLACK ui-pdp-family--REGULAR ui-pdp-media__title ui-pdp-media__title--on-hover'}, { 'class_': 'ui-review-capability__rating__average ui-review-capability__rating__average--desktop'}] + diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py new file mode 100644 index 000000000..599875edb --- /dev/null +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +""" +Flows for mercadolivre_ofertas +""" +# pylint: disable=invalid-name +from datetime import timedelta + +from prefect import Parameter, case +from prefect.run_configs import KubernetesRun +from prefect.storage import GCS +from prefect.tasks.prefect import create_flow_run, wait_for_flow_run + +from pipelines.constants import constants + +from pipelines.utils.constants import constants as utils_constants +from pipelines.utils.decorators import Flow +from pipelines.utils.execute_dbt_model.constants import constants as dump_db_constants +from pipelines.utils.tasks import ( + rename_current_flow_run_dataset_table, + get_current_flow_labels, + create_table_and_upload_to_gcs, +) + +from pipelines.datasets.mercadolivre_ofertas.tasks import crawler_mercadolivre_ofertas +from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item + +with Flow( + name="mercadolivre_ofertas.item", code_owners=["lucascr91"] +) as mercadolivre_ofertas: + # Parameters + dataset_id = Parameter( + "dataset_id", default="mercadolivre_ofertas", required=True + ) + table_id = Parameter("table_id", default="item", required=True) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=False + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=True, required=False + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + filepath = crawler_mercadolivre_ofertas() + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="overwrite", + wait=filepath, + ) + + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + +mercadolivre_ofertas.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +mercadolivre_ofertas.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) +mercadolivre_ofertas.schedule = every_day_item diff --git a/pipelines/datasets/mercadolivre_ofertas/schedules.py b/pipelines/datasets/mercadolivre_ofertas/schedules.py new file mode 100644 index 000000000..d3c25763d --- /dev/null +++ b/pipelines/datasets/mercadolivre_ofertas/schedules.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +""" +Schedules for br_poder360_pesquisas +""" + +from datetime import datetime, timedelta + +from prefect.schedules import Schedule +from prefect.schedules.clocks import IntervalClock + +from pipelines.constants import constants + + +every_day_item = Schedule( + clocks=[ + IntervalClock( + interval=timedelta(days=1), + start_date=datetime(2021, 1, 1, 15, 0), + labels=[ + constants.BASEDOSDADOS_PROD_AGENT_LABEL.value, + ], + parameter_defaults={ + "dataset_id": "mercado_livre_ofertas", + "materialization_mode": "dev", + "materialize after dump": False, + "table_id": "item", + "dbt_alias": False, + }, + ) + ], +) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py new file mode 100644 index 000000000..3d92f03b6 --- /dev/null +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -0,0 +1,77 @@ +""" Tasks for Mercado Livre Ofertas dataset """ +# pylint: disable=invalid-name + + +import asyncio +import time +from prefect import task + +import pandas as pd + +from pipelines.utils.tasks import log +from pipelines.datasets.mercadolivre_ofertas.constants import ( + constants as const_mercadolivre, +) +from pipelines.datasets.mercadolivre_ofertas.utils import main + +less100 = const_mercadolivre.LESS100.value +oferta_dia = const_mercadolivre.OFERTA_DIA.value +relampago = const_mercadolivre.RELAMPAGO.value +barato_dia = const_mercadolivre.BARATO_DIA.value +kwargs_list = const_mercadolivre.KWARGS_LIST.value +tables_names = const_mercadolivre.TABLES_NAMES.value + +urls = [less100, oferta_dia, relampago, barato_dia] +dict_tables = dict(zip(tables_names, urls)) + + +@task +def crawler_mercadolivre_ofertas(): + """ + Executes the crawler for Mercado Livre offers by running the main process, processing the results, + and saving them to a CSV file. + + Returns: + str: The file path of the generated CSV file. + + Raises: + None + """ + loop = asyncio.get_event_loop() + contents = loop.run_until_complete(main(dict_tables, kwargs_list)) + time.sleep(5) + df = pd.DataFrame(contents) + total = df.shape[0] + # drop if title is None + df = df.dropna(subset=["title"]) + remained = df.shape[0] + # print percentage keeped + print(f"Percentage keeped: {remained/total*100:.2f}%") + new_order = [ + "title", + "review_amount", + "discount", + "transport_condition", + "stars", + "price", + "price_original", + "item_id_bd", + "seller_link", + "seller_id", + "seller", + "datetime", + "site_section", + "features", + "item_url", + "categories", + ] + df = df[new_order] + df = df.astype(str) + filepath = "/tmp/data/items_raw.csv" + df.to_csv(filepath, index=False) + + log(df.head(5)) + + loop.close() + + return filepath diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py new file mode 100644 index 000000000..c22fd1cfb --- /dev/null +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -0,0 +1,377 @@ +""" Utility functions for the Mercado Livre Ofertas dataset. """ + +import asyncio +import hashlib +import re +from datetime import datetime + +import requests +from bs4 import BeautifulSoup +from fake_useragent import UserAgent +import Levenshtein + +ua = UserAgent() + + +def retry(content_function): + """Decorator function that retries an asynchronous content retrieval function. + + Args: + content_function (callable): An asynchronous function that takes BeautifulSoup object and additional keyword arguments as parameters, and returns the desired content. + + Returns: + callable: A wrapper function that retries the content retrieval function. + + Raises: + None + + Example: + @retry + async def get_title(soup): + # Retrieves the title from a BeautifulSoup object + title = soup.title.string + return title + + # Usage + url = 'https://example.com' + title = await get_title(url) + """ + + async def wrapper(url, attempts=2, wait_time=2, **kwargs): + content = None + count = 0 + + while content is None and count < attempts: + # print(f'Attempt {count + 1} of {attempts}') + headers = {"User-Agent": "Chrome/39.0.2171.95"} + try: + response = await asyncio.to_thread( + requests.get, url, headers=headers, timeout=100 + ) + except: + print(url) + return None + await asyncio.sleep(wait_time) + soup = BeautifulSoup(response.text, "html.parser") + try: + content = content_function(soup, **kwargs) + except: + if count == (attempts - 1): + # Could not get content + content = None + count += 1 + # await asyncio.sleep(10) + + return content + + return wrapper + + +def generate_unique_id(text: str): + """ + Generates a unique ID based on the given text. + + Args: + text (str): The input text to generate the unique ID from. + + Returns: + str: The generated unique ID as a 16-digit string. + + Raises: + None + """ + # Convert the string to bytes + string_bytes = text.encode("utf-8") + + # Generate the SHA-256 hash + hash_object = hashlib.sha256(string_bytes) + hash_hex = hash_object.hexdigest() + + # Take the first 12 digits of the hexadecimal hash + hash_digits = hash_hex[:12] + + # Convert the hexadecimal digits to an integer + unique_id = int(hash_digits, 16) + + # Ensure the ID is positive + unique_id = str(int(abs(unique_id))) + # fill with zeros + unique_id = unique_id.zfill(16) + + return unique_id + + +@retry +def get_byelement(soup, **kwargs): + """ + Retrieves the content of an HTML element identified by the given attributes from a BeautifulSoup object. + + Args: + soup (BeautifulSoup): The BeautifulSoup object representing the HTML document. + **kwargs: Keyword arguments specifying the attributes to identify the HTML element. + + Returns: + str: The text content of the identified HTML element, after removing leading and trailing whitespaces. + + Raises: + None + """ + content = soup.find(**kwargs).text.strip() + + return content + + +def get_id(input_string, dictionary): + """ + Retrieves the value from a dictionary based on the input string, using the key with the closest Levenshtein distance. + + Args: + input_string (str): The input string for which to find the closest matching key in the dictionary. + dictionary (dict): The dictionary containing key-value pairs. + + Returns: + Any: The value associated with the key that has the closest Levenshtein distance to the input string. + Returns None if the dictionary is empty or no match is found. + + Raises: + None + """ + best_match = None + min_distance = float("inf") + + for key in dictionary: + distance = Levenshtein.distance(input_string.lower(), key.lower()) + if distance < min_distance: + min_distance = distance + best_match = key + + return dictionary.get(best_match) + + +def get_items_urls(url): + """ + Retrieves the URLs of items from the given URL by scraping the HTML content. + + Args: + url (str): The URL of the webpage containing the items. + + Returns: + list: A list of URLs of the items found on the webpage. + + Raises: + None + """ + response = requests.get(url) + soup = BeautifulSoup(response.text, "html.parser") + + items = soup.find_all(class_="promotion-item__link-container") + + items_urls = [item["href"] for item in items] + + return items_urls + + +@retry +def get_price(soup, **kwargs): + """ + Retrieves the price value from the HTML content represented by a BeautifulSoup object. + + Args: + soup (BeautifulSoup): The BeautifulSoup object representing the HTML document. + **kwargs: Keyword arguments specifying additional attributes to identify the HTML element. + + Returns: + str: The price value extracted from the identified HTML element. + + Raises: + None + """ + price = soup.find(itemprop="price")["content"] + return price + + +@retry +def get_features(soup): + """ + Retrieves the features from the HTML content represented by a BeautifulSoup object. + + Args: + soup (BeautifulSoup): The BeautifulSoup object representing the HTML document. + + Returns: + dict: A dictionary containing the extracted features, with keys as feature names and values as feature values. + + Raises: + None + """ + features = soup.find_all( + class_="ui-pdp-variations__picker ui-pdp-variations__picker-single" + ) + features_dict = { + k: v for k, v in [feature.text.strip().split(":") for feature in features] + } + return features_dict + + +@retry +def get_seller_link(soup): + """ + Retrieves the link to the seller from the HTML content represented by a BeautifulSoup object. + + Args: + soup (BeautifulSoup): The BeautifulSoup object representing the HTML document. + + Returns: + str: The link to the seller's page. + + Raises: + None + """ + class_seller = "ui-pdp-family--REGULAR ui-pdp-reputation-title-link non-selectable" + seller_link = soup.find(class_=class_seller)["href"] + return seller_link + + +@retry +def get_categories(soup): + """ + Retrieves the categories from the HTML content represented by a BeautifulSoup object. + + Args: + soup (BeautifulSoup): The BeautifulSoup object representing the HTML document. + + Returns: + list: A list of category names extracted from the HTML. + + Raises: + None + """ + categories = soup.find_all("a", class_="andes-breadcrumb__link") + categories_list = [category.text.strip() for category in categories] + return categories_list + + +@retry +def get_original_price(soup): + """ + Retrieves the original price from the HTML content represented by a BeautifulSoup object. + + Args: + soup (BeautifulSoup): The BeautifulSoup object representing the HTML document. + + Returns: + float: The original price extracted from the HTML. + + Raises: + None + """ + s_element = soup.find("s", class_="andes-money-amount--previous") + span_element = s_element.find("span", class_="andes-visually-hidden") + text = span_element.get_text(strip=True).strip() + parts = text.split() + + numerical_parts = [ + part for part in parts if part.isdigit() or part.replace(".", "", 1).isdigit() + ] + + float_amount = float(".".join(numerical_parts)) + + return float_amount + + +async def process_item_url(item_url, kwargs_list): + """ + Processes an item URL by retrieving various information using asynchronous operations. + + Args: + item_url (str): The URL of the item to process. + kwargs_list (list): A list of keyword argument dictionaries for the 'get_byelement' function. + + Returns: + dict: A dictionary containing the extracted information about the item. + + Raises: + None + """ + tasks = [ + get_byelement(url=item_url, attempts=5, wait_time=20, **kwargs) + for kwargs in kwargs_list + ] + results = await asyncio.gather(*tasks) + + keys = ["title", "review_amount", "discount", "transport_condition", "stars"] + + info = dict(zip(keys, results)) + price = await get_price(item_url, attempts=2) + info["price"] = price + price_original = await get_original_price(item_url, attempts=2) + info["price_original"] = price_original + if info["title"] is not None: + info["item_id_bd"] = generate_unique_id(info["title"]) + else: + info["item_id_bd"] = None + seller_link = await get_seller_link(item_url, attempts=5, wait_time=20) + info["seller_link"] = seller_link + if info["seller_link"] is not None: + info["seller_id"] = generate_unique_id(info["seller_link"]) + seller = info["seller_link"] + seller = " ".join(re.findall(r"([A-Z]+)+", seller.split("?")[0])) + seller = seller.strip().title() + info["seller"] = seller + else: + info["seller_id"] = None + + info["datetime"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + info["features"] = await get_features(item_url, attempts=2) + info["item_url"] = item_url + info["categories"] = await get_categories(item_url, attempts=2) + return info + + +async def process_table(table, url, kwargs_list): + """ + Processes a table of items by retrieving information for each item using asynchronous operations. + + Args: + table (str): The name or identifier of the table. + url (str): The URL of the webpage containing the items. + kwargs_list (list): A list of keyword argument dictionaries for the 'process_item_url' function. + + Returns: + list: A list of dictionaries containing the extracted information for each item. + + Raises: + None + """ + items_urls = get_items_urls(url) + tasks = [process_item_url(item_url, kwargs_list) for item_url in items_urls] + results = await asyncio.gather(*tasks) + + for result in results: + result["site_section"] = table + + return results + + +async def main(dict_tables, kwargs_list): + """ + Executes the main process by processing multiple tables and consolidating the results. + + Args: + dict_tables (dict): A dictionary mapping table names or identifiers to their respective URLs. + kwargs_list (list): A list of keyword argument dictionaries for the 'process_table' function. + + Returns: + list: A list containing the consolidated results from processing all the tables. + + Raises: + None + """ + contents = [] + coroutines = [ + process_table(table, url, kwargs_list) for table, url in dict_tables.items() + ] + results = await asyncio.gather(*coroutines) + for table_results in results: + contents.extend(table_results) + return contents From bcf194a6cfab697d901623b8dc89624a5b8ab33c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 16:40:08 +0000 Subject: [PATCH 02/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../mercadolivre_ofertas/constants.py | 22 ++++++++++++++----- .../datasets/mercadolivre_ofertas/flows.py | 4 +--- .../datasets/mercadolivre_ofertas/tasks.py | 1 + .../datasets/mercadolivre_ofertas/utils.py | 1 + 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/constants.py b/pipelines/datasets/mercadolivre_ofertas/constants.py index e72ed00aa..21ee09210 100644 --- a/pipelines/datasets/mercadolivre_ofertas/constants.py +++ b/pipelines/datasets/mercadolivre_ofertas/constants.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- from enum import Enum @@ -6,9 +7,18 @@ class constants(Enum): # pylint: disable=c0103 Constant values for the mercadolivre_ofertas project """ - LESS100 = 'https://www.mercadolivre.com.br/ofertas?container_id=MLB779362-1&price=0.0-100.0#origin=scut&filter_applied=price&filter_position=6&is_recommended_domain=false' - OFERTA_DIA = 'https://www.mercadolivre.com.br/ofertas#nav-header' - RELAMPAGO = 'https://www.mercadolivre.com.br/ofertas?promotion_type=lightning&container_id=MLB779362-1#origin=scut&filter_applied=promotion_type&filter_position=2&is_recommended_domain=false' - BARATO_DIA = 'https://www.mercadolivre.com.br/ofertas?deal_ids=MLB861109-2&container_id=MLB861109-2#origin=scut&filter_applied=deal_ids&filter_position=3&is_recommended_domain=false' - KWARGS_LIST = [{'class_':'ui-pdp-title'}, { 'class_':'ui-pdp-review__amount'} , { 'class_':'andes-money-amount__discount'}, { 'class_':'ui-pdp-color--BLACK ui-pdp-family--REGULAR ui-pdp-media__title ui-pdp-media__title--on-hover'}, { 'class_': 'ui-review-capability__rating__average ui-review-capability__rating__average--desktop'}] - + LESS100 = "https://www.mercadolivre.com.br/ofertas?container_id=MLB779362-1&price=0.0-100.0#origin=scut&filter_applied=price&filter_position=6&is_recommended_domain=false" + OFERTA_DIA = "https://www.mercadolivre.com.br/ofertas#nav-header" + RELAMPAGO = "https://www.mercadolivre.com.br/ofertas?promotion_type=lightning&container_id=MLB779362-1#origin=scut&filter_applied=promotion_type&filter_position=2&is_recommended_domain=false" + BARATO_DIA = "https://www.mercadolivre.com.br/ofertas?deal_ids=MLB861109-2&container_id=MLB861109-2#origin=scut&filter_applied=deal_ids&filter_position=3&is_recommended_domain=false" + KWARGS_LIST = [ + {"class_": "ui-pdp-title"}, + {"class_": "ui-pdp-review__amount"}, + {"class_": "andes-money-amount__discount"}, + { + "class_": "ui-pdp-color--BLACK ui-pdp-family--REGULAR ui-pdp-media__title ui-pdp-media__title--on-hover" + }, + { + "class_": "ui-review-capability__rating__average ui-review-capability__rating__average--desktop" + }, + ] diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 599875edb..801690310 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -28,9 +28,7 @@ name="mercadolivre_ofertas.item", code_owners=["lucascr91"] ) as mercadolivre_ofertas: # Parameters - dataset_id = Parameter( - "dataset_id", default="mercadolivre_ofertas", required=True - ) + dataset_id = Parameter("dataset_id", default="mercadolivre_ofertas", required=True) table_id = Parameter("table_id", default="item", required=True) materialization_mode = Parameter( "materialization_mode", default="dev", required=False diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 3d92f03b6..35a6e9f60 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """ Tasks for Mercado Livre Ofertas dataset """ # pylint: disable=invalid-name diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index c22fd1cfb..7b2e8d5c3 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- """ Utility functions for the Mercado Livre Ofertas dataset. """ import asyncio From 98df9515506da351aec38d79057936dd52904936 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 15:15:53 -0300 Subject: [PATCH 03/86] add package --- poetry.lock | 1887 +++++++----------------------------------------- pyproject.toml | 7 +- 2 files changed, 268 insertions(+), 1626 deletions(-) diff --git a/poetry.lock b/poetry.lock index 06a1a0cc5..455a08664 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,20 +1,3 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. - -[[package]] -name = "arrow" -version = "1.2.3" -description = "Better dates & times for Python" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, - {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, -] - -[package.dependencies] -python-dateutil = ">=2.7.0" - [[package]] name = "async-timeout" version = "4.0.2" @@ -22,10 +5,6 @@ description = "Timeout context manager for asyncio programs" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, - {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, -] [[package]] name = "basedosdados" @@ -34,10 +13,6 @@ description = "Organizar e facilitar o acesso a dados brasileiros através de ta category = "main" optional = false python-versions = ">=3.7.1,<3.11" -files = [ - {file = "basedosdados-1.6.9-py3-none-any.whl", hash = "sha256:9a73ad8a3667cca327d81c5d41ec809ed0675825dfc5d93d1efcf45f9bd1e867"}, - {file = "basedosdados-1.6.9.tar.gz", hash = "sha256:51783ea130944295dbc6b7dcbad8676ca0ff0234cdf2b4d212177bcd12db7921"}, -] [package.dependencies] ckanapi = "4.6" @@ -65,10 +40,6 @@ description = "Screen-scraping library" category = "main" optional = false python-versions = ">=3.6.0" -files = [ - {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, - {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, -] [package.dependencies] soupsieve = ">1.2" @@ -76,22 +47,6 @@ soupsieve = ">1.2" [package.extras] html5lib = ["html5lib"] lxml = ["lxml"] -openpyxl = ["openpyxl"] - -[[package]] -name = "binaryornot" -version = "0.4.4" -description = "Ultra-lightweight pure Python package to check if a file is binary or text." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4"}, - {file = "binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061"}, -] - -[package.dependencies] -chardet = ">=3.0.2" [[package]] name = "cachetools" @@ -100,10 +55,6 @@ description = "Extensible memoizing collections and decorators" category = "main" optional = false python-versions = "~=3.5" -files = [ - {file = "cachetools-4.2.4-py3-none-any.whl", hash = "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1"}, - {file = "cachetools-4.2.4.tar.gz", hash = "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"}, -] [[package]] name = "certifi" @@ -112,10 +63,6 @@ description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = "*" -files = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, -] [[package]] name = "cfgv" @@ -124,22 +71,6 @@ description = "Validate configuration and produce human readable error messages. category = "main" optional = false python-versions = ">=3.6.1" -files = [ - {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, -] - -[[package]] -name = "chardet" -version = "5.1.0" -description = "Universal encoding detector for Python 3" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "chardet-5.1.0-py3-none-any.whl", hash = "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"}, - {file = "chardet-5.1.0.tar.gz", hash = "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5"}, -] [[package]] name = "charset-normalizer" @@ -148,13 +79,9 @@ description = "The Real First Universal Charset Detector. Open, modern and activ category = "main" optional = false python-versions = ">=3.5.0" -files = [ - {file = "charset-normalizer-2.0.8.tar.gz", hash = "sha256:735e240d9a8506778cd7a453d97e817e536bb1fc29f4f6961ce297b9c7a917b0"}, - {file = "charset_normalizer-2.0.8-py3-none-any.whl", hash = "sha256:83fcdeb225499d6344c8f7f34684c2981270beacc32ede2e669e94f7fa544405"}, -] [package.extras] -unicode-backport = ["unicodedata2"] +unicode_backport = ["unicodedata2"] [[package]] name = "ckanapi" @@ -163,15 +90,11 @@ description = "A command line interface and Python module for accessing the CKAN category = "main" optional = false python-versions = "*" -files = [ - {file = "ckanapi-4.6.tar.gz", hash = "sha256:35361965bfb38c8e146d7229f2d7c3aaf1c0f2ef547de4239b4d38931bf081d2"}, -] [package.dependencies] docopt = "*" python-slugify = ">=1.0" requests = "*" -setuptools = "*" six = ">=1.9,<2.0" [[package]] @@ -181,10 +104,6 @@ description = "Composable command line interface toolkit" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, - {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"}, -] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -196,10 +115,6 @@ description = "Extended pickling support for Python objects" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "cloudpickle-2.0.0-py3-none-any.whl", hash = "sha256:6b2df9741d06f43839a3275c4e6632f7df6487a1f181f5f46a052d3c917c3d11"}, - {file = "cloudpickle-2.0.0.tar.gz", hash = "sha256:5cd02f3b417a783ba84a4ec3e290ff7929009fe51f6405423cfccfadd43ba4a4"}, -] [[package]] name = "colorama" @@ -208,168 +123,32 @@ description = "Cross-platform colored terminal text." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] [[package]] name = "contourpy" -version = "1.0.7" +version = "1.1.0" description = "Python library for calculating contours of 2D quadrilateral grids" category = "main" optional = false python-versions = ">=3.8" -files = [ - {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:95c3acddf921944f241b6773b767f1cbce71d03307270e2d769fd584d5d1092d"}, - {file = "contourpy-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fc1464c97579da9f3ab16763c32e5c5d5bb5fa1ec7ce509a4ca6108b61b84fab"}, - {file = "contourpy-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8acf74b5d383414401926c1598ed77825cd530ac7b463ebc2e4f46638f56cce6"}, - {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c71fdd8f1c0f84ffd58fca37d00ca4ebaa9e502fb49825484da075ac0b0b803"}, - {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99e9486bf1bb979d95d5cffed40689cb595abb2b841f2991fc894b3452290e8"}, - {file = "contourpy-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f4d8941a9564cda3f7fa6a6cd9b32ec575830780677932abdec7bcb61717b0"}, - {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e20e5a1908e18aaa60d9077a6d8753090e3f85ca25da6e25d30dc0a9e84c2c6"}, - {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a877ada905f7d69b2a31796c4b66e31a8068b37aa9b78832d41c82fc3e056ddd"}, - {file = "contourpy-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6381fa66866b0ea35e15d197fc06ac3840a9b2643a6475c8fff267db8b9f1e69"}, - {file = "contourpy-1.0.7-cp310-cp310-win32.whl", hash = "sha256:3c184ad2433635f216645fdf0493011a4667e8d46b34082f5a3de702b6ec42e3"}, - {file = "contourpy-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:3caea6365b13119626ee996711ab63e0c9d7496f65641f4459c60a009a1f3e80"}, - {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ed33433fc3820263a6368e532f19ddb4c5990855e4886088ad84fd7c4e561c71"}, - {file = "contourpy-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:38e2e577f0f092b8e6774459317c05a69935a1755ecfb621c0a98f0e3c09c9a5"}, - {file = "contourpy-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae90d5a8590e5310c32a7630b4b8618cef7563cebf649011da80874d0aa8f414"}, - {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130230b7e49825c98edf0b428b7aa1125503d91732735ef897786fe5452b1ec2"}, - {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58569c491e7f7e874f11519ef46737cea1d6eda1b514e4eb5ac7dab6aa864d02"}, - {file = "contourpy-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d43960d809c4c12508a60b66cb936e7ed57d51fb5e30b513934a4a23874fae"}, - {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:152fd8f730c31fd67fe0ffebe1df38ab6a669403da93df218801a893645c6ccc"}, - {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9056c5310eb1daa33fc234ef39ebfb8c8e2533f088bbf0bc7350f70a29bde1ac"}, - {file = "contourpy-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a9d7587d2fdc820cc9177139b56795c39fb8560f540bba9ceea215f1f66e1566"}, - {file = "contourpy-1.0.7-cp311-cp311-win32.whl", hash = "sha256:4ee3ee247f795a69e53cd91d927146fb16c4e803c7ac86c84104940c7d2cabf0"}, - {file = "contourpy-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:5caeacc68642e5f19d707471890f037a13007feba8427eb7f2a60811a1fc1350"}, - {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd7dc0e6812b799a34f6d12fcb1000539098c249c8da54f3566c6a6461d0dbad"}, - {file = "contourpy-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0f9d350b639db6c2c233d92c7f213d94d2e444d8e8fc5ca44c9706cf72193772"}, - {file = "contourpy-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e96a08b62bb8de960d3a6afbc5ed8421bf1a2d9c85cc4ea73f4bc81b4910500f"}, - {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031154ed61f7328ad7f97662e48660a150ef84ee1bc8876b6472af88bf5a9b98"}, - {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e9ebb4425fc1b658e13bace354c48a933b842d53c458f02c86f371cecbedecc"}, - {file = "contourpy-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efb8f6d08ca7998cf59eaf50c9d60717f29a1a0a09caa46460d33b2924839dbd"}, - {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6c180d89a28787e4b73b07e9b0e2dac7741261dbdca95f2b489c4f8f887dd810"}, - {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b8d587cc39057d0afd4166083d289bdeff221ac6d3ee5046aef2d480dc4b503c"}, - {file = "contourpy-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:769eef00437edf115e24d87f8926955f00f7704bede656ce605097584f9966dc"}, - {file = "contourpy-1.0.7-cp38-cp38-win32.whl", hash = "sha256:62398c80ef57589bdbe1eb8537127321c1abcfdf8c5f14f479dbbe27d0322e66"}, - {file = "contourpy-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:57119b0116e3f408acbdccf9eb6ef19d7fe7baf0d1e9aaa5381489bc1aa56556"}, - {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:30676ca45084ee61e9c3da589042c24a57592e375d4b138bd84d8709893a1ba4"}, - {file = "contourpy-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e927b3868bd1e12acee7cc8f3747d815b4ab3e445a28d2e5373a7f4a6e76ba1"}, - {file = "contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:366a0cf0fc079af5204801786ad7a1c007714ee3909e364dbac1729f5b0849e5"}, - {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ba9bb365446a22411f0673abf6ee1fea3b2cf47b37533b970904880ceb72f3"}, - {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:71b0bf0c30d432278793d2141362ac853859e87de0a7dee24a1cea35231f0d50"}, - {file = "contourpy-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7281244c99fd7c6f27c1c6bfafba878517b0b62925a09b586d88ce750a016d2"}, - {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b6d0f9e1d39dbfb3977f9dd79f156c86eb03e57a7face96f199e02b18e58d32a"}, - {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7f6979d20ee5693a1057ab53e043adffa1e7418d734c1532e2d9e915b08d8ec2"}, - {file = "contourpy-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5dd34c1ae752515318224cba7fc62b53130c45ac6a1040c8b7c1a223c46e8967"}, - {file = "contourpy-1.0.7-cp39-cp39-win32.whl", hash = "sha256:c5210e5d5117e9aec8c47d9156d1d3835570dd909a899171b9535cb4a3f32693"}, - {file = "contourpy-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:60835badb5ed5f4e194a6f21c09283dd6e007664a86101431bf870d9e86266c4"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce41676b3d0dd16dbcfabcc1dc46090aaf4688fd6e819ef343dbda5a57ef0161"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a011cf354107b47c58ea932d13b04d93c6d1d69b8b6dce885e642531f847566"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31a55dccc8426e71817e3fe09b37d6d48ae40aae4ecbc8c7ad59d6893569c436"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69f8ff4db108815addd900a74df665e135dbbd6547a8a69333a68e1f6e368ac2"}, - {file = "contourpy-1.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efe99298ba37e37787f6a2ea868265465410822f7bea163edcc1bd3903354ea9"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a1e97b86f73715e8670ef45292d7cc033548266f07d54e2183ecb3c87598888f"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc331c13902d0f50845099434cd936d49d7a2ca76cb654b39691974cb1e4812d"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24847601071f740837aefb730e01bd169fbcaa610209779a78db7ebb6e6a7051"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abf298af1e7ad44eeb93501e40eb5a67abbf93b5d90e468d01fc0c4451971afa"}, - {file = "contourpy-1.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:64757f6460fc55d7e16ed4f1de193f362104285c667c112b50a804d482777edd"}, - {file = "contourpy-1.0.7.tar.gz", hash = "sha256:d8165a088d31798b59e91117d1f5fc3df8168d8b48c4acc10fc0df0d0bdbcc5e"}, -] [package.dependencies] numpy = ">=1.16" [package.extras] -bokeh = ["bokeh", "chromedriver", "selenium"] docs = ["furo", "sphinx-copybutton"] -mypy = ["contourpy[bokeh]", "docutils-stubs", "mypy (==0.991)", "types-Pillow"] -test = ["Pillow", "matplotlib", "pytest"] -test-no-images = ["pytest"] - -[[package]] -name = "cookiecutter" -version = "1.7.3" -description = "A command-line utility that creates projects from project templates, e.g. creating a Python package project from a Python package project template." -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "cookiecutter-1.7.3-py2.py3-none-any.whl", hash = "sha256:f8671531fa96ab14339d0c59b4f662a4f12a2ecacd94a0f70a3500843da588e2"}, - {file = "cookiecutter-1.7.3.tar.gz", hash = "sha256:6b9a4d72882e243be077a7397d0f1f76fe66cf3df91f3115dbb5330e214fa457"}, -] - -[package.dependencies] -binaryornot = ">=0.4.4" -click = ">=7.0" -Jinja2 = ">=2.7,<4.0.0" -jinja2-time = ">=0.2.0" -poyo = ">=0.5.0" -python-slugify = ">=4.0.0" -requests = ">=2.23.0" -six = ">=1.10" +bokeh = ["bokeh", "selenium"] +mypy = ["contourpy", "docutils-stubs", "mypy (==1.2.0)", "types-pillow"] +test = ["contourpy", "matplotlib", "pillow"] +test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.2.3" +version = "7.2.7" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" -files = [ - {file = "coverage-7.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e58c0d41d336569d63d1b113bd573db8363bc4146f39444125b7f8060e4e04f5"}, - {file = "coverage-7.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:344e714bd0fe921fc72d97404ebbdbf9127bac0ca1ff66d7b79efc143cf7c0c4"}, - {file = "coverage-7.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974bc90d6f6c1e59ceb1516ab00cf1cdfbb2e555795d49fa9571d611f449bcb2"}, - {file = "coverage-7.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0743b0035d4b0e32bc1df5de70fba3059662ace5b9a2a86a9f894cfe66569013"}, - {file = "coverage-7.2.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d0391fb4cfc171ce40437f67eb050a340fdbd0f9f49d6353a387f1b7f9dd4fa"}, - {file = "coverage-7.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a42e1eff0ca9a7cb7dc9ecda41dfc7cbc17cb1d02117214be0561bd1134772b"}, - {file = "coverage-7.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:be19931a8dcbe6ab464f3339966856996b12a00f9fe53f346ab3be872d03e257"}, - {file = "coverage-7.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72fcae5bcac3333a4cf3b8f34eec99cea1187acd55af723bcbd559adfdcb5535"}, - {file = "coverage-7.2.3-cp310-cp310-win32.whl", hash = "sha256:aeae2aa38395b18106e552833f2a50c27ea0000122bde421c31d11ed7e6f9c91"}, - {file = "coverage-7.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:83957d349838a636e768251c7e9979e899a569794b44c3728eaebd11d848e58e"}, - {file = "coverage-7.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfd393094cd82ceb9b40df4c77976015a314b267d498268a076e940fe7be6b79"}, - {file = "coverage-7.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:182eb9ac3f2b4874a1f41b78b87db20b66da6b9cdc32737fbbf4fea0c35b23fc"}, - {file = "coverage-7.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bb1e77a9a311346294621be905ea8a2c30d3ad371fc15bb72e98bfcfae532df"}, - {file = "coverage-7.2.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca0f34363e2634deffd390a0fef1aa99168ae9ed2af01af4a1f5865e362f8623"}, - {file = "coverage-7.2.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55416d7385774285b6e2a5feca0af9652f7f444a4fa3d29d8ab052fafef9d00d"}, - {file = "coverage-7.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06ddd9c0249a0546997fdda5a30fbcb40f23926df0a874a60a8a185bc3a87d93"}, - {file = "coverage-7.2.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fff5aaa6becf2c6a1699ae6a39e2e6fb0672c2d42eca8eb0cafa91cf2e9bd312"}, - {file = "coverage-7.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ea53151d87c52e98133eb8ac78f1206498c015849662ca8dc246255265d9c3c4"}, - {file = "coverage-7.2.3-cp311-cp311-win32.whl", hash = "sha256:8f6c930fd70d91ddee53194e93029e3ef2aabe26725aa3c2753df057e296b925"}, - {file = "coverage-7.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:fa546d66639d69aa967bf08156eb8c9d0cd6f6de84be9e8c9819f52ad499c910"}, - {file = "coverage-7.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b2317d5ed777bf5a033e83d4f1389fd4ef045763141d8f10eb09a7035cee774c"}, - {file = "coverage-7.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be9824c1c874b73b96288c6d3de793bf7f3a597770205068c6163ea1f326e8b9"}, - {file = "coverage-7.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3b2803e730dc2797a017335827e9da6da0e84c745ce0f552e66400abdfb9a1"}, - {file = "coverage-7.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f69770f5ca1994cb32c38965e95f57504d3aea96b6c024624fdd5bb1aa494a1"}, - {file = "coverage-7.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1127b16220f7bfb3f1049ed4a62d26d81970a723544e8252db0efde853268e21"}, - {file = "coverage-7.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:aa784405f0c640940595fa0f14064d8e84aff0b0f762fa18393e2760a2cf5841"}, - {file = "coverage-7.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3146b8e16fa60427e03884301bf8209221f5761ac754ee6b267642a2fd354c48"}, - {file = "coverage-7.2.3-cp37-cp37m-win32.whl", hash = "sha256:1fd78b911aea9cec3b7e1e2622c8018d51c0d2bbcf8faaf53c2497eb114911c1"}, - {file = "coverage-7.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f3736a5d34e091b0a611964c6262fd68ca4363df56185902528f0b75dbb9c1f"}, - {file = "coverage-7.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:981b4df72c93e3bc04478153df516d385317628bd9c10be699c93c26ddcca8ab"}, - {file = "coverage-7.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0045f8f23a5fb30b2eb3b8a83664d8dc4fb58faddf8155d7109166adb9f2040"}, - {file = "coverage-7.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f760073fcf8f3d6933178d67754f4f2d4e924e321f4bb0dcef0424ca0215eba1"}, - {file = "coverage-7.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c86bd45d1659b1ae3d0ba1909326b03598affbc9ed71520e0ff8c31a993ad911"}, - {file = "coverage-7.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:172db976ae6327ed4728e2507daf8a4de73c7cc89796483e0a9198fd2e47b462"}, - {file = "coverage-7.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d2a3a6146fe9319926e1d477842ca2a63fe99af5ae690b1f5c11e6af074a6b5c"}, - {file = "coverage-7.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f649dd53833b495c3ebd04d6eec58479454a1784987af8afb77540d6c1767abd"}, - {file = "coverage-7.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c4ed4e9f3b123aa403ab424430b426a1992e6f4c8fd3cb56ea520446e04d152"}, - {file = "coverage-7.2.3-cp38-cp38-win32.whl", hash = "sha256:eb0edc3ce9760d2f21637766c3aa04822030e7451981ce569a1b3456b7053f22"}, - {file = "coverage-7.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:63cdeaac4ae85a179a8d6bc09b77b564c096250d759eed343a89d91bce8b6367"}, - {file = "coverage-7.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:20d1a2a76bb4eb00e4d36b9699f9b7aba93271c9c29220ad4c6a9581a0320235"}, - {file = "coverage-7.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ea748802cc0de4de92ef8244dd84ffd793bd2e7be784cd8394d557a3c751e21"}, - {file = "coverage-7.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21b154aba06df42e4b96fc915512ab39595105f6c483991287021ed95776d934"}, - {file = "coverage-7.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd214917cabdd6f673a29d708574e9fbdb892cb77eb426d0eae3490d95ca7859"}, - {file = "coverage-7.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2e58e45fe53fab81f85474e5d4d226eeab0f27b45aa062856c89389da2f0d9"}, - {file = "coverage-7.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:87ecc7c9a1a9f912e306997ffee020297ccb5ea388421fe62a2a02747e4d5539"}, - {file = "coverage-7.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:387065e420aed3c71b61af7e82c7b6bc1c592f7e3c7a66e9f78dd178699da4fe"}, - {file = "coverage-7.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ea3f5bc91d7d457da7d48c7a732beaf79d0c8131df3ab278e6bba6297e23c6c4"}, - {file = "coverage-7.2.3-cp39-cp39-win32.whl", hash = "sha256:ae7863a1d8db6a014b6f2ff9c1582ab1aad55a6d25bac19710a8df68921b6e30"}, - {file = "coverage-7.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:3f04becd4fcda03c0160d0da9c8f0c246bc78f2f7af0feea1ec0930e7c93fa4a"}, - {file = "coverage-7.2.3-pp37.pp38.pp39-none-any.whl", hash = "sha256:965ee3e782c7892befc25575fa171b521d33798132692df428a09efacaffe8d0"}, - {file = "coverage-7.2.3.tar.gz", hash = "sha256:d298c2815fa4891edd9abe5ad6e6cb4207104c7dd9fd13aea3fdebf6f9b91259"}, -] [package.dependencies] tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} @@ -384,10 +163,6 @@ description = "croniter provides iteration for datetime object with cron like fo category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "croniter-1.0.15-py2.py3-none-any.whl", hash = "sha256:0f97b361fe343301a8f66f852e7d84e4fb7f21379948f71e1bbfe10f5d015fbd"}, - {file = "croniter-1.0.15.tar.gz", hash = "sha256:a70dfc9d52de9fc1a886128b9148c89dd9e76b67d55f46516ca94d2d73d58219"}, -] [package.dependencies] python-dateutil = "*" @@ -399,10 +174,6 @@ description = "Composable style cycles" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, -] [[package]] name = "dask" @@ -411,10 +182,6 @@ description = "Parallel PyData with Task Scheduling" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "dask-2021.11.2-py3-none-any.whl", hash = "sha256:2b0ad7beba8950add4fdc7c5cb94fa9444915ddb00c711d5743e2c4bb0a95ef5"}, - {file = "dask-2021.11.2.tar.gz", hash = "sha256:e12bfe272928d62fa99623d98d0e0b0c045b33a47509ef31a22175aa5fd10917"}, -] [package.dependencies] cloudpickle = ">=1.1.1" @@ -430,7 +197,7 @@ complete = ["bokeh (>=1.0.0,!=2.0.0)", "distributed (==2021.11.2)", "jinja2", "n dataframe = ["numpy (>=1.18)", "pandas (>=1.0)"] diagnostics = ["bokeh (>=1.0.0,!=2.0.0)", "jinja2"] distributed = ["distributed (==2021.11.2)"] -test = ["pre-commit", "pytest", "pytest-rerunfailures", "pytest-xdist"] +test = ["pytest", "pytest-rerunfailures", "pytest-xdist", "pre-commit"] [[package]] name = "db-dtypes" @@ -439,10 +206,6 @@ description = "Pandas Data Types for SQL systems (BigQuery, Spanner)" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "db-dtypes-1.1.1.tar.gz", hash = "sha256:ab485c85fef2454f3182427def0b0a3ab179b2871542787d33ba519d62078883"}, - {file = "db_dtypes-1.1.1-py2.py3-none-any.whl", hash = "sha256:23be34ea2bc91065447ecea4d5f107e46d1de223d152e69fa73673a62d5bd27d"}, -] [package.dependencies] numpy = ">=1.16.6" @@ -457,10 +220,6 @@ description = "A simple client for DBT RPC instances" category = "main" optional = false python-versions = ">=3.8,<4.0" -files = [ - {file = "dbt-client-0.1.3.tar.gz", hash = "sha256:192fff51a51d6d002d4048dd494e601592599e004c0f31f1ea5156aa6d516cf5"}, - {file = "dbt_client-0.1.3-py3-none-any.whl", hash = "sha256:31a0db4844c1559c95c643a6f57d1e39d4e9c3b4d9a8c867f7b3e6ed75cedca0"}, -] [package.dependencies] requests = ">=2.26.0,<3.0.0" @@ -472,10 +231,6 @@ description = "serialize all of python" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, - {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, -] [package.extras] graph = ["objgraph (>=1.7.2)"] @@ -487,10 +242,6 @@ description = "Distribution utilities" category = "main" optional = false python-versions = "*" -files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, -] [[package]] name = "distributed" @@ -499,10 +250,6 @@ description = "Distributed scheduler for Dask" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "distributed-2021.11.2-py3-none-any.whl", hash = "sha256:af1f7b98d85d43886fefe2354379c848c7a5aa6ae4d2313a7aca9ab9081a7e56"}, - {file = "distributed-2021.11.2.tar.gz", hash = "sha256:f86a01a2e1e678865d2e42300c47552b5012cd81a2d354e47827a1fd074cc302"}, -] [package.dependencies] click = ">=6.6" @@ -512,7 +259,6 @@ jinja2 = "*" msgpack = ">=0.6.0" psutil = ">=5.0" pyyaml = "*" -setuptools = "*" sortedcontainers = "<2.0.0 || >2.0.0,<2.0.1 || >2.0.1" tblib = ">=1.6.0" toolz = ">=0.8.2" @@ -526,10 +272,6 @@ description = "A Python library for the Docker Engine API." category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, - {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, -] [package.dependencies] pywin32 = {version = "227", markers = "sys_platform == \"win32\""} @@ -538,7 +280,7 @@ websocket-client = ">=0.32.0" [package.extras] ssh = ["paramiko (>=2.4.2)"] -tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] +tls = ["pyOpenSSL (>=17.5.0)", "cryptography (>=3.4.7)", "idna (>=2.0.0)"] [[package]] name = "docopt" @@ -547,9 +289,14 @@ description = "Pythonic argument parser, that will make you smile" category = "main" optional = false python-versions = "*" -files = [ - {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, -] + +[[package]] +name = "et-xmlfile" +version = "1.1.0" +description = "An implementation of lxml.xmlfile for the standard library" +category = "main" +optional = false +python-versions = ">=3.6" [[package]] name = "exceptiongroup" @@ -558,14 +305,21 @@ description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, -] [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "fake-useragent" +version = "1.1.3" +description = "Up-to-date simple useragent faker with real world database" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +importlib-resources = {version = ">=5.0", markers = "python_version < \"3.10\""} + [[package]] name = "fastavro" version = "1.5.4" @@ -573,64 +327,37 @@ description = "Fast read/write of AVRO files" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "fastavro-1.5.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:d316cc476b2b24ef06402b8bfa047f8f72a9d6df2de777bb30d9ededda7e3a02"}, - {file = "fastavro-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8459faec46e34f2dfeb9b70ee8c36e935e626cff8608d675724718987a5f9ce5"}, - {file = "fastavro-1.5.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd44636d7ff8365a57b88707b747371fffb676c8c1f68c0d423ec36623888668"}, - {file = "fastavro-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:2402428b26d3c08a58acfa723833e19fb75077872bcb2475a4c81195cdae6a5d"}, - {file = "fastavro-1.5.4-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:5afc14398f4191d1a807aa59d2fba5ed869b31343679ec43dbc289db0a8e35c5"}, - {file = "fastavro-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5217e9713a3ea03205532394fba4d743749155b04b10b12a12fc26d225b89792"}, - {file = "fastavro-1.5.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e93a5eecb28cc35d670c9c4df70223fa9bcd6d9ca21b38b1b7ae13ece60c7fb"}, - {file = "fastavro-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:1a2f2465efd0e7de557c4034e8d4d88a132750cfa51e1582362a1b3a1a9fa911"}, - {file = "fastavro-1.5.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f7d5bc76c03c692d9acea0e5d5baceec19e1c059b26cb8ae9f4481e842be95a5"}, - {file = "fastavro-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80fe920229ab1f40eccb1b4918481cdd8a20e5e7dce19308ab38b23732da8a70"}, - {file = "fastavro-1.5.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3d190aee86ab73caa1aa550eba850be2ca5dd29d814b38720f4e300184e01d5"}, - {file = "fastavro-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b6c30299a49b11f42251cb81c8e15db67750642eac7ba5c194a5ee95c83ebb11"}, - {file = "fastavro-1.5.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:1f7685f3a3c38352abab432bad2f9f2229a0e5f5f8548831e887c30f8396f2e9"}, - {file = "fastavro-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd021ec850fd30020b7c4fa868466fb7f95450f1f06eac92bd2204cbd8e45fb8"}, - {file = "fastavro-1.5.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06a7b5602dfa032c92f20ca90b8bde88251573773e501bedf5e8b76b9feb14a3"}, - {file = "fastavro-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:18250aa2ab0f7a095b1865565cf9976ea4605c201129636e6defe24ec3ef112c"}, - {file = "fastavro-1.5.4.tar.gz", hash = "sha256:d86f72c966713fb699570a18f7960cf4110b069c70681d7538be8d671c9db7c8"}, -] [package.extras] -codecs = ["lz4", "python-snappy", "zstandard"] +codecs = ["python-snappy", "zstandard", "lz4"] lz4 = ["lz4"] snappy = ["python-snappy"] zstandard = ["zstandard"] [[package]] name = "filelock" -version = "3.12.0" +version = "3.12.2" description = "A platform independent file lock." category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"}, - {file = "filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"}, -] [package.extras] -docs = ["furo (>=2023.3.27)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.5.20)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)", "sphinx (>=7.0.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)", "pytest (>=7.3.1)"] [[package]] name = "fonttools" -version = "4.39.3" +version = "4.40.0" description = "Tools to manipulate font files" category = "main" optional = false python-versions = ">=3.8" -files = [ - {file = "fonttools-4.39.3-py3-none-any.whl", hash = "sha256:64c0c05c337f826183637570ac5ab49ee220eec66cf50248e8df527edfa95aeb"}, - {file = "fonttools-4.39.3.zip", hash = "sha256:9234b9f57b74e31b192c3fc32ef1a40750a8fbc1cd9837a7b7bfc4ca4a5c51d7"}, -] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.0.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=15.0.0)", "xattr"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] +interpolatable = ["scipy", "munkres"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -639,7 +366,7 @@ symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] unicode = ["unicodedata2 (>=15.0.0)"] -woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] +woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] [[package]] name = "fsspec" @@ -648,17 +375,13 @@ description = "File-system specification" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "fsspec-2021.11.1-py3-none-any.whl", hash = "sha256:bcb136caa37e1470dd8314a7d3917cb9b25dd9da44c10d36df556ab4ef038185"}, - {file = "fsspec-2021.11.1.tar.gz", hash = "sha256:03683e606651d5e4bd9180525d57477bd5430e5dc68d2e459835dc14cecc3dd4"}, -] [package.extras] abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] -dropbox = ["dropbox", "dropboxdrivefs", "requests"] +dropbox = ["dropboxdrivefs", "requests", "dropbox"] entrypoints = ["importlib-metadata"] fuse = ["fusepy"] gcs = ["gcsfs"] @@ -667,7 +390,7 @@ github = ["requests"] gs = ["gcsfs"] gui = ["panel"] hdfs = ["pyarrow (>=1)"] -http = ["aiohttp", "requests"] +http = ["requests", "aiohttp"] libarchive = ["libarchive-c"] oci = ["ocifs"] s3 = ["s3fs"] @@ -682,10 +405,6 @@ description = "" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "google-analytics-data-0.12.1.tar.gz", hash = "sha256:8d5436797338683ff80988d6303e1bbeca01a1d7ece73c248fe2315aa2ae70dc"}, - {file = "google_analytics_data-0.12.1-py2.py3-none-any.whl", hash = "sha256:320a16df6624606abbceef85c6b0a67727eff48f27da347630929b3ee28cd5ff"}, -] [package.dependencies] google-api-core = {version = ">=1.31.5,<2.0.0 || >2.3.0,<3.0.0dev", extras = ["grpc"]} @@ -699,10 +418,6 @@ description = "Google API client core library" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -files = [ - {file = "google-api-core-1.31.5.tar.gz", hash = "sha256:85d2074f2c8f9c07e614d7f978767d71ceb7d40647814ef4236d3a0ef671ee75"}, - {file = "google_api_core-1.31.5-py2.py3-none-any.whl", hash = "sha256:6815207a8b422e9da42c200681603f304b25f98c98b675a9db9fdc3717e44280"}, -] [package.dependencies] google-auth = ">=1.25.0,<2.0dev" @@ -712,7 +427,6 @@ packaging = ">=14.3" protobuf = {version = ">=3.12.0", markers = "python_version > \"3\""} pytz = "*" requests = ">=2.18.0,<3.0.0dev" -setuptools = ">=40.3.0" six = ">=1.13.0" [package.extras] @@ -722,21 +436,17 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2)"] [[package]] name = "google-api-python-client" -version = "2.86.0" +version = "2.91.0" description = "Google API Client Library for Python" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "google-api-python-client-2.86.0.tar.gz", hash = "sha256:3ca4e93821f4e9ac29b91ab0d9df168b42c8ad0fb8bff65b8c2ccb2d462b0464"}, - {file = "google_api_python_client-2.86.0-py2.py3-none-any.whl", hash = "sha256:0f320190ab9d5bd2fdb0cb894e8e53bb5e17d4888ee8dc4d26ba65ce378409e2"}, -] [package.dependencies] -google-api-core = ">=1.31.5,<2.0.0 || >2.3.0,<3.0.0dev" -google-auth = ">=1.19.0,<3.0.0dev" +google-api-core = ">=1.31.5,<2.0.0 || >2.3.0,<3.0.0.dev0" +google-auth = ">=1.19.0,<3.0.0.dev0" google-auth-httplib2 = ">=0.1.0" -httplib2 = ">=0.15.0,<1dev" +httplib2 = ">=0.15.0,<1.dev0" uritemplate = ">=3.0.1,<5" [[package]] @@ -746,20 +456,15 @@ description = "Google Authentication Library" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -files = [ - {file = "google-auth-1.35.0.tar.gz", hash = "sha256:b7033be9028c188ee30200b204ea00ed82ea1162e8ac1df4aa6ded19a191d88e"}, - {file = "google_auth-1.35.0-py2.py3-none-any.whl", hash = "sha256:997516b42ecb5b63e8d80f5632c1a61dddf41d2a4c2748057837e06e00014258"}, -] [package.dependencies] cachetools = ">=2.0.0,<5.0" pyasn1-modules = ">=0.2.1" rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} -setuptools = ">=40.3.0" six = ">=1.9.0" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] +aiohttp = ["requests (>=2.20.0,<3.0.0dev)", "aiohttp (>=3.6.2,<4.0.0dev)"] pyopenssl = ["pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] @@ -770,10 +475,6 @@ description = "Google Authentication Library: httplib2 transport" category = "main" optional = false python-versions = "*" -files = [ - {file = "google-auth-httplib2-0.1.0.tar.gz", hash = "sha256:a07c39fd632becacd3f07718dfd6021bf396978f03ad3ce4321d060015cc30ac"}, - {file = "google_auth_httplib2-0.1.0-py2.py3-none-any.whl", hash = "sha256:31e49c36c6b5643b57e82617cb3e021e3e1d2df9da63af67252c02fa9c1f4a10"}, -] [package.dependencies] google-auth = "*" @@ -787,10 +488,6 @@ description = "Google Authentication Library" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "google-auth-oauthlib-0.4.6.tar.gz", hash = "sha256:a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a"}, - {file = "google_auth_oauthlib-0.4.6-py2.py3-none-any.whl", hash = "sha256:3f2a6e802eebbb6fb736a370fbf3b055edcb6b52878bf2f26330b5e041316c73"}, -] [package.dependencies] google-auth = ">=1.0.0" @@ -806,10 +503,6 @@ description = "Google BigQuery API client library" category = "main" optional = false python-versions = ">=3.6, <3.11" -files = [ - {file = "google-cloud-bigquery-2.30.1.tar.gz", hash = "sha256:4e3b5e3dcc475d5a601d84872ac0b63e059540be2251b1c4165c51106d572855"}, - {file = "google_cloud_bigquery-2.30.1-py2.py3-none-any.whl", hash = "sha256:c62d601aa0f62388e1909d11de40db7597b02fb8602ccb7f21a3ac2a0997495b"}, -] [package.dependencies] google-api-core = {version = ">=1.29.0,<3.0.0dev", extras = ["grpc"]} @@ -823,11 +516,11 @@ python-dateutil = ">=2.7.2,<3.0dev" requests = ">=2.18.0,<3.0.0dev" [package.extras] -all = ["Shapely (>=1.6.0,<2.0dev)", "geopandas (>=0.9.0,<1.0dev)", "google-cloud-bigquery-storage (>=2.0.0,<3.0.0dev)", "grpcio (>=1.38.1,<2.0dev)", "opentelemetry-api (>=0.11b0)", "opentelemetry-instrumentation (>=0.11b0)", "opentelemetry-sdk (>=0.11b0)", "pandas (>=0.24.2)", "pyarrow (>=3.0.0,<7.0dev)", "tqdm (>=4.7.4,<5.0.0dev)"] -bignumeric-type = ["pyarrow (>=3.0.0,<7.0dev)"] +all = ["google-cloud-bigquery-storage (>=2.0.0,<3.0.0dev)", "grpcio (>=1.38.1,<2.0dev)", "pyarrow (>=3.0.0,<7.0dev)", "geopandas (>=0.9.0,<1.0dev)", "Shapely (>=1.6.0,<2.0dev)", "pandas (>=0.24.2)", "tqdm (>=4.7.4,<5.0.0dev)", "opentelemetry-api (>=0.11b0)", "opentelemetry-sdk (>=0.11b0)", "opentelemetry-instrumentation (>=0.11b0)"] +bignumeric_type = ["pyarrow (>=3.0.0,<7.0dev)"] bqstorage = ["google-cloud-bigquery-storage (>=2.0.0,<3.0.0dev)", "grpcio (>=1.38.1,<2.0dev)", "pyarrow (>=3.0.0,<7.0dev)"] -geopandas = ["Shapely (>=1.6.0,<2.0dev)", "geopandas (>=0.9.0,<1.0dev)"] -opentelemetry = ["opentelemetry-api (>=0.11b0)", "opentelemetry-instrumentation (>=0.11b0)", "opentelemetry-sdk (>=0.11b0)"] +geopandas = ["geopandas (>=0.9.0,<1.0dev)", "Shapely (>=1.6.0,<2.0dev)"] +opentelemetry = ["opentelemetry-api (>=0.11b0)", "opentelemetry-sdk (>=0.11b0)", "opentelemetry-instrumentation (>=0.11b0)"] pandas = ["pandas (>=0.24.2)", "pyarrow (>=3.0.0,<7.0dev)"] tqdm = ["tqdm (>=4.7.4,<5.0.0dev)"] @@ -838,10 +531,6 @@ description = "BigQuery Storage API API client library" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -files = [ - {file = "google-cloud-bigquery-storage-1.1.0.tar.gz", hash = "sha256:c92533cedbb672f1a35555c112d4d5cccb9f8f6d0e98a604fbf98223773adad3"}, - {file = "google_cloud_bigquery_storage-1.1.0-py2.py3-none-any.whl", hash = "sha256:fc543e9d2343d34c043ad48984333ba84de10be31b7af8435548aaf8555507c4"}, -] [package.dependencies] google-api-core = {version = ">=1.14.0,<2.0.0dev", extras = ["grpc"]} @@ -858,10 +547,6 @@ description = "Google Cloud API client core library" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "google-cloud-core-2.2.1.tar.gz", hash = "sha256:476d1f71ab78089e0638e0aaf34bfdc99bab4fce8f4170ba6321a5243d13c5c7"}, - {file = "google_cloud_core-2.2.1-py2.py3-none-any.whl", hash = "sha256:ab6cee07791afe4e210807ceeab749da6a076ab16d496ac734bf7e6ffea27486"}, -] [package.dependencies] google-api-core = ">=1.21.0,<3.0.0dev" @@ -877,10 +562,6 @@ description = "Google Cloud Storage API client library" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" -files = [ - {file = "google-cloud-storage-1.42.3.tar.gz", hash = "sha256:7754d4dcaa45975514b404ece0da2bb4292acbc67ca559a69e12a19d54fcdb06"}, - {file = "google_cloud_storage-1.42.3-py2.py3-none-any.whl", hash = "sha256:71ee3a0dcf2c139f034a054181cd7658f1ec8f12837d2769c450a8a00fcd4c6d"}, -] [package.dependencies] google-api-core = {version = ">=1.29.0,<3.0dev", markers = "python_version >= \"3.6\""} @@ -898,51 +579,6 @@ description = "A python wrapper of the C library 'Google CRC32C'" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "google-crc32c-1.3.0.tar.gz", hash = "sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df"}, - {file = "google_crc32c-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d"}, - {file = "google_crc32c-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168"}, - {file = "google_crc32c-1.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e"}, - {file = "google_crc32c-1.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59"}, - {file = "google_crc32c-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd"}, - {file = "google_crc32c-1.3.0-cp310-cp310-win32.whl", hash = "sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea"}, - {file = "google_crc32c-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-win32.whl", hash = "sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a"}, - {file = "google_crc32c-1.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e"}, - {file = "google_crc32c-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08"}, - {file = "google_crc32c-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812"}, - {file = "google_crc32c-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b"}, - {file = "google_crc32c-1.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0"}, - {file = "google_crc32c-1.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328"}, - {file = "google_crc32c-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2"}, - {file = "google_crc32c-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206"}, - {file = "google_crc32c-1.3.0-cp38-cp38-win32.whl", hash = "sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829"}, - {file = "google_crc32c-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713"}, - {file = "google_crc32c-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b"}, - {file = "google_crc32c-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a"}, - {file = "google_crc32c-1.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267"}, - {file = "google_crc32c-1.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217"}, - {file = "google_crc32c-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73"}, - {file = "google_crc32c-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3"}, - {file = "google_crc32c-1.3.0-cp39-cp39-win32.whl", hash = "sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f"}, - {file = "google_crc32c-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422"}, - {file = "google_crc32c-1.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125"}, - {file = "google_crc32c-1.3.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e"}, - {file = "google_crc32c-1.3.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3"}, - {file = "google_crc32c-1.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942"}, - {file = "google_crc32c-1.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183"}, -] [package.extras] testing = ["pytest"] @@ -954,10 +590,6 @@ description = "Utilities for Google Media Downloads and Resumable Uploads" category = "main" optional = false python-versions = ">= 3.6" -files = [ - {file = "google-resumable-media-2.1.0.tar.gz", hash = "sha256:725b989e0dd387ef2703d1cc8e86217474217f4549593c477fd94f4024a0f911"}, - {file = "google_resumable_media-2.1.0-py2.py3-none-any.whl", hash = "sha256:cdc75ea0361e39704dc7df7da59fbd419e73c8bc92eac94d8a020d36baa9944b"}, -] [package.dependencies] google-crc32c = ">=1.0,<2.0dev" @@ -973,10 +605,6 @@ description = "Common protobufs used in Google APIs" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "googleapis-common-protos-1.53.0.tar.gz", hash = "sha256:a88ee8903aa0a81f6c3cec2d5cf62d3c8aa67c06439b0496b49048fb1854ebf4"}, - {file = "googleapis_common_protos-1.53.0-py2.py3-none-any.whl", hash = "sha256:f6d561ab8fb16b30020b940e2dd01cd80082f4762fa9f3ee670f4419b4b8dbd0"}, -] [package.dependencies] protobuf = ">=3.12.0" @@ -991,52 +619,6 @@ description = "HTTP/2-based RPC framework" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "grpcio-1.42.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:6e5eec67909795f7b1ff2bd941bd6c2661ca5217ea9c35003d73314100786f60"}, - {file = "grpcio-1.42.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:8e8cd9909fdd232ecffb954936fd90c935ebe0b5fce36c88813f8247ce54019c"}, - {file = "grpcio-1.42.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:b4d7115ee08a36f3f50a6233bd78280e40847e078d2a5bb39c0ab0db4490d58f"}, - {file = "grpcio-1.42.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b781f412546830be55644f7c48251d30860f4725981862d4a1ea322f80d9cd34"}, - {file = "grpcio-1.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e62140c46d8125927c673c72c960cb387c02b2a1a3c6985a8b0a3914d27c0018"}, - {file = "grpcio-1.42.0-cp310-cp310-win32.whl", hash = "sha256:6b69726d7bbb633133c1b0d780b1357aa9b7a7f714fead6470bab1feb8012806"}, - {file = "grpcio-1.42.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6c0b159b38fcc3bbc3331105197c1f58ac0d294eb83910d136a325a85def88f"}, - {file = "grpcio-1.42.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:53e10d07e541073eb9a84d49ecffb831c3cbb970bcd8cd8de8431e935bf66c2e"}, - {file = "grpcio-1.42.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:7a3c9b8e13365529f9426d4754085e8a9c2ad718a41a46a97e4e30e87bb45eae"}, - {file = "grpcio-1.42.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:66f910b6324ae69625e63db2eb29d833c307cfa36736fe13d2f841656c5f658f"}, - {file = "grpcio-1.42.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:59163b8d2e0d85f0ecbee52b348f867eec7e0f909177564fb3956363f7e616e5"}, - {file = "grpcio-1.42.0-cp36-cp36m-manylinux_2_17_aarch64.whl", hash = "sha256:d92c1721c7981812d0f42dfc8248b15d3b6a2ea79eb8870776364423de2aa245"}, - {file = "grpcio-1.42.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65720d2bf05e2b78c4bffe372f13c41845bae5658fd3f5dd300c374dd240e5cb"}, - {file = "grpcio-1.42.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f385e40846ff81d1c6dce98dcc192c7988a46540758804c4a2e6da5a0e3e3e05"}, - {file = "grpcio-1.42.0-cp36-cp36m-win32.whl", hash = "sha256:ea3560ffbfe08327024380508190103937fef25e355d2259f8b5c003a0732f55"}, - {file = "grpcio-1.42.0-cp36-cp36m-win_amd64.whl", hash = "sha256:29fc36c99161ff307c8ca438346b2e36f81dac5ecdbabc983d0b255d7913fb19"}, - {file = "grpcio-1.42.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:76b5fa4c6d88f804456e763461cf7a1db38b200669f1ba00c579014ab5aa7965"}, - {file = "grpcio-1.42.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:d1451a8c0c01c5b5fdfeb8f777820cb277fb5d797d972f57a41bb82483c44a79"}, - {file = "grpcio-1.42.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6655df5f31664bac4cd6c9b52f389fd92cd10025504ad83685038f47e11e29d8"}, - {file = "grpcio-1.42.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:5b9f0c4822e3a52a1663a315752c6bbdbed0ec15a660d3e64137335acbb5b7ce"}, - {file = "grpcio-1.42.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:7742606ac2bc03ed10360f4f630e0cc01dce864fe63557254e9adea21bb51416"}, - {file = "grpcio-1.42.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:603d71de14ab1f1fd1254b69ceda73545943461b1f51f82fda9477503330b6ea"}, - {file = "grpcio-1.42.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d08ce780bbd8d1a442d855bd681ed0f7483c65d2c8ed83701a9ea4f13678411f"}, - {file = "grpcio-1.42.0-cp37-cp37m-win32.whl", hash = "sha256:2aba7f93671ec971c5c70db81633b49a2f974aa09a2d811aede344a32bad1896"}, - {file = "grpcio-1.42.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2956da789d74fc35d2c869b3aa45dbf41c5d862c056ca8b5e35a688347ede809"}, - {file = "grpcio-1.42.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:21aa4a111b3381d3dd982a3df62348713b29f651aa9f6dfbc9415adbfe28d2ba"}, - {file = "grpcio-1.42.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a6f9ed5320b93c029615b75f6c8caf2c76aa6545d8845f3813908892cfc5f84e"}, - {file = "grpcio-1.42.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:3a13953e12dc40ee247b5fe6ef22b5fac8f040a76b814a11bf9f423e82402f28"}, - {file = "grpcio-1.42.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f721b42a20d886c03d9b1f461b228cdaf02ccf6c4550e263f7fd3ce3ff19a8f1"}, - {file = "grpcio-1.42.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:e2d9c6690d4c88cd51ee395d7ba5bd1d26d7c37e94cb59e7fd62ff21ecaf891d"}, - {file = "grpcio-1.42.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7f66eb220898787d7821a7931e35ae2512ed74f79f75adcd7ea2fb3119ca87d"}, - {file = "grpcio-1.42.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2e3f250e5398bf474c6e140df1b67494bf1e31c5277b5bf93841a564cbc22d0"}, - {file = "grpcio-1.42.0-cp38-cp38-win32.whl", hash = "sha256:06d5364e85e0fa50ee68bffd9c93a6aff869a91c68f1fd7ba1b944e063a0ff9f"}, - {file = "grpcio-1.42.0-cp38-cp38-win_amd64.whl", hash = "sha256:d58b3774ee2084c31aad140586a42e18328d9823959ca006a0b85ad7937fe405"}, - {file = "grpcio-1.42.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:b74bbac7e039cf23ed0c8edd820c31e90a52a22e28a03d45274a0956addde8d2"}, - {file = "grpcio-1.42.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2b264cf303a22c46f8d455f42425c546ad6ce22f183debb8d64226ddf1e039f4"}, - {file = "grpcio-1.42.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:64f2b3e6474e2ad865478b64f0850d15842acbb2623de5f78a60ceabe00c63e0"}, - {file = "grpcio-1.42.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:bf916ee93ea2fd52b5286ed4e19cbbde5e82754914379ea91dc5748550df3b4e"}, - {file = "grpcio-1.42.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:6ef72f0abdb89fb7c366a99e04823ecae5cda9f762f2234f42fc280447277cd6"}, - {file = "grpcio-1.42.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47ab65be9ba7a0beee94bbe2fb1dd03cb7832db9df4d1f8fae215a16b3edeb5e"}, - {file = "grpcio-1.42.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0209f30741de1875413f40e89bec9c647e7afad4a3549a6a1682c1ee23da68ca"}, - {file = "grpcio-1.42.0-cp39-cp39-win32.whl", hash = "sha256:5441d343602ce10ba48fcb36bb5de197a15a01dc9ee0f71c2a73cd5cd3d7f5ac"}, - {file = "grpcio-1.42.0-cp39-cp39-win_amd64.whl", hash = "sha256:17433f7eb01737240581b33fbc2eae7b7fa6d3429571782580bceaf05ec56cb8"}, - {file = "grpcio-1.42.0.tar.gz", hash = "sha256:4a8f2c7490fe3696e0cdd566e2f099fb91b51bc75446125175c55581c2f7bc11"}, -] [package.dependencies] six = ">=1.5.2" @@ -1051,10 +633,6 @@ description = "a heap with decrease-key and increase-key operations" category = "main" optional = false python-versions = "*" -files = [ - {file = "HeapDict-1.0.1-py3-none-any.whl", hash = "sha256:6065f90933ab1bb7e50db403b90cab653c853690c5992e69294c2de2b253fc92"}, - {file = "HeapDict-1.0.1.tar.gz", hash = "sha256:8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6"}, -] [[package]] name = "httplib2" @@ -1063,10 +641,6 @@ description = "A comprehensive HTTP client library." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, - {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, -] [package.dependencies] pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} @@ -1078,10 +652,6 @@ description = "HashiCorp Vault API client" category = "main" optional = false python-versions = ">=2.7" -files = [ - {file = "hvac-0.11.2-py2.py3-none-any.whl", hash = "sha256:3e8a34804b1e20954a2b4991cc13ed9c09b32e50dadd9d3438224481150f6568"}, - {file = "hvac-0.11.2.tar.gz", hash = "sha256:f905c59d32d88d3f67571fe5a8a78de4659e04798ad809de439f667247d13626"}, -] [package.dependencies] requests = ">=2.21.0" @@ -1092,15 +662,11 @@ parser = ["pyhcl (>=0.3.10)"] [[package]] name = "identify" -version = "2.5.22" +version = "2.5.24" description = "File identification library for Python" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "identify-2.5.22-py2.py3-none-any.whl", hash = "sha256:f0faad595a4687053669c112004178149f6c326db71ee999ae4636685753ad2f"}, - {file = "identify-2.5.22.tar.gz", hash = "sha256:f7a93d6cf98e29bd07663c60728e7a4057615068d7a639d132dc883b2d54d31e"}, -] [package.extras] license = ["ukkonen"] @@ -1112,10 +678,6 @@ description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, -] [[package]] name = "importlib-metadata" @@ -1124,18 +686,14 @@ description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "importlib_metadata-4.13.0-py3-none-any.whl", hash = "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116"}, - {file = "importlib_metadata-4.13.0.tar.gz", hash = "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d"}, -] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" @@ -1144,17 +702,13 @@ description = "Read resources from Python packages" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, -] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "sphinx-lint", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8"] [[package]] name = "iniconfig" @@ -1163,10 +717,6 @@ description = "brain-dead simple config-ini parsing" category = "dev" optional = false python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] [[package]] name = "ipeadatapy" @@ -1175,10 +725,6 @@ description = "An API wrapper for Ipeadata" category = "main" optional = false python-versions = "*" -files = [ - {file = "ipeadatapy-0.1.9-py3-none-any.whl", hash = "sha256:0bfd5a180599f77106421477d3cc505e4478ac0f4e3d5eb688dd8696fce906e3"}, - {file = "ipeadatapy-0.1.9.tar.gz", hash = "sha256:396c3f7d723a70667fd5a64714d7252f7f234c34c9f63e77751b02123691d8ad"}, -] [package.dependencies] pandas = "*" @@ -1191,10 +737,6 @@ description = "A very fast and expressive template engine." category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, - {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, -] [package.dependencies] MarkupSafe = ">=2.0" @@ -1202,22 +744,6 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] -[[package]] -name = "jinja2-time" -version = "0.2.0" -description = "Jinja2 Extension for Dates and Times" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "jinja2-time-0.2.0.tar.gz", hash = "sha256:d14eaa4d315e7688daa4969f616f226614350c48730bfa1692d2caebd8c90d40"}, - {file = "jinja2_time-0.2.0-py2.py3-none-any.whl", hash = "sha256:d3eab6605e3ec8b7a0863df09cc1d23714908fa61aa6986a845c20ba488b4efa"}, -] - -[package.dependencies] -arrow = "*" -jinja2 = "*" - [[package]] name = "kiwisolver" version = "1.4.4" @@ -1225,76 +751,6 @@ description = "A fast implementation of the Cassowary constraint solver" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, - {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, - {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, - {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, - {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, - {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, - {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, - {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, - {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, - {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, - {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, - {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, - {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, - {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, - {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, - {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, - {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, - {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, - {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, - {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, - {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, - {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, - {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, -] [[package]] name = "locket" @@ -1303,10 +759,6 @@ description = "File-based locks for Python for Linux and Windows" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "locket-0.2.1-py2.py3-none-any.whl", hash = "sha256:12b6ada59d1f50710bca9704dbadd3f447dbf8dac6664575c1281cadab8e6449"}, - {file = "locket-0.2.1.tar.gz", hash = "sha256:3e1faba403619fe201552f083f1ecbf23f550941bc51985ac6ed4d02d25056dd"}, -] [[package]] name = "loguru" @@ -1315,17 +767,13 @@ description = "Python logging made (stupidly) simple" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"}, - {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"}, -] [package.dependencies] colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"] +dev = ["colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "black (>=19.10b0)", "isort (>=5.1.1)", "Sphinx (>=4.1.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)"] [[package]] name = "lxml" @@ -1334,90 +782,11 @@ description = "Powerful and Pythonic XML processing library combining libxml2/li category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2"}, - {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892"}, - {file = "lxml-4.9.2-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a"}, - {file = "lxml-4.9.2-cp27-cp27m-win32.whl", hash = "sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de"}, - {file = "lxml-4.9.2-cp27-cp27m-win_amd64.whl", hash = "sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3"}, - {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50"}, - {file = "lxml-4.9.2-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975"}, - {file = "lxml-4.9.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c"}, - {file = "lxml-4.9.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a"}, - {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4"}, - {file = "lxml-4.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4"}, - {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7"}, - {file = "lxml-4.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184"}, - {file = "lxml-4.9.2-cp310-cp310-win32.whl", hash = "sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda"}, - {file = "lxml-4.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab"}, - {file = "lxml-4.9.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9"}, - {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf"}, - {file = "lxml-4.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380"}, - {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92"}, - {file = "lxml-4.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1"}, - {file = "lxml-4.9.2-cp311-cp311-win32.whl", hash = "sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33"}, - {file = "lxml-4.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd"}, - {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0"}, - {file = "lxml-4.9.2-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e"}, - {file = "lxml-4.9.2-cp35-cp35m-win32.whl", hash = "sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df"}, - {file = "lxml-4.9.2-cp35-cp35m-win_amd64.whl", hash = "sha256:998c7c41910666d2976928c38ea96a70d1aa43be6fe502f21a651e17483a43c5"}, - {file = "lxml-4.9.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1"}, - {file = "lxml-4.9.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e"}, - {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74"}, - {file = "lxml-4.9.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38"}, - {file = "lxml-4.9.2-cp36-cp36m-win32.whl", hash = "sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5"}, - {file = "lxml-4.9.2-cp36-cp36m-win_amd64.whl", hash = "sha256:3ab9fa9d6dc2a7f29d7affdf3edebf6ece6fb28a6d80b14c3b2fb9d39b9322c3"}, - {file = "lxml-4.9.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894"}, - {file = "lxml-4.9.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45"}, - {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e"}, - {file = "lxml-4.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b"}, - {file = "lxml-4.9.2-cp37-cp37m-win32.whl", hash = "sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe"}, - {file = "lxml-4.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9"}, - {file = "lxml-4.9.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03"}, - {file = "lxml-4.9.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c"}, - {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f"}, - {file = "lxml-4.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457"}, - {file = "lxml-4.9.2-cp38-cp38-win32.whl", hash = "sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b"}, - {file = "lxml-4.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7"}, - {file = "lxml-4.9.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947"}, - {file = "lxml-4.9.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5"}, - {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5"}, - {file = "lxml-4.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2"}, - {file = "lxml-4.9.2-cp39-cp39-win32.whl", hash = "sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1"}, - {file = "lxml-4.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f"}, - {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c"}, - {file = "lxml-4.9.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f"}, - {file = "lxml-4.9.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7"}, - {file = "lxml-4.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409"}, - {file = "lxml-4.9.2.tar.gz", hash = "sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67"}, -] [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] -htmlsoup = ["BeautifulSoup4"] +htmlsoup = ["beautifulsoup4"] source = ["Cython (>=0.29.7)"] [[package]] @@ -1427,77 +796,6 @@ description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, -] [[package]] name = "marshmallow" @@ -1506,15 +804,11 @@ description = "A lightweight library for converting complex datatypes to and fro category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "marshmallow-3.14.1-py3-none-any.whl", hash = "sha256:04438610bc6dadbdddb22a4a55bcc7f6f8099e69580b2e67f5a681933a1f4400"}, - {file = "marshmallow-3.14.1.tar.gz", hash = "sha256:4c05c1684e0e97fe779c62b91878f173b937fe097b356cd82f793464f5bc6138"}, -] [package.extras] -dev = ["flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "mypy (==0.910)", "pre-commit (>=2.4,<3.0)", "pytest", "pytz", "simplejson", "tox"] -docs = ["alabaster (==0.7.12)", "autodocsumm (==0.2.7)", "sphinx (==4.3.0)", "sphinx-issues (==1.2.0)", "sphinx-version-warning (==1.1.2)"] -lint = ["flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "mypy (==0.910)", "pre-commit (>=2.4,<3.0)"] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.910)", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.3.0)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.7)"] +lint = ["mypy (==0.910)", "flake8 (==4.0.1)", "flake8-bugbear (==21.9.2)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] @@ -1524,18 +818,14 @@ description = "marshmallow multiplexing schema" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "marshmallow-oneofschema-3.0.1.tar.gz", hash = "sha256:62cd2099b29188c92493c2940ee79d1bf2f2619a71721664e5a98ec2faa58237"}, - {file = "marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl", hash = "sha256:bd29410a9f2f7457a2b428286e2a80ef76b8ddc3701527dc1f935a88914b02f2"}, -] [package.dependencies] marshmallow = ">=3.0.0,<4.0.0" [package.extras] -dev = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "mock", "pre-commit (>=2.7,<3.0)", "pytest", "tox"] +dev = ["pytest", "mock", "flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.7,<3.0)", "tox"] lint = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.7,<3.0)"] -tests = ["mock", "pytest"] +tests = ["pytest", "mock"] [[package]] name = "matplotlib" @@ -1544,49 +834,6 @@ description = "Python plotting package" category = "main" optional = false python-versions = ">=3.8" -files = [ - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:544764ba51900da4639c0f983b323d288f94f65f4024dc40ecb1542d74dc0500"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d94989191de3fcc4e002f93f7f1be5da476385dde410ddafbb70686acf00ea"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99bc9e65901bb9a7ce5e7bb24af03675cbd7c70b30ac670aa263240635999a4"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb7d248c34a341cd4c31a06fd34d64306624c8cd8d0def7abb08792a5abfd556"}, - {file = "matplotlib-3.7.1-cp310-cp310-win32.whl", hash = "sha256:ce463ce590f3825b52e9fe5c19a3c6a69fd7675a39d589e8b5fbe772272b3a24"}, - {file = "matplotlib-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d7bc90727351fb841e4d8ae620d2d86d8ed92b50473cd2b42ce9186104ecbba"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:770a205966d641627fd5cf9d3cb4b6280a716522cd36b8b284a8eb1581310f61"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f67bfdb83a8232cb7a92b869f9355d677bce24485c460b19d01970b64b2ed476"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2bf092f9210e105f414a043b92af583c98f50050559616930d884387d0772aba"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89768d84187f31717349c6bfadc0e0d8c321e8eb34522acec8a67b1236a66332"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83111e6388dec67822e2534e13b243cc644c7494a4bb60584edbff91585a83c6"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a867bf73a7eb808ef2afbca03bcdb785dae09595fbe550e1bab0cd023eba3de0"}, - {file = "matplotlib-3.7.1-cp311-cp311-win32.whl", hash = "sha256:fbdeeb58c0cf0595efe89c05c224e0a502d1aa6a8696e68a73c3efc6bc354304"}, - {file = "matplotlib-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:c0bd19c72ae53e6ab979f0ac6a3fafceb02d2ecafa023c5cca47acd934d10be7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6eb88d87cb2c49af00d3bbc33a003f89fd9f78d318848da029383bfc08ecfbfb"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:cf0e4f727534b7b1457898c4f4ae838af1ef87c359b76dcd5330fa31893a3ac7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46a561d23b91f30bccfd25429c3c706afe7d73a5cc64ef2dfaf2b2ac47c1a5dc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8704726d33e9aa8a6d5215044b8d00804561971163563e6e6591f9dcf64340cc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cf327e98ecf08fcbb82685acaf1939d3338548620ab8dfa02828706402c34de"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:617f14ae9d53292ece33f45cba8503494ee199a75b44de7717964f70637a36aa"}, - {file = "matplotlib-3.7.1-cp38-cp38-win32.whl", hash = "sha256:7c9a4b2da6fac77bcc41b1ea95fadb314e92508bf5493ceff058e727e7ecf5b0"}, - {file = "matplotlib-3.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:14645aad967684e92fc349493fa10c08a6da514b3d03a5931a1bac26e6792bd1"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:81a6b377ea444336538638d31fdb39af6be1a043ca5e343fe18d0f17e098770b"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:28506a03bd7f3fe59cd3cd4ceb2a8d8a2b1db41afede01f66c42561b9be7b4b7"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c587963b85ce41e0a8af53b9b2de8dddbf5ece4c34553f7bd9d066148dc719c"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bf26ade3ff0f27668989d98c8435ce9327d24cffb7f07d24ef609e33d582439"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:def58098f96a05f90af7e92fd127d21a287068202aa43b2a93476170ebd99e87"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f883a22a56a84dba3b588696a2b8a1ab0d2c3d41be53264115c71b0a942d8fdb"}, - {file = "matplotlib-3.7.1-cp39-cp39-win32.whl", hash = "sha256:4f99e1b234c30c1e9714610eb0c6d2f11809c9c78c984a613ae539ea2ad2eb4b"}, - {file = "matplotlib-3.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:3ba2af245e36990facf67fde840a760128ddd71210b2ab6406e640188d69d136"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3032884084f541163f295db8a6536e0abb0db464008fadca6c98aaf84ccf4717"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a2cb34336110e0ed8bb4f650e817eed61fa064acbefeb3591f1b33e3a84fd96"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b867e2f952ed592237a1828f027d332d8ee219ad722345b79a001f49df0936eb"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:57bfb8c8ea253be947ccb2bc2d1bb3862c2bccc662ad1b4626e1f5e004557042"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:438196cdf5dc8d39b50a45cb6e3f6274edbcf2254f85fa9b895bf85851c3a613"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21e9cff1a58d42e74d01153360de92b326708fb205250150018a52c70f43c290"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d4725d70b7c03e082bbb8a34639ede17f333d7247f56caceb3801cb6ff703d"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97cc368a7268141afb5690760921765ed34867ffb9655dd325ed207af85c7529"}, - {file = "matplotlib-3.7.1.tar.gz", hash = "sha256:7b73305f25eab4541bd7ee0b96d87e53ae9c9f1823be5659b806cd85786fe882"}, -] [package.dependencies] contourpy = ">=1.0.1" @@ -1599,6 +846,7 @@ packaging = ">=20.0" pillow = ">=6.2.0" pyparsing = ">=2.3.1" python-dateutil = ">=2.7" +setuptools_scm = ">=7" [[package]] name = "msgpack" @@ -1607,42 +855,6 @@ description = "MessagePack (de)serializer." category = "main" optional = false python-versions = "*" -files = [ - {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96acc674bb9c9be63fa8b6dabc3248fdc575c4adc005c440ad02f87ca7edd079"}, - {file = "msgpack-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c3ca57c96c8e69c1a0d2926a6acf2d9a522b41dc4253a8945c4c6cd4981a4e3"}, - {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0a792c091bac433dfe0a70ac17fc2087d4595ab835b47b89defc8bbabcf5c73"}, - {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c58cdec1cb5fcea8c2f1771d7b5fec79307d056874f746690bd2bdd609ab147"}, - {file = "msgpack-1.0.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f97c0f35b3b096a330bb4a1a9247d0bd7e1f3a2eba7ab69795501504b1c2c39"}, - {file = "msgpack-1.0.3-cp310-cp310-win32.whl", hash = "sha256:36a64a10b16c2ab31dcd5f32d9787ed41fe68ab23dd66957ca2826c7f10d0b85"}, - {file = "msgpack-1.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c1ba333b4024c17c7591f0f372e2daa3c31db495a9b2af3cf664aef3c14354f7"}, - {file = "msgpack-1.0.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c2140cf7a3ec475ef0938edb6eb363fa704159e0bf71dde15d953bacc1cf9d7d"}, - {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f4c22717c74d44bcd7af353024ce71c6b55346dad5e2cc1ddc17ce8c4507c6b"}, - {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d733a15ade190540c703de209ffbc42a3367600421b62ac0c09fde594da6ec"}, - {file = "msgpack-1.0.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7e03b06f2982aa98d4ddd082a210c3db200471da523f9ac197f2828e80e7770"}, - {file = "msgpack-1.0.3-cp36-cp36m-win32.whl", hash = "sha256:3d875631ecab42f65f9dce6f55ce6d736696ced240f2634633188de2f5f21af9"}, - {file = "msgpack-1.0.3-cp36-cp36m-win_amd64.whl", hash = "sha256:40fb89b4625d12d6027a19f4df18a4de5c64f6f3314325049f219683e07e678a"}, - {file = "msgpack-1.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6eef0cf8db3857b2b556213d97dd82de76e28a6524853a9beb3264983391dc1a"}, - {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d8c332f53ffff01953ad25131272506500b14750c1d0ce8614b17d098252fbc"}, - {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c0903bd93cbd34653dd63bbfcb99d7539c372795201f39d16fdfde4418de43a"}, - {file = "msgpack-1.0.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf1e6bfed4860d72106f4e0a1ab519546982b45689937b40257cfd820650b920"}, - {file = "msgpack-1.0.3-cp37-cp37m-win32.whl", hash = "sha256:d02cea2252abc3756b2ac31f781f7a98e89ff9759b2e7450a1c7a0d13302ff50"}, - {file = "msgpack-1.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2f30dd0dc4dfe6231ad253b6f9f7128ac3202ae49edd3f10d311adc358772dba"}, - {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f201d34dc89342fabb2a10ed7c9a9aaaed9b7af0f16a5923f1ae562b31258dea"}, - {file = "msgpack-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bb87f23ae7d14b7b3c21009c4b1705ec107cb21ee71975992f6aca571fb4a42a"}, - {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a3a5c4b16e9d0edb823fe54b59b5660cc8d4782d7bf2c214cb4b91a1940a8ef"}, - {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74da1e5fcf20ade12c6bf1baa17a2dc3604958922de8dc83cbe3eff22e8b611"}, - {file = "msgpack-1.0.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73a80bd6eb6bcb338c1ec0da273f87420829c266379c8c82fa14c23fb586cfa1"}, - {file = "msgpack-1.0.3-cp38-cp38-win32.whl", hash = "sha256:9fce00156e79af37bb6db4e7587b30d11e7ac6a02cb5bac387f023808cd7d7f4"}, - {file = "msgpack-1.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:9b6f2d714c506e79cbead331de9aae6837c8dd36190d02da74cb409b36162e8a"}, - {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:89908aea5f46ee1474cc37fbc146677f8529ac99201bc2faf4ef8edc023c2bf3"}, - {file = "msgpack-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:973ad69fd7e31159eae8f580f3f707b718b61141838321c6fa4d891c4a2cca52"}, - {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da24375ab4c50e5b7486c115a3198d207954fe10aaa5708f7b65105df09109b2"}, - {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a598d0685e4ae07a0672b59792d2cc767d09d7a7f39fd9bd37ff84e060b1a996"}, - {file = "msgpack-1.0.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4c309a68cb5d6bbd0c50d5c71a25ae81f268c2dc675c6f4ea8ab2feec2ac4e2"}, - {file = "msgpack-1.0.3-cp39-cp39-win32.whl", hash = "sha256:494471d65b25a8751d19c83f1a482fd411d7ca7a3b9e17d25980a74075ba0e88"}, - {file = "msgpack-1.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:f01b26c2290cbd74316990ba84a14ac3d599af9cebefc543d241a66e785cf17d"}, - {file = "msgpack-1.0.3.tar.gz", hash = "sha256:51fdc7fb93615286428ee7758cecc2f374d5ff363bdd884c7ea622a7a327a81e"}, -] [[package]] name = "mypy-extensions" @@ -1651,25 +863,14 @@ description = "Experimental type system extensions for programs checked with the category = "main" optional = false python-versions = "*" -files = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] [[package]] name = "nodeenv" -version = "1.7.0" +version = "1.8.0" description = "Node.js virtual environment builder" category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" -files = [ - {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, -] - -[package.dependencies] -setuptools = "*" [[package]] name = "numpy" @@ -1678,38 +879,6 @@ description = "NumPy is the fundamental package for array computing with Python. category = "main" optional = false python-versions = ">=3.7,<3.11" -files = [ - {file = "numpy-1.21.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8890b3360f345e8360133bc078d2dacc2843b6ee6059b568781b15b97acbe39f"}, - {file = "numpy-1.21.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:69077388c5a4b997442b843dbdc3a85b420fb693ec8e33020bb24d647c164fa5"}, - {file = "numpy-1.21.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e89717274b41ebd568cd7943fc9418eeb49b1785b66031bc8a7f6300463c5898"}, - {file = "numpy-1.21.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b78ecfa070460104934e2caf51694ccd00f37d5e5dbe76f021b1b0b0d221823"}, - {file = "numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:615d4e328af7204c13ae3d4df7615a13ff60a49cb0d9106fde07f541207883ca"}, - {file = "numpy-1.21.4-cp310-cp310-win_amd64.whl", hash = "sha256:1403b4e2181fc72664737d848b60e65150f272fe5a1c1cbc16145ed43884065a"}, - {file = "numpy-1.21.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:74b85a17528ca60cf98381a5e779fc0264b4a88b46025e6bcbe9621f46bb3e63"}, - {file = "numpy-1.21.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92aafa03da8658609f59f18722b88f0a73a249101169e28415b4fa148caf7e41"}, - {file = "numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5d95668e727c75b3f5088ec7700e260f90ec83f488e4c0aaccb941148b2cd377"}, - {file = "numpy-1.21.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5162ec777ba7138906c9c274353ece5603646c6965570d82905546579573f73"}, - {file = "numpy-1.21.4-cp37-cp37m-win32.whl", hash = "sha256:81225e58ef5fce7f1d80399575576fc5febec79a8a2742e8ef86d7b03beef49f"}, - {file = "numpy-1.21.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32fe5b12061f6446adcbb32cf4060a14741f9c21e15aaee59a207b6ce6423469"}, - {file = "numpy-1.21.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c449eb870616a7b62e097982c622d2577b3dbc800aaf8689254ec6e0197cbf1e"}, - {file = "numpy-1.21.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2e4ed57f45f0aa38beca2a03b6532e70e548faf2debbeb3291cfc9b315d9be8f"}, - {file = "numpy-1.21.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1247ef28387b7bb7f21caf2dbe4767f4f4175df44d30604d42ad9bd701ebb31f"}, - {file = "numpy-1.21.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34f3456f530ae8b44231c63082c8899fe9c983fd9b108c997c4b1c8c2d435333"}, - {file = "numpy-1.21.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c9c23158b87ed0e70d9a50c67e5c0b3f75bcf2581a8e34668d4e9d7474d76c6"}, - {file = "numpy-1.21.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4799be6a2d7d3c33699a6f77201836ac975b2e1b98c2a07f66a38f499cb50ce"}, - {file = "numpy-1.21.4-cp38-cp38-win32.whl", hash = "sha256:bc988afcea53e6156546e5b2885b7efab089570783d9d82caf1cfd323b0bb3dd"}, - {file = "numpy-1.21.4-cp38-cp38-win_amd64.whl", hash = "sha256:170b2a0805c6891ca78c1d96ee72e4c3ed1ae0a992c75444b6ab20ff038ba2cd"}, - {file = "numpy-1.21.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fde96af889262e85aa033f8ee1d3241e32bf36228318a61f1ace579df4e8170d"}, - {file = "numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c885bfc07f77e8fee3dc879152ba993732601f1f11de248d4f357f0ffea6a6d4"}, - {file = "numpy-1.21.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9e6f5f50d1eff2f2f752b3089a118aee1ea0da63d56c44f3865681009b0af162"}, - {file = "numpy-1.21.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ad010846cdffe7ec27e3f933397f8a8d6c801a48634f419e3d075db27acf5880"}, - {file = "numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c74c699b122918a6c4611285cc2cad4a3aafdb135c22a16ec483340ef97d573c"}, - {file = "numpy-1.21.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9864424631775b0c052f3bd98bc2712d131b3e2cd95d1c0c68b91709170890b0"}, - {file = "numpy-1.21.4-cp39-cp39-win32.whl", hash = "sha256:b1e2312f5b8843a3e4e8224b2b48fe16119617b8fc0a54df8f50098721b5bed2"}, - {file = "numpy-1.21.4-cp39-cp39-win_amd64.whl", hash = "sha256:e3c3e990274444031482a31280bf48674441e0a5b55ddb168f3a6db3e0c38ec8"}, - {file = "numpy-1.21.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3deb31bc84f2b42584b8c4001c85d1934dbfb4030827110bc36bfd11509b7bf"}, - {file = "numpy-1.21.4.zip", hash = "sha256:e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0"}, -] [[package]] name = "oauth2client" @@ -1718,10 +887,6 @@ description = "OAuth 2.0 client library" category = "main" optional = false python-versions = "*" -files = [ - {file = "oauth2client-4.1.3-py2.py3-none-any.whl", hash = "sha256:b8a81cc5d60e2d364f0b1b98f958dbd472887acaf1a5b05e21c28c31a2d6d3ac"}, - {file = "oauth2client-4.1.3.tar.gz", hash = "sha256:d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6"}, -] [package.dependencies] httplib2 = ">=0.9.1" @@ -1737,16 +902,23 @@ description = "A generic, spec-compliant, thorough implementation of the OAuth r category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "oauthlib-3.1.1-py2.py3-none-any.whl", hash = "sha256:42bf6354c2ed8c6acb54d971fce6f88193d97297e18602a3a886603f9d7730cc"}, - {file = "oauthlib-3.1.1.tar.gz", hash = "sha256:8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3"}, -] [package.extras] rsa = ["cryptography (>=3.0.0,<4)"] signals = ["blinker (>=1.4.0)"] signedtoken = ["cryptography (>=3.0.0,<4)", "pyjwt (>=2.0.0,<3)"] +[[package]] +name = "openpyxl" +version = "3.0.9" +description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +et-xmlfile = "*" + [[package]] name = "packaging" version = "21.3" @@ -1754,10 +926,6 @@ description = "Core utilities for Python packages" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, -] [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" @@ -1769,35 +937,6 @@ description = "Powerful data structures for data analysis, time series, and stat category = "main" optional = false python-versions = ">=3.8" -files = [ - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"}, - {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"}, - {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"}, - {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"}, - {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"}, - {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"}, - {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"}, - {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"}, - {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"}, - {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"}, - {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"}, - {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"}, - {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"}, - {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"}, - {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"}, - {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"}, -] [package.dependencies] numpy = [ @@ -1817,10 +956,6 @@ description = "Google BigQuery connector for pandas" category = "main" optional = false python-versions = ">=3.7, <3.11" -files = [ - {file = "pandas-gbq-0.17.4.tar.gz", hash = "sha256:70ac57cc6ebf9d1e1c1c810f5ccac710163acd4c3d13e8badea27bb66fae19f7"}, - {file = "pandas_gbq-0.17.4-py2.py3-none-any.whl", hash = "sha256:3b3714167bdc4b1a6013ff6286a452727efbceb412922a2ca39aa996e8e8b129"}, -] [package.dependencies] db-dtypes = ">=0.3.1,<2.0.0" @@ -1833,7 +968,6 @@ numpy = ">=1.16.6" pandas = ">=0.24.2" pyarrow = ">=3.0.0,<8.0dev" pydata-google-auth = "*" -setuptools = "*" [package.extras] tqdm = ["tqdm (>=4.23.0)"] @@ -1845,10 +979,6 @@ description = "The interface between Avro and pandas DataFrame" category = "main" optional = false python-versions = ">=3.6.1" -files = [ - {file = "pandavro-1.7.2-py3-none-any.whl", hash = "sha256:5b4a2fbc86fb2b102e5b2b24490084e4775a5ac546fc8981931abecf6bb4a34b"}, - {file = "pandavro-1.7.2.tar.gz", hash = "sha256:4f2b7b6823522f54e8bfe33c091fb29898349892b70634f46c928e6a42a76e69"}, -] [package.dependencies] fastavro = ">=1.5.1,<1.6.0" @@ -1865,17 +995,13 @@ description = "Appendable key-value storage" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "partd-1.2.0-py3-none-any.whl", hash = "sha256:5c3a5d70da89485c27916328dc1e26232d0e270771bd4caef4a5124b6a457288"}, - {file = "partd-1.2.0.tar.gz", hash = "sha256:aa67897b84d522dcbc86a98b942afab8c6aa2f7f677d904a616b74ef5ddbc3eb"}, -] [package.dependencies] locket = "*" toolz = "*" [package.extras] -complete = ["blosc", "numpy (>=1.9.0)", "pandas (>=0.19.0)", "pyzmq"] +complete = ["numpy (>=1.9.0)", "pandas (>=0.19.0)", "pyzmq", "blosc"] [[package]] name = "pendulum" @@ -1884,29 +1010,6 @@ description = "Python datetimes made easy" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] [package.dependencies] python-dateutil = ">=2.6,<3.0" @@ -1919,74 +1022,6 @@ description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, - {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"}, - {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"}, - {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"}, - {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"}, - {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"}, - {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"}, - {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"}, - {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"}, - {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"}, - {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"}, - {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"}, - {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"}, - {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"}, - {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"}, - {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"}, - {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"}, -] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] @@ -1994,48 +1029,28 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "platformdirs" -version = "3.2.0" +version = "3.8.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "platformdirs-3.2.0-py3-none-any.whl", hash = "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e"}, - {file = "platformdirs-3.2.0.tar.gz", hash = "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08"}, -] [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)", "sphinx (>=7.0.1)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest (>=7.3.1)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=3.6" -files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] +python-versions = ">=3.7" [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "poyo" -version = "0.5.0" -description = "A lightweight YAML Parser for Python. 🐓" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "poyo-0.5.0-py2.py3-none-any.whl", hash = "sha256:3e2ca8e33fdc3c411cd101ca395668395dd5dc7ac775b8e809e3def9f9fe041a"}, - {file = "poyo-0.5.0.tar.gz", hash = "sha256:e26956aa780c45f011ca9886f044590e2d8fd8b61db7b1c1cf4e0869f48ed4dd"}, -] - [[package]] name = "pre-commit" version = "2.21.0" @@ -2043,10 +1058,6 @@ description = "A framework for managing and maintaining multi-language pre-commi category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, - {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, -] [package.dependencies] cfgv = ">=2.0.0" @@ -2062,10 +1073,6 @@ description = "The Prefect Core automation and scheduling engine." category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "prefect-0.15.9-py3-none-any.whl", hash = "sha256:595c9f229349528f7bcd2aa866c9c10dcfbf059a20803526924339d45604ec76"}, - {file = "prefect-0.15.9.tar.gz", hash = "sha256:52d4d28493cd1a90e1acf96b5a92b2902950849b481a49f762998448a41cf127"}, -] [package.dependencies] click = ">=7.0,<9.0" @@ -2091,26 +1098,26 @@ urllib3 = ">=1.24.3" [package.extras] airtable = ["airtable-python-wrapper (>=0.11,<0.12)"] -all-extras = ["PyGithub (>=1.51,<2.0)", "Pygments (>=2.2,<3.0)", "airtable-python-wrapper (>=0.11,<0.12)", "atlassian-python-api (>=2.0.1)", "azure-cosmos (>=3.1.1,<3.2)", "azure-storage-blob (>=12.1.0,<13.0)", "azureml-sdk (>=1.0.65,<1.1)", "black", "boto3 (>=1.9,<2.0)", "confluent-kafka (>=1.7.0)", "dask-cloudprovider[aws] (>=0.2.0)", "dask-kubernetes (>=0.8.0)", "dropbox (>=9.0,<10.0)", "dulwich (>=0.19.7)", "feedparser (>=5.0.1,<6.0)", "flaky (>=3.0)", "google-auth (>=2.0,<3.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "graphviz (>=0.8)", "graphviz (>=0.8.3)", "great-expectations (>=0.11.1)", "gspread (>=3.6.0)", "hvac (>=0.10)", "jinja2 (>=2.0,<4.0)", "jira (>=2.0.0)", "kubernetes (>=9.0.0a1,<=13.0)", "mypy (>=0.600,<0.813)", "nbconvert (>=6.0.7)", "pandas (>=1.0.1)", "papermill (>=2.2.0)", "prometheus-client (>=0.9.0)", "psycopg2-binary (>=2.8.2)", "pushbullet.py (>=0.11.0)", "pyarrow (>=5.0.0)", "pyexasol (>=0.16.1)", "pymysql (>=0.9.3)", "pyodbc (>=4.0.30)", "pytest (>=6.0)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "python-gitlab (>=2.5.0,<3.0)", "redis (>=3.2.1)", "responses (>=0.14.0)", "sendgrid (>=6.7.0)", "snowflake-connector-python (>=1.8.2,<2.5)", "soda-sql (>=2.0.0b25)", "spacy (>=2.0.0,<3.0.0)", "testfixtures (>=6.10.3)", "tweepy (>=3.5,<4.0)"] -all-orchestration-extras = ["PyGithub (>=1.51,<2.0)", "atlassian-python-api (>=2.0.1)", "azure-storage-blob (>=12.1.0,<13.0)", "boto3 (>=1.9,<2.0)", "dulwich (>=0.19.7)", "google-auth (>=2.0,<3.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "kubernetes (>=9.0.0a1,<=13.0)", "python-gitlab (>=2.5.0,<3.0)"] +all_extras = ["airtable-python-wrapper (>=0.11,<0.12)", "boto3 (>=1.9,<2.0)", "azure-storage-blob (>=12.1.0,<13.0)", "azureml-sdk (>=1.0.65,<1.1)", "azure-cosmos (>=3.1.1,<3.2)", "atlassian-python-api (>=2.0.1)", "dask-cloudprovider[aws] (>=0.2.0)", "black", "graphviz (>=0.8)", "jinja2 (>=2.0,<4.0)", "mypy (>=0.600,<0.813)", "Pygments (>=2.2,<3.0)", "pytest (>=6.0)", "testfixtures (>=6.10.3)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "flaky (>=3.0)", "responses (>=0.14.0)", "dropbox (>=9.0,<10.0)", "great-expectations (>=0.11.1)", "google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-auth (>=2.0,<3.0)", "dulwich (>=0.19.7)", "PyGithub (>=1.51,<2.0)", "python-gitlab (>=2.5.0,<3.0)", "gspread (>=3.6.0)", "jira (>=2.0.0)", "papermill (>=2.2.0)", "nbconvert (>=6.0.7)", "confluent-kafka (>=1.7.0)", "dask-kubernetes (>=0.8.0)", "kubernetes (>=9.0.0a1,<=13.0)", "pandas (>=1.0.1)", "psycopg2-binary (>=2.8.2)", "prometheus-client (>=0.9.0)", "pymysql (>=0.9.3)", "pyodbc (>=4.0.30)", "pushbullet.py (>=0.11.0)", "redis (>=3.2.1)", "feedparser (>=5.0.1,<6.0)", "snowflake-connector-python (>=1.8.2,<2.5)", "spacy (>=2.0.0,<3.0.0)", "hvac (>=0.10)", "graphviz (>=0.8.3)", "tweepy (>=3.5,<4.0)", "pyarrow (>=5.0.0)", "pyexasol (>=0.16.1)", "soda-sql (>=2.0.0b25)", "sendgrid (>=6.7.0)"] +all_orchestration_extras = ["boto3 (>=1.9,<2.0)", "azure-storage-blob (>=12.1.0,<13.0)", "atlassian-python-api (>=2.0.1)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-auth (>=2.0,<3.0)", "dulwich (>=0.19.7)", "PyGithub (>=1.51,<2.0)", "python-gitlab (>=2.5.0,<3.0)", "kubernetes (>=9.0.0a1,<=13.0)"] aws = ["boto3 (>=1.9,<2.0)"] -azure = ["azure-cosmos (>=3.1.1,<3.2)", "azure-storage-blob (>=12.1.0,<13.0)", "azureml-sdk (>=1.0.65,<1.1)"] -base-library-ci = ["PyGithub (>=1.51,<2.0)", "Pygments (>=2.2,<3.0)", "atlassian-python-api (>=2.0.1)", "azure-storage-blob (>=12.1.0,<13.0)", "black", "boto3 (>=1.9,<2.0)", "dulwich (>=0.19.7)", "flaky (>=3.0)", "google-auth (>=2.0,<3.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "graphviz (>=0.8)", "jinja2 (>=2.0,<4.0)", "jira (>=2.0.0)", "kubernetes (>=9.0.0a1,<=13.0)", "mypy (>=0.600,<0.813)", "pandas (>=1.0.1)", "pytest (>=6.0)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "python-gitlab (>=2.5.0,<3.0)", "responses (>=0.14.0)", "testfixtures (>=6.10.3)"] +azure = ["azure-storage-blob (>=12.1.0,<13.0)", "azureml-sdk (>=1.0.65,<1.1)", "azure-cosmos (>=3.1.1,<3.2)"] +base_library_ci = ["boto3 (>=1.9,<2.0)", "azure-storage-blob (>=12.1.0,<13.0)", "atlassian-python-api (>=2.0.1)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-auth (>=2.0,<3.0)", "dulwich (>=0.19.7)", "PyGithub (>=1.51,<2.0)", "python-gitlab (>=2.5.0,<3.0)", "kubernetes (>=9.0.0a1,<=13.0)", "black", "graphviz (>=0.8)", "jinja2 (>=2.0,<4.0)", "mypy (>=0.600,<0.813)", "Pygments (>=2.2,<3.0)", "pytest (>=6.0)", "testfixtures (>=6.10.3)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "flaky (>=3.0)", "responses (>=0.14.0)", "pandas (>=1.0.1)", "jira (>=2.0.0)"] bitbucket = ["atlassian-python-api (>=2.0.1)"] -dask-cloudprovider = ["dask-cloudprovider[aws] (>=0.2.0)"] -dev = ["Pygments (>=2.2,<3.0)", "black", "flaky (>=3.0)", "graphviz (>=0.8)", "jinja2 (>=2.0,<4.0)", "mypy (>=0.600,<0.813)", "pytest (>=6.0)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "responses (>=0.14.0)", "testfixtures (>=6.10.3)"] +dask_cloudprovider = ["dask-cloudprovider[aws] (>=0.2.0)"] +dev = ["black", "graphviz (>=0.8)", "jinja2 (>=2.0,<4.0)", "mypy (>=0.600,<0.813)", "Pygments (>=2.2,<3.0)", "pytest (>=6.0)", "testfixtures (>=6.10.3)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "flaky (>=3.0)", "responses (>=0.14.0)"] dremio = ["pyarrow (>=5.0.0)"] dropbox = ["dropbox (>=9.0,<10.0)"] exasol = ["pyexasol (>=0.16.1)"] -gcp = ["google-auth (>=2.0,<3.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)"] +gcp = ["google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-auth (>=2.0,<3.0)"] ge = ["great-expectations (>=0.11.1)"] git = ["dulwich (>=0.19.7)"] github = ["PyGithub (>=1.51,<2.0)"] gitlab = ["python-gitlab (>=2.5.0,<3.0)"] -google = ["google-auth (>=2.0,<3.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)"] +google = ["google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-auth (>=2.0,<3.0)"] gsheets = ["gspread (>=3.6.0)"] jira = ["jira (>=2.0.0)"] -jupyter = ["nbconvert (>=6.0.7)", "papermill (>=2.2.0)"] +jupyter = ["papermill (>=2.2.0)", "nbconvert (>=6.0.7)"] kafka = ["confluent-kafka (>=1.7.0)"] kubernetes = ["dask-kubernetes (>=0.8.0)", "kubernetes (>=9.0.0a1,<=13.0)"] mysql = ["pymysql (>=0.9.3)"] @@ -2124,10 +1131,10 @@ sendgrid = ["sendgrid (>=6.7.0)"] snowflake = ["snowflake-connector-python (>=1.8.2,<2.5)"] sodasql = ["soda-sql (>=2.0.0b25)"] spacy = ["spacy (>=2.0.0,<3.0.0)"] -sql-server = ["pyodbc (>=4.0.30)"] -task-library-ci = ["PyGithub (>=1.51,<2.0)", "Pygments (>=2.2,<3.0)", "airtable-python-wrapper (>=0.11,<0.12)", "atlassian-python-api (>=2.0.1)", "azure-cosmos (>=3.1.1,<3.2)", "azure-storage-blob (>=12.1.0,<13.0)", "azureml-sdk (>=1.0.65,<1.1)", "black", "boto3 (>=1.9,<2.0)", "confluent-kafka (>=1.7.0)", "dask-kubernetes (>=0.8.0)", "dropbox (>=9.0,<10.0)", "dulwich (>=0.19.7)", "feedparser (>=5.0.1,<6.0)", "flaky (>=3.0)", "google-auth (>=2.0,<3.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "graphviz (>=0.8)", "graphviz (>=0.8.3)", "great-expectations (>=0.11.1)", "gspread (>=3.6.0)", "hvac (>=0.10)", "jinja2 (>=2.0,<4.0)", "jira (>=2.0.0)", "kubernetes (>=9.0.0a1,<=13.0)", "mypy (>=0.600,<0.813)", "nbconvert (>=6.0.7)", "pandas (>=1.0.1)", "papermill (>=2.2.0)", "prometheus-client (>=0.9.0)", "psycopg2-binary (>=2.8.2)", "pushbullet.py (>=0.11.0)", "pyarrow (>=5.0.0)", "pyexasol (>=0.16.1)", "pymysql (>=0.9.3)", "pytest (>=6.0)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "python-gitlab (>=2.5.0,<3.0)", "redis (>=3.2.1)", "responses (>=0.14.0)", "sendgrid (>=6.7.0)", "snowflake-connector-python (>=1.8.2,<2.5)", "soda-sql (>=2.0.0b25)", "spacy (>=2.0.0,<3.0.0)", "testfixtures (>=6.10.3)", "tweepy (>=3.5,<4.0)"] +sql_server = ["pyodbc (>=4.0.30)"] +task_library_ci = ["airtable-python-wrapper (>=0.11,<0.12)", "boto3 (>=1.9,<2.0)", "azure-storage-blob (>=12.1.0,<13.0)", "azureml-sdk (>=1.0.65,<1.1)", "azure-cosmos (>=3.1.1,<3.2)", "atlassian-python-api (>=2.0.1)", "black", "graphviz (>=0.8)", "jinja2 (>=2.0,<4.0)", "mypy (>=0.600,<0.813)", "Pygments (>=2.2,<3.0)", "pytest (>=6.0)", "testfixtures (>=6.10.3)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "flaky (>=3.0)", "responses (>=0.14.0)", "dropbox (>=9.0,<10.0)", "great-expectations (>=0.11.1)", "google-cloud-bigquery (>=1.6.0,<3.0)", "google-cloud-secret-manager (>=2.4.0)", "google-cloud-storage (>=1.13,<2.0)", "google-cloud-aiplatform (>=1.4.0,<2.0)", "google-auth (>=2.0,<3.0)", "dulwich (>=0.19.7)", "PyGithub (>=1.51,<2.0)", "python-gitlab (>=2.5.0,<3.0)", "gspread (>=3.6.0)", "jira (>=2.0.0)", "papermill (>=2.2.0)", "nbconvert (>=6.0.7)", "confluent-kafka (>=1.7.0)", "dask-kubernetes (>=0.8.0)", "kubernetes (>=9.0.0a1,<=13.0)", "pandas (>=1.0.1)", "psycopg2-binary (>=2.8.2)", "prometheus-client (>=0.9.0)", "pymysql (>=0.9.3)", "pushbullet.py (>=0.11.0)", "redis (>=3.2.1)", "feedparser (>=5.0.1,<6.0)", "snowflake-connector-python (>=1.8.2,<2.5)", "spacy (>=2.0.0,<3.0.0)", "hvac (>=0.10)", "graphviz (>=0.8.3)", "tweepy (>=3.5,<4.0)", "pyarrow (>=5.0.0)", "pyexasol (>=0.16.1)", "soda-sql (>=2.0.0b25)", "sendgrid (>=6.7.0)"] templates = ["jinja2 (>=2.0,<4.0)"] -test = ["flaky (>=3.0)", "pytest (>=6.0)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "responses (>=0.14.0)", "testfixtures (>=6.10.3)"] +test = ["pytest (>=6.0)", "testfixtures (>=6.10.3)", "pytest-env (>=0.6.0)", "pytest-xdist (>=2.0)", "flaky (>=3.0)", "responses (>=0.14.0)"] twitter = ["tweepy (>=3.5,<4.0)"] vault = ["hvac (>=0.10)"] viz = ["graphviz (>=0.8.3)"] @@ -2139,10 +1146,6 @@ description = "Beautiful, Pythonic protocol buffers." category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "proto-plus-1.19.8.tar.gz", hash = "sha256:bdf45f0e0be71510eb2ec9db4da78afde7b5fb8b0a507a36340a9b6ce8e48e58"}, - {file = "proto_plus-1.19.8-py3-none-any.whl", hash = "sha256:3434eadaed845a337d6c488d2b7d055d733aaa231c0c0d4c778ec720bb91cf87"}, -] [package.dependencies] protobuf = ">=3.19.0" @@ -2157,32 +1160,6 @@ description = "Protocol Buffers" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "protobuf-3.19.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d80f80eb175bf5f1169139c2e0c5ada98b1c098e2b3c3736667f28cbbea39fc8"}, - {file = "protobuf-3.19.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a529e7df52204565bcd33738a7a5f288f3d2d37d86caa5d78c458fa5fabbd54d"}, - {file = "protobuf-3.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28ccea56d4dc38d35cd70c43c2da2f40ac0be0a355ef882242e8586c6d66666f"}, - {file = "protobuf-3.19.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8b30a7de128c46b5ecb343917d9fa737612a6e8280f440874e5cc2ba0d79b8f6"}, - {file = "protobuf-3.19.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5935c8ce02e3d89c7900140a8a42b35bc037ec07a6aeb61cc108be8d3c9438a6"}, - {file = "protobuf-3.19.1-cp36-cp36m-win32.whl", hash = "sha256:74f33edeb4f3b7ed13d567881da8e5a92a72b36495d57d696c2ea1ae0cfee80c"}, - {file = "protobuf-3.19.1-cp36-cp36m-win_amd64.whl", hash = "sha256:038daf4fa38a7e818dd61f51f22588d61755160a98db087a046f80d66b855942"}, - {file = "protobuf-3.19.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e51561d72efd5bd5c91490af1f13e32bcba8dab4643761eb7de3ce18e64a853"}, - {file = "protobuf-3.19.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:6e8ea9173403219239cdfd8d946ed101f2ab6ecc025b0fda0c6c713c35c9981d"}, - {file = "protobuf-3.19.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db3532d9f7a6ebbe2392041350437953b6d7a792de10e629c1e4f5a6b1fe1ac6"}, - {file = "protobuf-3.19.1-cp37-cp37m-win32.whl", hash = "sha256:615b426a177780ce381ecd212edc1e0f70db8557ed72560b82096bd36b01bc04"}, - {file = "protobuf-3.19.1-cp37-cp37m-win_amd64.whl", hash = "sha256:d8919368410110633717c406ab5c97e8df5ce93020cfcf3012834f28b1fab1ea"}, - {file = "protobuf-3.19.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71b0250b0cfb738442d60cab68abc166de43411f2a4f791d31378590bfb71bd7"}, - {file = "protobuf-3.19.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3cd0458870ea7d1c58e948ac8078f6ba8a7ecc44a57e03032ed066c5bb318089"}, - {file = "protobuf-3.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:655264ed0d0efe47a523e2255fc1106a22f6faab7cc46cfe99b5bae085c2a13e"}, - {file = "protobuf-3.19.1-cp38-cp38-win32.whl", hash = "sha256:b691d996c6d0984947c4cf8b7ae2fe372d99b32821d0584f0b90277aa36982d3"}, - {file = "protobuf-3.19.1-cp38-cp38-win_amd64.whl", hash = "sha256:e7e8d2c20921f8da0dea277dfefc6abac05903ceac8e72839b2da519db69206b"}, - {file = "protobuf-3.19.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fd390367fc211cc0ffcf3a9e149dfeca78fecc62adb911371db0cec5c8b7472d"}, - {file = "protobuf-3.19.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d83e1ef8cb74009bebee3e61cc84b1c9cd04935b72bca0cbc83217d140424995"}, - {file = "protobuf-3.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36d90676d6f426718463fe382ec6274909337ca6319d375eebd2044e6c6ac560"}, - {file = "protobuf-3.19.1-cp39-cp39-win32.whl", hash = "sha256:e7b24c11df36ee8e0c085e5b0dc560289e4b58804746fb487287dda51410f1e2"}, - {file = "protobuf-3.19.1-cp39-cp39-win_amd64.whl", hash = "sha256:77d2fadcf369b3f22859ab25bd12bb8e98fb11e05d9ff9b7cd45b711c719c002"}, - {file = "protobuf-3.19.1-py2.py3-none-any.whl", hash = "sha256:e813b1c9006b6399308e917ac5d298f345d95bb31f46f02b60cd92970a9afa17"}, - {file = "protobuf-3.19.1.tar.gz", hash = "sha256:62a8e4baa9cb9e064eb62d1002eca820857ab2138440cb4b3ea4243830f94ca7"}, -] [[package]] name = "psutil" @@ -2191,39 +1168,9 @@ description = "Cross-platform lib for process and system monitoring in Python." category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "psutil-5.8.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0066a82f7b1b37d334e68697faba68e5ad5e858279fd6351c8ca6024e8d6ba64"}, - {file = "psutil-5.8.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:0ae6f386d8d297177fd288be6e8d1afc05966878704dad9847719650e44fc49c"}, - {file = "psutil-5.8.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:12d844996d6c2b1d3881cfa6fa201fd635971869a9da945cf6756105af73d2df"}, - {file = "psutil-5.8.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:02b8292609b1f7fcb34173b25e48d0da8667bc85f81d7476584d889c6e0f2131"}, - {file = "psutil-5.8.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6ffe81843131ee0ffa02c317186ed1e759a145267d54fdef1bc4ea5f5931ab60"}, - {file = "psutil-5.8.0-cp27-none-win32.whl", hash = "sha256:ea313bb02e5e25224e518e4352af4bf5e062755160f77e4b1767dd5ccb65f876"}, - {file = "psutil-5.8.0-cp27-none-win_amd64.whl", hash = "sha256:5da29e394bdedd9144c7331192e20c1f79283fb03b06e6abd3a8ae45ffecee65"}, - {file = "psutil-5.8.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:74fb2557d1430fff18ff0d72613c5ca30c45cdbfcddd6a5773e9fc1fe9364be8"}, - {file = "psutil-5.8.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:74f2d0be88db96ada78756cb3a3e1b107ce8ab79f65aa885f76d7664e56928f6"}, - {file = "psutil-5.8.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:99de3e8739258b3c3e8669cb9757c9a861b2a25ad0955f8e53ac662d66de61ac"}, - {file = "psutil-5.8.0-cp36-cp36m-win32.whl", hash = "sha256:36b3b6c9e2a34b7d7fbae330a85bf72c30b1c827a4366a07443fc4b6270449e2"}, - {file = "psutil-5.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:52de075468cd394ac98c66f9ca33b2f54ae1d9bff1ef6b67a212ee8f639ec06d"}, - {file = "psutil-5.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c6a5fd10ce6b6344e616cf01cc5b849fa8103fbb5ba507b6b2dee4c11e84c935"}, - {file = "psutil-5.8.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:61f05864b42fedc0771d6d8e49c35f07efd209ade09a5afe6a5059e7bb7bf83d"}, - {file = "psutil-5.8.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:0dd4465a039d343925cdc29023bb6960ccf4e74a65ad53e768403746a9207023"}, - {file = "psutil-5.8.0-cp37-cp37m-win32.whl", hash = "sha256:1bff0d07e76114ec24ee32e7f7f8d0c4b0514b3fae93e3d2aaafd65d22502394"}, - {file = "psutil-5.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:fcc01e900c1d7bee2a37e5d6e4f9194760a93597c97fee89c4ae51701de03563"}, - {file = "psutil-5.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6223d07a1ae93f86451d0198a0c361032c4c93ebd4bf6d25e2fb3edfad9571ef"}, - {file = "psutil-5.8.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d225cd8319aa1d3c85bf195c4e07d17d3cd68636b8fc97e6cf198f782f99af28"}, - {file = "psutil-5.8.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:28ff7c95293ae74bf1ca1a79e8805fcde005c18a122ca983abf676ea3466362b"}, - {file = "psutil-5.8.0-cp38-cp38-win32.whl", hash = "sha256:ce8b867423291cb65cfc6d9c4955ee9bfc1e21fe03bb50e177f2b957f1c2469d"}, - {file = "psutil-5.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:90f31c34d25b1b3ed6c40cdd34ff122b1887a825297c017e4cbd6796dd8b672d"}, - {file = "psutil-5.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6323d5d845c2785efb20aded4726636546b26d3b577aded22492908f7c1bdda7"}, - {file = "psutil-5.8.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:245b5509968ac0bd179287d91210cd3f37add77dad385ef238b275bad35fa1c4"}, - {file = "psutil-5.8.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:90d4091c2d30ddd0a03e0b97e6a33a48628469b99585e2ad6bf21f17423b112b"}, - {file = "psutil-5.8.0-cp39-cp39-win32.whl", hash = "sha256:ea372bcc129394485824ae3e3ddabe67dc0b118d262c568b4d2602a7070afdb0"}, - {file = "psutil-5.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:f4634b033faf0d968bb9220dd1c793b897ab7f1189956e1aa9eae752527127d3"}, - {file = "psutil-5.8.0.tar.gz", hash = "sha256:0c9ccb99ab76025f2f0bbecf341d4656e9c1351db8cc8a03ccd62e318ab4b5c6"}, -] [package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "unittest2", "wmi"] +test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] [[package]] name = "pyaml" @@ -2232,10 +1179,6 @@ description = "PyYAML-based module to produce pretty and readable YAML-serialize category = "main" optional = false python-versions = "*" -files = [ - {file = "pyaml-20.4.0-py2.py3-none-any.whl", hash = "sha256:67081749a82b72c45e5f7f812ee3a14a03b3f5c25ff36ec3b290514f8c4c4b99"}, - {file = "pyaml-20.4.0.tar.gz", hash = "sha256:29a5c2a68660a799103d6949167bd6c7953d031449d08802386372de1db6ad71"}, -] [package.dependencies] PyYAML = "*" @@ -2247,44 +1190,6 @@ description = "Python library for Apache Arrow" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "pyarrow-6.0.0-cp310-cp310-macosx_10_13_universal2.whl", hash = "sha256:c7a6e7e0bf8779e9c3428ced85507541f3da9a0675e2f4781d4eb2c7042cbf81"}, - {file = "pyarrow-6.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:7a683f71b848eb6310b4ec48c0def55dac839e9994c1ac874c9b2d3d5625def1"}, - {file = "pyarrow-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5144bd9db2920c7cb566c96462d62443cc239104f94771d110f74393f2fb42a2"}, - {file = "pyarrow-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed0be080cf595ea15ff1c9ff4097bbf1fcc4b50847d98c0a3c0412fbc6ede7e9"}, - {file = "pyarrow-6.0.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:072c1a0fca4509eefd7d018b78542fb7e5c63aaf5698f1c0a6e45628ae17ba44"}, - {file = "pyarrow-6.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5bed4f948c032c40597302e9bdfa65f62295240306976ecbe43a54924c6f94f"}, - {file = "pyarrow-6.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:465f87fa0be0b2928b2beeba22b5813a0203fb05d90fd8563eea48e08ecc030e"}, - {file = "pyarrow-6.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:ddf2e6e3b321adaaf716f2d5af8e92d205a9671e0cb7c0779710a567fd1dd580"}, - {file = "pyarrow-6.0.0-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:0204e80777ab8f4e9abd3a765a8ec07ed1e3c4630bacda50d2ce212ef0f3826f"}, - {file = "pyarrow-6.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:82fe80309e01acf29e3943a1f6d3c98ec109fe1d356bc1ac37d639bcaadcf684"}, - {file = "pyarrow-6.0.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:281ce5fa03621d786a9beb514abb09846db7f0221b50eabf543caa24037eaacd"}, - {file = "pyarrow-6.0.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5408fa8d623e66a0445f3fb0e4027fd219bf99bfb57422d543d7b7876e2c5b55"}, - {file = "pyarrow-6.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a19e58dfb04e451cd8b7bdec3ac8848373b95dfc53492c9a69789aa9074a3c1b"}, - {file = "pyarrow-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b86d175262db1eb46afdceb36d459409eb6f8e532d3dec162f8bf572c7f57623"}, - {file = "pyarrow-6.0.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:2d2c681659396c745e4f1988d5dd41dcc3ad557bb8d4a8c2e44030edafc08a91"}, - {file = "pyarrow-6.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c666bc6a1cebf01206e2dc1ab05f25f39f35d3a499e0ef5cd635225e07306ca"}, - {file = "pyarrow-6.0.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d41dfb09ba9236cca6245f33088eb42f3c54023da281139241e0f9f3b4b754e"}, - {file = "pyarrow-6.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c746ef42c039348a288584800e299456c80c5691401bb9b19aa9c02a427b7"}, - {file = "pyarrow-6.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c38263ea438a1666b13372e7565450cfeec32dbcd1c2595749476a58465eaec"}, - {file = "pyarrow-6.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e81508239a71943759cee272ce625ae208092dd36ef2c6713fccee30bbcf52bb"}, - {file = "pyarrow-6.0.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:a50d2f77b86af38ceabf45617208b9105d20e7a5eebc584e7c8c0acededd82ce"}, - {file = "pyarrow-6.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fbda7595f24a639bcef3419ecfac17216efacb09f7b0f1b4c4c97f900d65ca0e"}, - {file = "pyarrow-6.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bf3400780c4d3c9cb43b1e8a1aaf2e1b7199a0572d0a645529d2784e4d0d8497"}, - {file = "pyarrow-6.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:15dc0d673d3f865ca63c877bd7a2eced70b0a08969fb733a28247134b8a1f18b"}, - {file = "pyarrow-6.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1d9a2f4ee812ed0bd4182cabef99ea914ac297274f0de086f2488093d284ef"}, - {file = "pyarrow-6.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d046dc78a9337baa6415be915c5a16222505233e238a1017f368243c89817eea"}, - {file = "pyarrow-6.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:ea64a48a85c631eb2a0ea13ccdec5143c85b5897836b16331ee4289d27a57247"}, - {file = "pyarrow-6.0.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:cc1d4a70efd583befe92d4ea6f74ed2e0aa31ccdde767cd5cae8e77c65a1c2d4"}, - {file = "pyarrow-6.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:004185e0babc6f3c3fba6ba4f106e406a0113d0f82bb9ad9a8571a1978c45d04"}, - {file = "pyarrow-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c23f8cdecd3d9e49f9b0f9a651ae5549d1d32fd4901fb1bdc2d327edfba844f"}, - {file = "pyarrow-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fb701ec4a94b92102606d4e88f0b8eba34f09a5ad8e014eaa4af76f42b7f62ae"}, - {file = "pyarrow-6.0.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:da7860688c33ca88ac05f1a487d32d96d9caa091412496c35f3d1d832145675a"}, - {file = "pyarrow-6.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac941a147d14993987cc8b605b721735a34b3e54d167302501fb4db1ad7382c7"}, - {file = "pyarrow-6.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6163d82cca7541774b00503c295fe86a1722820eddb958b57f091bb6f5b0a6db"}, - {file = "pyarrow-6.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:376c4b5f248ae63df21fe15c194e9013753164be2d38f4b3fb8bde63ac5a1958"}, - {file = "pyarrow-6.0.0.tar.gz", hash = "sha256:5be62679201c441356d3f2a739895dcc8d4d299f2a6eabcd2163bfb6a898abba"}, -] [package.dependencies] numpy = ">=1.16.6" @@ -2296,10 +1201,6 @@ description = "ASN.1 types and codecs" category = "main" optional = false python-versions = "*" -files = [ - {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, - {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, -] [[package]] name = "pyasn1-modules" @@ -2308,10 +1209,6 @@ description = "A collection of ASN.1-based protocols modules." category = "main" optional = false python-versions = "*" -files = [ - {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, - {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, -] [package.dependencies] pyasn1 = ">=0.4.6,<0.5.0" @@ -2323,15 +1220,10 @@ description = "PyData helpers for authenticating to Google APIs" category = "main" optional = false python-versions = "*" -files = [ - {file = "pydata-google-auth-1.2.0.tar.gz", hash = "sha256:076411ecd7a5ac927ba9741c32ea599bc66e54170dffc1259f3cd353cf25cbd7"}, - {file = "pydata_google_auth-1.2.0-py2.py3-none-any.whl", hash = "sha256:2e2b27425d6f8a9ead496c0fd677a09448cbca2b71055abe3ee72c7f8f1774f4"}, -] [package.dependencies] google-auth = "*" google-auth-oauthlib = "*" -setuptools = "*" [[package]] name = "pymssql" @@ -2340,59 +1232,6 @@ description = "DB-API interface to Microsoft SQL Server for Python. (new Cython- category = "main" optional = false python-versions = "*" -files = [ - {file = "pymssql-2.2.5-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6462017183f05ae231c3f84efce4e9a8d085b4a2e9e3ed5c407ee643494a0842"}, - {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a013c82f7320c92039ac20db935e897a3fcd7423435705cef177f863dbb32e4"}, - {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:45e9bba4870103363c865d2b867de8de082745dd753083f27927ded3d15df587"}, - {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20de2f718f3c99040637a0e7d3b81f22e62211bcac01fb65641b964e70f26e20"}, - {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18eb4fcb55b67aaa2811e124eb8750fd84eeba1668a695908c6cc13682f6be5d"}, - {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_24_i686.whl", hash = "sha256:9969971117401096a8a7c1e08d84ea3d5d3f598ee482822583a44e2e6d3791d0"}, - {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:bb858c8a64990dd0145d874ef01af4b6fe39e9202ee0a74a8dff8285b801db21"}, - {file = "pymssql-2.2.5-cp310-cp310-win32.whl", hash = "sha256:da78a94908d42aa0f8af1b917c49c4dea38273035f81ea168b095e0b3ba8e486"}, - {file = "pymssql-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:b691779a450ebbbb98cd2ad89ae9f17799b0bf0c9dd2e65b316efcc74246716e"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92262bf5d21b6d80e887d6fd0f03ab6337dad39b642b1887416cc67b1bd04cbf"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00f5b7e22bf7eb0faa5c6693e02c00f10ecc89fe505bbe84d553352681c2a749"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac80d1d11703120b986c604ddf4993c3dcbcbe907b04e34729c5aae2891399c0"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bf813ea0e4a0bfbb53a3469125eed06635222ea729339403585fd45f18a7812"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_24_i686.whl", hash = "sha256:73b747261cdf8d69395823cf650cf143d618ada412cbec90a88e4d449e7fa7f8"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:ce9e7ed16793c72d28e80506abd59a06b594fc55fe24f6256b7007b5b5e26120"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5dcb4e4ceb16592a5d9ea3868162f21e7c215dde5c5e7f992709696c84a69b0"}, - {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9c90bc134a0c5c60e9acf651d87275c7e6dc6682981f62d574fa3dd441acb0f2"}, - {file = "pymssql-2.2.5-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:29d647ef61641cebc0e16d4a549b3f793f32bab88e7ba7c7550772a7aba9dea3"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:633079e248cdefef2207c0a55608637d0f3410f53e5679c589b37ea7965a2cca"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e373764cc81719f830b113ce6fee6849f2c4e5dfe1037804864b7dfb9946817e"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b47c05da0fffd6dd77141c1c37975a8469334f63e6faf03f5eab6d83c9001cc"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc245011aad9c018105193585469461c35fb35e7255b8e66fa27479f835742aa"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_24_i686.whl", hash = "sha256:72bbccdaf4938db7ff99db1f82ecdf6dc78778d8b7bbe6080590dd01024988de"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:395ec9e512a8d5b707aea8f516eebf51291b6fb6bc18fe4da88b222843bd4d46"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bb912b4681d55dce63f940becb7f4533661cfdb99cd6cd3daa7d7b5e285e977"}, - {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14dee37da84653d1e483236d51bc0545e6442e0642ee362526db6599fd3c1733"}, - {file = "pymssql-2.2.5-cp37-cp37m-win32.whl", hash = "sha256:5e2cd5a6da441aa3e8ee13e8811f884791d77a4cb17028381543bf50d010c919"}, - {file = "pymssql-2.2.5-cp37-cp37m-win_amd64.whl", hash = "sha256:ba43efd1057018ab404c8603bbce643347b9165c08364df8a8c03d54dffc4453"}, - {file = "pymssql-2.2.5-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:ac8d6b7e0dc97a9261b7500f086772ff5cf2bf9a0340d0aaee4dff5b217dd526"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ed7c5e58cd0ffcf3448cc38dfd2a6011f657759fcae9509748320cd89a0b8d32"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30c4ab08cff619c7fe4d309fa6a05219b343082a1f46ca368deab5841632b8bf"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49806c343a6dea5221e98cabed1532fdd14535c5e5bb183001e0ffad31e11032"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15cc71762ec75a66bcb3751c2534ba4151b8512252b0377b842efec7cae6d953"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_24_i686.whl", hash = "sha256:e42c7043c472d45db686ae67601c6680596a2f12ceaa99fb136e647d3d8cd643"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:c738d51181ab4b3332631644ef7b561543837d1d942a291f8bc36a9e2dfb65db"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e33770ad113a646a45e4fc75f30683e92c9b929431e12977f824d6c810f28162"}, - {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8c5ad8d09f9035009ccb6f20bc9829ef60c03c436efb4b5c33af395c4030ea3d"}, - {file = "pymssql-2.2.5-cp38-cp38-win32.whl", hash = "sha256:c0611a3ea2a7ac496df30506fd28e4f7389808c59743b2eac0069e89af7289b8"}, - {file = "pymssql-2.2.5-cp38-cp38-win_amd64.whl", hash = "sha256:45c1519c94f9915911075c95fc63d62ba612e152248093aa12b7e902499c6416"}, - {file = "pymssql-2.2.5-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:1089cd5871daedc9918f8958605bbd2621006c29c06b571b419be53ea46c113a"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8ac2b3213462f078671806702dfadb8e459923f0f5013d371febebf4caf598ba"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9b707e5867bb49ad9d8945231112dfa3e9588b98f6f1248714d1f1af88321230"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:538a8e7ce255cabf093b25b72f8037b1d5fd3ba28b13a34c761a029840dc1880"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b9f5ec7896fd2f19393cd564d8ef562b26692218a84088ce1b10e9fe1215032"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_24_i686.whl", hash = "sha256:6086f0b695b7ceb4603cdc2f66356a58e367a3f1828d1ca99255c4d92d1f0932"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:e0b1bcb8465d787d5141bfc02d98e1e507d02155848b1b5622528402760f5dbf"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebb7867207cf4cd497ea1d01b42590ed1db3561ef3ab8e135239301b6ee2695e"}, - {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8b32ad436f293c8cbadc1ba3aaf2621ab82303d169b1ab6f30f55053640ab5b1"}, - {file = "pymssql-2.2.5-cp39-cp39-win32.whl", hash = "sha256:cc523bfd26671346faccb1273b16a74dcdf1a8ac81c93c6bfebdb240e4d5a042"}, - {file = "pymssql-2.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:e9cce9c47e6d550992936f91f8f2e97a8f5132749bad1cd4f5f7923bf8732d1f"}, - {file = "pymssql-2.2.5.tar.gz", hash = "sha256:857411c308ecb584a3ca633be30f1971d2a8cc0bcd978709b1abf96ff43767ad"}, -] [[package]] name = "pyparsing" @@ -2401,25 +1240,17 @@ description = "Python parsing module" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, - {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"}, -] [package.extras] diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.3.1" +version = "7.4.0" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" -files = [ - {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, - {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, -] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} @@ -2430,7 +1261,7 @@ pluggy = ">=0.12,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" @@ -2439,17 +1270,13 @@ description = "Pytest plugin for measuring coverage." category = "dev" optional = false python-versions = ">=3.6" -files = [ - {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, - {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, -] [package.dependencies] coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] [[package]] name = "python-box" @@ -2458,16 +1285,12 @@ description = "Advanced Python dictionaries with dot notation access" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "python-box-5.4.1.tar.gz", hash = "sha256:b68e0f8abc86f3deda751b3390f64df64a0989459de51ba4db949662a7b4d8ac"}, - {file = "python_box-5.4.1-py3-none-any.whl", hash = "sha256:60ae9156de34cf92b899bd099580950df70a5b0813e67a3310a1cdd1976457fa"}, -] [package.extras] -all = ["msgpack", "ruamel.yaml", "toml"] +pyyaml = ["pyyaml"] +all = ["ruamel.yaml", "toml", "msgpack"] msgpack = ["msgpack"] -pyyaml = ["PyYAML"] -ruamel-yaml = ["ruamel.yaml"] +"ruamel.yaml" = ["ruamel.yaml"] toml = ["toml"] yaml = ["ruamel.yaml"] @@ -2478,10 +1301,6 @@ description = "Extensions to the standard Python datetime module" category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] [package.dependencies] six = ">=1.5" @@ -2493,10 +1312,6 @@ description = "A Python Slugify application that handles Unicode" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "python-slugify-5.0.2.tar.gz", hash = "sha256:f13383a0b9fcbe649a1892b9c8eb4f8eab1d6d84b84bb7a624317afa98159cab"}, - {file = "python_slugify-5.0.2-py2.py3-none-any.whl", hash = "sha256:6d8c5df75cd4a7c3a2d21e257633de53f52ab0265cd2d1dc62a730e8194a7380"}, -] [package.dependencies] text-unidecode = ">=1.3" @@ -2504,22 +1319,6 @@ text-unidecode = ">=1.3" [package.extras] unidecode = ["Unidecode (>=1.1.1)"] -[[package]] -name = "python-string-utils" -version = "1.0.0" -description = "Utility functions for strings validation and manipulation." -category = "dev" -optional = false -python-versions = ">=3.5" -files = [] -develop = false - -[package.source] -type = "git" -url = "https://github.com/daveoncode/python-string-utils.git" -reference = "master" -resolved_reference = "78929d88d90b1f90cb4837528ed955166bf0f559" - [[package]] name = "pytz" version = "2021.3" @@ -2527,10 +1326,6 @@ description = "World timezone definitions, modern and historical" category = "main" optional = false python-versions = "*" -files = [ - {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, - {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, -] [[package]] name = "pytzdata" @@ -2539,10 +1334,6 @@ description = "The Olson timezone database for Python." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, -] [[package]] name = "pywin32" @@ -2551,20 +1342,6 @@ description = "Python for Window Extensions" category = "main" optional = false python-versions = "*" -files = [ - {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, - {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, - {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, - {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, - {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, - {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, - {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, - {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, - {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, - {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, - {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, - {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, -] [[package]] name = "pyyaml" @@ -2573,63 +1350,17 @@ description = "YAML parser and emitter for Python" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] [[package]] name = "redis" -version = "4.5.4" +version = "4.6.0" description = "Python client for Redis database and key-value store" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "redis-4.5.4-py3-none-any.whl", hash = "sha256:2c19e6767c474f2e85167909061d525ed65bea9301c0770bb151e041b7ac89a2"}, - {file = "redis-4.5.4.tar.gz", hash = "sha256:73ec35da4da267d6847e47f68730fdd5f62e2ca69e3ef5885c6a78a9374c3893"}, -] [package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_version <= \"3.11.2\""} +async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -2642,10 +1373,6 @@ description = "Store things in Redis without worrying about types or anything, j category = "main" optional = false python-versions = ">=3.8,<4.0" -files = [ - {file = "redis-pal-1.0.0.tar.gz", hash = "sha256:8e20caf8127056a2d1208d6dd0873643efb8357602193e26c1ada8ed6737fa88"}, - {file = "redis_pal-1.0.0-py3-none-any.whl", hash = "sha256:8cbf55c926c761ce9d60803ed66ef2575f351b43c9554fd66f6458d323430bf0"}, -] [package.dependencies] dill = ">=0.3.5,<0.4.0" @@ -2658,10 +1385,6 @@ description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, - {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, -] [package.dependencies] certifi = ">=2017.4.17" @@ -2671,7 +1394,7 @@ urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<5)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] name = "requests-oauthlib" @@ -2680,10 +1403,6 @@ description = "OAuthlib authentication support for Requests." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-oauthlib-1.3.0.tar.gz", hash = "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"}, - {file = "requests_oauthlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d"}, -] [package.dependencies] oauthlib = ">=3.0.0" @@ -2699,25 +1418,17 @@ description = "Pure-Python RSA implementation" category = "main" optional = false python-versions = ">=3.6,<4" -files = [ - {file = "rsa-4.8-py3-none-any.whl", hash = "sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb"}, - {file = "rsa-4.8.tar.gz", hash = "sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17"}, -] [package.dependencies] pyasn1 = ">=0.1.3" [[package]] -name = "ruamel-yaml" +name = "ruamel.yaml" version = "0.17.10" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" category = "main" optional = false python-versions = ">=3" -files = [ - {file = "ruamel.yaml-0.17.10-py3-none-any.whl", hash = "sha256:ffb9b703853e9e8b7861606dfdab1026cf02505bade0653d1880f4b2db47f815"}, - {file = "ruamel.yaml-0.17.10.tar.gz", hash = "sha256:106bc8d6dc6a0ff7c9196a47570432036f41d556b779c6b4e618085f57e39e67"}, -] [package.dependencies] "ruamel.yaml.clib" = {version = ">=0.1.2", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.10\""} @@ -2727,44 +1438,12 @@ docs = ["ryd"] jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] -name = "ruamel-yaml-clib" +name = "ruamel.yaml.clib" version = "0.2.6" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:066f886bc90cc2ce44df8b5f7acfc6a7e2b2e672713f027136464492b0c34d7c"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, - {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d3c620a54748a3d4cf0bcfe623e388407c8e85a4b06b8188e126302bcab93ea8"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, - {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:210c8fcfeff90514b7133010bf14e3bad652c8efde6b20e00c43854bf94fa5a6"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, - {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:61bc5e5ca632d95925907c569daa559ea194a4d16084ba86084be98ab1cec1c6"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, - {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1b4139a6ffbca8ef60fdaf9b33dec05143ba746a6f0ae0f9d11d38239211d335"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, - {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, - {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, -] [[package]] name = "scipy" @@ -2773,37 +1452,14 @@ description = "Fundamental algorithms for scientific computing in Python" category = "main" optional = false python-versions = "<3.12,>=3.8" -files = [ - {file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"}, - {file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"}, - {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1553b5dcddd64ba9a0d95355e63fe6c3fc303a8fd77c7bc91e77d61363f7433f"}, - {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c0ff64b06b10e35215abce517252b375e580a6125fd5fdf6421b98efbefb2d2"}, - {file = "scipy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:fae8a7b898c42dffe3f7361c40d5952b6bf32d10c4569098d276b4c547905ee1"}, - {file = "scipy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f1564ea217e82c1bbe75ddf7285ba0709ecd503f048cb1236ae9995f64217bd"}, - {file = "scipy-1.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d925fa1c81b772882aa55bcc10bf88324dadb66ff85d548c71515f6689c6dac5"}, - {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaea0a6be54462ec027de54fca511540980d1e9eea68b2d5c1dbfe084797be35"}, - {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a35c4242ec5f292c3dd364a7c71a61be87a3d4ddcc693372813c0b73c9af1d"}, - {file = "scipy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:43b8e0bcb877faf0abfb613d51026cd5cc78918e9530e375727bf0625c82788f"}, - {file = "scipy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5678f88c68ea866ed9ebe3a989091088553ba12c6090244fdae3e467b1139c35"}, - {file = "scipy-1.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:39becb03541f9e58243f4197584286e339029e8908c46f7221abeea4b749fa88"}, - {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce5869c8d68cf383ce240e44c1d9ae7c06078a9396df68ce88a1230f93a30c1"}, - {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c3457ce0b3ad5124f98a86533106b643dd811dd61b548e78cf4c8786652f6f"}, - {file = "scipy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:049a8bbf0ad95277ffba9b3b7d23e5369cc39e66406d60422c8cfef40ccc8415"}, - {file = "scipy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cd9f1027ff30d90618914a64ca9b1a77a431159df0e2a195d8a9e8a04c78abf9"}, - {file = "scipy-1.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:79c8e5a6c6ffaf3a2262ef1be1e108a035cf4f05c14df56057b64acc5bebffb6"}, - {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51af417a000d2dbe1ec6c372dfe688e041a7084da4fdd350aeb139bd3fb55353"}, - {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4735d6c28aad3cdcf52117e0e91d6b39acd4272f3f5cd9907c24ee931ad601"}, - {file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"}, - {file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"}, -] [package.dependencies] numpy = ">=1.19.5,<1.27.0" [package.extras] -dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] -doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +test = ["pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "asv", "mpmath", "gmpy2", "threadpoolctl", "scikit-umfpack", "pooch"] +doc = ["sphinx (!=4.1.0)", "pydata-sphinx-theme (==0.9.0)", "sphinx-design (>=0.2.0)", "matplotlib (>2)", "numpydoc"] +dev = ["mypy", "typing-extensions", "pycodestyle", "flake8", "rich-click", "click", "doit (>=0.36.0)", "pydevtool"] [[package]] name = "seaborn" @@ -2812,10 +1468,6 @@ description = "seaborn: statistical data visualization" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"}, - {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"}, -] [package.dependencies] matplotlib = ">=2.2" @@ -2824,21 +1476,21 @@ pandas = ">=0.23" scipy = ">=1.0" [[package]] -name = "setuptools" -version = "67.7.1" -description = "Easily download, build, install, upgrade, and uninstall Python packages" +name = "setuptools-scm" +version = "7.1.0" +description = "the blessed package to manage your versions by scm tags" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "setuptools-67.7.1-py3-none-any.whl", hash = "sha256:6f0839fbdb7e3cfef1fc38d7954f5c1c26bf4eebb155a55c9bf8faf997b9fb67"}, - {file = "setuptools-67.7.1.tar.gz", hash = "sha256:bb16732e8eb928922eabaa022f881ae2b7cdcfaf9993ef1f5e841a96d32b8e0c"}, -] + +[package.dependencies] +packaging = ">=20.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} +typing-extensions = "*" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] [[package]] name = "six" @@ -2847,10 +1499,6 @@ description = "Python 2 and 3 compatibility utilities" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] [[package]] name = "sortedcontainers" @@ -2859,10 +1507,6 @@ description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" category = "main" optional = false python-versions = "*" -files = [ - {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, - {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, -] [[package]] name = "soupsieve" @@ -2871,10 +1515,6 @@ description = "A modern CSS selector implementation for Beautiful Soup." category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, -] [[package]] name = "tabulate" @@ -2883,10 +1523,6 @@ description = "Pretty-print tabular data" category = "main" optional = false python-versions = "*" -files = [ - {file = "tabulate-0.8.9-py3-none-any.whl", hash = "sha256:d7c013fe7abbc5e491394e10fa845f8f32fe54f8dc60c6622c6cf482d25d47e4"}, - {file = "tabulate-0.8.9.tar.gz", hash = "sha256:eb1d13f25760052e8931f2ef80aaf6045a6cceb47514db8beab24cded16f13a7"}, -] [package.extras] widechars = ["wcwidth"] @@ -2898,10 +1534,6 @@ description = "Traceback serialization library." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "tblib-1.7.0-py2.py3-none-any.whl", hash = "sha256:289fa7359e580950e7d9743eab36b0691f0310fce64dee7d9c31065b8f723e23"}, - {file = "tblib-1.7.0.tar.gz", hash = "sha256:059bd77306ea7b419d4f76016aef6d7027cc8a0785579b5aad198803435f882c"}, -] [[package]] name = "text-unidecode" @@ -2910,10 +1542,6 @@ description = "The most basic Text::Unidecode port" category = "main" optional = false python-versions = "*" -files = [ - {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, - {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, -] [[package]] name = "toml" @@ -2922,22 +1550,14 @@ description = "Python Library for Tom's Obvious, Minimal Language" category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] [[package]] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] [[package]] name = "tomlkit" @@ -2946,10 +1566,6 @@ description = "Style preserving TOML library" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "tomlkit-0.7.0-py2.py3-none-any.whl", hash = "sha256:6babbd33b17d5c9691896b0e68159215a9387ebfa938aa3ac42f4a4beeb2b831"}, - {file = "tomlkit-0.7.0.tar.gz", hash = "sha256:ac57f29693fab3e309ea789252fcce3061e19110085aa31af5446ca749325618"}, -] [[package]] name = "toolz" @@ -2958,10 +1574,6 @@ description = "List processing tools and functional utilities" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "toolz-0.11.2-py3-none-any.whl", hash = "sha256:a5700ce83414c64514d82d60bcda8aabfde092d1c1a8663f9200c07fdcc6da8f"}, - {file = "toolz-0.11.2.tar.gz", hash = "sha256:6b312d5e15138552f1bda8a4e66c30e236c831b612b2bf0005f8a1df10a4bc33"}, -] [[package]] name = "tornado" @@ -2970,49 +1582,6 @@ description = "Tornado is a Python web framework and asynchronous networking lib category = "main" optional = false python-versions = ">= 3.5" -files = [ - {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, - {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, - {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, - {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, - {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, - {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, - {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, - {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, - {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, - {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, - {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, - {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, - {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, - {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, - {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, - {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, - {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, - {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, - {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, - {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, - {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, - {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, - {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, - {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, - {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, - {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, - {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, - {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, - {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, - {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, - {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, - {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, -] [[package]] name = "tqdm" @@ -3021,13 +1590,9 @@ description = "Fast, Extensible Progress Meter" category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" -files = [ - {file = "tqdm-4.50.2-py2.py3-none-any.whl", hash = "sha256:43ca183da3367578ebf2f1c2e3111d51ea161ed1dc4e6345b86e27c2a93beff7"}, - {file = "tqdm-4.50.2.tar.gz", hash = "sha256:69dfa6714dee976e2425a9aab84b622675b7b1742873041e3db8a8e86132a4af"}, -] [package.extras] -dev = ["argopt", "py-make (>=0.1.0)", "pydoc-markdown", "twine"] +dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"] [[package]] name = "tweepy" @@ -3036,10 +1601,6 @@ description = "Twitter library for Python" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "tweepy-4.4.0-py2.py3-none-any.whl", hash = "sha256:cf02c4fbbd027fbc7172c24d03f53f061329ac040b22d201e59592a1cff86364"}, - {file = "tweepy-4.4.0.tar.gz", hash = "sha256:8d4b4520271b796fa7efc4c5d5ef3228af4d79f6a4d3ace3900b2778ed8f6f1c"}, -] [package.dependencies] requests = ">=2.11.1,<3" @@ -3052,25 +1613,12 @@ socks = ["requests[socks] (>=2.11.1,<3)"] test = ["vcrpy (>=1.10.3)"] [[package]] -name = "typer" -version = "0.4.0" -description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -category = "dev" +name = "typing-extensions" +version = "4.7.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" optional = false -python-versions = ">=3.6" -files = [ - {file = "typer-0.4.0-py3-none-any.whl", hash = "sha256:d81169725140423d072df464cad1ff25ee154ef381aaf5b8225352ea187ca338"}, - {file = "typer-0.4.0.tar.gz", hash = "sha256:63c3aeab0549750ffe40da79a1b524f60e08a2cbc3126c520ebf2eeaf507f5dd"}, -] - -[package.dependencies] -click = ">=7.1.1,<9.0.0" - -[package.extras] -all = ["colorama (>=0.4.3,<0.5.0)", "shellingham (>=1.3.0,<2.0.0)"] -dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)"] -doc = ["markdown-include (>=0.5.1,<0.6.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=5.4.0,<6.0.0)"] -test = ["black (>=19.10b0,<20.0b0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<5.4.0)", "pytest-cov (>=2.10.0,<3.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<2.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +python-versions = ">=3.7" [[package]] name = "unidecode" @@ -3079,10 +1627,6 @@ description = "ASCII transliterations of Unicode text" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "Unidecode-1.3.6-py3-none-any.whl", hash = "sha256:547d7c479e4f377b430dd91ac1275d593308dce0fc464fb2ab7d41f82ec653be"}, - {file = "Unidecode-1.3.6.tar.gz", hash = "sha256:fed09cf0be8cf415b391642c2a5addfc72194407caee4f98719e40ec2a72b830"}, -] [[package]] name = "uritemplate" @@ -3091,10 +1635,6 @@ description = "Implementation of RFC 6570 URI Templates" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, - {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, -] [[package]] name = "urllib3" @@ -3103,36 +1643,28 @@ description = "HTTP library with thread-safe connection pooling, file post, and category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -files = [ - {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, - {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"}, -] [package.extras] brotli = ["brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.22.0" +version = "20.23.1" description = "Virtual Python Environment builder" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "virtualenv-20.22.0-py3-none-any.whl", hash = "sha256:48fd3b907b5149c5aab7c23d9790bea4cac6bc6b150af8635febc4cfeab1275a"}, - {file = "virtualenv-20.22.0.tar.gz", hash = "sha256:278753c47aaef1a0f14e6db8a4c5e1e040e90aea654d0fc1dc7e0d8a42616cc3"}, -] [package.dependencies] distlib = ">=0.3.6,<1" -filelock = ">=3.11,<4" -platformdirs = ">=3.2,<4" +filelock = ">=3.12,<4" +platformdirs = ">=3.5.1,<4" [package.extras] -docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx-argparse (>=0.4)", "sphinx (>=7.0.1)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage-enable-subprocess (>=1)", "coverage (>=7.2.7)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest-env (>=0.8.1)", "pytest-freezer (>=0.4.6)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "pytest (>=7.3.1)", "setuptools (>=67.8)", "time-machine (>=2.9)"] [[package]] name = "websocket-client" @@ -3141,10 +1673,6 @@ description = "WebSocket client for Python with low level API options" category = "main" optional = false python-versions = ">=3.6" -files = [ - {file = "websocket-client-1.2.1.tar.gz", hash = "sha256:8dfb715d8a992f5712fff8c843adae94e22b22a99b2c5e6b0ec4a1a981cc4e0d"}, - {file = "websocket_client-1.2.1-py2.py3-none-any.whl", hash = "sha256:0133d2f784858e59959ce82ddac316634229da55b498aac311f1620567a710ec"}, -] [package.extras] optional = ["python-socks", "wsaccel"] @@ -3157,9 +1685,6 @@ description = "pure python download utility" category = "main" optional = false python-versions = "*" -files = [ - {file = "wget-3.2.zip", hash = "sha256:35e630eca2aa50ce998b9b1a127bb26b30dfee573702782aa982f875e3f16061"}, -] [[package]] name = "win32-setctime" @@ -3168,13 +1693,9 @@ description = "A small Python utility to set file creation time on Windows" category = "main" optional = false python-versions = ">=3.5" -files = [ - {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, - {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, -] [package.extras] -dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] +dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] [[package]] name = "zict" @@ -3183,10 +1704,6 @@ description = "Mutable mapping tools" category = "main" optional = false python-versions = "*" -files = [ - {file = "zict-2.0.0-py3-none-any.whl", hash = "sha256:26aa1adda8250a78dfc6a78d200bfb2ea43a34752cf58980bca75dde0ba0c6e9"}, - {file = "zict-2.0.0.tar.gz", hash = "sha256:8e2969797627c8a663575c2fc6fcb53a05e37cdb83ee65f341fc6e0c3d0ced16"}, -] [package.dependencies] heapdict = "*" @@ -3198,16 +1715,146 @@ description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" -files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, -] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "sphinx-lint", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "jaraco.functools", "more-itertools", "big-o", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8"] [metadata] -lock-version = "2.0" +lock-version = "1.1" python-versions = ">=3.8,<3.11" -content-hash = "4848e146fea3f7be8e759242cc00b146996a63def6d2c26dde4a59d31daf2b67" +content-hash = "7d8ffbb994cd07296e011d3f1b798854853507be3882aa215270ccff3c41cc10" + +[metadata.files] +async-timeout = [] +basedosdados = [] +beautifulsoup4 = [] +cachetools = [] +certifi = [] +cfgv = [] +charset-normalizer = [] +ckanapi = [] +click = [] +cloudpickle = [] +colorama = [] +contourpy = [] +coverage = [] +croniter = [] +cycler = [] +dask = [] +db-dtypes = [] +dbt-client = [] +dill = [] +distlib = [] +distributed = [] +docker = [] +docopt = [] +et-xmlfile = [] +exceptiongroup = [] +fake-useragent = [] +fastavro = [] +filelock = [] +fonttools = [] +fsspec = [] +google-analytics-data = [] +google-api-core = [] +google-api-python-client = [] +google-auth = [] +google-auth-httplib2 = [] +google-auth-oauthlib = [] +google-cloud-bigquery = [] +google-cloud-bigquery-storage = [] +google-cloud-core = [] +google-cloud-storage = [] +google-crc32c = [] +google-resumable-media = [] +googleapis-common-protos = [] +grpcio = [] +heapdict = [] +httplib2 = [] +hvac = [] +identify = [] +idna = [] +importlib-metadata = [] +importlib-resources = [] +iniconfig = [] +ipeadatapy = [] +jinja2 = [] +kiwisolver = [] +locket = [] +loguru = [] +lxml = [] +markupsafe = [] +marshmallow = [] +marshmallow-oneofschema = [] +matplotlib = [] +msgpack = [] +mypy-extensions = [] +nodeenv = [] +numpy = [] +oauth2client = [] +oauthlib = [] +openpyxl = [] +packaging = [] +pandas = [] +pandas-gbq = [] +pandavro = [] +partd = [] +pendulum = [] +pillow = [] +platformdirs = [] +pluggy = [] +pre-commit = [] +prefect = [] +proto-plus = [] +protobuf = [] +psutil = [] +pyaml = [] +pyarrow = [] +pyasn1 = [] +pyasn1-modules = [] +pydata-google-auth = [] +pymssql = [] +pyparsing = [] +pytest = [] +pytest-cov = [] +python-box = [] +python-dateutil = [] +python-slugify = [] +pytz = [] +pytzdata = [] +pywin32 = [] +pyyaml = [] +redis = [] +redis-pal = [] +requests = [] +requests-oauthlib = [] +rsa = [] +"ruamel.yaml" = [] +"ruamel.yaml.clib" = [] +scipy = [] +seaborn = [] +setuptools-scm = [] +six = [] +sortedcontainers = [] +soupsieve = [] +tabulate = [] +tblib = [] +text-unidecode = [] +toml = [] +tomli = [] +tomlkit = [] +toolz = [] +tornado = [] +tqdm = [] +tweepy = [] +typing-extensions = [] +unidecode = [] +uritemplate = [] +urllib3 = [] +virtualenv = [] +websocket-client = [] +wget = [] +win32-setctime = [] +zict = [] +zipp = [] diff --git a/pyproject.toml b/pyproject.toml index b1e00c74c..3475f0e0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -99,16 +99,11 @@ google-analytics-data = "0.12.1" google-api-python-client = "^2.58.0" oauth2client = "^4.1.3" redis-pal = "^1.0.0" +fake-useragent = "^1.1.3" [tool.poetry.dev-dependencies] pytest_cov = "^3.0.0" -[tool.poetry.group.dev.dependencies] -python-string-utils = {git = "https://github.com/daveoncode/python-string-utils.git", rev = "master"} -cookiecutter = "<=1.7.3" -loguru = "<=0.6.0" -typer = "<=0.4.0" - [build-system] build-backend = "poetry.core.masonry.api" requires = ["poetry-core>=1.0.0"] From ca50ff42fc7c2cdfff3516c5a44a23e3ec060d7f Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 15:25:56 -0300 Subject: [PATCH 04/86] add package --- poetry.lock | 38 +++++++++++++++++++++++++++++++++++++- pyproject.toml | 1 + 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 455a08664..66971aa8e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -752,6 +752,17 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "levenshtein" +version = "0.21.1" +description = "Python extension for computing string edit distances and similarities." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +rapidfuzz = ">=2.3.0,<4.0.0" + [[package]] name = "locket" version = "0.2.1" @@ -1305,6 +1316,17 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" [package.dependencies] six = ">=1.5" +[[package]] +name = "python-levenshtein" +version = "0.21.1" +description = "Python extension for computing string edit distances and similarities." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +Levenshtein = "0.21.1" + [[package]] name = "python-slugify" version = "5.0.2" @@ -1351,6 +1373,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "rapidfuzz" +version = "3.1.1" +description = "rapid fuzzy string matching" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +full = ["numpy"] + [[package]] name = "redis" version = "4.6.0" @@ -1723,7 +1756,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-co [metadata] lock-version = "1.1" python-versions = ">=3.8,<3.11" -content-hash = "7d8ffbb994cd07296e011d3f1b798854853507be3882aa215270ccff3c41cc10" +content-hash = "739ad0b7a777f11202f571fb51865fcc9425e54ff209b9f6dcd53f66a6dc618b" [metadata.files] async-timeout = [] @@ -1781,6 +1814,7 @@ iniconfig = [] ipeadatapy = [] jinja2 = [] kiwisolver = [] +levenshtein = [] locket = [] loguru = [] lxml = [] @@ -1820,11 +1854,13 @@ pytest = [] pytest-cov = [] python-box = [] python-dateutil = [] +python-levenshtein = [] python-slugify = [] pytz = [] pytzdata = [] pywin32 = [] pyyaml = [] +rapidfuzz = [] redis = [] redis-pal = [] requests = [] diff --git a/pyproject.toml b/pyproject.toml index 3475f0e0b..6b8a190e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -100,6 +100,7 @@ google-api-python-client = "^2.58.0" oauth2client = "^4.1.3" redis-pal = "^1.0.0" fake-useragent = "^1.1.3" +python-Levenshtein = "^0.21.1" [tool.poetry.dev-dependencies] pytest_cov = "^3.0.0" From ad3b304376164855bbe04ed715fa9dfdf441846c Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 15:45:18 -0300 Subject: [PATCH 05/86] fix constants --- pipelines/datasets/mercadolivre_ofertas/constants.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/datasets/mercadolivre_ofertas/constants.py b/pipelines/datasets/mercadolivre_ofertas/constants.py index 21ee09210..8541e3f2a 100644 --- a/pipelines/datasets/mercadolivre_ofertas/constants.py +++ b/pipelines/datasets/mercadolivre_ofertas/constants.py @@ -22,3 +22,4 @@ class constants(Enum): # pylint: disable=c0103 "class_": "ui-review-capability__rating__average ui-review-capability__rating__average--desktop" }, ] + TABLES_NAMES = ["less100", "oferta_dia", "relampago", "barato_dia"] From f33773154819f12bad2e714ac1a7bda9b1e21e8a Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 15:57:30 -0300 Subject: [PATCH 06/86] fix env --- pipelines/datasets/mercadolivre_ofertas/schedules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/schedules.py b/pipelines/datasets/mercadolivre_ofertas/schedules.py index d3c25763d..0c80fe9cc 100644 --- a/pipelines/datasets/mercadolivre_ofertas/schedules.py +++ b/pipelines/datasets/mercadolivre_ofertas/schedules.py @@ -17,7 +17,7 @@ interval=timedelta(days=1), start_date=datetime(2021, 1, 1, 15, 0), labels=[ - constants.BASEDOSDADOS_PROD_AGENT_LABEL.value, + constants.BASEDOSDADOS_DEV_AGENT_LABEL.value, ], parameter_defaults={ "dataset_id": "mercado_livre_ofertas", From 43be112ecd3cef8c00faa0dd8e1969911e8dd3a4 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 16:30:12 -0300 Subject: [PATCH 07/86] fix env --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 35a6e9f60..4c49c9238 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -43,7 +43,6 @@ def crawler_mercadolivre_ofertas(): time.sleep(5) df = pd.DataFrame(contents) total = df.shape[0] - # drop if title is None df = df.dropna(subset=["title"]) remained = df.shape[0] # print percentage keeped From 43d454d0958fe5008bd54de075d8ee2294b7819e Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 16:45:13 -0300 Subject: [PATCH 08/86] fix dataset_id --- pipelines/datasets/mercadolivre_ofertas/schedules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/schedules.py b/pipelines/datasets/mercadolivre_ofertas/schedules.py index 0c80fe9cc..e7111b087 100644 --- a/pipelines/datasets/mercadolivre_ofertas/schedules.py +++ b/pipelines/datasets/mercadolivre_ofertas/schedules.py @@ -20,7 +20,7 @@ constants.BASEDOSDADOS_DEV_AGENT_LABEL.value, ], parameter_defaults={ - "dataset_id": "mercado_livre_ofertas", + "dataset_id": "mercadolivre_ofertas", "materialization_mode": "dev", "materialize after dump": False, "table_id": "item", From ca884cf03ce74ad5ef5f23272cd92f51b9ebdd6e Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 17:08:37 -0300 Subject: [PATCH 09/86] fix exception --- pipelines/datasets/mercadolivre_ofertas/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 7b2e8d5c3..ab604f719 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -49,14 +49,14 @@ async def wrapper(url, attempts=2, wait_time=2, **kwargs): response = await asyncio.to_thread( requests.get, url, headers=headers, timeout=100 ) - except: + except Exception: print(url) return None await asyncio.sleep(wait_time) soup = BeautifulSoup(response.text, "html.parser") try: content = content_function(soup, **kwargs) - except: + except Exception: if count == (attempts - 1): # Could not get content content = None From 43dfdad6884893e8c0eb6ff1337955b3a30de9d0 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 17:16:58 -0300 Subject: [PATCH 10/86] change flow name --- pipelines/datasets/mercadolivre_ofertas/flows.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 801690310..a1ebf2f71 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -26,7 +26,7 @@ with Flow( name="mercadolivre_ofertas.item", code_owners=["lucascr91"] -) as mercadolivre_ofertas: +) as mercadolivre_ofertas_item: # Parameters dataset_id = Parameter("dataset_id", default="mercadolivre_ofertas", required=True) table_id = Parameter("table_id", default="item", required=True) @@ -81,6 +81,6 @@ seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) -mercadolivre_ofertas.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -mercadolivre_ofertas.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) -mercadolivre_ofertas.schedule = every_day_item +mercadolivre_ofertas_item.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +mercadolivre_ofertas_item.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) +mercadolivre_ofertas_item.schedule = every_day_item From f02325c831ada28f264df7e1cd7de95775d73d5b Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 18:12:47 -0300 Subject: [PATCH 11/86] set seller null if fails --- pipelines/datasets/mercadolivre_ofertas/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index ab604f719..c331c61b4 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -321,6 +321,7 @@ async def process_item_url(item_url, kwargs_list): info["seller"] = seller else: info["seller_id"] = None + info["seller"] = None info["datetime"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S") info["features"] = await get_features(item_url, attempts=2) From 6b8194bb40b33b78c966abaea2591dcc0d17ebe9 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 18:31:53 -0300 Subject: [PATCH 12/86] fix dir name --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 4c49c9238..04c70d015 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -67,7 +67,7 @@ def crawler_mercadolivre_ofertas(): ] df = df[new_order] df = df.astype(str) - filepath = "/tmp/data/items_raw.csv" + filepath = "/tmp/items_raw.csv" df.to_csv(filepath, index=False) log(df.head(5)) From edc40db0bd641ab27c2668d7ef88357174df23d6 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 29 Jun 2023 19:02:09 -0300 Subject: [PATCH 13/86] add clean task --- .../datasets/mercadolivre_ofertas/flows.py | 6 ++- .../datasets/mercadolivre_ofertas/tasks.py | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index a1ebf2f71..341f761f6 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -21,7 +21,7 @@ create_table_and_upload_to_gcs, ) -from pipelines.datasets.mercadolivre_ofertas.tasks import crawler_mercadolivre_ofertas +from pipelines.datasets.mercadolivre_ofertas.tasks import crawler_mercadolivre_ofertas, clean_item from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item with Flow( @@ -42,7 +42,9 @@ prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id ) - filepath = crawler_mercadolivre_ofertas() + filepath_raw = crawler_mercadolivre_ofertas() + + filepath = clean_item(filepath_raw) wait_upload_table = create_table_and_upload_to_gcs( data_path=filepath, diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 04c70d015..6ccc9096a 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -75,3 +75,44 @@ def crawler_mercadolivre_ofertas(): loop.close() return filepath + + +@task +def clean_item(filepath): + item = pd.read_csv(filepath) + new_cols = ['titulo', 'quantidade_avaliacoes', 'desconto', 'envio_pais', 'estrelas', 'preco', 'preco_original', 'item_id', +'link_vendedor', 'id_vendedor', 'vendedor', 'data_hora', 'secao_site', 'caracteristicas', +'url_item', 'categorias'] + # rename columns + item.columns = new_cols + # change order + new_order = ['data_hora', 'titulo', 'item_id', 'categorias', 'quantidade_avaliacoes', 'desconto', 'envio_pais', 'estrelas', 'preco', 'preco_original', + 'id_vendedor', 'vendedor', 'link_vendedor', 'secao_site', 'caracteristicas', + 'url_item'] + item = item.reindex(new_order, axis=1) + # drop dupliacte item_id + item = item.drop_duplicates(subset=['item_id']) + # clean quantidade_avaliacoes: (11004)->11004 + item['quantidade_avaliacoes'] = item['quantidade_avaliacoes'].str.replace('(', '') + item['quantidade_avaliacoes'] = item['quantidade_avaliacoes'].str.replace(')', '') + # clean desconto: 10% OFF -> 10 + item['desconto'] = item['desconto'].str.replace('% OFF', '') + # clean categorias. Currently, it's a list of lists. Transform into a list of strings. First it's necessary to transform the string into a list of lists + item['categorias'] = item['categorias'].str.replace('[[', '[') + item['categorias'] = item['categorias'].str.replace(']]', ']') + # remove if title is nan + item = item[item['titulo'].notna()] + # remove item_link + item = item.drop('url_item', axis=1) + # remove link_vendedor + item = item.drop('link_vendedor', axis=1) + # make envio_pais a boolean + item['envio_pais'] = item['envio_pais'].str.contains('Envio para todo o país') + # make nan equal to False + item['envio_pais'] = item['envio_pais'].fillna(False) + + # to string + item = item.astype(str) + + + item.to_csv('/tmp/items.csv', index=False) From 616e546634cf10f8d7f92a1184b94879b8704fcd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 22:03:34 +0000 Subject: [PATCH 14/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../datasets/mercadolivre_ofertas/flows.py | 5 +- .../datasets/mercadolivre_ofertas/tasks.py | 67 +++++++++++++------ 2 files changed, 52 insertions(+), 20 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 341f761f6..d8da3f2eb 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -21,7 +21,10 @@ create_table_and_upload_to_gcs, ) -from pipelines.datasets.mercadolivre_ofertas.tasks import crawler_mercadolivre_ofertas, clean_item +from pipelines.datasets.mercadolivre_ofertas.tasks import ( + crawler_mercadolivre_ofertas, + clean_item, +) from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item with Flow( diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 6ccc9096a..f51f9b260 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -80,39 +80,68 @@ def crawler_mercadolivre_ofertas(): @task def clean_item(filepath): item = pd.read_csv(filepath) - new_cols = ['titulo', 'quantidade_avaliacoes', 'desconto', 'envio_pais', 'estrelas', 'preco', 'preco_original', 'item_id', -'link_vendedor', 'id_vendedor', 'vendedor', 'data_hora', 'secao_site', 'caracteristicas', -'url_item', 'categorias'] + new_cols = [ + "titulo", + "quantidade_avaliacoes", + "desconto", + "envio_pais", + "estrelas", + "preco", + "preco_original", + "item_id", + "link_vendedor", + "id_vendedor", + "vendedor", + "data_hora", + "secao_site", + "caracteristicas", + "url_item", + "categorias", + ] # rename columns item.columns = new_cols # change order - new_order = ['data_hora', 'titulo', 'item_id', 'categorias', 'quantidade_avaliacoes', 'desconto', 'envio_pais', 'estrelas', 'preco', 'preco_original', - 'id_vendedor', 'vendedor', 'link_vendedor', 'secao_site', 'caracteristicas', - 'url_item'] + new_order = [ + "data_hora", + "titulo", + "item_id", + "categorias", + "quantidade_avaliacoes", + "desconto", + "envio_pais", + "estrelas", + "preco", + "preco_original", + "id_vendedor", + "vendedor", + "link_vendedor", + "secao_site", + "caracteristicas", + "url_item", + ] item = item.reindex(new_order, axis=1) # drop dupliacte item_id - item = item.drop_duplicates(subset=['item_id']) + item = item.drop_duplicates(subset=["item_id"]) # clean quantidade_avaliacoes: (11004)->11004 - item['quantidade_avaliacoes'] = item['quantidade_avaliacoes'].str.replace('(', '') - item['quantidade_avaliacoes'] = item['quantidade_avaliacoes'].str.replace(')', '') + item["quantidade_avaliacoes"] = item["quantidade_avaliacoes"].str.replace("(", "") + item["quantidade_avaliacoes"] = item["quantidade_avaliacoes"].str.replace(")", "") # clean desconto: 10% OFF -> 10 - item['desconto'] = item['desconto'].str.replace('% OFF', '') + item["desconto"] = item["desconto"].str.replace("% OFF", "") # clean categorias. Currently, it's a list of lists. Transform into a list of strings. First it's necessary to transform the string into a list of lists - item['categorias'] = item['categorias'].str.replace('[[', '[') - item['categorias'] = item['categorias'].str.replace(']]', ']') + item["categorias"] = item["categorias"].str.replace("[[", "[") + item["categorias"] = item["categorias"].str.replace("]]", "]") # remove if title is nan - item = item[item['titulo'].notna()] + item = item[item["titulo"].notna()] # remove item_link - item = item.drop('url_item', axis=1) + item = item.drop("url_item", axis=1) # remove link_vendedor - item = item.drop('link_vendedor', axis=1) + item = item.drop("link_vendedor", axis=1) # make envio_pais a boolean - item['envio_pais'] = item['envio_pais'].str.contains('Envio para todo o país') + item["envio_pais"] = item["envio_pais"].str.contains("Envio para todo o país") # make nan equal to False - item['envio_pais'] = item['envio_pais'].fillna(False) + item["envio_pais"] = item["envio_pais"].fillna(False) # to string item = item.astype(str) - - item.to_csv('/tmp/items.csv', index=False) + item.to_csv("/tmp/items.csv", index=False) From 40524eae804f52216eb601a3d7b963512463ec54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Fri, 30 Jun 2023 16:48:45 -0300 Subject: [PATCH 15/86] fix: fix conflict --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 4734f531a..53c14e12a 100644 --- a/.gitignore +++ b/.gitignore @@ -140,3 +140,5 @@ dmypy.json notebooks/ /tests/ + +.DS_Store \ No newline at end of file From eaebb96ff9f284c27d38e6ce94e5568cf8f99b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Fri, 30 Jun 2023 16:52:52 -0300 Subject: [PATCH 16/86] fix: testing temporal_coverage_updater --- .../br_rj_isp_estatisticas_seguranca/flows.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 7214090a4..d2e83539a 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -61,6 +61,10 @@ materialize_after_dump = Parameter( "materialize_after_dump", default=True, required=False ) + + update_temporal_coverage = Parameter( + "update_temporal_coverage", default=True, required=False + ) dbt_alias = Parameter("dbt_alias", default=True, required=False) rename_flow_run = rename_current_flow_run_dataset_table( @@ -113,6 +117,32 @@ wait_for_materialization.retry_delay = timedelta( seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) + with case(update_temporal_coverage, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + updater_flow = create_flow_run( + flow_name="update_temporal_coverage_teste", + project_name="staging", + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + }, + labels=current_flow_labels, + run_name=f"Atualiza {dataset_id}.{table_id}", + ) + + wait_for_update = wait_for_flow_run( + updater_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_update.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_update.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) evolucao_mensal_cisp.storage = GCS(constants.GCS_FLOWS_BUCKET.value) From 96471ed891ca5abc447f23f12fad90700b431b41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Fri, 30 Jun 2023 17:03:01 -0300 Subject: [PATCH 17/86] feat: testing temporal_coverage_updater --- .../br_rj_isp_estatisticas_seguranca/flows.py | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index d2e83539a..68f55ad71 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -702,3 +702,114 @@ evolucao_mensal_uf.storage = GCS(constants.GCS_FLOWS_BUCKET.value) evolucao_mensal_uf.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) evolucao_mensal_uf.schedule = every_month_evolucao_mensal_uf + + +with Flow( + name="br_rj_isp_estatisticas_seguranca.evolucao_mensal_cisp_teste", + code_owners=[ + "arthurfg", + ], +) as evolucao_mensal_cisp_teste: + dataset_id = Parameter( + "dataset_id", default="br_rj_isp_estatisticas_seguranca", required=True + ) + table_id = Parameter( + "table_id", default="evolucao_mensal_cisp_teste", required=True + ) + + # Materialization mode + materialization_mode = Parameter( + "materialization_mode", default="dev", required=False + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=True, required=False + ) + + update_temporal_coverage = Parameter( + "update_temporal_coverage", default=True, required=False + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + d_files = download_files( + file_name=isp_constants.EVOLUCAO_MENSAL_CISP.value, + save_dir=isp_constants.INPUT_PATH.value, + ) + + filepath = clean_data( + file_name=isp_constants.EVOLUCAO_MENSAL_CISP.value, + upstream_tasks=[d_files], + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="overwrite", + wait=filepath, + ) + + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + with case(update_temporal_coverage, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + updater_flow = create_flow_run( + flow_name="update_temporal_coverage_teste", + project_name="staging", + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + }, + labels=current_flow_labels, + run_name=f"Atualiza {dataset_id}.{table_id}", + ) + + wait_for_update = wait_for_flow_run( + updater_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_update.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_update.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +evolucao_mensal_cisp_teste.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +evolucao_mensal_cisp_teste.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +# evolucao_mensal_cisp.schedule = every_month_evolucao_mensal_cisp From 33b80ebd8bf7e0c435a488cdff14f13f781e995a Mon Sep 17 00:00:00 2001 From: d116626 Date: Fri, 30 Jun 2023 21:08:15 -0300 Subject: [PATCH 18/86] chore: try trigger register action --- pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 68f55ad71..2551a0b6d 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -Flows for br_rj_isp_estatisticas_seguranca +Flows for br_rj_isp_estatisticas_seguranca. """ from datetime import timedelta From 77931aec73be787e923ef07f0ba81cfad0a0c907 Mon Sep 17 00:00:00 2001 From: d116626 Date: Fri, 30 Jun 2023 21:22:46 -0300 Subject: [PATCH 19/86] chore: remove br_cvm_if --- pipelines/datasets/__init__.py | 2 +- pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/__init__.py b/pipelines/datasets/__init__.py index e6a52ad1a..fea8f8f48 100644 --- a/pipelines/datasets/__init__.py +++ b/pipelines/datasets/__init__.py @@ -30,7 +30,7 @@ from pipelines.datasets.br_rj_isp_estatisticas_seguranca.flows import * from pipelines.datasets.br_anatel_banda_larga_fixa.flows import * from pipelines.datasets.br_bcb_agencia.flows import * -from pipelines.datasets.br_cvm_fi.flows import * +# from pipelines.datasets.br_cvm_fi.flows import * from pipelines.datasets.br_ons_avaliacao_operacao.flows import * from pipelines.datasets.br_ons_estimativa_custos.flows import * from pipelines.datasets.br_b3_cotacoes.flows import * diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 2551a0b6d..68f55ad71 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -Flows for br_rj_isp_estatisticas_seguranca. +Flows for br_rj_isp_estatisticas_seguranca """ from datetime import timedelta From 8f3722d821fae8771fc5d8ef3fca9ec93b6f7405 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 00:23:05 +0000 Subject: [PATCH 20/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/datasets/__init__.py b/pipelines/datasets/__init__.py index fea8f8f48..12153bbaa 100644 --- a/pipelines/datasets/__init__.py +++ b/pipelines/datasets/__init__.py @@ -30,6 +30,7 @@ from pipelines.datasets.br_rj_isp_estatisticas_seguranca.flows import * from pipelines.datasets.br_anatel_banda_larga_fixa.flows import * from pipelines.datasets.br_bcb_agencia.flows import * + # from pipelines.datasets.br_cvm_fi.flows import * from pipelines.datasets.br_ons_avaliacao_operacao.flows import * from pipelines.datasets.br_ons_estimativa_custos.flows import * From 8b3a1d11a0c501259604dd7ce368b1e7dc8bd092 Mon Sep 17 00:00:00 2001 From: d116626 Date: Fri, 30 Jun 2023 22:01:30 -0300 Subject: [PATCH 21/86] chore: remove br_cvm_if --- pipelines/datasets/br_cvm_fi/flows.py | 1146 ++++++++++++------------- 1 file changed, 573 insertions(+), 573 deletions(-) diff --git a/pipelines/datasets/br_cvm_fi/flows.py b/pipelines/datasets/br_cvm_fi/flows.py index 58bfb2805..c37563c61 100644 --- a/pipelines/datasets/br_cvm_fi/flows.py +++ b/pipelines/datasets/br_cvm_fi/flows.py @@ -1,573 +1,573 @@ -# -*- coding: utf-8 -*- -""" -Flows for br_cvm_fi - -""" - -from prefect.run_configs import KubernetesRun -from prefect.storage import GCS -from datetime import timedelta -from pipelines.datasets.br_cvm_fi.tasks import ( - extract_links_and_dates, - check_for_updates, - is_empty, - download_unzip_csv, - clean_data_and_make_partitions, - clean_data_make_partitions_cda, - download_csv_cvm, - clean_data_make_partitions_ext, - check_for_updates_ext, - clean_data_make_partitions_perfil, - clean_data_make_partitions_cad, - clean_data_make_partitions_balancete, -) -from pipelines.datasets.br_cvm_fi.schedules import ( - every_day_informe, - every_day_carteiras, - every_day_balancete, - every_day_extratos, - every_day_informacao_cadastral, - every_day_perfil, -) -from prefect.tasks.prefect import create_flow_run, wait_for_flow_run -from pipelines.utils.decorators import Flow -from prefect import Parameter, case -from pipelines.utils.execute_dbt_model.constants import constants as dump_db_constants -from pipelines.utils.constants import constants as utils_constants -from pipelines.datasets.br_cvm_fi.constants import constants as cvm_constants -from pipelines.constants import constants -from pipelines.utils.utils import ( - log, -) -from pipelines.utils.tasks import ( - create_table_and_upload_to_gcs, - rename_current_flow_run_dataset_table, - get_current_flow_labels, -) - -# rom pipelines.datasets.br_cvm_fi.schedules import every_day_cvm - -with Flow( - name="br_cvm_fi_documentos_informe_diario", - code_owners=[ - "arthurfg", - ], -) as br_cvm_fi_documentos_informe_diario: - # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) - table_id = Parameter("table_id", default="documentos_informe_diario", required=True) - materialization_mode = Parameter( - "materialization_mode", default="dev", required=True - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - url = Parameter( - "url", - default=cvm_constants.INFORME_DIARIO_URL.value, - required=True, - ) - df = extract_links_and_dates(url) - log(f"Links e datas: {df}") - arquivos = check_for_updates(df, upstream_tasks=[df]) - log(f"Arquivos: {arquivos}") - with case(is_empty(arquivos), True): - log(f"Não houveram atualizações em {url.default}!") - - with case(is_empty(arquivos), False): - input_filepath = download_unzip_csv( - files=arquivos, url=url, id=table_id, upstream_tasks=[arquivos] - ) - output_filepath = clean_data_and_make_partitions( - path=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] - ) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=output_filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="append", - wait=output_filepath, - ) - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -br_cvm_fi_documentos_informe_diario.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -br_cvm_fi_documentos_informe_diario.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -br_cvm_fi_documentos_informe_diario.schedule = every_day_informe - - -with Flow( - name="br_cvm_fi_documentos_carteiras_fundos_investimento", - code_owners=[ - "arthurfg", - ], -) as br_cvm_fi_documentos_carteiras_fundos_investimento: - # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter( - "table_id", default="documentos_carteiras_fundos_investimento", required=False - ) - - materialization_mode = Parameter( - "materialization_mode", default="dev", required=False - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=False - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - url = Parameter( - "url", - default=cvm_constants.CDA_URL.value, - required=True, - ) - - df = extract_links_and_dates(url) - log(f"Links e datas: {df}") - arquivos = check_for_updates(df, upstream_tasks=[df]) - log(f"Arquivos: {arquivos}") - with case(is_empty(arquivos), True): - log(f"Não houveram atualizações em {url.default}!") - - with case(is_empty(arquivos), False): - input_filepath = download_unzip_csv( - url=url, files=arquivos, id=table_id, upstream_tasks=[arquivos] - ) - output_filepath = clean_data_make_partitions_cda( - input_filepath, table_id=table_id, upstream_tasks=[input_filepath] - ) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=output_filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="append", - wait=output_filepath, - ) - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -br_cvm_fi_documentos_carteiras_fundos_investimento.storage = GCS( - constants.GCS_FLOWS_BUCKET.value -) -br_cvm_fi_documentos_carteiras_fundos_investimento.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -br_cvm_fi_documentos_carteiras_fundos_investimento.schedule = every_day_carteiras - - -with Flow( - name="br_cvm_fi_documentos_extratos_informacoes", - code_owners=[ - "arthurfg", - ], -) as br_cvm_fi_documentos_extratos_informacoes: - # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter( - "table_id", default="documentos_extratos_informacoes", required=False - ) - materialization_mode = Parameter( - "materialization_mode", default="dev", required=True - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - url = Parameter( - "url", - default=cvm_constants.URL_EXT.value, - required=True, - ) - - file = Parameter( - "file", - default=cvm_constants.FILE_EXT.value, - required=False, - ) - - df = extract_links_and_dates(url) - arquivos = check_for_updates_ext(df, upstream_tasks=[df]) - - with case(is_empty(arquivos), True): - log(f"Não houveram atualizações em {url.default}!") - - with case(is_empty(arquivos), False): - input_filepath = download_csv_cvm( - url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] - ) - output_filepath = clean_data_make_partitions_ext( - input_filepath, table_id=table_id, upstream_tasks=[input_filepath] - ) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=output_filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="append", - wait=output_filepath, - ) - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -br_cvm_fi_documentos_extratos_informacoes.storage = GCS( - constants.GCS_FLOWS_BUCKET.value -) -br_cvm_fi_documentos_extratos_informacoes.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -br_cvm_fi_documentos_extratos_informacoes.schedule = every_day_extratos - - -with Flow( - name="br_cvm_fi_documentos_perfil_mensal", - code_owners=[ - "arthurfg", - ], -) as br_cvm_fi_documentos_perfil_mensal: - # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter("table_id", default="documentos_perfil_mensal", required=False) - materialization_mode = Parameter( - "materialization_mode", default="dev", required=False - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=False - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - url = Parameter( - "url", - default=cvm_constants.URL_PERFIL_MENSAL.value, - required=True, - ) - - df = extract_links_and_dates(url) - arquivos = check_for_updates(df, upstream_tasks=[df]) - - with case(is_empty(arquivos), True): - log(f"Não houveram atualizações em {url.default}!") - - with case(is_empty(arquivos), False): - input_filepath = download_csv_cvm( - url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] - ) - output_filepath = clean_data_make_partitions_perfil( - input_filepath, table_id=table_id, upstream_tasks=[input_filepath] - ) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=output_filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="append", - wait=output_filepath, - ) - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -br_cvm_fi_documentos_perfil_mensal.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -br_cvm_fi_documentos_perfil_mensal.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -br_cvm_fi_documentos_perfil_mensal.schedule = every_day_perfil - - -with Flow( - name="br_cvm_fi_documentos_informacao_cadastral", - code_owners=[ - "arthurfg", - ], -) as br_cvm_fi_documentos_informacao_cadastral: - # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter( - "table_id", default="documentos_informacao_cadastral", required=False - ) - materialization_mode = Parameter( - "materialization_mode", default="dev", required=True - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - url = Parameter( - "url", - default=cvm_constants.URL_INFO_CADASTRAL.value, - required=True, - ) - - files = Parameter("files", default=cvm_constants.CAD_FILE.value, required=False) - - with case(is_empty(files), True): - log(f"Não houveram atualizações em {url.default}!") - - with case(is_empty(files), False): - input_filepath = download_csv_cvm(url=url, files=files, table_id=table_id) - output_filepath = clean_data_make_partitions_cad( - diretorio=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] - ) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=output_filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="append", - wait=output_filepath, - ) - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -br_cvm_fi_documentos_informacao_cadastral.storage = GCS( - constants.GCS_FLOWS_BUCKET.value -) -br_cvm_fi_documentos_informacao_cadastral.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -br_cvm_fi_documentos_informacao_cadastral.schedule = every_day_informacao_cadastral - - -with Flow( - name="br_cvm_fi_documentos_balancete", - code_owners=[ - "arthurfg", - ], -) as br_cvm_fi_documentos_balancete: - # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter("table_id", default="documentos_balancete", required=False) - materialization_mode = Parameter( - "materialization_mode", default="dev", required=True - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - url = Parameter( - "url", - default=cvm_constants.URL_BALANCETE.value, - required=True, - ) - - df = extract_links_and_dates(url) - - files = check_for_updates(df, upstream_tasks=[df]) - - with case(is_empty(files), True): - log(f"Não houveram atualizações em {url.default}!") - - with case(is_empty(files), False): - input_filepath = download_unzip_csv(url=url, files=files, id=table_id) - output_filepath = clean_data_make_partitions_balancete( - input_filepath, table_id=table_id, upstream_tasks=[input_filepath] - ) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=output_filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="append", - wait=output_filepath, - ) - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -br_cvm_fi_documentos_balancete.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -br_cvm_fi_documentos_balancete.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -br_cvm_fi_documentos_balancete.schedule = every_day_balancete +# # -*- coding: utf-8 -*- +# """ +# Flows for br_cvm_fi + +# """ + +# from prefect.run_configs import KubernetesRun +# from prefect.storage import GCS +# from datetime import timedelta +# from pipelines.datasets.br_cvm_fi.tasks import ( +# extract_links_and_dates, +# check_for_updates, +# is_empty, +# download_unzip_csv, +# clean_data_and_make_partitions, +# clean_data_make_partitions_cda, +# download_csv_cvm, +# clean_data_make_partitions_ext, +# check_for_updates_ext, +# clean_data_make_partitions_perfil, +# clean_data_make_partitions_cad, +# clean_data_make_partitions_balancete, +# ) +# from pipelines.datasets.br_cvm_fi.schedules import ( +# every_day_informe, +# every_day_carteiras, +# every_day_balancete, +# every_day_extratos, +# every_day_informacao_cadastral, +# every_day_perfil, +# ) +# from prefect.tasks.prefect import create_flow_run, wait_for_flow_run +# from pipelines.utils.decorators import Flow +# from prefect import Parameter, case +# from pipelines.utils.execute_dbt_model.constants import constants as dump_db_constants +# from pipelines.utils.constants import constants as utils_constants +# from pipelines.datasets.br_cvm_fi.constants import constants as cvm_constants +# from pipelines.constants import constants +# from pipelines.utils.utils import ( +# log, +# ) +# from pipelines.utils.tasks import ( +# create_table_and_upload_to_gcs, +# rename_current_flow_run_dataset_table, +# get_current_flow_labels, +# ) + +# # rom pipelines.datasets.br_cvm_fi.schedules import every_day_cvm + +# with Flow( +# name="br_cvm_fi_documentos_informe_diario", +# code_owners=[ +# "arthurfg", +# ], +# ) as br_cvm_fi_documentos_informe_diario: +# # Parameters +# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) +# table_id = Parameter("table_id", default="documentos_informe_diario", required=True) +# materialization_mode = Parameter( +# "materialization_mode", default="dev", required=True +# ) +# materialize_after_dump = Parameter( +# "materialize_after_dump", default=False, required=True +# ) +# dbt_alias = Parameter("dbt_alias", default=False, required=False) + +# url = Parameter( +# "url", +# default=cvm_constants.INFORME_DIARIO_URL.value, +# required=True, +# ) +# df = extract_links_and_dates(url) +# log(f"Links e datas: {df}") +# arquivos = check_for_updates(df, upstream_tasks=[df]) +# log(f"Arquivos: {arquivos}") +# with case(is_empty(arquivos), True): +# log(f"Não houveram atualizações em {url.default}!") + +# with case(is_empty(arquivos), False): +# input_filepath = download_unzip_csv( +# files=arquivos, url=url, id=table_id, upstream_tasks=[arquivos] +# ) +# output_filepath = clean_data_and_make_partitions( +# path=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] +# ) + +# rename_flow_run = rename_current_flow_run_dataset_table( +# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id +# ) + +# wait_upload_table = create_table_and_upload_to_gcs( +# data_path=output_filepath, +# dataset_id=dataset_id, +# table_id=table_id, +# dump_mode="append", +# wait=output_filepath, +# ) +# with case(materialize_after_dump, True): +# # Trigger DBT flow run +# current_flow_labels = get_current_flow_labels() +# materialization_flow = create_flow_run( +# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, +# project_name=constants.PREFECT_DEFAULT_PROJECT.value, +# parameters={ +# "dataset_id": dataset_id, +# "table_id": table_id, +# "mode": materialization_mode, +# "dbt_alias": dbt_alias, +# }, +# labels=current_flow_labels, +# run_name=f"Materialize {dataset_id}.{table_id}", +# ) + +# wait_for_materialization = wait_for_flow_run( +# materialization_flow, +# stream_states=True, +# stream_logs=True, +# raise_final_state=True, +# ) +# wait_for_materialization.max_retries = ( +# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value +# ) +# wait_for_materialization.retry_delay = timedelta( +# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value +# ) + + +# br_cvm_fi_documentos_informe_diario.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +# br_cvm_fi_documentos_informe_diario.run_config = KubernetesRun( +# image=constants.DOCKER_IMAGE.value +# ) +# br_cvm_fi_documentos_informe_diario.schedule = every_day_informe + + +# with Flow( +# name="br_cvm_fi_documentos_carteiras_fundos_investimento", +# code_owners=[ +# "arthurfg", +# ], +# ) as br_cvm_fi_documentos_carteiras_fundos_investimento: +# # Parameters +# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) +# table_id = Parameter( +# "table_id", default="documentos_carteiras_fundos_investimento", required=False +# ) + +# materialization_mode = Parameter( +# "materialization_mode", default="dev", required=False +# ) +# materialize_after_dump = Parameter( +# "materialize_after_dump", default=False, required=False +# ) +# dbt_alias = Parameter("dbt_alias", default=False, required=False) + +# url = Parameter( +# "url", +# default=cvm_constants.CDA_URL.value, +# required=True, +# ) + +# df = extract_links_and_dates(url) +# log(f"Links e datas: {df}") +# arquivos = check_for_updates(df, upstream_tasks=[df]) +# log(f"Arquivos: {arquivos}") +# with case(is_empty(arquivos), True): +# log(f"Não houveram atualizações em {url.default}!") + +# with case(is_empty(arquivos), False): +# input_filepath = download_unzip_csv( +# url=url, files=arquivos, id=table_id, upstream_tasks=[arquivos] +# ) +# output_filepath = clean_data_make_partitions_cda( +# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] +# ) + +# rename_flow_run = rename_current_flow_run_dataset_table( +# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id +# ) + +# wait_upload_table = create_table_and_upload_to_gcs( +# data_path=output_filepath, +# dataset_id=dataset_id, +# table_id=table_id, +# dump_mode="append", +# wait=output_filepath, +# ) +# with case(materialize_after_dump, True): +# # Trigger DBT flow run +# current_flow_labels = get_current_flow_labels() +# materialization_flow = create_flow_run( +# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, +# project_name=constants.PREFECT_DEFAULT_PROJECT.value, +# parameters={ +# "dataset_id": dataset_id, +# "table_id": table_id, +# "mode": materialization_mode, +# "dbt_alias": dbt_alias, +# }, +# labels=current_flow_labels, +# run_name=f"Materialize {dataset_id}.{table_id}", +# ) + +# wait_for_materialization = wait_for_flow_run( +# materialization_flow, +# stream_states=True, +# stream_logs=True, +# raise_final_state=True, +# ) +# wait_for_materialization.max_retries = ( +# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value +# ) +# wait_for_materialization.retry_delay = timedelta( +# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value +# ) + + +# br_cvm_fi_documentos_carteiras_fundos_investimento.storage = GCS( +# constants.GCS_FLOWS_BUCKET.value +# ) +# br_cvm_fi_documentos_carteiras_fundos_investimento.run_config = KubernetesRun( +# image=constants.DOCKER_IMAGE.value +# ) +# br_cvm_fi_documentos_carteiras_fundos_investimento.schedule = every_day_carteiras + + +# with Flow( +# name="br_cvm_fi_documentos_extratos_informacoes", +# code_owners=[ +# "arthurfg", +# ], +# ) as br_cvm_fi_documentos_extratos_informacoes: +# # Parameters +# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) +# table_id = Parameter( +# "table_id", default="documentos_extratos_informacoes", required=False +# ) +# materialization_mode = Parameter( +# "materialization_mode", default="dev", required=True +# ) +# materialize_after_dump = Parameter( +# "materialize_after_dump", default=False, required=True +# ) +# dbt_alias = Parameter("dbt_alias", default=False, required=False) + +# url = Parameter( +# "url", +# default=cvm_constants.URL_EXT.value, +# required=True, +# ) + +# file = Parameter( +# "file", +# default=cvm_constants.FILE_EXT.value, +# required=False, +# ) + +# df = extract_links_and_dates(url) +# arquivos = check_for_updates_ext(df, upstream_tasks=[df]) + +# with case(is_empty(arquivos), True): +# log(f"Não houveram atualizações em {url.default}!") + +# with case(is_empty(arquivos), False): +# input_filepath = download_csv_cvm( +# url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] +# ) +# output_filepath = clean_data_make_partitions_ext( +# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] +# ) + +# rename_flow_run = rename_current_flow_run_dataset_table( +# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id +# ) + +# wait_upload_table = create_table_and_upload_to_gcs( +# data_path=output_filepath, +# dataset_id=dataset_id, +# table_id=table_id, +# dump_mode="append", +# wait=output_filepath, +# ) +# with case(materialize_after_dump, True): +# # Trigger DBT flow run +# current_flow_labels = get_current_flow_labels() +# materialization_flow = create_flow_run( +# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, +# project_name=constants.PREFECT_DEFAULT_PROJECT.value, +# parameters={ +# "dataset_id": dataset_id, +# "table_id": table_id, +# "mode": materialization_mode, +# "dbt_alias": dbt_alias, +# }, +# labels=current_flow_labels, +# run_name=f"Materialize {dataset_id}.{table_id}", +# ) + +# wait_for_materialization = wait_for_flow_run( +# materialization_flow, +# stream_states=True, +# stream_logs=True, +# raise_final_state=True, +# ) +# wait_for_materialization.max_retries = ( +# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value +# ) +# wait_for_materialization.retry_delay = timedelta( +# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value +# ) + + +# br_cvm_fi_documentos_extratos_informacoes.storage = GCS( +# constants.GCS_FLOWS_BUCKET.value +# ) +# br_cvm_fi_documentos_extratos_informacoes.run_config = KubernetesRun( +# image=constants.DOCKER_IMAGE.value +# ) +# br_cvm_fi_documentos_extratos_informacoes.schedule = every_day_extratos + + +# with Flow( +# name="br_cvm_fi_documentos_perfil_mensal", +# code_owners=[ +# "arthurfg", +# ], +# ) as br_cvm_fi_documentos_perfil_mensal: +# # Parameters +# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) +# table_id = Parameter("table_id", default="documentos_perfil_mensal", required=False) +# materialization_mode = Parameter( +# "materialization_mode", default="dev", required=False +# ) +# materialize_after_dump = Parameter( +# "materialize_after_dump", default=False, required=False +# ) +# dbt_alias = Parameter("dbt_alias", default=False, required=False) + +# url = Parameter( +# "url", +# default=cvm_constants.URL_PERFIL_MENSAL.value, +# required=True, +# ) + +# df = extract_links_and_dates(url) +# arquivos = check_for_updates(df, upstream_tasks=[df]) + +# with case(is_empty(arquivos), True): +# log(f"Não houveram atualizações em {url.default}!") + +# with case(is_empty(arquivos), False): +# input_filepath = download_csv_cvm( +# url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] +# ) +# output_filepath = clean_data_make_partitions_perfil( +# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] +# ) + +# rename_flow_run = rename_current_flow_run_dataset_table( +# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id +# ) + +# wait_upload_table = create_table_and_upload_to_gcs( +# data_path=output_filepath, +# dataset_id=dataset_id, +# table_id=table_id, +# dump_mode="append", +# wait=output_filepath, +# ) +# with case(materialize_after_dump, True): +# # Trigger DBT flow run +# current_flow_labels = get_current_flow_labels() +# materialization_flow = create_flow_run( +# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, +# project_name=constants.PREFECT_DEFAULT_PROJECT.value, +# parameters={ +# "dataset_id": dataset_id, +# "table_id": table_id, +# "mode": materialization_mode, +# "dbt_alias": dbt_alias, +# }, +# labels=current_flow_labels, +# run_name=f"Materialize {dataset_id}.{table_id}", +# ) + +# wait_for_materialization = wait_for_flow_run( +# materialization_flow, +# stream_states=True, +# stream_logs=True, +# raise_final_state=True, +# ) +# wait_for_materialization.max_retries = ( +# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value +# ) +# wait_for_materialization.retry_delay = timedelta( +# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value +# ) + + +# br_cvm_fi_documentos_perfil_mensal.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +# br_cvm_fi_documentos_perfil_mensal.run_config = KubernetesRun( +# image=constants.DOCKER_IMAGE.value +# ) +# br_cvm_fi_documentos_perfil_mensal.schedule = every_day_perfil + + +# with Flow( +# name="br_cvm_fi_documentos_informacao_cadastral", +# code_owners=[ +# "arthurfg", +# ], +# ) as br_cvm_fi_documentos_informacao_cadastral: +# # Parameters +# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) +# table_id = Parameter( +# "table_id", default="documentos_informacao_cadastral", required=False +# ) +# materialization_mode = Parameter( +# "materialization_mode", default="dev", required=True +# ) +# materialize_after_dump = Parameter( +# "materialize_after_dump", default=False, required=True +# ) +# dbt_alias = Parameter("dbt_alias", default=False, required=False) + +# url = Parameter( +# "url", +# default=cvm_constants.URL_INFO_CADASTRAL.value, +# required=True, +# ) + +# files = Parameter("files", default=cvm_constants.CAD_FILE.value, required=False) + +# with case(is_empty(files), True): +# log(f"Não houveram atualizações em {url.default}!") + +# with case(is_empty(files), False): +# input_filepath = download_csv_cvm(url=url, files=files, table_id=table_id) +# output_filepath = clean_data_make_partitions_cad( +# diretorio=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] +# ) + +# rename_flow_run = rename_current_flow_run_dataset_table( +# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id +# ) + +# wait_upload_table = create_table_and_upload_to_gcs( +# data_path=output_filepath, +# dataset_id=dataset_id, +# table_id=table_id, +# dump_mode="append", +# wait=output_filepath, +# ) +# with case(materialize_after_dump, True): +# # Trigger DBT flow run +# current_flow_labels = get_current_flow_labels() +# materialization_flow = create_flow_run( +# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, +# project_name=constants.PREFECT_DEFAULT_PROJECT.value, +# parameters={ +# "dataset_id": dataset_id, +# "table_id": table_id, +# "mode": materialization_mode, +# "dbt_alias": dbt_alias, +# }, +# labels=current_flow_labels, +# run_name=f"Materialize {dataset_id}.{table_id}", +# ) + +# wait_for_materialization = wait_for_flow_run( +# materialization_flow, +# stream_states=True, +# stream_logs=True, +# raise_final_state=True, +# ) +# wait_for_materialization.max_retries = ( +# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value +# ) +# wait_for_materialization.retry_delay = timedelta( +# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value +# ) + + +# br_cvm_fi_documentos_informacao_cadastral.storage = GCS( +# constants.GCS_FLOWS_BUCKET.value +# ) +# br_cvm_fi_documentos_informacao_cadastral.run_config = KubernetesRun( +# image=constants.DOCKER_IMAGE.value +# ) +# br_cvm_fi_documentos_informacao_cadastral.schedule = every_day_informacao_cadastral + + +# with Flow( +# name="br_cvm_fi_documentos_balancete", +# code_owners=[ +# "arthurfg", +# ], +# ) as br_cvm_fi_documentos_balancete: +# # Parameters +# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) +# table_id = Parameter("table_id", default="documentos_balancete", required=False) +# materialization_mode = Parameter( +# "materialization_mode", default="dev", required=True +# ) +# materialize_after_dump = Parameter( +# "materialize_after_dump", default=False, required=True +# ) +# dbt_alias = Parameter("dbt_alias", default=False, required=False) + +# url = Parameter( +# "url", +# default=cvm_constants.URL_BALANCETE.value, +# required=True, +# ) + +# df = extract_links_and_dates(url) + +# files = check_for_updates(df, upstream_tasks=[df]) + +# with case(is_empty(files), True): +# log(f"Não houveram atualizações em {url.default}!") + +# with case(is_empty(files), False): +# input_filepath = download_unzip_csv(url=url, files=files, id=table_id) +# output_filepath = clean_data_make_partitions_balancete( +# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] +# ) + +# rename_flow_run = rename_current_flow_run_dataset_table( +# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id +# ) + +# wait_upload_table = create_table_and_upload_to_gcs( +# data_path=output_filepath, +# dataset_id=dataset_id, +# table_id=table_id, +# dump_mode="append", +# wait=output_filepath, +# ) +# with case(materialize_after_dump, True): +# # Trigger DBT flow run +# current_flow_labels = get_current_flow_labels() +# materialization_flow = create_flow_run( +# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, +# project_name=constants.PREFECT_DEFAULT_PROJECT.value, +# parameters={ +# "dataset_id": dataset_id, +# "table_id": table_id, +# "mode": materialization_mode, +# "dbt_alias": dbt_alias, +# }, +# labels=current_flow_labels, +# run_name=f"Materialize {dataset_id}.{table_id}", +# ) + +# wait_for_materialization = wait_for_flow_run( +# materialization_flow, +# stream_states=True, +# stream_logs=True, +# raise_final_state=True, +# ) +# wait_for_materialization.max_retries = ( +# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value +# ) +# wait_for_materialization.retry_delay = timedelta( +# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value +# ) + + +# br_cvm_fi_documentos_balancete.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +# br_cvm_fi_documentos_balancete.run_config = KubernetesRun( +# image=constants.DOCKER_IMAGE.value +# ) +# br_cvm_fi_documentos_balancete.schedule = every_day_balancete From 8e483756ff57f1312d997e5517d12c471299e0ba Mon Sep 17 00:00:00 2001 From: d116626 Date: Fri, 30 Jun 2023 22:01:44 -0300 Subject: [PATCH 22/86] chore: remove br_cvm_if --- pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 68f55ad71..2551a0b6d 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -Flows for br_rj_isp_estatisticas_seguranca +Flows for br_rj_isp_estatisticas_seguranca. """ from datetime import timedelta From dd851603aac397fc410986057ffeb7a057ed9890 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 01:02:26 +0000 Subject: [PATCH 23/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/br_cvm_fi/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_cvm_fi/flows.py b/pipelines/datasets/br_cvm_fi/flows.py index c37563c61..4b7fe905f 100644 --- a/pipelines/datasets/br_cvm_fi/flows.py +++ b/pipelines/datasets/br_cvm_fi/flows.py @@ -1,4 +1,4 @@ -# # -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # """ # Flows for br_cvm_fi From 8d6219e13add8415530ec58233deae149029a0f4 Mon Sep 17 00:00:00 2001 From: d116626 Date: Fri, 30 Jun 2023 22:33:58 -0300 Subject: [PATCH 24/86] chore: add log_task --- pipelines/datasets/__init__.py | 3 +- pipelines/datasets/br_cvm_fi/flows.py | 1146 ++++++++--------- .../br_rj_isp_estatisticas_seguranca/flows.py | 2 +- pipelines/utils/tasks.py | 11 +- 4 files changed, 585 insertions(+), 577 deletions(-) diff --git a/pipelines/datasets/__init__.py b/pipelines/datasets/__init__.py index 12153bbaa..e6a52ad1a 100644 --- a/pipelines/datasets/__init__.py +++ b/pipelines/datasets/__init__.py @@ -30,8 +30,7 @@ from pipelines.datasets.br_rj_isp_estatisticas_seguranca.flows import * from pipelines.datasets.br_anatel_banda_larga_fixa.flows import * from pipelines.datasets.br_bcb_agencia.flows import * - -# from pipelines.datasets.br_cvm_fi.flows import * +from pipelines.datasets.br_cvm_fi.flows import * from pipelines.datasets.br_ons_avaliacao_operacao.flows import * from pipelines.datasets.br_ons_estimativa_custos.flows import * from pipelines.datasets.br_b3_cotacoes.flows import * diff --git a/pipelines/datasets/br_cvm_fi/flows.py b/pipelines/datasets/br_cvm_fi/flows.py index c37563c61..4597cfe85 100644 --- a/pipelines/datasets/br_cvm_fi/flows.py +++ b/pipelines/datasets/br_cvm_fi/flows.py @@ -1,573 +1,573 @@ -# # -*- coding: utf-8 -*- -# """ -# Flows for br_cvm_fi - -# """ - -# from prefect.run_configs import KubernetesRun -# from prefect.storage import GCS -# from datetime import timedelta -# from pipelines.datasets.br_cvm_fi.tasks import ( -# extract_links_and_dates, -# check_for_updates, -# is_empty, -# download_unzip_csv, -# clean_data_and_make_partitions, -# clean_data_make_partitions_cda, -# download_csv_cvm, -# clean_data_make_partitions_ext, -# check_for_updates_ext, -# clean_data_make_partitions_perfil, -# clean_data_make_partitions_cad, -# clean_data_make_partitions_balancete, -# ) -# from pipelines.datasets.br_cvm_fi.schedules import ( -# every_day_informe, -# every_day_carteiras, -# every_day_balancete, -# every_day_extratos, -# every_day_informacao_cadastral, -# every_day_perfil, -# ) -# from prefect.tasks.prefect import create_flow_run, wait_for_flow_run -# from pipelines.utils.decorators import Flow -# from prefect import Parameter, case -# from pipelines.utils.execute_dbt_model.constants import constants as dump_db_constants -# from pipelines.utils.constants import constants as utils_constants -# from pipelines.datasets.br_cvm_fi.constants import constants as cvm_constants -# from pipelines.constants import constants -# from pipelines.utils.utils import ( -# log, -# ) -# from pipelines.utils.tasks import ( -# create_table_and_upload_to_gcs, -# rename_current_flow_run_dataset_table, -# get_current_flow_labels, -# ) - -# # rom pipelines.datasets.br_cvm_fi.schedules import every_day_cvm - -# with Flow( -# name="br_cvm_fi_documentos_informe_diario", -# code_owners=[ -# "arthurfg", -# ], -# ) as br_cvm_fi_documentos_informe_diario: -# # Parameters -# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) -# table_id = Parameter("table_id", default="documentos_informe_diario", required=True) -# materialization_mode = Parameter( -# "materialization_mode", default="dev", required=True -# ) -# materialize_after_dump = Parameter( -# "materialize_after_dump", default=False, required=True -# ) -# dbt_alias = Parameter("dbt_alias", default=False, required=False) - -# url = Parameter( -# "url", -# default=cvm_constants.INFORME_DIARIO_URL.value, -# required=True, -# ) -# df = extract_links_and_dates(url) -# log(f"Links e datas: {df}") -# arquivos = check_for_updates(df, upstream_tasks=[df]) -# log(f"Arquivos: {arquivos}") -# with case(is_empty(arquivos), True): -# log(f"Não houveram atualizações em {url.default}!") - -# with case(is_empty(arquivos), False): -# input_filepath = download_unzip_csv( -# files=arquivos, url=url, id=table_id, upstream_tasks=[arquivos] -# ) -# output_filepath = clean_data_and_make_partitions( -# path=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] -# ) - -# rename_flow_run = rename_current_flow_run_dataset_table( -# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id -# ) - -# wait_upload_table = create_table_and_upload_to_gcs( -# data_path=output_filepath, -# dataset_id=dataset_id, -# table_id=table_id, -# dump_mode="append", -# wait=output_filepath, -# ) -# with case(materialize_after_dump, True): -# # Trigger DBT flow run -# current_flow_labels = get_current_flow_labels() -# materialization_flow = create_flow_run( -# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, -# project_name=constants.PREFECT_DEFAULT_PROJECT.value, -# parameters={ -# "dataset_id": dataset_id, -# "table_id": table_id, -# "mode": materialization_mode, -# "dbt_alias": dbt_alias, -# }, -# labels=current_flow_labels, -# run_name=f"Materialize {dataset_id}.{table_id}", -# ) - -# wait_for_materialization = wait_for_flow_run( -# materialization_flow, -# stream_states=True, -# stream_logs=True, -# raise_final_state=True, -# ) -# wait_for_materialization.max_retries = ( -# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value -# ) -# wait_for_materialization.retry_delay = timedelta( -# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value -# ) - - -# br_cvm_fi_documentos_informe_diario.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -# br_cvm_fi_documentos_informe_diario.run_config = KubernetesRun( -# image=constants.DOCKER_IMAGE.value -# ) -# br_cvm_fi_documentos_informe_diario.schedule = every_day_informe - - -# with Flow( -# name="br_cvm_fi_documentos_carteiras_fundos_investimento", -# code_owners=[ -# "arthurfg", -# ], -# ) as br_cvm_fi_documentos_carteiras_fundos_investimento: -# # Parameters -# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) -# table_id = Parameter( -# "table_id", default="documentos_carteiras_fundos_investimento", required=False -# ) - -# materialization_mode = Parameter( -# "materialization_mode", default="dev", required=False -# ) -# materialize_after_dump = Parameter( -# "materialize_after_dump", default=False, required=False -# ) -# dbt_alias = Parameter("dbt_alias", default=False, required=False) - -# url = Parameter( -# "url", -# default=cvm_constants.CDA_URL.value, -# required=True, -# ) - -# df = extract_links_and_dates(url) -# log(f"Links e datas: {df}") -# arquivos = check_for_updates(df, upstream_tasks=[df]) -# log(f"Arquivos: {arquivos}") -# with case(is_empty(arquivos), True): -# log(f"Não houveram atualizações em {url.default}!") - -# with case(is_empty(arquivos), False): -# input_filepath = download_unzip_csv( -# url=url, files=arquivos, id=table_id, upstream_tasks=[arquivos] -# ) -# output_filepath = clean_data_make_partitions_cda( -# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] -# ) - -# rename_flow_run = rename_current_flow_run_dataset_table( -# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id -# ) - -# wait_upload_table = create_table_and_upload_to_gcs( -# data_path=output_filepath, -# dataset_id=dataset_id, -# table_id=table_id, -# dump_mode="append", -# wait=output_filepath, -# ) -# with case(materialize_after_dump, True): -# # Trigger DBT flow run -# current_flow_labels = get_current_flow_labels() -# materialization_flow = create_flow_run( -# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, -# project_name=constants.PREFECT_DEFAULT_PROJECT.value, -# parameters={ -# "dataset_id": dataset_id, -# "table_id": table_id, -# "mode": materialization_mode, -# "dbt_alias": dbt_alias, -# }, -# labels=current_flow_labels, -# run_name=f"Materialize {dataset_id}.{table_id}", -# ) - -# wait_for_materialization = wait_for_flow_run( -# materialization_flow, -# stream_states=True, -# stream_logs=True, -# raise_final_state=True, -# ) -# wait_for_materialization.max_retries = ( -# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value -# ) -# wait_for_materialization.retry_delay = timedelta( -# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value -# ) - - -# br_cvm_fi_documentos_carteiras_fundos_investimento.storage = GCS( -# constants.GCS_FLOWS_BUCKET.value -# ) -# br_cvm_fi_documentos_carteiras_fundos_investimento.run_config = KubernetesRun( -# image=constants.DOCKER_IMAGE.value -# ) -# br_cvm_fi_documentos_carteiras_fundos_investimento.schedule = every_day_carteiras - - -# with Flow( -# name="br_cvm_fi_documentos_extratos_informacoes", -# code_owners=[ -# "arthurfg", -# ], -# ) as br_cvm_fi_documentos_extratos_informacoes: -# # Parameters -# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) -# table_id = Parameter( -# "table_id", default="documentos_extratos_informacoes", required=False -# ) -# materialization_mode = Parameter( -# "materialization_mode", default="dev", required=True -# ) -# materialize_after_dump = Parameter( -# "materialize_after_dump", default=False, required=True -# ) -# dbt_alias = Parameter("dbt_alias", default=False, required=False) - -# url = Parameter( -# "url", -# default=cvm_constants.URL_EXT.value, -# required=True, -# ) - -# file = Parameter( -# "file", -# default=cvm_constants.FILE_EXT.value, -# required=False, -# ) - -# df = extract_links_and_dates(url) -# arquivos = check_for_updates_ext(df, upstream_tasks=[df]) - -# with case(is_empty(arquivos), True): -# log(f"Não houveram atualizações em {url.default}!") - -# with case(is_empty(arquivos), False): -# input_filepath = download_csv_cvm( -# url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] -# ) -# output_filepath = clean_data_make_partitions_ext( -# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] -# ) - -# rename_flow_run = rename_current_flow_run_dataset_table( -# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id -# ) - -# wait_upload_table = create_table_and_upload_to_gcs( -# data_path=output_filepath, -# dataset_id=dataset_id, -# table_id=table_id, -# dump_mode="append", -# wait=output_filepath, -# ) -# with case(materialize_after_dump, True): -# # Trigger DBT flow run -# current_flow_labels = get_current_flow_labels() -# materialization_flow = create_flow_run( -# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, -# project_name=constants.PREFECT_DEFAULT_PROJECT.value, -# parameters={ -# "dataset_id": dataset_id, -# "table_id": table_id, -# "mode": materialization_mode, -# "dbt_alias": dbt_alias, -# }, -# labels=current_flow_labels, -# run_name=f"Materialize {dataset_id}.{table_id}", -# ) - -# wait_for_materialization = wait_for_flow_run( -# materialization_flow, -# stream_states=True, -# stream_logs=True, -# raise_final_state=True, -# ) -# wait_for_materialization.max_retries = ( -# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value -# ) -# wait_for_materialization.retry_delay = timedelta( -# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value -# ) - - -# br_cvm_fi_documentos_extratos_informacoes.storage = GCS( -# constants.GCS_FLOWS_BUCKET.value -# ) -# br_cvm_fi_documentos_extratos_informacoes.run_config = KubernetesRun( -# image=constants.DOCKER_IMAGE.value -# ) -# br_cvm_fi_documentos_extratos_informacoes.schedule = every_day_extratos - - -# with Flow( -# name="br_cvm_fi_documentos_perfil_mensal", -# code_owners=[ -# "arthurfg", -# ], -# ) as br_cvm_fi_documentos_perfil_mensal: -# # Parameters -# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) -# table_id = Parameter("table_id", default="documentos_perfil_mensal", required=False) -# materialization_mode = Parameter( -# "materialization_mode", default="dev", required=False -# ) -# materialize_after_dump = Parameter( -# "materialize_after_dump", default=False, required=False -# ) -# dbt_alias = Parameter("dbt_alias", default=False, required=False) - -# url = Parameter( -# "url", -# default=cvm_constants.URL_PERFIL_MENSAL.value, -# required=True, -# ) - -# df = extract_links_and_dates(url) -# arquivos = check_for_updates(df, upstream_tasks=[df]) - -# with case(is_empty(arquivos), True): -# log(f"Não houveram atualizações em {url.default}!") - -# with case(is_empty(arquivos), False): -# input_filepath = download_csv_cvm( -# url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] -# ) -# output_filepath = clean_data_make_partitions_perfil( -# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] -# ) - -# rename_flow_run = rename_current_flow_run_dataset_table( -# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id -# ) - -# wait_upload_table = create_table_and_upload_to_gcs( -# data_path=output_filepath, -# dataset_id=dataset_id, -# table_id=table_id, -# dump_mode="append", -# wait=output_filepath, -# ) -# with case(materialize_after_dump, True): -# # Trigger DBT flow run -# current_flow_labels = get_current_flow_labels() -# materialization_flow = create_flow_run( -# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, -# project_name=constants.PREFECT_DEFAULT_PROJECT.value, -# parameters={ -# "dataset_id": dataset_id, -# "table_id": table_id, -# "mode": materialization_mode, -# "dbt_alias": dbt_alias, -# }, -# labels=current_flow_labels, -# run_name=f"Materialize {dataset_id}.{table_id}", -# ) - -# wait_for_materialization = wait_for_flow_run( -# materialization_flow, -# stream_states=True, -# stream_logs=True, -# raise_final_state=True, -# ) -# wait_for_materialization.max_retries = ( -# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value -# ) -# wait_for_materialization.retry_delay = timedelta( -# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value -# ) - - -# br_cvm_fi_documentos_perfil_mensal.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -# br_cvm_fi_documentos_perfil_mensal.run_config = KubernetesRun( -# image=constants.DOCKER_IMAGE.value -# ) -# br_cvm_fi_documentos_perfil_mensal.schedule = every_day_perfil - - -# with Flow( -# name="br_cvm_fi_documentos_informacao_cadastral", -# code_owners=[ -# "arthurfg", -# ], -# ) as br_cvm_fi_documentos_informacao_cadastral: -# # Parameters -# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) -# table_id = Parameter( -# "table_id", default="documentos_informacao_cadastral", required=False -# ) -# materialization_mode = Parameter( -# "materialization_mode", default="dev", required=True -# ) -# materialize_after_dump = Parameter( -# "materialize_after_dump", default=False, required=True -# ) -# dbt_alias = Parameter("dbt_alias", default=False, required=False) - -# url = Parameter( -# "url", -# default=cvm_constants.URL_INFO_CADASTRAL.value, -# required=True, -# ) - -# files = Parameter("files", default=cvm_constants.CAD_FILE.value, required=False) - -# with case(is_empty(files), True): -# log(f"Não houveram atualizações em {url.default}!") - -# with case(is_empty(files), False): -# input_filepath = download_csv_cvm(url=url, files=files, table_id=table_id) -# output_filepath = clean_data_make_partitions_cad( -# diretorio=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] -# ) - -# rename_flow_run = rename_current_flow_run_dataset_table( -# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id -# ) - -# wait_upload_table = create_table_and_upload_to_gcs( -# data_path=output_filepath, -# dataset_id=dataset_id, -# table_id=table_id, -# dump_mode="append", -# wait=output_filepath, -# ) -# with case(materialize_after_dump, True): -# # Trigger DBT flow run -# current_flow_labels = get_current_flow_labels() -# materialization_flow = create_flow_run( -# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, -# project_name=constants.PREFECT_DEFAULT_PROJECT.value, -# parameters={ -# "dataset_id": dataset_id, -# "table_id": table_id, -# "mode": materialization_mode, -# "dbt_alias": dbt_alias, -# }, -# labels=current_flow_labels, -# run_name=f"Materialize {dataset_id}.{table_id}", -# ) - -# wait_for_materialization = wait_for_flow_run( -# materialization_flow, -# stream_states=True, -# stream_logs=True, -# raise_final_state=True, -# ) -# wait_for_materialization.max_retries = ( -# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value -# ) -# wait_for_materialization.retry_delay = timedelta( -# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value -# ) - - -# br_cvm_fi_documentos_informacao_cadastral.storage = GCS( -# constants.GCS_FLOWS_BUCKET.value -# ) -# br_cvm_fi_documentos_informacao_cadastral.run_config = KubernetesRun( -# image=constants.DOCKER_IMAGE.value -# ) -# br_cvm_fi_documentos_informacao_cadastral.schedule = every_day_informacao_cadastral - - -# with Flow( -# name="br_cvm_fi_documentos_balancete", -# code_owners=[ -# "arthurfg", -# ], -# ) as br_cvm_fi_documentos_balancete: -# # Parameters -# dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) -# table_id = Parameter("table_id", default="documentos_balancete", required=False) -# materialization_mode = Parameter( -# "materialization_mode", default="dev", required=True -# ) -# materialize_after_dump = Parameter( -# "materialize_after_dump", default=False, required=True -# ) -# dbt_alias = Parameter("dbt_alias", default=False, required=False) - -# url = Parameter( -# "url", -# default=cvm_constants.URL_BALANCETE.value, -# required=True, -# ) - -# df = extract_links_and_dates(url) - -# files = check_for_updates(df, upstream_tasks=[df]) - -# with case(is_empty(files), True): -# log(f"Não houveram atualizações em {url.default}!") - -# with case(is_empty(files), False): -# input_filepath = download_unzip_csv(url=url, files=files, id=table_id) -# output_filepath = clean_data_make_partitions_balancete( -# input_filepath, table_id=table_id, upstream_tasks=[input_filepath] -# ) - -# rename_flow_run = rename_current_flow_run_dataset_table( -# prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id -# ) - -# wait_upload_table = create_table_and_upload_to_gcs( -# data_path=output_filepath, -# dataset_id=dataset_id, -# table_id=table_id, -# dump_mode="append", -# wait=output_filepath, -# ) -# with case(materialize_after_dump, True): -# # Trigger DBT flow run -# current_flow_labels = get_current_flow_labels() -# materialization_flow = create_flow_run( -# flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, -# project_name=constants.PREFECT_DEFAULT_PROJECT.value, -# parameters={ -# "dataset_id": dataset_id, -# "table_id": table_id, -# "mode": materialization_mode, -# "dbt_alias": dbt_alias, -# }, -# labels=current_flow_labels, -# run_name=f"Materialize {dataset_id}.{table_id}", -# ) - -# wait_for_materialization = wait_for_flow_run( -# materialization_flow, -# stream_states=True, -# stream_logs=True, -# raise_final_state=True, -# ) -# wait_for_materialization.max_retries = ( -# dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value -# ) -# wait_for_materialization.retry_delay = timedelta( -# seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value -# ) - - -# br_cvm_fi_documentos_balancete.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -# br_cvm_fi_documentos_balancete.run_config = KubernetesRun( -# image=constants.DOCKER_IMAGE.value -# ) -# br_cvm_fi_documentos_balancete.schedule = every_day_balancete +# -*- coding: utf-8 -*- +""" +Flows for br_cvm_fi + +""" + +from prefect.run_configs import KubernetesRun +from prefect.storage import GCS +from datetime import timedelta +from pipelines.datasets.br_cvm_fi.tasks import ( + extract_links_and_dates, + check_for_updates, + is_empty, + download_unzip_csv, + clean_data_and_make_partitions, + clean_data_make_partitions_cda, + download_csv_cvm, + clean_data_make_partitions_ext, + check_for_updates_ext, + clean_data_make_partitions_perfil, + clean_data_make_partitions_cad, + clean_data_make_partitions_balancete, +) +from pipelines.datasets.br_cvm_fi.schedules import ( + every_day_informe, + every_day_carteiras, + every_day_balancete, + every_day_extratos, + every_day_informacao_cadastral, + every_day_perfil, +) +from prefect.tasks.prefect import create_flow_run, wait_for_flow_run +from pipelines.utils.decorators import Flow +from prefect import Parameter, case +from pipelines.utils.execute_dbt_model.constants import constants as dump_db_constants +from pipelines.utils.constants import constants as utils_constants +from pipelines.datasets.br_cvm_fi.constants import constants as cvm_constants +from pipelines.constants import constants +from pipelines.utils.tasks import ( + log_task, +) +from pipelines.utils.tasks import ( + create_table_and_upload_to_gcs, + rename_current_flow_run_dataset_table, + get_current_flow_labels, +) + +# rom pipelines.datasets.br_cvm_fi.schedules import every_day_cvm + +with Flow( + name="br_cvm_fi_documentos_informe_diario", + code_owners=[ + "arthurfg", + ], +) as br_cvm_fi_documentos_informe_diario_flow: + # Parameters + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) + table_id = Parameter("table_id", default="documentos_informe_diario", required=True) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=True + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=False, required=True + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + url = Parameter( + "url", + default=cvm_constants.INFORME_DIARIO_URL.value, + required=True, + ) + df = extract_links_and_dates(url) + log_task(f"Links e datas: {df}") + arquivos = check_for_updates(df, upstream_tasks=[df]) + log_task(f"Arquivos: {arquivos}") + with case(is_empty(arquivos), True): + log_task(f"Não houveram atualizações em {url.default}!") + + with case(is_empty(arquivos), False): + input_filepath = download_unzip_csv( + files=arquivos, url=url, id=table_id, upstream_tasks=[arquivos] + ) + output_filepath = clean_data_and_make_partitions( + path=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] + ) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=output_filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="append", + wait=output_filepath, + ) + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +br_cvm_fi_documentos_informe_diario_flow.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +br_cvm_fi_documentos_informe_diario_flow.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +br_cvm_fi_documentos_informe_diario_flow.schedule = every_day_informe + + +with Flow( + name="br_cvm_fi_documentos_carteiras_fundos_investimento", + code_owners=[ + "arthurfg", + ], +) as br_cvm_fi_documentos_carteiras_fundos_investimento: + # Parameters + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + table_id = Parameter( + "table_id", default="documentos_carteiras_fundos_investimento", required=False + ) + + materialization_mode = Parameter( + "materialization_mode", default="dev", required=False + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=False, required=False + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + url = Parameter( + "url", + default=cvm_constants.CDA_URL.value, + required=True, + ) + + df = extract_links_and_dates(url) + log_task(f"Links e datas: {df}") + arquivos = check_for_updates(df, upstream_tasks=[df]) + log_task(f"Arquivos: {arquivos}") + with case(is_empty(arquivos), True): + log_task(f"Não houveram atualizações em {url.default}!") + + with case(is_empty(arquivos), False): + input_filepath = download_unzip_csv( + url=url, files=arquivos, id=table_id, upstream_tasks=[arquivos] + ) + output_filepath = clean_data_make_partitions_cda( + input_filepath, table_id=table_id, upstream_tasks=[input_filepath] + ) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=output_filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="append", + wait=output_filepath, + ) + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +br_cvm_fi_documentos_carteiras_fundos_investimento.storage = GCS( + constants.GCS_FLOWS_BUCKET.value +) +br_cvm_fi_documentos_carteiras_fundos_investimento.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +br_cvm_fi_documentos_carteiras_fundos_investimento.schedule = every_day_carteiras + + +with Flow( + name="br_cvm_fi_documentos_extratos_informacoes", + code_owners=[ + "arthurfg", + ], +) as br_cvm_fi_documentos_extratos_informacoes: + # Parameters + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + table_id = Parameter( + "table_id", default="documentos_extratos_informacoes", required=False + ) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=True + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=False, required=True + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + url = Parameter( + "url", + default=cvm_constants.URL_EXT.value, + required=True, + ) + + file = Parameter( + "file", + default=cvm_constants.FILE_EXT.value, + required=False, + ) + + df = extract_links_and_dates(url) + arquivos = check_for_updates_ext(df, upstream_tasks=[df]) + + with case(is_empty(arquivos), True): + log_task(f"Não houveram atualizações em {url.default}!") + + with case(is_empty(arquivos), False): + input_filepath = download_csv_cvm( + url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] + ) + output_filepath = clean_data_make_partitions_ext( + input_filepath, table_id=table_id, upstream_tasks=[input_filepath] + ) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=output_filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="append", + wait=output_filepath, + ) + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +br_cvm_fi_documentos_extratos_informacoes.storage = GCS( + constants.GCS_FLOWS_BUCKET.value +) +br_cvm_fi_documentos_extratos_informacoes.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +br_cvm_fi_documentos_extratos_informacoes.schedule = every_day_extratos + + +with Flow( + name="br_cvm_fi_documentos_perfil_mensal", + code_owners=[ + "arthurfg", + ], +) as br_cvm_fi_documentos_perfil_mensal: + # Parameters + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + table_id = Parameter("table_id", default="documentos_perfil_mensal", required=False) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=False + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=False, required=False + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + url = Parameter( + "url", + default=cvm_constants.URL_PERFIL_MENSAL.value, + required=True, + ) + + df = extract_links_and_dates(url) + arquivos = check_for_updates(df, upstream_tasks=[df]) + + with case(is_empty(arquivos), True): + log_task(f"Não houveram atualizações em {url.default}!") + + with case(is_empty(arquivos), False): + input_filepath = download_csv_cvm( + url=url, table_id=table_id, files=arquivos, upstream_tasks=[arquivos] + ) + output_filepath = clean_data_make_partitions_perfil( + input_filepath, table_id=table_id, upstream_tasks=[input_filepath] + ) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=output_filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="append", + wait=output_filepath, + ) + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +br_cvm_fi_documentos_perfil_mensal.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +br_cvm_fi_documentos_perfil_mensal.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +br_cvm_fi_documentos_perfil_mensal.schedule = every_day_perfil + + +with Flow( + name="br_cvm_fi_documentos_informacao_cadastral", + code_owners=[ + "arthurfg", + ], +) as br_cvm_fi_documentos_informacao_cadastral: + # Parameters + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + table_id = Parameter( + "table_id", default="documentos_informacao_cadastral", required=False + ) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=True + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=False, required=True + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + url = Parameter( + "url", + default=cvm_constants.URL_INFO_CADASTRAL.value, + required=True, + ) + + files = Parameter("files", default=cvm_constants.CAD_FILE.value, required=False) + + with case(is_empty(files), True): + log_task(f"Não houveram atualizações em {url.default}!") + + with case(is_empty(files), False): + input_filepath = download_csv_cvm(url=url, files=files, table_id=table_id) + output_filepath = clean_data_make_partitions_cad( + diretorio=input_filepath, table_id=table_id, upstream_tasks=[input_filepath] + ) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=output_filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="append", + wait=output_filepath, + ) + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +br_cvm_fi_documentos_informacao_cadastral.storage = GCS( + constants.GCS_FLOWS_BUCKET.value +) +br_cvm_fi_documentos_informacao_cadastral.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +br_cvm_fi_documentos_informacao_cadastral.schedule = every_day_informacao_cadastral + + +with Flow( + name="br_cvm_fi_documentos_balancete", + code_owners=[ + "arthurfg", + ], +) as br_cvm_fi_documentos_balancete: + # Parameters + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + table_id = Parameter("table_id", default="documentos_balancete", required=False) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=True + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=False, required=True + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + url = Parameter( + "url", + default=cvm_constants.URL_BALANCETE.value, + required=True, + ) + + df = extract_links_and_dates(url) + + files = check_for_updates(df, upstream_tasks=[df]) + + with case(is_empty(files), True): + log_task(f"Não houveram atualizações em {url.default}!") + + with case(is_empty(files), False): + input_filepath = download_unzip_csv(url=url, files=files, id=table_id) + output_filepath = clean_data_make_partitions_balancete( + input_filepath, table_id=table_id, upstream_tasks=[input_filepath] + ) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=output_filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="append", + wait=output_filepath, + ) + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + + +br_cvm_fi_documentos_balancete.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +br_cvm_fi_documentos_balancete.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) +br_cvm_fi_documentos_balancete.schedule = every_day_balancete diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 2551a0b6d..68f55ad71 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -Flows for br_rj_isp_estatisticas_seguranca. +Flows for br_rj_isp_estatisticas_seguranca """ from datetime import timedelta diff --git a/pipelines/utils/tasks.py b/pipelines/utils/tasks.py index 635db45a8..563b1be28 100644 --- a/pipelines/utils/tasks.py +++ b/pipelines/utils/tasks.py @@ -6,7 +6,7 @@ from datetime import timedelta, datetime from pathlib import Path -from typing import Union, List +from typing import Any, Union, List import basedosdados as bd import pandas as pd @@ -24,6 +24,15 @@ ) + +@task +def log_task(msg: Any, level: str = "info"): + """ + A task that logs a message. + """ + log(msg=msg, level=level) + + ################## # # Hashicorp Vault From 17c432cb4bcdb79fa817e399a323f3324b88f42b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 01:34:44 +0000 Subject: [PATCH 25/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/utils/tasks.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pipelines/utils/tasks.py b/pipelines/utils/tasks.py index 563b1be28..1d7e93897 100644 --- a/pipelines/utils/tasks.py +++ b/pipelines/utils/tasks.py @@ -24,14 +24,13 @@ ) - @task def log_task(msg: Any, level: str = "info"): """ A task that logs a message. """ log(msg=msg, level=level) - + ################## # From 0acde1fe674ea0c8f714c2fee0776fa0d506783a Mon Sep 17 00:00:00 2001 From: d116626 Date: Fri, 30 Jun 2023 22:43:59 -0300 Subject: [PATCH 26/86] chore: add log_task --- pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py | 2 +- pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 68f55ad71..2551a0b6d 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -Flows for br_rj_isp_estatisticas_seguranca +Flows for br_rj_isp_estatisticas_seguranca. """ from datetime import timedelta diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py index ce94d4ad2..6290286c3 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py @@ -25,7 +25,7 @@ ) def download_files(file_name: str, save_dir: str) -> str: """ - Downloads CSV files from a list of URLs and saves them to a specified directory. + Downloads CSV files from a list of URLs and saves them to a specified directory. Args: urls (list): List of URLs to download CSV files from. From f5d4464a0caa7f9a69b0b5d3e8ab918767f1c618 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 01:44:14 +0000 Subject: [PATCH 27/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py index 6290286c3..ce94d4ad2 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/tasks.py @@ -25,7 +25,7 @@ ) def download_files(file_name: str, save_dir: str) -> str: """ - Downloads CSV files from a list of URLs and saves them to a specified directory. + Downloads CSV files from a list of URLs and saves them to a specified directory. Args: urls (list): List of URLs to download CSV files from. From a97479f38bd73a77c5ac2f0145271e4213e263e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Mon, 3 Jul 2023 11:24:40 -0300 Subject: [PATCH 28/86] fix: testing --- pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 2551a0b6d..1228bf88b 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -56,7 +56,7 @@ # Materialization mode materialization_mode = Parameter( - "materialization_mode", default="prod", required=False + "materialization_mode", default="dev", required=False ) materialize_after_dump = Parameter( "materialize_after_dump", default=True, required=False From 941bbec504a8d0096c3482f500bdb0d1dff68937 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 3 Jul 2023 17:13:20 -0300 Subject: [PATCH 29/86] add partition item --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index f51f9b260..0080d1662 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -5,6 +5,7 @@ import asyncio import time +import os from prefect import task import pandas as pd @@ -144,4 +145,10 @@ def clean_item(filepath): # to string item = item.astype(str) - item.to_csv("/tmp/items.csv", index=False) + today = pd.Timestamp.today().strftime("%Y-%m-%d") + + os.system(f"mkdir -p br_mercadolivre_ofertas/item/{today}") + + item.to_csv(f"br_mercadolivre_ofertas/item/{today}/items.csv", index=False) + + return f"br_mercadolivre_ofertas/item/" From 63bc6659f38c871960172aab56000f41130439ab Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 3 Jul 2023 17:31:19 -0300 Subject: [PATCH 30/86] add fix list cleaning --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 0080d1662..3622963e6 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -129,8 +129,8 @@ def clean_item(filepath): # clean desconto: 10% OFF -> 10 item["desconto"] = item["desconto"].str.replace("% OFF", "") # clean categorias. Currently, it's a list of lists. Transform into a list of strings. First it's necessary to transform the string into a list of lists - item["categorias"] = item["categorias"].str.replace("[[", "[") - item["categorias"] = item["categorias"].str.replace("]]", "]") + # item["categorias"] = item["categorias"].str.replace("[[", "[") + # item["categorias"] = item["categorias"].str.replace("]]", "]") # remove if title is nan item = item[item["titulo"].notna()] # remove item_link From 3fb90ccc3a4b71556e385f1a3c1f70e72965d765 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 3 Jul 2023 17:52:10 -0300 Subject: [PATCH 31/86] fix partition --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 3622963e6..5b4d8d76a 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -149,6 +149,6 @@ def clean_item(filepath): os.system(f"mkdir -p br_mercadolivre_ofertas/item/{today}") - item.to_csv(f"br_mercadolivre_ofertas/item/{today}/items.csv", index=False) + item.to_csv(f"br_mercadolivre_ofertas/item/dia={today}/items.csv", index=False) return f"br_mercadolivre_ofertas/item/" From ed0ad4619d78c182d82c3db7a11962bcbe2b86b3 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 3 Jul 2023 18:12:55 -0300 Subject: [PATCH 32/86] fix partition --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 5b4d8d76a..5179cf8a3 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -147,7 +147,7 @@ def clean_item(filepath): today = pd.Timestamp.today().strftime("%Y-%m-%d") - os.system(f"mkdir -p br_mercadolivre_ofertas/item/{today}") + os.system(f"mkdir -p br_mercadolivre_ofertas/item/dia={today}") item.to_csv(f"br_mercadolivre_ofertas/item/dia={today}/items.csv", index=False) From 092a82e50598fba5912a5a5b2956befc078918b8 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 4 Jul 2023 12:42:38 -0300 Subject: [PATCH 33/86] add seller flow --- .../mercadolivre_ofertas/constants.py | 1 + .../datasets/mercadolivre_ofertas/flows.py | 113 +++++++++++++++++- .../datasets/mercadolivre_ofertas/tasks.py | 75 +++++++++++- .../datasets/mercadolivre_ofertas/utils.py | 37 +++++- 4 files changed, 218 insertions(+), 8 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/constants.py b/pipelines/datasets/mercadolivre_ofertas/constants.py index 8541e3f2a..b98f377b2 100644 --- a/pipelines/datasets/mercadolivre_ofertas/constants.py +++ b/pipelines/datasets/mercadolivre_ofertas/constants.py @@ -23,3 +23,4 @@ class constants(Enum): # pylint: disable=c0103 }, ] TABLES_NAMES = ["less100", "oferta_dia", "relampago", "barato_dia"] + MAP_MUNICIPIO_TO_ID = {'Ariquemes, Rondônia': 1100023, 'Guajará-Mirim, Rondônia': 1100106, 'Jaru, Rondônia': 1100114, "Machadinho D'Oeste, Rondônia": 1100130, 'Porto Velho, Rondônia': 1100205, 'Rio Crespo, Rondônia': 1100262, 'Nova Mamoré, Rondônia': 1100338, 'Alto Paraíso, Rondônia': 1100403, 'Buritis, Rondônia': 1100452, 'Cacaulândia, Rondônia': 1100601, 'Campo Novo de Rondônia, Rondônia': 1100700, 'Candeias do Jamari, Rondônia': 1100809, 'Cujubim, Rondônia': 1100940, 'Governador Jorge Teixeira, Rondônia': 1101005, 'Itapuã do Oeste, Rondônia': 1101104, 'Monte Negro, Rondônia': 1101401, 'Theobroma, Rondônia': 1101609, 'Vale do Anari, Rondônia': 1101757, 'Acrelândia, Acre': 1200013, 'Assis Brasil, Acre': 1200054, 'Brasiléia, Acre': 1200104, 'Bujari, Acre': 1200138, 'Capixaba, Acre': 1200179, 'Cruzeiro do Sul, Acre': 1200203, 'Epitaciolândia, Acre': 1200252, 'Feijó, Acre': 1200302, 'Jordão, Acre': 1200328, 'Mâncio Lima, Acre': 1200336, 'Manoel Urbano, Acre': 1200344, 'Marechal Thaumaturgo, Acre': 1200351, 'Plácido de Castro, Acre': 1200385, 'Porto Walter, Acre': 1200393, 'Rio Branco, Acre': 1200401, 'Rodrigues Alves, Acre': 1200427, 'Santa Rosa do Purus, Acre': 1200435, 'Senador Guiomard, Acre': 1200450, 'Sena Madureira, Acre': 1200500, 'Tarauacá, Acre': 1200609, 'Xapuri, Acre': 1200708, 'Porto Acre, Acre': 1200807, 'Alvarães, Amazonas': 1300029, 'Amaturá, Amazonas': 1300060, 'Anamã, Amazonas': 1300086, 'Anori, Amazonas': 1300102, 'Apuí, Amazonas': 1300144, 'Atalaia do Norte, Amazonas': 1300201, 'Autazes, Amazonas': 1300300, 'Barcelos, Amazonas': 1300409, 'Barreirinha, Amazonas': 1300508, 'Benjamin Constant, Amazonas': 1300607, 'Beruri, Amazonas': 1300631, 'Boa Vista do Ramos, Amazonas': 1300680, 'Boca do Acre, Amazonas': 1300706, 'Borba, Amazonas': 1300805, 'Caapiranga, Amazonas': 1300839, 'Canutama, Amazonas': 1300904, 'Carauari, Amazonas': 1301001, 'Careiro, Amazonas': 1301100, 'Careiro da Várzea, Amazonas': 1301159, 'Coari, Amazonas': 1301209, 'Codajás, Amazonas': 1301308, 'Eirunepé, Amazonas': 1301407, 'Envira, Amazonas': 1301506, 'Fonte Boa, Amazonas': 1301605, 'Guajará, Amazonas': 1301654, 'Humaitá, Amazonas': 1301704, 'Ipixuna, Amazonas': 1301803, 'Iranduba, Amazonas': 1301852, 'Itacoatiara, Amazonas': 1301902, 'Itamarati, Amazonas': 1301951, 'Itapiranga, Amazonas': 1302009, 'Japurá, Amazonas': 1302108, 'Juruá, Amazonas': 1302207, 'Jutaí, Amazonas': 1302306, 'Lábrea, Amazonas': 1302405, 'Manacapuru, Amazonas': 1302504, 'Manaquiri, Amazonas': 1302553, 'Manaus, Amazonas': 1302603, 'Manicoré, Amazonas': 1302702, 'Maraã, Amazonas': 1302801, 'Maués, Amazonas': 1302900, 'Nhamundá, Amazonas': 1303007, 'Nova Olinda do Norte, Amazonas': 1303106, 'Novo Airão, Amazonas': 1303205, 'Novo Aripuanã, Amazonas': 1303304, 'Parintins, Amazonas': 1303403, 'Pauini, Amazonas': 1303502, 'Presidente Figueiredo, Amazonas': 1303536, 'Rio Preto da Eva, Amazonas': 1303569, 'Santa Isabel do Rio Negro, Amazonas': 1303601, 'Santo Antônio do Içá, Amazonas': 1303700, 'São Gabriel da Cachoeira, Amazonas': 1303809, 'São Paulo de Olivença, Amazonas': 1303908, 'São Sebastião do Uatumã, Amazonas': 1303957, 'Silves, Amazonas': 1304005, 'Tabatinga, Amazonas': 1304062, 'Tapauá, Amazonas': 1304104, 'Tefé, Amazonas': 1304203, 'Tonantins, Amazonas': 1304237, 'Uarini, Amazonas': 1304260, 'Urucará, Amazonas': 1304302, 'Urucurituba, Amazonas': 1304401, 'Amajari, Roraima': 1400027, 'Alto Alegre, Roraima': 1400050, 'Boa Vista, Roraima': 1400100, 'Bonfim, Roraima': 1400159, 'Cantá, Roraima': 1400175, 'Caracaraí, Roraima': 1400209, 'Caroebe, Roraima': 1400233, 'Iracema, Roraima': 1400282, 'Mucajaí, Roraima': 1400308, 'Normandia, Roraima': 1400407, 'Pacaraima, Roraima': 1400456, 'Rorainópolis, Roraima': 1400472, 'São João da Baliza, Roraima': 1400506, 'São Luiz, Roraima': 1400605, 'Uiramutã, Roraima': 1400704, 'Abaetetuba, Pará': 1500107, 'Abel Figueiredo, Pará': 1500131, 'Acará, Pará': 1500206, 'Afuá, Pará': 1500305, 'Água Azul do Norte, Pará': 1500347, 'Alenquer, Pará': 1500404, 'Almeirim, Pará': 1500503, 'Altamira, Pará': 1500602, 'Anajás, Pará': 1500701, 'Ananindeua, Pará': 1500800, 'Anapu, Pará': 1500859, 'Aveiro, Pará': 1501006, 'Bagre, Pará': 1501105, 'Baião, Pará': 1501204, 'Bannach, Pará': 1501253, 'Barcarena, Pará': 1501303, 'Belém, Pará': 1501402, 'Belterra, Pará': 1501451, 'Benevides, Pará': 1501501, 'Bom Jesus do Tocantins, Pará': 1501576, 'Brasil Novo, Pará': 1501725, 'Brejo Grande do Araguaia, Pará': 1501758, 'Breu Branco, Pará': 1501782, 'Breves, Pará': 1501808, 'Bujaru, Pará': 1501907, 'Cachoeira do Arari, Pará': 1502004, 'Cametá, Pará': 1502103, 'Canaã dos Carajás, Pará': 1502152, 'Chaves, Pará': 1502509, 'Colares, Pará': 1502608, 'Conceição do Araguaia, Pará': 1502707, 'Concórdia do Pará, Pará': 1502756, 'Cumaru do Norte, Pará': 1502764, 'Curionópolis, Pará': 1502772, 'Curralinho, Pará': 1502806, 'Curuá, Pará': 1502855, 'Eldorado do Carajás, Pará': 1502954, 'Faro, Pará': 1503002, 'Floresta do Araguaia, Pará': 1503044, 'Goianésia do Pará, Pará': 1503093, 'Gurupá, Pará': 1503101, 'Igarapé-Miri, Pará': 1503309, 'Itaituba, Pará': 1503606, 'Itupiranga, Pará': 1503705, 'Jacareacanga, Pará': 1503754, 'Jacundá, Pará': 1503804, 'Juruti, Pará': 1503903, 'Limoeiro do Ajuru, Pará': 1504000, 'Marabá, Pará': 1504208, 'Marituba, Pará': 1504422, 'Medicilândia, Pará': 1504455, 'Melgaço, Pará': 1504505, 'Mocajuba, Pará': 1504604, 'Moju, Pará': 1504703, 'Mojuí dos Campos, Pará': 1504752, 'Monte Alegre, Pará': 1504802, 'Muaná, Pará': 1504901, 'Nova Ipixuna, Pará': 1504976, 'Novo Progresso, Pará': 1505031, 'Novo Repartimento, Pará': 1505064, 'Óbidos, Pará': 1505106, 'Oeiras do Pará, Pará': 1505205, 'Oriximiná, Pará': 1505304, 'Ourilândia do Norte, Pará': 1505437, 'Pacajá, Pará': 1505486, 'Palestina do Pará, Pará': 1505494, 'Parauapebas, Pará': 1505536, "Pau D'Arco, Pará": 1505551, 'Piçarra, Pará': 1505635, 'Placas, Pará': 1505650, 'Ponta de Pedras, Pará': 1505700, 'Portel, Pará': 1505809, 'Porto de Moz, Pará': 1505908, 'Prainha, Pará': 1506005, 'Redenção, Pará': 1506138, 'Rio Maria, Pará': 1506161, 'Rondon do Pará, Pará': 1506187, 'Rurópolis, Pará': 1506195, 'Salvaterra, Pará': 1506302, 'Santa Bárbara do Pará, Pará': 1506351, 'Santa Cruz do Arari, Pará': 1506401, 'Santa Isabel do Pará, Pará': 1506500, 'Santa Maria das Barreiras, Pará': 1506583, 'Santana do Araguaia, Pará': 1506708, 'Santarém, Pará': 1506807, 'Santo Antônio do Tauá, Pará': 1507003, 'São Caetano de Odivelas, Pará': 1507102, 'São Domingos do Araguaia, Pará': 1507151, 'São Félix do Xingu, Pará': 1507300, 'São Geraldo do Araguaia, Pará': 1507458, 'São João do Araguaia, Pará': 1507508, 'São Sebastião da Boa Vista, Pará': 1507706, 'Sapucaia, Pará': 1507755, 'Senador José Porfírio, Pará': 1507805, 'Soure, Pará': 1507904, 'Tailândia, Pará': 1507953, 'Terra Santa, Pará': 1507979, 'Tomé-Açu, Pará': 1508001, 'Trairão, Pará': 1508050, 'Tucumã, Pará': 1508084, 'Tucuruí, Pará': 1508100, 'Uruará, Pará': 1508159, 'Vigia, Pará': 1508209, 'Vitória do Xingu, Pará': 1508357, 'Xinguara, Pará': 1508407, 'Serra do Navio, Amapá': 1600055, 'Amapá, Amapá': 1600105, 'Pedra Branca do Amapari, Amapá': 1600154, 'Calçoene, Amapá': 1600204, 'Cutias, Amapá': 1600212, 'Ferreira Gomes, Amapá': 1600238, 'Itaubal, Amapá': 1600253, 'Laranjal do Jari, Amapá': 1600279, 'Macapá, Amapá': 1600303, 'Mazagão, Amapá': 1600402, 'Oiapoque, Amapá': 1600501, 'Porto Grande, Amapá': 1600535, 'Pracuúba, Amapá': 1600550, 'Santana, Amapá': 1600600, 'Tartarugalzinho, Amapá': 1600709, 'Vitória do Jari, Amapá': 1600808, 'Afonso Cunha, Maranhão': 2100105, 'Aldeias Altas, Maranhão': 2100303, 'Buriti Bravo, Maranhão': 2102309, 'Caxias, Maranhão': 2103000, 'Codó, Maranhão': 2103307, 'Coelho Neto, Maranhão': 2103406, 'Coroatá, Maranhão': 2103604, 'Duque Bacelar, Maranhão': 2103901, 'Matões, Maranhão': 2106607, 'Parnarama, Maranhão': 2107803, 'Peritoró, Maranhão': 2108454, 'São João do Soter, Maranhão': 2111078, 'Timbiras, Maranhão': 2112100, 'Timon, Maranhão': 2112209, 'Alvorada do Gurguéia, Piauí': 2200459, 'Anísio de Abreu, Piauí': 2200707, 'Avelino Lopes, Piauí': 2201101, 'Barreiras do Piauí, Piauí': 2201309, 'Bom Jesus, Piauí': 2201903, 'Bonfim do Piauí, Piauí': 2201929, 'Campo Alegre do Fidalgo, Piauí': 2202117, 'Capitão Gervásio Oliveira, Piauí': 2202455, 'Caracol, Piauí': 2202505, 'Colônia do Gurguéia, Piauí': 2202752, 'Coronel José Dias, Piauí': 2202851, 'Corrente, Piauí': 2202901, 'Cristalândia do Piauí, Piauí': 2203008, 'Cristino Castro, Piauí': 2203107, 'Curimatá, Piauí': 2203206, 'Currais, Piauí': 2203230, 'Dirceu Arcoverde, Piauí': 2203354, 'Dom Inocêncio, Piauí': 2203453, 'Fartura do Piauí, Piauí': 2203750, 'Gilbués, Piauí': 2204402, 'Guaribas, Piauí': 2204550, 'João Costa, Piauí': 2205359, 'Júlio Borges, Piauí': 2205524, 'Jurema, Piauí': 2205532, 'Lagoa do Barro do Piauí, Piauí': 2205565, 'Monte Alegre do Piauí, Piauí': 2206605, 'Morro Cabeça no Tempo, Piauí': 2206654, 'Palmeira do Piauí, Piauí': 2207405, 'Parnaguá, Piauí': 2207603, 'Pedro Laurentino, Piauí': 2207934, 'Nova Santa Rita, Piauí': 2207959, 'Redenção do Gurguéia, Piauí': 2208700, 'Riacho Frio, Piauí': 2208858, 'Ribeira do Piauí, Piauí': 2208874, 'Santa Filomena, Piauí': 2209203, 'Santa Luz, Piauí': 2209302, 'São Braz do Piauí, Piauí': 2209559, 'São Gonçalo do Gurguéia, Piauí': 2209757, 'São João do Piauí, Piauí': 2210003, 'São Lourenço do Piauí, Piauí': 2210359, 'São Raimundo Nonato, Piauí': 2210607, 'Sebastião Barros, Piauí': 2210623, 'Várzea Branca, Piauí': 2211357, 'Acopiara, Ceará': 2300309, 'Ararendá, Ceará': 2301257, 'Arneiroz, Ceará': 2301505, 'Baixio, Ceará': 2301802, 'Cariús, Ceará': 2303303, 'Catarina, Ceará': 2303600, 'Cedro, Ceará': 2303808, 'Crateús, Ceará': 2304103, 'Icó, Ceará': 2305407, 'Iguatu, Ceará': 2305506, 'Independência, Ceará': 2305605, 'Ipaporanga, Ceará': 2305654, 'Ipaumirim, Ceará': 2305704, 'Jucás, Ceará': 2307403, 'Mombaça, Ceará': 2308500, 'Monsenhor Tabosa, Ceará': 2308609, 'Nova Russas, Ceará': 2309300, 'Novo Oriente, Ceará': 2309409, 'Orós, Ceará': 2309508, 'Parambu, Ceará': 2310308, 'Piquet Carneiro, Ceará': 2310902, 'Poranga, Ceará': 2311009, 'Quiterianópolis, Ceará': 2311264, 'Quixelô, Ceará': 2311355, 'Saboeiro, Ceará': 2311900, 'Tamboril, Ceará': 2313203, 'Tauá, Ceará': 2313302, 'Umari, Ceará': 2313708, 'Acari, Rio Grande do Norte': 2400109, 'Bodó, Rio Grande do Norte': 2401651, 'Caicó, Rio Grande do Norte': 2402006, 'Carnaúba dos Dantas, Rio Grande do Norte': 2402402, 'Cerro Corá, Rio Grande do Norte': 2402709, 'Cruzeta, Rio Grande do Norte': 2403004, 'Currais Novos, Rio Grande do Norte': 2403103, 'Equador, Rio Grande do Norte': 2403400, 'Florânia, Rio Grande do Norte': 2403806, 'Ipueira, Rio Grande do Norte': 2404804, 'Jardim de Piranhas, Rio Grande do Norte': 2405603, 'Jardim do Seridó, Rio Grande do Norte': 2405702, 'Jucurutu, Rio Grande do Norte': 2406106, 'Lagoa Nova, Rio Grande do Norte': 2406502, 'Ouro Branco, Rio Grande do Norte': 2408508, 'Parelhas, Rio Grande do Norte': 2408904, 'Santana do Seridó, Rio Grande do Norte': 2411429, 'São Fernando, Rio Grande do Norte': 2411809, 'São João do Sabugi, Rio Grande do Norte': 2412104, 'São José do Seridó, Rio Grande do Norte': 2412401, 'São Vicente, Rio Grande do Norte': 2413003, 'Serra Negra do Norte, Rio Grande do Norte': 2413409, 'Tenente Laurentino Cruz, Rio Grande do Norte': 2414159, 'Timbaúba dos Batistas, Rio Grande do Norte': 2414308, 'São João do Rio do Peixe, Paraíba': 2500700, 'Aparecida, Paraíba': 2500775, 'Bernardino Batista, Paraíba': 2502052, 'Bom Jesus, Paraíba': 2502201, 'Bonito de Santa Fé, Paraíba': 2502409, 'Cachoeira dos Índios, Paraíba': 2503308, 'Cajazeiras, Paraíba': 2503704, 'Carrapateira, Paraíba': 2504108, 'Lastro, Paraíba': 2508406, 'Marizópolis, Paraíba': 2509156, 'Monte Horebe, Paraíba': 2509602, 'Nazarezinho, Paraíba': 2510006, 'Poço Dantas, Paraíba': 2512036, 'Poço de José de Moura, Paraíba': 2512077, 'Santa Cruz, Paraíba': 2513208, 'Santa Helena, Paraíba': 2513307, 'Joca Claudino, Paraíba': 2513653, 'São Francisco, Paraíba': 2513984, 'São José da Lagoa Tapada, Paraíba': 2514206, 'São José de Piranhas, Paraíba': 2514503, 'Serra Grande, Paraíba': 2515708, 'Sousa, Paraíba': 2516201, 'Triunfo, Paraíba': 2516805, 'Uiraúna, Paraíba': 2516904, 'Vieirópolis, Paraíba': 2517209, 'Afogados da Ingazeira, Pernambuco': 2600104, 'Afrânio, Pernambuco': 2600203, 'Araripina, Pernambuco': 2601102, 'Belém do São Francisco, Pernambuco': 2601607, 'Betânia, Pernambuco': 2601805, 'Bodocó, Pernambuco': 2602001, 'Brejinho, Pernambuco': 2602506, 'Cabrobó, Pernambuco': 2603009, 'Calumbi, Pernambuco': 2603405, 'Carnaíba, Pernambuco': 2603900, 'Carnaubeira da Penha, Pernambuco': 2603926, 'Cedro, Pernambuco': 2604304, 'Dormentes, Pernambuco': 2605152, 'Exu, Pernambuco': 2605301, 'Flores, Pernambuco': 2605608, 'Floresta, Pernambuco': 2605707, 'Granito, Pernambuco': 2606309, 'Iguaraci, Pernambuco': 2606903, 'Ingazeira, Pernambuco': 2607109, 'Ipubi, Pernambuco': 2607307, 'Itacuruba, Pernambuco': 2607406, 'Itapetim, Pernambuco': 2607703, 'Jatobá, Pernambuco': 2608057, 'Lagoa Grande, Pernambuco': 2608750, 'Mirandiba, Pernambuco': 2609303, 'Orocó, Pernambuco': 2609808, 'Ouricuri, Pernambuco': 2609907, 'Parnamirim, Pernambuco': 2610400, 'Petrolândia, Pernambuco': 2611002, 'Petrolina, Pernambuco': 2611101, 'Quixaba, Pernambuco': 2611533, 'Salgueiro, Pernambuco': 2612208, 'Santa Cruz, Pernambuco': 2612455, 'Santa Cruz da Baixa Verde, Pernambuco': 2612471, 'Santa Filomena, Pernambuco': 2612554, 'Santa Maria da Boa Vista, Pernambuco': 2612604, 'Santa Terezinha, Pernambuco': 2612802, 'São José do Belmonte, Pernambuco': 2613503, 'São José do Egito, Pernambuco': 2613602, 'Serra Talhada, Pernambuco': 2613909, 'Serrita, Pernambuco': 2614006, 'Moreilândia, Pernambuco': 2614303, 'Solidão, Pernambuco': 2614402, 'Tabira, Pernambuco': 2614600, 'Tacaratu, Pernambuco': 2614808, 'Terra Nova, Pernambuco': 2615201, 'Trindade, Pernambuco': 2615607, 'Triunfo, Pernambuco': 2615706, 'Tuparetama, Pernambuco': 2615904, 'Verdejante, Pernambuco': 2616100, 'Andorinha, Bahia': 2901353, 'Angical, Bahia': 2901403, 'Antônio Gonçalves, Bahia': 2901809, 'Baianópolis, Bahia': 2902500, 'Barreiras, Bahia': 2903201, 'Brejolândia, Bahia': 2904407, 'Campo Alegre de Lourdes, Bahia': 2905909, 'Campo Formoso, Bahia': 2906006, 'Canápolis, Bahia': 2906105, 'Casa Nova, Bahia': 2907202, 'Catolândia, Bahia': 2907400, 'Cocos, Bahia': 2908101, 'Coribe, Bahia': 2909109, 'Correntina, Bahia': 2909307, 'Cotegipe, Bahia': 2909406, 'Cristópolis, Bahia': 2909703, 'Curaçá, Bahia': 2909901, 'Filadélfia, Bahia': 2910859, 'Formosa do Rio Preto, Bahia': 2911105, 'Itiúba, Bahia': 2917003, 'Jaborandi, Bahia': 2917359, 'Jaguarari, Bahia': 2917706, 'Juazeiro, Bahia': 2918407, 'Luís Eduardo Magalhães, Bahia': 2919553, 'Mansidão, Bahia': 2920452, 'Pilão Arcado, Bahia': 2924405, 'Pindobaçu, Bahia': 2924603, 'Ponto Novo, Bahia': 2925253, 'Remanso, Bahia': 2926004, 'Riachão das Neves, Bahia': 2926202, 'Santa Maria da Vitória, Bahia': 2928109, 'Santana, Bahia': 2928208, 'Santa Rita de Cássia, Bahia': 2928406, 'São Desidério, Bahia': 2928901, 'São Félix do Coribe, Bahia': 2929057, 'Senhor do Bonfim, Bahia': 2930105, 'Sento Sé, Bahia': 2930204, 'Serra Dourada, Bahia': 2930303, 'Sobradinho, Bahia': 2930774, 'Tabocas do Brejo Velho, Bahia': 2930907, 'Uauá, Bahia': 2932002, 'Wanderley, Bahia': 2933455, 'Abadia dos Dourados, Minas Gerais': 3100104, 'Araguari, Minas Gerais': 3103504, 'Araporã, Minas Gerais': 3103751, 'Cachoeira Dourada, Minas Gerais': 3109808, 'Campina Verde, Minas Gerais': 3111101, 'Canápolis, Minas Gerais': 3111804, 'Capinópolis, Minas Gerais': 3112604, 'Cascalho Rico, Minas Gerais': 3115003, 'Centralina, Minas Gerais': 3115805, 'Douradoquara, Minas Gerais': 3123502, 'Estrela do Sul, Minas Gerais': 3124807, 'Grupiara, Minas Gerais': 3127909, 'Gurinhatã, Minas Gerais': 3129103, 'Indianópolis, Minas Gerais': 3130705, 'Ipiaçu, Minas Gerais': 3131406, 'Iraí de Minas, Minas Gerais': 3131604, 'Ituiutaba, Minas Gerais': 3134202, 'Monte Alegre de Minas, Minas Gerais': 3142809, 'Monte Carmelo, Minas Gerais': 3143104, 'Prata, Minas Gerais': 3152808, 'Romaria, Minas Gerais': 3156403, 'Santa Vitória, Minas Gerais': 3159803, 'Tupaciguara, Minas Gerais': 3169604, 'Uberlândia, Minas Gerais': 3170206, 'Afonso Cláudio, Espírito Santo': 3200102, 'Águia Branca, Espírito Santo': 3200136, 'Água Doce do Norte, Espírito Santo': 3200169, 'Alegre, Espírito Santo': 3200201, 'Alfredo Chaves, Espírito Santo': 3200300, 'Alto Rio Novo, Espírito Santo': 3200359, 'Anchieta, Espírito Santo': 3200409, 'Apiacá, Espírito Santo': 3200508, 'Aracruz, Espírito Santo': 3200607, 'Atilio Vivacqua, Espírito Santo': 3200706, 'Baixo Guandu, Espírito Santo': 3200805, 'Barra de São Francisco, Espírito Santo': 3200904, 'Boa Esperança, Espírito Santo': 3201001, 'Bom Jesus do Norte, Espírito Santo': 3201100, 'Brejetuba, Espírito Santo': 3201159, 'Cachoeiro de Itapemirim, Espírito Santo': 3201209, 'Cariacica, Espírito Santo': 3201308, 'Castelo, Espírito Santo': 3201407, 'Colatina, Espírito Santo': 3201506, 'Conceição da Barra, Espírito Santo': 3201605, 'Conceição do Castelo, Espírito Santo': 3201704, 'Divino de São Lourenço, Espírito Santo': 3201803, 'Domingos Martins, Espírito Santo': 3201902, 'Dores do Rio Preto, Espírito Santo': 3202009, 'Ecoporanga, Espírito Santo': 3202108, 'Fundão, Espírito Santo': 3202207, 'Governador Lindenberg, Espírito Santo': 3202256, 'Guaçuí, Espírito Santo': 3202306, 'Guarapari, Espírito Santo': 3202405, 'Ibatiba, Espírito Santo': 3202454, 'Ibiraçu, Espírito Santo': 3202504, 'Ibitirama, Espírito Santo': 3202553, 'Iconha, Espírito Santo': 3202603, 'Irupi, Espírito Santo': 3202652, 'Itaguaçu, Espírito Santo': 3202702, 'Itapemirim, Espírito Santo': 3202801, 'Itarana, Espírito Santo': 3202900, 'Iúna, Espírito Santo': 3203007, 'Jaguaré, Espírito Santo': 3203056, 'Jerônimo Monteiro, Espírito Santo': 3203106, 'João Neiva, Espírito Santo': 3203130, 'Laranja da Terra, Espírito Santo': 3203163, 'Linhares, Espírito Santo': 3203205, 'Mantenópolis, Espírito Santo': 3203304, 'Marataízes, Espírito Santo': 3203320, 'Marechal Floriano, Espírito Santo': 3203346, 'Marilândia, Espírito Santo': 3203353, 'Mimoso do Sul, Espírito Santo': 3203403, 'Montanha, Espírito Santo': 3203502, 'Mucurici, Espírito Santo': 3203601, 'Muniz Freire, Espírito Santo': 3203700, 'Muqui, Espírito Santo': 3203809, 'Nova Venécia, Espírito Santo': 3203908, 'Pancas, Espírito Santo': 3204005, 'Pedro Canário, Espírito Santo': 3204054, 'Pinheiros, Espírito Santo': 3204104, 'Piúma, Espírito Santo': 3204203, 'Ponto Belo, Espírito Santo': 3204252, 'Presidente Kennedy, Espírito Santo': 3204302, 'Rio Bananal, Espírito Santo': 3204351, 'Rio Novo do Sul, Espírito Santo': 3204401, 'Santa Leopoldina, Espírito Santo': 3204500, 'Santa Maria de Jetibá, Espírito Santo': 3204559, 'Santa Teresa, Espírito Santo': 3204609, 'São Domingos do Norte, Espírito Santo': 3204658, 'São Gabriel da Palha, Espírito Santo': 3204708, 'São José do Calçado, Espírito Santo': 3204807, 'São Mateus, Espírito Santo': 3204906, 'São Roque do Canaã, Espírito Santo': 3204955, 'Serra, Espírito Santo': 3205002, 'Sooretama, Espírito Santo': 3205010, 'Vargem Alta, Espírito Santo': 3205036, 'Venda Nova do Imigrante, Espírito Santo': 3205069, 'Viana, Espírito Santo': 3205101, 'Vila Pavão, Espírito Santo': 3205150, 'Vila Valério, Espírito Santo': 3205176, 'Vila Velha, Espírito Santo': 3205200, 'Vitória, Espírito Santo': 3205309, 'Angra dos Reis, Rio de Janeiro': 3300100, 'Aperibé, Rio de Janeiro': 3300159, 'Araruama, Rio de Janeiro': 3300209, 'Areal, Rio de Janeiro': 3300225, 'Armação dos Búzios, Rio de Janeiro': 3300233, 'Arraial do Cabo, Rio de Janeiro': 3300258, 'Barra do Piraí, Rio de Janeiro': 3300308, 'Barra Mansa, Rio de Janeiro': 3300407, 'Belford Roxo, Rio de Janeiro': 3300456, 'Bom Jardim, Rio de Janeiro': 3300506, 'Bom Jesus do Itabapoana, Rio de Janeiro': 3300605, 'Cabo Frio, Rio de Janeiro': 3300704, 'Cachoeiras de Macacu, Rio de Janeiro': 3300803, 'Cambuci, Rio de Janeiro': 3300902, 'Carapebus, Rio de Janeiro': 3300936, 'Comendador Levy Gasparian, Rio de Janeiro': 3300951, 'Campos dos Goytacazes, Rio de Janeiro': 3301009, 'Cantagalo, Rio de Janeiro': 3301108, 'Cardoso Moreira, Rio de Janeiro': 3301157, 'Carmo, Rio de Janeiro': 3301207, 'Casimiro de Abreu, Rio de Janeiro': 3301306, 'Conceição de Macabu, Rio de Janeiro': 3301405, 'Cordeiro, Rio de Janeiro': 3301504, 'Duas Barras, Rio de Janeiro': 3301603, 'Duque de Caxias, Rio de Janeiro': 3301702, 'Engenheiro Paulo de Frontin, Rio de Janeiro': 3301801, 'Guapimirim, Rio de Janeiro': 3301850, 'Iguaba Grande, Rio de Janeiro': 3301876, 'Itaboraí, Rio de Janeiro': 3301900, 'Itaguaí, Rio de Janeiro': 3302007, 'Italva, Rio de Janeiro': 3302056, 'Itaocara, Rio de Janeiro': 3302106, 'Itaperuna, Rio de Janeiro': 3302205, 'Itatiaia, Rio de Janeiro': 3302254, 'Japeri, Rio de Janeiro': 3302270, 'Laje do Muriaé, Rio de Janeiro': 3302304, 'Macaé, Rio de Janeiro': 3302403, 'Macuco, Rio de Janeiro': 3302452, 'Magé, Rio de Janeiro': 3302502, 'Mangaratiba, Rio de Janeiro': 3302601, 'Maricá, Rio de Janeiro': 3302700, 'Mendes, Rio de Janeiro': 3302809, 'Mesquita, Rio de Janeiro': 3302858, 'Miguel Pereira, Rio de Janeiro': 3302908, 'Miracema, Rio de Janeiro': 3303005, 'Natividade, Rio de Janeiro': 3303104, 'Nilópolis, Rio de Janeiro': 3303203, 'Niterói, Rio de Janeiro': 3303302, 'Nova Friburgo, Rio de Janeiro': 3303401, 'Nova Iguaçu, Rio de Janeiro': 3303500, 'Paracambi, Rio de Janeiro': 3303609, 'Paraíba do Sul, Rio de Janeiro': 3303708, 'Paraty, Rio de Janeiro': 3303807, 'Paty do Alferes, Rio de Janeiro': 3303856, 'Petrópolis, Rio de Janeiro': 3303906, 'Pinheiral, Rio de Janeiro': 3303955, 'Piraí, Rio de Janeiro': 3304003, 'Porciúncula, Rio de Janeiro': 3304102, 'Porto Real, Rio de Janeiro': 3304110, 'Quatis, Rio de Janeiro': 3304128, 'Queimados, Rio de Janeiro': 3304144, 'Quissamã, Rio de Janeiro': 3304151, 'Resende, Rio de Janeiro': 3304201, 'Rio Bonito, Rio de Janeiro': 3304300, 'Rio Claro, Rio de Janeiro': 3304409, 'Rio das Flores, Rio de Janeiro': 3304508, 'Rio das Ostras, Rio de Janeiro': 3304524, 'Rio de Janeiro, Rio de Janeiro': 3304557, 'Santa Maria Madalena, Rio de Janeiro': 3304607, 'Santo Antônio de Pádua, Rio de Janeiro': 3304706, 'São Francisco de Itabapoana, Rio de Janeiro': 3304755, 'São Fidélis, Rio de Janeiro': 3304805, 'São Gonçalo, Rio de Janeiro': 3304904, 'São João da Barra, Rio de Janeiro': 3305000, 'São João de Meriti, Rio de Janeiro': 3305109, 'São José de Ubá, Rio de Janeiro': 3305133, 'São José do Vale do Rio Preto, Rio de Janeiro': 3305158, 'São Pedro da Aldeia, Rio de Janeiro': 3305208, 'São Sebastião do Alto, Rio de Janeiro': 3305307, 'Sapucaia, Rio de Janeiro': 3305406, 'Saquarema, Rio de Janeiro': 3305505, 'Seropédica, Rio de Janeiro': 3305554, 'Silva Jardim, Rio de Janeiro': 3305604, 'Sumidouro, Rio de Janeiro': 3305703, 'Tanguá, Rio de Janeiro': 3305752, 'Teresópolis, Rio de Janeiro': 3305802, 'Trajano de Moraes, Rio de Janeiro': 3305901, 'Três Rios, Rio de Janeiro': 3306008, 'Valença, Rio de Janeiro': 3306107, 'Varre-Sai, Rio de Janeiro': 3306156, 'Vassouras, Rio de Janeiro': 3306206, 'Volta Redonda, Rio de Janeiro': 3306305, 'Américo Brasiliense, São Paulo': 3501707, 'Araraquara, São Paulo': 3503208, 'Boa Esperança do Sul, São Paulo': 3506706, 'Borborema, São Paulo': 3507407, 'Cândido Rodrigues, São Paulo': 3510104, 'Descalvado, São Paulo': 3513702, 'Dobrada, São Paulo': 3514007, 'Dourado, São Paulo': 3514304, 'Gavião Peixoto, São Paulo': 3516853, 'Ibaté, São Paulo': 3519303, 'Ibitinga, São Paulo': 3519600, 'Itápolis, São Paulo': 3522703, 'Itirapina, São Paulo': 3523602, 'Matão, São Paulo': 3529302, 'Motuca, São Paulo': 3532058, 'Nova Europa, São Paulo': 3532900, 'Pirassununga, São Paulo': 3539301, 'Porto Ferreira, São Paulo': 3540705, 'Ribeirão Bonito, São Paulo': 3542909, 'Rincão, São Paulo': 3543709, 'Santa Lúcia, São Paulo': 3546900, 'Santa Rita do Passa Quatro, São Paulo': 3547502, 'São Carlos, São Paulo': 3548906, 'Tabatinga, São Paulo': 3552700, 'Taquaritinga, São Paulo': 3553708, 'Trabiju, São Paulo': 3554755, 'Arapoti, Paraná': 4101606, 'Boa Ventura de São Roque, Paraná': 4103040, 'Campina do Simão, Paraná': 4103958, 'Candói, Paraná': 4104428, 'Cantagalo, Paraná': 4104451, 'Carambeí, Paraná': 4104659, 'Castro, Paraná': 4104907, 'Curiúva, Paraná': 4107009, 'Fernandes Pinheiro, Paraná': 4107736, 'Foz do Jordão, Paraná': 4108452, 'Goioxim, Paraná': 4108650, 'Guamiranga, Paraná': 4108957, 'Guarapuava, Paraná': 4109401, 'Imbaú, Paraná': 4110078, 'Imbituva, Paraná': 4110102, 'Inácio Martins, Paraná': 4110201, 'Ipiranga, Paraná': 4110508, 'Irati, Paraná': 4110706, 'Ivaí, Paraná': 4111407, 'Jaguariaíva, Paraná': 4112009, 'Laranjal, Paraná': 4113254, 'Mallet, Paraná': 4113908, 'Mato Rico, Paraná': 4115739, 'Nova Tebas, Paraná': 4117271, 'Ortigueira, Paraná': 4117305, 'Palmeira, Paraná': 4117701, 'Palmital, Paraná': 4117800, 'Pinhão, Paraná': 4119301, 'Piraí do Sul, Paraná': 4119400, 'Pitanga, Paraná': 4119608, 'Ponta Grossa, Paraná': 4119905, 'Porto Amazonas, Paraná': 4120101, 'Prudentópolis, Paraná': 4120606, 'Rebouças, Paraná': 4121505, 'Reserva, Paraná': 4121703, 'Reserva do Iguaçu, Paraná': 4121752, 'Rio Azul, Paraná': 4122008, 'Santa Maria do Oeste, Paraná': 4123857, 'São João do Triunfo, Paraná': 4125100, 'Sengés, Paraná': 4126306, 'Teixeira Soares, Paraná': 4127007, 'Telêmaco Borba, Paraná': 4127106, 'Tibagi, Paraná': 4127502, 'Turvo, Paraná': 4127965, 'Ventania, Paraná': 4128534, 'Águas Mornas, Santa Catarina': 4200606, 'Alfredo Wagner, Santa Catarina': 4200705, 'Angelina, Santa Catarina': 4200903, 'Anita Garibaldi, Santa Catarina': 4201000, 'Anitápolis, Santa Catarina': 4201109, 'Antônio Carlos, Santa Catarina': 4201208, 'Araquari, Santa Catarina': 4201307, 'Arroio Trinta, Santa Catarina': 4201604, 'Balneário Barra do Sul, Santa Catarina': 4202057, 'Bela Vista do Toldo, Santa Catarina': 4202131, 'Biguaçu, Santa Catarina': 4202305, 'Bocaina do Sul, Santa Catarina': 4202438, 'Bom Jardim da Serra, Santa Catarina': 4202503, 'Bom Retiro, Santa Catarina': 4202602, 'Brunópolis, Santa Catarina': 4202875, 'Caçador, Santa Catarina': 4203006, 'Calmon, Santa Catarina': 4203154, 'Capão Alto, Santa Catarina': 4203253, 'Campo Alegre, Santa Catarina': 4203303, 'Campo Belo do Sul, Santa Catarina': 4203402, 'Canoinhas, Santa Catarina': 4203808, 'Cerro Negro, Santa Catarina': 4204178, 'Corupá, Santa Catarina': 4204509, 'Correia Pinto, Santa Catarina': 4204558, 'Curitibanos, Santa Catarina': 4204806, 'Florianópolis, Santa Catarina': 4205407, 'Fraiburgo, Santa Catarina': 4205506, 'Frei Rogério, Santa Catarina': 4205555, 'Garopaba, Santa Catarina': 4205704, 'Garuva, Santa Catarina': 4205803, 'Governador Celso Ramos, Santa Catarina': 4206009, 'Guaramirim, Santa Catarina': 4206504, 'Ibiam, Santa Catarina': 4206751, 'Imbituba, Santa Catarina': 4207304, 'Iomerê, Santa Catarina': 4207577, 'Irineópolis, Santa Catarina': 4207908, 'Itaiópolis, Santa Catarina': 4208104, 'Itapoá, Santa Catarina': 4208450, 'Jaraguá do Sul, Santa Catarina': 4208906, 'Joinville, Santa Catarina': 4209102, 'Lages, Santa Catarina': 4209300, 'Lebon Régis, Santa Catarina': 4209706, 'Macieira, Santa Catarina': 4210050, 'Mafra, Santa Catarina': 4210100, 'Major Vieira, Santa Catarina': 4210308, 'Massaranduba, Santa Catarina': 4210605, 'Matos Costa, Santa Catarina': 4210704, 'Monte Carlo, Santa Catarina': 4211058, 'Monte Castelo, Santa Catarina': 4211108, 'Otacílio Costa, Santa Catarina': 4211751, 'Painel, Santa Catarina': 4211892, 'Palhoça, Santa Catarina': 4211900, 'Palmeira, Santa Catarina': 4212056, 'Papanduva, Santa Catarina': 4212205, 'Paulo Lopes, Santa Catarina': 4212304, 'Pinheiro Preto, Santa Catarina': 4213005, 'Ponte Alta, Santa Catarina': 4213302, 'Ponte Alta do Norte, Santa Catarina': 4213351, 'Porto União, Santa Catarina': 4213609, 'Rancho Queimado, Santa Catarina': 4214300, 'Rio das Antas, Santa Catarina': 4214409, 'Rio Negrinho, Santa Catarina': 4215000, 'Rio Rufino, Santa Catarina': 4215059, 'Salto Veloso, Santa Catarina': 4215406, 'Santa Cecília, Santa Catarina': 4215505, 'Santo Amaro da Imperatriz, Santa Catarina': 4215703, 'São Bento do Sul, Santa Catarina': 4215802, 'São Bonifácio, Santa Catarina': 4215901, 'São Cristovão do Sul, Santa Catarina': 4216057, 'São Francisco do Sul, Santa Catarina': 4216206, 'São João do Itaperiú, Santa Catarina': 4216354, 'São Joaquim, Santa Catarina': 4216503, 'São José, Santa Catarina': 4216602, 'São José do Cerrito, Santa Catarina': 4216800, 'São Pedro de Alcântara, Santa Catarina': 4217253, 'Schroeder, Santa Catarina': 4217402, 'Tangará, Santa Catarina': 4217907, 'Timbó Grande, Santa Catarina': 4218251, 'Três Barras, Santa Catarina': 4218301, 'Urubici, Santa Catarina': 4218905, 'Urupema, Santa Catarina': 4218954, 'Videira, Santa Catarina': 4219309, 'Aceguá, Rio Grande do Sul': 4300034, 'Alegrete, Rio Grande do Sul': 4300406, 'Arroio do Padre, Rio Grande do Sul': 4301073, 'Arroio Grande, Rio Grande do Sul': 4301305, 'Bagé, Rio Grande do Sul': 4301602, 'Barra do Quaraí, Rio Grande do Sul': 4301875, 'Candiota, Rio Grande do Sul': 4304358, 'Canguçu, Rio Grande do Sul': 4304507, 'Capão do Leão, Rio Grande do Sul': 4304663, 'Cerrito, Rio Grande do Sul': 4305124, 'Chuí, Rio Grande do Sul': 4305439, 'Dom Pedrito, Rio Grande do Sul': 4306601, 'Herval, Rio Grande do Sul': 4307104, 'Hulha Negra, Rio Grande do Sul': 4309654, 'Itaqui, Rio Grande do Sul': 4310603, 'Jaguarão, Rio Grande do Sul': 4311007, 'Maçambará, Rio Grande do Sul': 4311718, 'Manoel Viana, Rio Grande do Sul': 4311759, 'Morro Redondo, Rio Grande do Sul': 4312450, 'Pedras Altas, Rio Grande do Sul': 4314175, 'Pedro Osório, Rio Grande do Sul': 4314209, 'Pelotas, Rio Grande do Sul': 4314407, 'Pinheiro Machado, Rio Grande do Sul': 4314506, 'Piratini, Rio Grande do Sul': 4314605, 'Quaraí, Rio Grande do Sul': 4315305, 'Rio Grande, Rio Grande do Sul': 4315602, 'Rosário do Sul, Rio Grande do Sul': 4316402, "Sant'Ana do Livramento, Rio Grande do Sul": 4317103, 'Santa Vitória do Palmar, Rio Grande do Sul': 4317301, 'São Borja, Rio Grande do Sul': 4318002, 'São José do Norte, Rio Grande do Sul': 4318507, 'São Lourenço do Sul, Rio Grande do Sul': 4318804, 'Turuçu, Rio Grande do Sul': 4322327, 'Uruguaiana, Rio Grande do Sul': 4322400, 'Anastácio, Mato Grosso do Sul': 5000708, 'Aquidauana, Mato Grosso do Sul': 5001102, 'Bela Vista, Mato Grosso do Sul': 5002100, 'Bodoquena, Mato Grosso do Sul': 5002159, 'Bonito, Mato Grosso do Sul': 5002209, 'Caracol, Mato Grosso do Sul': 5002803, 'Corumbá, Mato Grosso do Sul': 5003207, 'Guia Lopes da Laguna, Mato Grosso do Sul': 5004106, 'Jardim, Mato Grosso do Sul': 5005004, 'Ladário, Mato Grosso do Sul': 5005202, 'Miranda, Mato Grosso do Sul': 5005608, 'Nioaque, Mato Grosso do Sul': 5005806, 'Porto Murtinho, Mato Grosso do Sul': 5006903, 'Alto Araguaia, Mato Grosso': 5100300, 'Alto Garças, Mato Grosso': 5100409, 'Alto Taquari, Mato Grosso': 5100607, 'Araguainha, Mato Grosso': 5101209, 'Araputanga, Mato Grosso': 5101258, 'Cáceres, Mato Grosso': 5102504, 'Campos de Júlio, Mato Grosso': 5102686, 'Comodoro, Mato Grosso': 5103304, "Conquista D'Oeste, Mato Grosso": 5103361, 'Curvelândia, Mato Grosso': 5103437, 'Dom Aquino, Mato Grosso': 5103601, "Figueirópolis D'Oeste, Mato Grosso": 5103809, "Glória D'Oeste, Mato Grosso": 5103957, 'Guiratinga, Mato Grosso': 5104203, 'Indiavaí, Mato Grosso': 5104500, 'Itiquira, Mato Grosso': 5104609, 'Jaciara, Mato Grosso': 5104807, 'Jauru, Mato Grosso': 5105002, 'Juscimeira, Mato Grosso': 5105200, "Lambari D'Oeste, Mato Grosso": 5105234, 'Vila Bela da Santíssima Trindade, Mato Grosso': 5105507, "Mirassol d'Oeste, Mato Grosso": 5105622, 'Nova Lacerda, Mato Grosso': 5106182, 'Paranatinga, Mato Grosso': 5106307, 'Pedra Preta, Mato Grosso': 5106372, 'Pontes e Lacerda, Mato Grosso': 5106752, 'Porto Esperidião, Mato Grosso': 5106828, 'Poxoréo, Mato Grosso': 5107008, 'Primavera do Leste, Mato Grosso': 5107040, 'São José dos Quatro Marcos, Mato Grosso': 5107107, 'Reserva do Cabaçal, Mato Grosso': 5107156, 'Rio Branco, Mato Grosso': 5107206, 'São José do Povo, Mato Grosso': 5107297, 'São Pedro da Cipa, Mato Grosso': 5107404, 'Rondonópolis, Mato Grosso': 5107602, 'Salto do Céu, Mato Grosso': 5107750, 'Santo Antônio do Leste, Mato Grosso': 5107792, 'Tesouro, Mato Grosso': 5108105, 'Vale de São Domingos, Mato Grosso': 5108352, 'Água Limpa, Goiás': 5200209, 'Aloândia, Goiás': 5200506, 'Bom Jesus de Goiás, Goiás': 5203500, 'Buriti Alegre, Goiás': 5203906, 'Cachoeira Dourada, Goiás': 5204250, 'Caldas Novas, Goiás': 5204508, 'Corumbaíba, Goiás': 5205901, 'Cristianópolis, Goiás': 5206305, 'Cromínia, Goiás': 5206503, 'Edealina, Goiás': 5207352, 'Goiatuba, Goiás': 5209101, 'Itumbiara, Goiás': 5211503, 'Joviânia, Goiás': 5212105, 'Mairipotaba, Goiás': 5212600, 'Marzagão, Goiás': 5212907, 'Morrinhos, Goiás': 5213806, 'Panamá, Goiás': 5216007, 'Piracanjuba, Goiás': 5217104, 'Pontalina, Goiás': 5217708, 'Professor Jamil, Goiás': 5218391, 'Rio Quente, Goiás': 5218789, 'Vicentinópolis, Goiás': 5222054, 'Brasília, Distrito Federal': 5300108, "Alta Floresta D'Oeste, Rondônia": 1100015, 'Cabixi, Rondônia': 1100031, 'Cacoal, Rondônia': 1100049, 'Cerejeiras, Rondônia': 1100056, 'Colorado do Oeste, Rondônia': 1100064, 'Corumbiara, Rondônia': 1100072, 'Costa Marques, Rondônia': 1100080, "Espigão D'Oeste, Rondônia": 1100098, 'Ji-Paraná, Rondônia': 1100122, "Nova Brasilândia D'Oeste, Rondônia": 1100148, 'Ouro Preto do Oeste, Rondônia': 1100155, 'Pimenta Bueno, Rondônia': 1100189, 'Presidente Médici, Rondônia': 1100254, 'Rolim de Moura, Rondônia': 1100288, "Santa Luzia D'Oeste, Rondônia": 1100296, 'Vilhena, Rondônia': 1100304, 'São Miguel do Guaporé, Rondônia': 1100320, "Alvorada D'Oeste, Rondônia": 1100346, 'Alto Alegre dos Parecis, Rondônia': 1100379, 'Novo Horizonte do Oeste, Rondônia': 1100502, 'Castanheiras, Rondônia': 1100908, 'Chupinguaia, Rondônia': 1100924, 'Ministro Andreazza, Rondônia': 1101203, 'Mirante da Serra, Rondônia': 1101302, 'Nova União, Rondônia': 1101435, 'Parecis, Rondônia': 1101450, 'Pimenteiras do Oeste, Rondônia': 1101468, 'Primavera de Rondônia, Rondônia': 1101476, "São Felipe D'Oeste, Rondônia": 1101484, 'São Francisco do Guaporé, Rondônia': 1101492, 'Seringueiras, Rondônia': 1101500, 'Teixeirópolis, Rondônia': 1101559, 'Urupá, Rondônia': 1101708, 'Vale do Paraíso, Rondônia': 1101807, 'Augusto Corrêa, Pará': 1500909, 'Aurora do Pará, Pará': 1500958, 'Bonito, Pará': 1501600, 'Bragança, Pará': 1501709, 'Cachoeira do Piriá, Pará': 1501956, 'Capanema, Pará': 1502202, 'Capitão Poço, Pará': 1502301, 'Castanhal, Pará': 1502400, 'Curuçá, Pará': 1502905, 'Dom Eliseu, Pará': 1502939, 'Garrafão do Norte, Pará': 1503077, 'Igarapé-Açu, Pará': 1503200, 'Inhangapi, Pará': 1503408, 'Ipixuna do Pará, Pará': 1503457, 'Irituia, Pará': 1503507, 'Mãe do Rio, Pará': 1504059, 'Magalhães Barata, Pará': 1504109, 'Maracanã, Pará': 1504307, 'Marapanim, Pará': 1504406, 'Nova Esperança do Piriá, Pará': 1504950, 'Nova Timboteua, Pará': 1505007, 'Ourém, Pará': 1505403, 'Paragominas, Pará': 1505502, 'Peixe-Boi, Pará': 1505601, 'Primavera, Pará': 1506104, 'Quatipuru, Pará': 1506112, 'Salinópolis, Pará': 1506203, 'Santa Luzia do Pará, Pará': 1506559, 'Santa Maria do Pará, Pará': 1506609, 'Santarém Novo, Pará': 1506906, 'São Domingos do Capim, Pará': 1507201, 'São Francisco do Pará, Pará': 1507409, 'São João da Ponta, Pará': 1507466, 'São João de Pirabas, Pará': 1507474, 'São Miguel do Guamá, Pará': 1507607, 'Terra Alta, Pará': 1507961, 'Tracuateua, Pará': 1508035, 'Ulianópolis, Pará': 1508126, 'Viseu, Pará': 1508308, 'Abreulândia, Tocantins': 1700251, 'Aparecida do Rio Negro, Tocantins': 1701101, 'Araguacema, Tocantins': 1701903, 'Barrolândia, Tocantins': 1703107, 'Brejinho de Nazaré, Tocantins': 1703701, 'Caseara, Tocantins': 1703909, 'Chapada de Areia, Tocantins': 1704600, 'Chapada da Natividade, Tocantins': 1705102, 'Cristalândia, Tocantins': 1706100, 'Divinópolis do Tocantins, Tocantins': 1707108, 'Dois Irmãos do Tocantins, Tocantins': 1707207, 'Fátima, Tocantins': 1707553, 'Ipueiras, Tocantins': 1709807, 'Lagoa da Confusão, Tocantins': 1711902, 'Lagoa do Tocantins, Tocantins': 1711951, 'Lajeado, Tocantins': 1712009, 'Lizarda, Tocantins': 1712405, 'Marianópolis do Tocantins, Tocantins': 1712504, 'Mateiros, Tocantins': 1712702, 'Miracema do Tocantins, Tocantins': 1713205, 'Miranorte, Tocantins': 1713304, 'Monte do Carmo, Tocantins': 1713601, 'Monte Santo do Tocantins, Tocantins': 1713700, 'Natividade, Tocantins': 1714203, 'Nova Rosalândia, Tocantins': 1715002, 'Novo Acordo, Tocantins': 1715101, 'Oliveira de Fátima, Tocantins': 1715507, 'Paraíso do Tocantins, Tocantins': 1716109, 'Pindorama do Tocantins, Tocantins': 1717008, 'Pium, Tocantins': 1717503, 'Ponte Alta do Tocantins, Tocantins': 1717909, 'Porto Nacional, Tocantins': 1718204, 'Pugmil, Tocantins': 1718451, 'Rio dos Bois, Tocantins': 1718709, 'Rio Sono, Tocantins': 1718758, 'Santa Rita do Tocantins, Tocantins': 1718899, 'Santa Rosa do Tocantins, Tocantins': 1718907, 'Santa Tereza do Tocantins, Tocantins': 1719004, 'São Félix do Tocantins, Tocantins': 1720150, 'Silvanópolis, Tocantins': 1720655, 'Palmas, Tocantins': 1721000, 'Tocantínia, Tocantins': 1721109, 'Aguiarnópolis, Tocantins': 1700301, 'Ananás, Tocantins': 1701002, 'Angico, Tocantins': 1701051, 'Aragominas, Tocantins': 1701309, 'Araguaína, Tocantins': 1702109, 'Araguanã, Tocantins': 1702158, 'Araguatins, Tocantins': 1702208, 'Arapoema, Tocantins': 1702307, 'Augustinópolis, Tocantins': 1702554, 'Axixá do Tocantins, Tocantins': 1702901, 'Babaçulândia, Tocantins': 1703008, 'Bandeirantes do Tocantins, Tocantins': 1703057, 'Barra do Ouro, Tocantins': 1703073, 'Bernardo Sayão, Tocantins': 1703206, 'Bom Jesus do Tocantins, Tocantins': 1703305, 'Brasilândia do Tocantins, Tocantins': 1703602, 'Buriti do Tocantins, Tocantins': 1703800, 'Cachoeirinha, Tocantins': 1703826, 'Campos Lindos, Tocantins': 1703842, 'Carmolândia, Tocantins': 1703883, 'Carrasco Bonito, Tocantins': 1703891, 'Centenário, Tocantins': 1704105, 'Colinas do Tocantins, Tocantins': 1705508, 'Couto Magalhães, Tocantins': 1706001, 'Darcinópolis, Tocantins': 1706506, 'Esperantina, Tocantins': 1707405, 'Filadélfia, Tocantins': 1707702, 'Fortaleza do Tabocão, Tocantins': 1708254, 'Goianorte, Tocantins': 1708304, 'Goiatins, Tocantins': 1709005, 'Guaraí, Tocantins': 1709302, 'Itacajá, Tocantins': 1710508, 'Itaguatins, Tocantins': 1710706, 'Itapiratins, Tocantins': 1710904, 'Itaporã do Tocantins, Tocantins': 1711100, 'Juarina, Tocantins': 1711803, 'Luzinópolis, Tocantins': 1712454, 'Maurilândia do Tocantins, Tocantins': 1712801, 'Palmeiras do Tocantins, Tocantins': 1713809, 'Muricilândia, Tocantins': 1713957, 'Nazaré, Tocantins': 1714302, 'Nova Olinda, Tocantins': 1714880, 'Palmeirante, Tocantins': 1715705, "Pau D'Arco, Tocantins": 1716307, 'Pedro Afonso, Tocantins': 1716505, 'Pequizeiro, Tocantins': 1716653, 'Colméia, Tocantins': 1716703, 'Piraquê, Tocantins': 1717206, 'Praia Norte, Tocantins': 1718303, 'Presidente Kennedy, Tocantins': 1718402, 'Recursolândia, Tocantins': 1718501, 'Riachinho, Tocantins': 1718550, 'Sampaio, Tocantins': 1718808, 'Santa Fé do Araguaia, Tocantins': 1718865, 'Santa Maria do Tocantins, Tocantins': 1718881, 'Santa Terezinha do Tocantins, Tocantins': 1720002, 'São Bento do Tocantins, Tocantins': 1720101, 'São Miguel do Tocantins, Tocantins': 1720200, 'São Sebastião do Tocantins, Tocantins': 1720309, 'Sítio Novo do Tocantins, Tocantins': 1720804, 'Tocantinópolis, Tocantins': 1721208, 'Tupirama, Tocantins': 1721257, 'Tupiratins, Tocantins': 1721307, 'Wanderlândia, Tocantins': 1722081, 'Xambioá, Tocantins': 1722107, 'Aliança do Tocantins, Tocantins': 1700350, 'Almas, Tocantins': 1700400, 'Alvorada, Tocantins': 1700707, 'Araguaçu, Tocantins': 1702000, 'Arraias, Tocantins': 1702406, 'Aurora do Tocantins, Tocantins': 1702703, 'Cariri do Tocantins, Tocantins': 1703867, 'Combinado, Tocantins': 1705557, 'Conceição do Tocantins, Tocantins': 1705607, 'Crixás do Tocantins, Tocantins': 1706258, 'Dianópolis, Tocantins': 1707009, 'Dueré, Tocantins': 1707306, 'Figueirópolis, Tocantins': 1707652, 'Formoso do Araguaia, Tocantins': 1708205, 'Gurupi, Tocantins': 1709500, 'Jaú do Tocantins, Tocantins': 1711506, 'Lavandeira, Tocantins': 1712157, 'Novo Alegre, Tocantins': 1715150, 'Novo Jardim, Tocantins': 1715259, 'Palmeirópolis, Tocantins': 1715754, 'Paranã, Tocantins': 1716208, 'Peixe, Tocantins': 1716604, 'Ponte Alta do Bom Jesus, Tocantins': 1717800, 'Porto Alegre do Tocantins, Tocantins': 1718006, 'Rio da Conceição, Tocantins': 1718659, 'Sandolândia, Tocantins': 1718840, 'São Salvador do Tocantins, Tocantins': 1720259, 'São Valério, Tocantins': 1720499, 'Sucupira, Tocantins': 1720853, 'Taguatinga, Tocantins': 1720903, 'Taipas do Tocantins, Tocantins': 1720937, 'Talismã, Tocantins': 1720978, 'Água Doce do Maranhão, Maranhão': 2100154, 'Alcântara, Maranhão': 2100204, 'Anajatuba, Maranhão': 2100709, 'Anapurus, Maranhão': 2100808, 'Apicum-Açu, Maranhão': 2100832, 'Araioses, Maranhão': 2100907, 'Arari, Maranhão': 2101004, 'Axixá, Maranhão': 2101103, 'Bacabeira, Maranhão': 2101251, 'Bacuri, Maranhão': 2101301, 'Bacurituba, Maranhão': 2101350, 'Barreirinhas, Maranhão': 2101707, 'Belágua, Maranhão': 2101731, 'Bequimão, Maranhão': 2101905, 'Brejo, Maranhão': 2102101, 'Buriti, Maranhão': 2102200, 'Cachoeira Grande, Maranhão': 2102374, 'Cajapió, Maranhão': 2102408, 'Cajari, Maranhão': 2102507, 'Cantanhede, Maranhão': 2102705, 'Cedral, Maranhão': 2103109, 'Central do Maranhão, Maranhão': 2103125, 'Chapadinha, Maranhão': 2103208, 'Cururupu, Maranhão': 2103703, 'Guimarães, Maranhão': 2104909, 'Humberto de Campos, Maranhão': 2105005, 'Icatu, Maranhão': 2105104, 'Itapecuru Mirim, Maranhão': 2105401, 'Magalhães de Almeida, Maranhão': 2106300, 'Mata Roma, Maranhão': 2106409, 'Matinha, Maranhão': 2106508, 'Matões do Norte, Maranhão': 2106631, 'Milagres do Maranhão, Maranhão': 2106672, 'Miranda do Norte, Maranhão': 2106755, 'Mirinzal, Maranhão': 2106805, 'Morros, Maranhão': 2107100, 'Nina Rodrigues, Maranhão': 2107209, 'Olinda Nova do Maranhão, Maranhão': 2107456, 'Paço do Lumiar, Maranhão': 2107506, 'Palmeirândia, Maranhão': 2107605, 'Paulino Neves, Maranhão': 2108058, 'Pedro do Rosário, Maranhão': 2108256, 'Penalva, Maranhão': 2108306, 'Peri Mirim, Maranhão': 2108405, 'Pinheiro, Maranhão': 2108603, 'Pirapemas, Maranhão': 2108801, 'Porto Rico do Maranhão, Maranhão': 2109056, 'Presidente Juscelino, Maranhão': 2109205, 'Presidente Sarney, Maranhão': 2109270, 'Presidente Vargas, Maranhão': 2109304, 'Primeira Cruz, Maranhão': 2109403, 'Raposa, Maranhão': 2109452, 'Rosário, Maranhão': 2109601, 'Santa Helena, Maranhão': 2109809, 'Santa Quitéria do Maranhão, Maranhão': 2110104, 'Santa Rita, Maranhão': 2110203, 'Santana do Maranhão, Maranhão': 2110237, 'Santo Amaro do Maranhão, Maranhão': 2110278, 'São Benedito do Rio Preto, Maranhão': 2110401, 'São Bento, Maranhão': 2110500, 'São Bernardo, Maranhão': 2110609, 'São João Batista, Maranhão': 2111003, 'São José de Ribamar, Maranhão': 2111201, 'São Luís, Maranhão': 2111300, 'São Vicente Ferrer, Maranhão': 2111706, 'Serrano do Maranhão, Maranhão': 2111789, 'Turiaçu, Maranhão': 2112407, 'Turilândia, Maranhão': 2112456, 'Tutóia, Maranhão': 2112506, 'Urbano Santos, Maranhão': 2112605, 'Vargem Grande, Maranhão': 2112704, 'Viana, Maranhão': 2112803, 'Vitória do Mearim, Maranhão': 2112902, 'Altamira do Maranhão, Maranhão': 2100402, 'Alto Alegre do Maranhão, Maranhão': 2100436, 'Alto Alegre do Pindaré, Maranhão': 2100477, 'Amapá do Maranhão, Maranhão': 2100550, 'Araguanã, Maranhão': 2100873, 'Bacabal, Maranhão': 2101202, 'Bela Vista do Maranhão, Maranhão': 2101772, 'Bernardo do Mearim, Maranhão': 2101939, 'Boa Vista do Gurupi, Maranhão': 2101970, 'Bom Jardim, Maranhão': 2102002, 'Bom Lugar, Maranhão': 2102077, 'Brejo de Areia, Maranhão': 2102150, 'Cândido Mendes, Maranhão': 2102606, 'Capinzal do Norte, Maranhão': 2102754, 'Carutapera, Maranhão': 2102903, 'Centro do Guilherme, Maranhão': 2103158, 'Centro Novo do Maranhão, Maranhão': 2103174, 'Conceição do Lago-Açu, Maranhão': 2103554, 'Esperantinópolis, Maranhão': 2104008, 'Godofredo Viana, Maranhão': 2104305, 'Governador Newton Bello, Maranhão': 2104651, 'Governador Nunes Freire, Maranhão': 2104677, 'Igarapé do Meio, Maranhão': 2105153, 'Igarapé Grande, Maranhão': 2105203, 'Joselândia, Maranhão': 2105609, 'Junco do Maranhão, Maranhão': 2105658, 'Lago da Pedra, Maranhão': 2105708, 'Lago do Junco, Maranhão': 2105807, 'Lago Verde, Maranhão': 2105906, 'Lago dos Rodrigues, Maranhão': 2105948, 'Lagoa Grande do Maranhão, Maranhão': 2105963, 'Lima Campos, Maranhão': 2106003, 'Luís Domingues, Maranhão': 2106201, 'Maracaçumé, Maranhão': 2106326, 'Marajá do Sena, Maranhão': 2106359, 'Maranhãozinho, Maranhão': 2106375, 'Monção, Maranhão': 2106904, 'Nova Olinda do Maranhão, Maranhão': 2107357, "Olho d'Água das Cunhãs, Maranhão": 2107407, 'Paulo Ramos, Maranhão': 2108108, 'Pedreiras, Maranhão': 2108207, 'Pindaré-Mirim, Maranhão': 2108504, 'Pio XII, Maranhão': 2108702, 'Poção de Pedras, Maranhão': 2108900, 'Presidente Médici, Maranhão': 2109239, 'Santa Inês, Maranhão': 2109908, 'Santa Luzia, Maranhão': 2110005, 'Santa Luzia do Paruá, Maranhão': 2110039, 'Santo Antônio dos Lopes, Maranhão': 2110302, 'São João do Carú, Maranhão': 2111029, 'São Luís Gonzaga do Maranhão, Maranhão': 2111409, 'São Mateus do Maranhão, Maranhão': 2111508, 'São Raimundo do Doca Bezerra, Maranhão': 2111631, 'São Roberto, Maranhão': 2111672, 'Satubinha, Maranhão': 2111722, 'Trizidela do Vale, Maranhão': 2112233, 'Tufilândia, Maranhão': 2112274, 'Vitorino Freire, Maranhão': 2113009, 'Zé Doca, Maranhão': 2114007, 'Barão de Grajaú, Maranhão': 2101509, 'Benedito Leite, Maranhão': 2101806, 'Colinas, Maranhão': 2103505, 'Dom Pedro, Maranhão': 2103802, 'Fortuna, Maranhão': 2104206, 'Gonçalves Dias, Maranhão': 2104404, 'Governador Archer, Maranhão': 2104503, 'Governador Eugênio Barros, Maranhão': 2104602, 'Governador Luiz Rocha, Maranhão': 2104628, 'Graça Aranha, Maranhão': 2104701, 'Jatobá, Maranhão': 2105450, 'Lagoa do Mato, Maranhão': 2105922, 'Mirador, Maranhão': 2106706, 'Nova Iorque, Maranhão': 2107308, 'Paraibano, Maranhão': 2107704, 'Passagem Franca, Maranhão': 2107902, 'Pastos Bons, Maranhão': 2108009, 'Presidente Dutra, Maranhão': 2109106, 'Santa Filomena do Maranhão, Maranhão': 2109759, 'São Domingos do Azeitão, Maranhão': 2110658, 'São Domingos do Maranhão, Maranhão': 2110708, 'São Francisco do Maranhão, Maranhão': 2110906, 'São João dos Patos, Maranhão': 2111102, 'São José dos Basílios, Maranhão': 2111250, 'Senador Alexandre Costa, Maranhão': 2111748, 'Sucupira do Norte, Maranhão': 2111904, 'Sucupira do Riachão, Maranhão': 2111953, 'Tuntum, Maranhão': 2112308, 'Açailândia, Maranhão': 2100055, 'Alto Parnaíba, Maranhão': 2100501, 'Amarante do Maranhão, Maranhão': 2100600, 'Arame, Maranhão': 2100956, 'Balsas, Maranhão': 2101400, 'Barra do Corda, Maranhão': 2101608, 'Bom Jesus das Selvas, Maranhão': 2102036, 'Buriticupu, Maranhão': 2102325, 'Buritirana, Maranhão': 2102358, 'Campestre do Maranhão, Maranhão': 2102556, 'Carolina, Maranhão': 2102804, 'Cidelândia, Maranhão': 2103257, 'Davinópolis, Maranhão': 2103752, 'Estreito, Maranhão': 2104057, 'Feira Nova do Maranhão, Maranhão': 2104073, 'Fernando Falcão, Maranhão': 2104081, 'Formosa da Serra Negra, Maranhão': 2104099, 'Fortaleza dos Nogueiras, Maranhão': 2104107, 'Governador Edison Lobão, Maranhão': 2104552, 'Grajaú, Maranhão': 2104800, 'Imperatriz, Maranhão': 2105302, 'Itaipava do Grajaú, Maranhão': 2105351, 'Itinga do Maranhão, Maranhão': 2105427, 'Jenipapo dos Vieiras, Maranhão': 2105476, 'João Lisboa, Maranhão': 2105500, 'Lajeado Novo, Maranhão': 2105989, 'Loreto, Maranhão': 2106102, 'Montes Altos, Maranhão': 2107001, 'Nova Colinas, Maranhão': 2107258, 'Porto Franco, Maranhão': 2109007, 'Riachão, Maranhão': 2109502, 'Ribamar Fiquene, Maranhão': 2109551, 'Sambaíba, Maranhão': 2109700, 'São Félix de Balsas, Maranhão': 2110807, 'São Francisco do Brejão, Maranhão': 2110856, 'São João do Paraíso, Maranhão': 2111052, 'São Pedro da Água Branca, Maranhão': 2111532, 'São Pedro dos Crentes, Maranhão': 2111573, 'São Raimundo das Mangabeiras, Maranhão': 2111607, 'Senador La Rocque, Maranhão': 2111763, 'Sítio Novo, Maranhão': 2111805, 'Tasso Fragoso, Maranhão': 2112001, 'Vila Nova dos Martírios, Maranhão': 2112852, 'Agricolândia, Piauí': 2200103, 'Água Branca, Piauí': 2200202, 'Alto Longá, Piauí': 2200301, 'Altos, Piauí': 2200400, 'Amarante, Piauí': 2200509, 'Angical do Piauí, Piauí': 2200608, 'Aroazes, Piauí': 2200905, 'Assunção do Piauí, Piauí': 2201051, "Barra D'Alcântara, Piauí": 2201176, 'Barras, Piauí': 2201200, 'Barro Duro, Piauí': 2201408, 'Beneditinos, Piauí': 2201606, 'Boa Hora, Piauí': 2201770, 'Boqueirão do Piauí, Piauí': 2201945, 'Buriti dos Montes, Piauí': 2202026, 'Cabeceiras do Piauí, Piauí': 2202059, 'Campo Largo do Piauí, Piauí': 2202174, 'Campo Maior, Piauí': 2202208, 'Castelo do Piauí, Piauí': 2202604, 'Cocal de Telha, Piauí': 2202711, 'Coivaras, Piauí': 2202737, 'Curralinhos, Piauí': 2203255, 'Demerval Lobão, Piauí': 2203305, 'Elesbão Veloso, Piauí': 2203503, 'Francinópolis, Piauí': 2204006, 'Hugo Napoleão, Piauí': 2204600, 'Inhuma, Piauí': 2204709, 'Ipiranga do Piauí, Piauí': 2204808, 'Jardim do Mulato, Piauí': 2205250, 'Jatobá do Piauí, Piauí': 2205276, 'José de Freitas, Piauí': 2205508, 'Juazeiro do Piauí, Piauí': 2205516, 'Lagoinha do Piauí, Piauí': 2205540, 'Lagoa Alegre, Piauí': 2205557, 'Lagoa do Piauí, Piauí': 2205581, 'Lagoa do Sítio, Piauí': 2205599, 'Miguel Alves, Piauí': 2206209, 'Miguel Leão, Piauí': 2206308, 'Monsenhor Gil, Piauí': 2206407, 'Nazária, Piauí': 2206720, 'Nossa Senhora de Nazaré, Piauí': 2206753, 'Nossa Senhora dos Remédios, Piauí': 2206803, 'Novo Oriente do Piauí, Piauí': 2206902, 'Novo Santo Antônio, Piauí': 2206951, "Olho D'Água do Piauí, Piauí": 2207108, 'Palmeirais, Piauí': 2207504, 'Passagem Franca do Piauí, Piauí': 2207751, "Pau D'Arco do Piauí, Piauí": 2207793, 'Pimenteiras, Piauí': 2208106, 'Porto, Piauí': 2208502, 'Prata do Piauí, Piauí': 2208601, 'Regeneração, Piauí': 2208809, 'Santa Cruz dos Milagres, Piauí': 2209153, 'Santo Antônio dos Milagres, Piauí': 2209450, 'São Félix do Piauí, Piauí': 2209609, 'São Gonçalo do Piauí, Piauí': 2209807, 'São João da Serra, Piauí': 2209906, 'São Miguel da Baixa Grande, Piauí': 2210383, 'São Miguel do Tapuio, Piauí': 2210409, 'São Pedro do Piauí, Piauí': 2210508, 'Sigefredo Pacheco, Piauí': 2210656, 'Teresina, Piauí': 2211001, 'União, Piauí': 2211100, 'Valença do Piauí, Piauí': 2211308, 'Várzea Grande, Piauí': 2211407, 'Batalha, Piauí': 2201507, 'Bom Princípio do Piauí, Piauí': 2201919, 'Brasileira, Piauí': 2201960, 'Buriti dos Lopes, Piauí': 2202000, 'Cajueiro da Praia, Piauí': 2202083, 'Capitão de Campos, Piauí': 2202406, 'Caraúbas do Piauí, Piauí': 2202539, 'Caxingó, Piauí': 2202653, 'Cocal, Piauí': 2202703, 'Cocal dos Alves, Piauí': 2202729, 'Domingos Mourão, Piauí': 2203420, 'Esperantina, Piauí': 2203701, 'Ilha Grande, Piauí': 2204659, 'Joaquim Pires, Piauí': 2205409, 'Joca Marques, Piauí': 2205458, 'Lagoa de São Francisco, Piauí': 2205573, 'Luís Correia, Piauí': 2205706, 'Luzilândia, Piauí': 2205805, 'Madeiro, Piauí': 2205854, 'Matias Olímpio, Piauí': 2206100, 'Milton Brandão, Piauí': 2206357, 'Morro do Chapéu do Piauí, Piauí': 2206670, 'Murici dos Portelas, Piauí': 2206696, 'Parnaíba, Piauí': 2207702, 'Pedro II, Piauí': 2207900, 'Piracuruca, Piauí': 2208304, 'Piripiri, Piauí': 2208403, 'São João da Fronteira, Piauí': 2209872, 'São João do Arraial, Piauí': 2209971, 'São José do Divino, Piauí': 2210052, 'Acauã, Piauí': 2200053, 'Alagoinha do Piauí, Piauí': 2200251, 'Alegrete do Piauí, Piauí': 2200277, 'Aroeiras do Itaim, Piauí': 2200954, 'Bela Vista do Piauí, Piauí': 2201556, 'Belém do Piauí, Piauí': 2201572, 'Betânia do Piauí, Piauí': 2201739, 'Bocaina, Piauí': 2201804, 'Cajazeiras do Piauí, Piauí': 2202075, 'Caldeirão Grande do Piauí, Piauí': 2202091, 'Campinas do Piauí, Piauí': 2202109, 'Campo Grande do Piauí, Piauí': 2202133, 'Caridade do Piauí, Piauí': 2202554, 'Colônia do Piauí, Piauí': 2202778, 'Conceição do Canindé, Piauí': 2202802, 'Curral Novo do Piauí, Piauí': 2203271, 'Dom Expedito Lopes, Piauí': 2203404, 'Floresta do Piauí, Piauí': 2203859, 'Francisco Macedo, Piauí': 2204154, 'Francisco Santos, Piauí': 2204204, 'Fronteiras, Piauí': 2204303, 'Geminiano, Piauí': 2204352, 'Isaías Coelho, Piauí': 2204907, 'Itainópolis, Piauí': 2205003, 'Jacobina do Piauí, Piauí': 2205151, 'Jaicós, Piauí': 2205201, 'Marcolândia, Piauí': 2205953, 'Massapê do Piauí, Piauí': 2206050, 'Monsenhor Hipólito, Piauí': 2206506, 'Oeiras, Piauí': 2207009, 'Padre Marcos, Piauí': 2207207, 'Paes Landim, Piauí': 2207306, 'Paquetá, Piauí': 2207553, 'Patos do Piauí, Piauí': 2207777, 'Paulistana, Piauí': 2207801, 'Picos, Piauí': 2208007, 'Pio IX, Piauí': 2208205, 'Queimada Nova, Piauí': 2208650, 'Santa Cruz do Piauí, Piauí': 2209104, 'Santana do Piauí, Piauí': 2209351, 'Santa Rosa do Piauí, Piauí': 2209377, 'Santo Antônio de Lisboa, Piauí': 2209401, 'Santo Inácio do Piauí, Piauí': 2209500, 'São Francisco de Assis do Piauí, Piauí': 2209658, 'São João da Canabrava, Piauí': 2209856, 'São João da Varjota, Piauí': 2209955, 'São José do Piauí, Piauí': 2210201, 'São Julião, Piauí': 2210300, 'São Luis do Piauí, Piauí': 2210375, 'São Miguel do Fidalgo, Piauí': 2210391, 'Simões, Piauí': 2210706, 'Simplício Mendes, Piauí': 2210805, 'Socorro do Piauí, Piauí': 2210904, 'Sussuapara, Piauí': 2210938, 'Tanque do Piauí, Piauí': 2210979, 'Vera Mendes, Piauí': 2211506, 'Vila Nova do Piauí, Piauí': 2211605, 'Wall Ferraz, Piauí': 2211704, 'Antônio Almeida, Piauí': 2200806, 'Arraial, Piauí': 2201002, 'Baixa Grande do Ribeiro, Piauí': 2201150, 'Bertolínia, Piauí': 2201705, 'Brejo do Piauí, Piauí': 2201988, 'Canavieira, Piauí': 2202251, 'Canto do Buriti, Piauí': 2202307, 'Eliseu Martins, Piauí': 2203602, 'Flores do Piauí, Piauí': 2203800, 'Floriano, Piauí': 2203909, 'Francisco Ayres, Piauí': 2204105, 'Guadalupe, Piauí': 2204501, 'Itaueira, Piauí': 2205102, 'Jerumenha, Piauí': 2205300, 'Landri Sales, Piauí': 2205607, 'Manoel Emídio, Piauí': 2205904, 'Marcos Parente, Piauí': 2206001, 'Nazaré do Piauí, Piauí': 2206704, 'Pajeú do Piauí, Piauí': 2207355, 'Pavussu, Piauí': 2207850, 'Porto Alegre do Piauí, Piauí': 2208551, 'Ribeiro Gonçalves, Piauí': 2208908, 'Rio Grande do Piauí, Piauí': 2209005, 'São Francisco do Piauí, Piauí': 2209708, 'São José do Peixe, Piauí': 2210102, 'Sebastião Leal, Piauí': 2210631, 'Tamboril do Piauí, Piauí': 2210953, 'Uruçuí, Piauí': 2211209, 'Acarape, Ceará': 2300150, 'Amontada, Ceará': 2300754, 'Apuiarés, Ceará': 2300903, 'Aquiraz, Ceará': 2301000, 'Aracoiaba, Ceará': 2301208, 'Aratuba, Ceará': 2301406, 'Barreira, Ceará': 2301950, 'Baturité, Ceará': 2302107, 'Beberibe, Ceará': 2302206, 'Boa Viagem, Ceará': 2302404, 'Canindé, Ceará': 2302800, 'Capistrano, Ceará': 2302909, 'Caridade, Ceará': 2303006, 'Cascavel, Ceará': 2303501, 'Caucaia, Ceará': 2303709, 'Chorozinho, Ceará': 2303956, 'Eusébio, Ceará': 2304285, 'Fortaleza, Ceará': 2304400, 'General Sampaio, Ceará': 2304608, 'Guaiúba, Ceará': 2304954, 'Guaramiranga, Ceará': 2305100, 'Horizonte, Ceará': 2305233, 'Irauçuba, Ceará': 2306108, 'Itaitinga, Ceará': 2306256, 'Itapagé, Ceará': 2306306, 'Itapipoca, Ceará': 2306405, 'Itapiúna, Ceará': 2306504, 'Itatira, Ceará': 2306603, 'Madalena, Ceará': 2307635, 'Maracanaú, Ceará': 2307650, 'Maranguape, Ceará': 2307700, 'Miraíma, Ceará': 2308377, 'Mulungu, Ceará': 2309102, 'Ocara, Ceará': 2309458, 'Pacajus, Ceará': 2309607, 'Pacatuba, Ceará': 2309706, 'Pacoti, Ceará': 2309805, 'Palmácia, Ceará': 2310100, 'Paracuru, Ceará': 2310209, 'Paraipaba, Ceará': 2310258, 'Paramoti, Ceará': 2310407, 'Pentecoste, Ceará': 2310704, 'Pindoretama, Ceará': 2310852, 'Redenção, Ceará': 2311603, 'São Gonçalo do Amarante, Ceará': 2312403, 'São Luís do Curu, Ceará': 2312601, 'Tejuçuoca, Ceará': 2313351, 'Trairi, Ceará': 2313500, 'Tururu, Ceará': 2313559, 'Umirim, Ceará': 2313757, 'Uruburetama, Ceará': 2313807, 'Alto Santo, Ceará': 2300705, 'Aracati, Ceará': 2301109, 'Banabuiú, Ceará': 2301851, 'Choró, Ceará': 2303931, 'Deputado Irapuan Pinheiro, Ceará': 2304269, 'Ererê, Ceará': 2304277, 'Fortim, Ceará': 2304459, 'Ibaretama, Ceará': 2305266, 'Ibicuitinga, Ceará': 2305332, 'Icapuí, Ceará': 2305357, 'Iracema, Ceará': 2306009, 'Itaiçaba, Ceará': 2306207, 'Jaguaretama, Ceará': 2306702, 'Jaguaribara, Ceará': 2306801, 'Jaguaribe, Ceará': 2306900, 'Jaguaruana, Ceará': 2307007, 'Limoeiro do Norte, Ceará': 2307601, 'Milhã, Ceará': 2308351, 'Morada Nova, Ceará': 2308708, 'Palhano, Ceará': 2310001, 'Pedra Branca, Ceará': 2310506, 'Pereiro, Ceará': 2310803, 'Potiretama, Ceará': 2311231, 'Quixadá, Ceará': 2311306, 'Quixeramobim, Ceará': 2311405, 'Quixeré, Ceará': 2311504, 'Russas, Ceará': 2311801, 'São João do Jaguaribe, Ceará': 2312502, 'Senador Pompeu, Ceará': 2312700, 'Solonópole, Ceará': 2313005, 'Tabuleiro do Norte, Ceará': 2313104, 'Abaiara, Ceará': 2300101, 'Aiuaba, Ceará': 2300408, 'Altaneira, Ceará': 2300606, 'Antonina do Norte, Ceará': 2300804, 'Araripe, Ceará': 2301307, 'Assaré, Ceará': 2301604, 'Aurora, Ceará': 2301703, 'Barbalha, Ceará': 2301901, 'Barro, Ceará': 2302008, 'Brejo Santo, Ceará': 2302503, 'Campos Sales, Ceará': 2302701, 'Caririaçu, Ceará': 2303204, 'Crato, Ceará': 2304202, 'Farias Brito, Ceará': 2304301, 'Granjeiro, Ceará': 2304806, 'Jardim, Ceará': 2307106, 'Jati, Ceará': 2307205, 'Juazeiro do Norte, Ceará': 2307304, 'Lavras da Mangabeira, Ceará': 2307502, 'Mauriti, Ceará': 2308104, 'Milagres, Ceará': 2308302, 'Missão Velha, Ceará': 2308401, 'Nova Olinda, Ceará': 2309201, 'Penaforte, Ceará': 2310605, 'Porteiras, Ceará': 2311108, 'Potengi, Ceará': 2311207, 'Salitre, Ceará': 2311959, 'Santana do Cariri, Ceará': 2312106, 'Tarrafas, Ceará': 2313252, 'Várzea Alegre, Ceará': 2314003, 'Acaraú, Ceará': 2300200, 'Alcântaras, Ceará': 2300507, 'Barroquinha, Ceará': 2302057, 'Bela Cruz, Ceará': 2302305, 'Camocim, Ceará': 2302602, 'Cariré, Ceará': 2303105, 'Carnaubal, Ceará': 2303402, 'Catunda, Ceará': 2303659, 'Chaval, Ceará': 2303907, 'Coreaú, Ceará': 2304004, 'Croatá, Ceará': 2304236, 'Cruz, Ceará': 2304251, 'Forquilha, Ceará': 2304350, 'Frecheirinha, Ceará': 2304509, 'Graça, Ceará': 2304657, 'Granja, Ceará': 2304707, 'Groaíras, Ceará': 2304905, 'Guaraciaba do Norte, Ceará': 2305001, 'Hidrolândia, Ceará': 2305209, 'Ibiapina, Ceará': 2305308, 'Ipu, Ceará': 2305803, 'Ipueiras, Ceará': 2305902, 'Itarema, Ceará': 2306553, 'Jijoca de Jericoacoara, Ceará': 2307254, 'Marco, Ceará': 2307809, 'Martinópole, Ceará': 2307908, 'Massapê, Ceará': 2308005, 'Meruoca, Ceará': 2308203, 'Moraújo, Ceará': 2308807, 'Morrinhos, Ceará': 2308906, 'Mucambo, Ceará': 2309003, 'Pacujá, Ceará': 2309904, 'Pires Ferreira, Ceará': 2310951, 'Reriutaba, Ceará': 2311702, 'Santana do Acaraú, Ceará': 2312007, 'Santa Quitéria, Ceará': 2312205, 'São Benedito, Ceará': 2312304, 'Senador Sá, Ceará': 2312809, 'Sobral, Ceará': 2312908, 'Tianguá, Ceará': 2313401, 'Ubajara, Ceará': 2313609, 'Uruoca, Ceará': 2313906, 'Varjota, Ceará': 2313955, 'Viçosa do Ceará, Ceará': 2314102, 'Arês, Rio Grande do Norte': 2401206, 'Baía Formosa, Rio Grande do Norte': 2401404, 'Barcelona, Rio Grande do Norte': 2401503, 'Bento Fernandes, Rio Grande do Norte': 2401602, 'Bom Jesus, Rio Grande do Norte': 2401701, 'Brejinho, Rio Grande do Norte': 2401800, 'Caiçara do Norte, Rio Grande do Norte': 2401859, 'Caiçara do Rio do Vento, Rio Grande do Norte': 2401909, 'Campo Redondo, Rio Grande do Norte': 2402105, 'Canguaretama, Rio Grande do Norte': 2402204, 'Ceará-Mirim, Rio Grande do Norte': 2402600, 'Coronel Ezequiel, Rio Grande do Norte': 2402808, 'Parnamirim, Rio Grande do Norte': 2403251, 'Espírito Santo, Rio Grande do Norte': 2403509, 'Extremoz, Rio Grande do Norte': 2403608, 'Galinhos, Rio Grande do Norte': 2404101, 'Goianinha, Rio Grande do Norte': 2404200, 'Ielmo Marinho, Rio Grande do Norte': 2404606, 'Jaçanã, Rio Grande do Norte': 2405009, 'Jandaíra, Rio Grande do Norte': 2405108, 'Boa Saúde, Rio Grande do Norte': 2405306, 'Japi, Rio Grande do Norte': 2405405, 'Jardim de Angicos, Rio Grande do Norte': 2405504, 'João Câmara, Rio Grande do Norte': 2405801, 'Jundiá, Rio Grande do Norte': 2406155, "Lagoa d'Anta, Rio Grande do Norte": 2406205, 'Lagoa de Pedras, Rio Grande do Norte': 2406304, 'Lagoa de Velhos, Rio Grande do Norte': 2406403, 'Lagoa Salgada, Rio Grande do Norte': 2406601, 'Lajes Pintadas, Rio Grande do Norte': 2406809, 'Macaíba, Rio Grande do Norte': 2407104, 'Maxaranguape, Rio Grande do Norte': 2407500, 'Montanhas, Rio Grande do Norte': 2407708, 'Monte Alegre, Rio Grande do Norte': 2407807, 'Monte das Gameleiras, Rio Grande do Norte': 2407906, 'Natal, Rio Grande do Norte': 2408102, 'Nísia Floresta, Rio Grande do Norte': 2408201, 'Nova Cruz, Rio Grande do Norte': 2408300, 'Parazinho, Rio Grande do Norte': 2408805, 'Rio do Fogo, Rio Grande do Norte': 2408953, 'Passa e Fica, Rio Grande do Norte': 2409100, 'Passagem, Rio Grande do Norte': 2409209, 'Santa Maria, Rio Grande do Norte': 2409332, 'Pedra Grande, Rio Grande do Norte': 2409506, 'Pedra Preta, Rio Grande do Norte': 2409605, 'Pedro Avelino, Rio Grande do Norte': 2409704, 'Pedro Velho, Rio Grande do Norte': 2409803, 'Poço Branco, Rio Grande do Norte': 2410108, 'Serra Caiada, Rio Grande do Norte': 2410306, 'Pureza, Rio Grande do Norte': 2410405, 'Riachuelo, Rio Grande do Norte': 2410900, 'Ruy Barbosa, Rio Grande do Norte': 2411106, 'Santa Cruz, Rio Grande do Norte': 2411205, 'Santo Antônio, Rio Grande do Norte': 2411502, 'São Bento do Norte, Rio Grande do Norte': 2411601, 'São Bento do Trairí, Rio Grande do Norte': 2411700, 'São Gonçalo do Amarante, Rio Grande do Norte': 2412005, 'São José de Mipibu, Rio Grande do Norte': 2412203, 'São José do Campestre, Rio Grande do Norte': 2412302, 'São Miguel do Gostoso, Rio Grande do Norte': 2412559, 'São Paulo do Potengi, Rio Grande do Norte': 2412609, 'São Pedro, Rio Grande do Norte': 2412708, 'São Tomé, Rio Grande do Norte': 2412906, 'Senador Elói de Souza, Rio Grande do Norte': 2413102, 'Senador Georgino Avelino, Rio Grande do Norte': 2413201, 'Serra de São Bento, Rio Grande do Norte': 2413300, 'Serrinha, Rio Grande do Norte': 2413508, 'Sítio Novo, Rio Grande do Norte': 2413706, 'Taipu, Rio Grande do Norte': 2413904, 'Tangará, Rio Grande do Norte': 2414001, 'Tibau do Sul, Rio Grande do Norte': 2414209, 'Touros, Rio Grande do Norte': 2414407, 'Várzea, Rio Grande do Norte': 2414704, 'Vera Cruz, Rio Grande do Norte': 2414803, 'Vila Flor, Rio Grande do Norte': 2415008, 'Açu, Rio Grande do Norte': 2400208, 'Afonso Bezerra, Rio Grande do Norte': 2400307, 'Água Nova, Rio Grande do Norte': 2400406, 'Alexandria, Rio Grande do Norte': 2400505, 'Almino Afonso, Rio Grande do Norte': 2400604, 'Alto do Rodrigues, Rio Grande do Norte': 2400703, 'Angicos, Rio Grande do Norte': 2400802, 'Antônio Martins, Rio Grande do Norte': 2400901, 'Apodi, Rio Grande do Norte': 2401008, 'Areia Branca, Rio Grande do Norte': 2401107, 'Campo Grande, Rio Grande do Norte': 2401305, 'Baraúna, Rio Grande do Norte': 2401453, 'Caraúbas, Rio Grande do Norte': 2402303, 'Carnaubais, Rio Grande do Norte': 2402501, 'Coronel João Pessoa, Rio Grande do Norte': 2402907, 'Doutor Severiano, Rio Grande do Norte': 2403202, 'Encanto, Rio Grande do Norte': 2403301, 'Felipe Guerra, Rio Grande do Norte': 2403707, 'Fernando Pedroza, Rio Grande do Norte': 2403756, 'Francisco Dantas, Rio Grande do Norte': 2403905, 'Frutuoso Gomes, Rio Grande do Norte': 2404002, 'Governador Dix-Sept Rosado, Rio Grande do Norte': 2404309, 'Grossos, Rio Grande do Norte': 2404408, 'Guamaré, Rio Grande do Norte': 2404507, 'Ipanguaçu, Rio Grande do Norte': 2404705, 'Itajá, Rio Grande do Norte': 2404853, 'Itaú, Rio Grande do Norte': 2404903, 'Janduís, Rio Grande do Norte': 2405207, 'João Dias, Rio Grande do Norte': 2405900, 'José da Penha, Rio Grande do Norte': 2406007, 'Lajes, Rio Grande do Norte': 2406700, 'Lucrécia, Rio Grande do Norte': 2406908, 'Luís Gomes, Rio Grande do Norte': 2407005, 'Macau, Rio Grande do Norte': 2407203, 'Major Sales, Rio Grande do Norte': 2407252, 'Marcelino Vieira, Rio Grande do Norte': 2407302, 'Martins, Rio Grande do Norte': 2407401, 'Messias Targino, Rio Grande do Norte': 2407609, 'Mossoró, Rio Grande do Norte': 2408003, "Olho-d'Água do Borges, Rio Grande do Norte": 2408409, 'Paraná, Rio Grande do Norte': 2408607, 'Paraú, Rio Grande do Norte': 2408706, 'Patu, Rio Grande do Norte': 2409308, 'Pau dos Ferros, Rio Grande do Norte': 2409407, 'Pendências, Rio Grande do Norte': 2409902, 'Pilões, Rio Grande do Norte': 2410009, 'Portalegre, Rio Grande do Norte': 2410207, 'Porto do Mangue, Rio Grande do Norte': 2410256, 'Rafael Fernandes, Rio Grande do Norte': 2410504, 'Rafael Godeiro, Rio Grande do Norte': 2410603, 'Riacho da Cruz, Rio Grande do Norte': 2410702, 'Riacho de Santana, Rio Grande do Norte': 2410801, 'Rodolfo Fernandes, Rio Grande do Norte': 2411007, 'Tibau, Rio Grande do Norte': 2411056, 'Santana do Matos, Rio Grande do Norte': 2411403, 'São Francisco do Oeste, Rio Grande do Norte': 2411908, 'São Miguel, Rio Grande do Norte': 2412500, 'São Rafael, Rio Grande do Norte': 2412807, 'Serra do Mel, Rio Grande do Norte': 2413359, 'Serrinha dos Pintos, Rio Grande do Norte': 2413557, 'Severiano Melo, Rio Grande do Norte': 2413607, 'Taboleiro Grande, Rio Grande do Norte': 2413805, 'Tenente Ananias, Rio Grande do Norte': 2414100, 'Triunfo Potiguar, Rio Grande do Norte': 2414456, 'Umarizal, Rio Grande do Norte': 2414506, 'Upanema, Rio Grande do Norte': 2414605, 'Venha-Ver, Rio Grande do Norte': 2414753, 'Viçosa, Rio Grande do Norte': 2414902, 'Alagoinha, Paraíba': 2500502, 'Alhandra, Paraíba': 2500601, 'Araçagi, Paraíba': 2500809, 'Arara, Paraíba': 2500908, 'Araruna, Paraíba': 2501005, 'Baía da Traição, Paraíba': 2501401, 'Bananeiras, Paraíba': 2501500, 'Bayeux, Paraíba': 2501807, 'Belém, Paraíba': 2501906, 'Borborema, Paraíba': 2502706, 'Caaporã, Paraíba': 2503001, 'Cabedelo, Paraíba': 2503209, 'Cacimba de Dentro, Paraíba': 2503506, 'Caiçara, Paraíba': 2503605, 'Caldas Brandão, Paraíba': 2503803, 'Capim, Paraíba': 2504033, 'Casserengue, Paraíba': 2504157, 'Conde, Paraíba': 2504603, 'Cruz do Espírito Santo, Paraíba': 2504900, 'Cuitegi, Paraíba': 2505204, 'Cuité de Mamanguape, Paraíba': 2505238, 'Curral de Cima, Paraíba': 2505279, 'Dona Inês, Paraíba': 2505709, 'Duas Estradas, Paraíba': 2505808, 'Guarabira, Paraíba': 2506301, 'Gurinhém, Paraíba': 2506400, 'Itabaiana, Paraíba': 2506905, 'Itapororoca, Paraíba': 2507101, 'Jacaraú, Paraíba': 2507309, 'João Pessoa, Paraíba': 2507507, 'Juarez Távora, Paraíba': 2507606, 'Juripiranga, Paraíba': 2507903, 'Lagoa de Dentro, Paraíba': 2508208, 'Logradouro, Paraíba': 2508554, 'Lucena, Paraíba': 2508604, 'Mamanguape, Paraíba': 2508901, 'Marcação, Paraíba': 2509057, 'Mari, Paraíba': 2509107, 'Mataraca, Paraíba': 2509305, 'Mogeiro, Paraíba': 2509404, 'Mulungu, Paraíba': 2509800, 'Natuba, Paraíba': 2509909, 'Pedras de Fogo, Paraíba': 2511202, 'Pilar, Paraíba': 2511509, 'Pilões, Paraíba': 2511608, 'Pilõezinhos, Paraíba': 2511707, 'Pirpirituba, Paraíba': 2511806, 'Pitimbu, Paraíba': 2511905, 'Pedro Régis, Paraíba': 2512721, 'Riachão, Paraíba': 2512747, 'Riachão do Poço, Paraíba': 2512762, 'Rio Tinto, Paraíba': 2512903, 'Salgado de São Félix, Paraíba': 2513109, 'Santa Rita, Paraíba': 2513703, 'São José dos Ramos, Paraíba': 2514453, 'São Miguel de Taipu, Paraíba': 2515005, 'Sapé, Paraíba': 2515302, 'Serra da Raiz, Paraíba': 2515609, 'Serraria, Paraíba': 2515906, 'Sertãozinho, Paraíba': 2515930, 'Sobrado, Paraíba': 2515971, 'Solânea, Paraíba': 2516003, 'Tacima, Paraíba': 2516409, 'Alagoa Grande, Paraíba': 2500304, 'Alagoa Nova, Paraíba': 2500403, 'Alcantil, Paraíba': 2500536, 'Algodão de Jandaíra, Paraíba': 2500577, 'Amparo, Paraíba': 2500734, 'Areia, Paraíba': 2501104, 'Areial, Paraíba': 2501203, 'Aroeiras, Paraíba': 2501302, 'Assunção, Paraíba': 2501351, 'Baraúna, Paraíba': 2501534, 'Barra de Santana, Paraíba': 2501575, 'Barra de Santa Rosa, Paraíba': 2501609, 'Barra de São Miguel, Paraíba': 2501708, 'Boa Vista, Paraíba': 2502151, 'Boqueirão, Paraíba': 2502508, 'Cabaceiras, Paraíba': 2503100, 'Camalaú, Paraíba': 2503902, 'Campina Grande, Paraíba': 2504009, 'Caraúbas, Paraíba': 2504074, 'Caturité, Paraíba': 2504355, 'Congo, Paraíba': 2504702, 'Coxixola, Paraíba': 2504850, 'Cubati, Paraíba': 2505006, 'Cuité, Paraíba': 2505105, 'Damião, Paraíba': 2505352, 'Esperança, Paraíba': 2506004, 'Fagundes, Paraíba': 2506103, 'Frei Martinho, Paraíba': 2506202, 'Gado Bravo, Paraíba': 2506251, 'Gurjão, Paraíba': 2506509, 'Ingá, Paraíba': 2506806, 'Itatuba, Paraíba': 2507200, 'Juazeirinho, Paraíba': 2507705, 'Junco do Seridó, Paraíba': 2507804, 'Lagoa Seca, Paraíba': 2508307, 'Livramento, Paraíba': 2508505, 'Massaranduba, Paraíba': 2509206, 'Matinhas, Paraíba': 2509339, 'Montadas, Paraíba': 2509503, 'Monteiro, Paraíba': 2509701, 'Nova Floresta, Paraíba': 2510105, 'Nova Palmeira, Paraíba': 2510303, 'Olivedos, Paraíba': 2510501, 'Ouro Velho, Paraíba': 2510600, 'Parari, Paraíba': 2510659, 'Pedra Lavrada, Paraíba': 2511103, 'Picuí, Paraíba': 2511400, 'Pocinhos, Paraíba': 2512002, 'Prata, Paraíba': 2512200, 'Puxinanã, Paraíba': 2512408, 'Queimadas, Paraíba': 2512507, 'Remígio, Paraíba': 2512705, 'Riachão do Bacamarte, Paraíba': 2512754, 'Riacho de Santo Antônio, Paraíba': 2512788, 'Santa Cecília, Paraíba': 2513158, 'Santo André, Paraíba': 2513851, 'São Domingos do Cariri, Paraíba': 2513943, 'São João do Cariri, Paraíba': 2514008, 'São João do Tigre, Paraíba': 2514107, 'São José dos Cordeiros, Paraíba': 2514800, 'São Sebastião de Lagoa de Roça, Paraíba': 2515104, 'São Sebastião do Umbuzeiro, Paraíba': 2515203, 'São Vicente do Seridó, Paraíba': 2515401, 'Serra Branca, Paraíba': 2515500, 'Serra Redonda, Paraíba': 2515807, 'Soledade, Paraíba': 2516102, 'Sossêgo, Paraíba': 2516151, 'Sumé, Paraíba': 2516300, 'Taperoá, Paraíba': 2516508, 'Tenório, Paraíba': 2516755, 'Umbuzeiro, Paraíba': 2517001, 'Zabelê, Paraíba': 2517407, 'Água Branca, Paraíba': 2500106, 'Aguiar, Paraíba': 2500205, 'Areia de Baraúnas, Paraíba': 2501153, 'Belém do Brejo do Cruz, Paraíba': 2502003, 'Boa Ventura, Paraíba': 2502102, 'Bom Sucesso, Paraíba': 2502300, 'Igaracy, Paraíba': 2502607, 'Brejo do Cruz, Paraíba': 2502805, 'Brejo dos Santos, Paraíba': 2502904, 'Cacimba de Areia, Paraíba': 2503407, 'Cacimbas, Paraíba': 2503555, 'Cajazeirinhas, Paraíba': 2503753, 'Catingueira, Paraíba': 2504207, 'Catolé do Rocha, Paraíba': 2504306, 'Conceição, Paraíba': 2504405, 'Condado, Paraíba': 2504504, 'Coremas, Paraíba': 2504801, 'Curral Velho, Paraíba': 2505303, 'Desterro, Paraíba': 2505402, 'Vista Serrana, Paraíba': 2505501, 'Diamante, Paraíba': 2505600, 'Emas, Paraíba': 2505907, 'Ibiara, Paraíba': 2506608, 'Imaculada, Paraíba': 2506707, 'Itaporanga, Paraíba': 2507002, 'Jericó, Paraíba': 2507408, 'Juru, Paraíba': 2508000, 'Lagoa, Paraíba': 2508109, "Mãe d'Água, Paraíba": 2508703, 'Malta, Paraíba': 2508802, 'Manaíra, Paraíba': 2509008, 'Mato Grosso, Paraíba': 2509370, 'Maturéia, Paraíba': 2509396, 'Nova Olinda, Paraíba': 2510204, "Olho d'Água, Paraíba": 2510402, 'Passagem, Paraíba': 2510709, 'Patos, Paraíba': 2510808, 'Paulista, Paraíba': 2510907, 'Pedra Branca, Paraíba': 2511004, 'Piancó, Paraíba': 2511301, 'Pombal, Paraíba': 2512101, 'Princesa Isabel, Paraíba': 2512309, 'Quixabá, Paraíba': 2512606, 'Riacho dos Cavalos, Paraíba': 2512804, 'Salgadinho, Paraíba': 2513000, 'Santa Inês, Paraíba': 2513356, 'Santa Luzia, Paraíba': 2513406, 'Santana de Mangueira, Paraíba': 2513505, 'Santana dos Garrotes, Paraíba': 2513604, 'Santa Teresinha, Paraíba': 2513802, 'São Bento, Paraíba': 2513901, 'São Bentinho, Paraíba': 2513927, 'São Domingos, Paraíba': 2513968, 'São José de Caiana, Paraíba': 2514305, 'São José de Espinharas, Paraíba': 2514404, 'São José de Princesa, Paraíba': 2514552, 'São José do Bonfim, Paraíba': 2514602, 'São José do Brejo do Cruz, Paraíba': 2514651, 'São José do Sabugi, Paraíba': 2514701, 'São Mamede, Paraíba': 2514909, 'Tavares, Paraíba': 2516607, 'Teixeira, Paraíba': 2516706, 'Várzea, Paraíba': 2517100, 'Abreu e Lima, Pernambuco': 2600054, 'Água Preta, Pernambuco': 2600401, 'Aliança, Pernambuco': 2600708, 'Amaraji, Pernambuco': 2600906, 'Araçoiaba, Pernambuco': 2601052, 'Barreiros, Pernambuco': 2601409, 'Belém de Maria, Pernambuco': 2601508, 'Bom Jardim, Pernambuco': 2602209, 'Buenos Aires, Pernambuco': 2602704, 'Cabo de Santo Agostinho, Pernambuco': 2602902, 'Camaragibe, Pernambuco': 2603454, 'Camutanga, Pernambuco': 2603603, 'Carpina, Pernambuco': 2604007, 'Casinhas, Pernambuco': 2604155, 'Catende, Pernambuco': 2604205, 'Chã de Alegria, Pernambuco': 2604403, 'Condado, Pernambuco': 2604601, 'Cortês, Pernambuco': 2604809, 'Escada, Pernambuco': 2605202, 'Feira Nova, Pernambuco': 2605400, 'Fernando de Noronha, Pernambuco': 2605459, 'Ferreiros, Pernambuco': 2605509, 'Frei Miguelinho, Pernambuco': 2605806, 'Gameleira, Pernambuco': 2605905, 'Glória do Goitá, Pernambuco': 2606101, 'Goiana, Pernambuco': 2606200, 'Igarassu, Pernambuco': 2606804, 'Ipojuca, Pernambuco': 2607208, 'Ilha de Itamaracá, Pernambuco': 2607604, 'Itambé, Pernambuco': 2607653, 'Itapissuma, Pernambuco': 2607752, 'Itaquitinga, Pernambuco': 2607802, 'Jaboatão dos Guararapes, Pernambuco': 2607901, 'Jaqueira, Pernambuco': 2607950, 'João Alfredo, Pernambuco': 2608107, 'Joaquim Nabuco, Pernambuco': 2608206, 'Lagoa do Carro, Pernambuco': 2608453, 'Lagoa de Itaenga, Pernambuco': 2608503, 'Limoeiro, Pernambuco': 2608909, 'Macaparana, Pernambuco': 2609006, 'Machados, Pernambuco': 2609105, 'Maraial, Pernambuco': 2609204, 'Moreno, Pernambuco': 2609402, 'Nazaré da Mata, Pernambuco': 2609501, 'Olinda, Pernambuco': 2609600, 'Orobó, Pernambuco': 2609709, 'Palmares, Pernambuco': 2610004, 'Passira, Pernambuco': 2610509, 'Paudalho, Pernambuco': 2610608, 'Paulista, Pernambuco': 2610707, 'Pombos, Pernambuco': 2611309, 'Primavera, Pernambuco': 2611408, 'Recife, Pernambuco': 2611606, 'Ribeirão, Pernambuco': 2611804, 'Rio Formoso, Pernambuco': 2611903, 'Salgadinho, Pernambuco': 2612109, 'Santa Maria do Cambucá, Pernambuco': 2612703, 'São Benedito do Sul, Pernambuco': 2612901, 'São José da Coroa Grande, Pernambuco': 2613404, 'São Lourenço da Mata, Pernambuco': 2613701, 'São Vicente Ferrer, Pernambuco': 2613800, 'Sirinhaém, Pernambuco': 2614204, 'Surubim, Pernambuco': 2614501, 'Tamandaré, Pernambuco': 2614857, 'Timbaúba, Pernambuco': 2615300, 'Tracunhaém, Pernambuco': 2615508, 'Vertente do Lério, Pernambuco': 2616183, 'Vertentes, Pernambuco': 2616209, 'Vicência, Pernambuco': 2616308, 'Vitória de Santo Antão, Pernambuco': 2616407, 'Xexéu, Pernambuco': 2616506, 'Agrestina, Pernambuco': 2600302, 'Águas Belas, Pernambuco': 2600500, 'Alagoinha, Pernambuco': 2600609, 'Altinho, Pernambuco': 2600807, 'Angelim, Pernambuco': 2601003, 'Arcoverde, Pernambuco': 2601201, 'Barra de Guabiraba, Pernambuco': 2601300, 'Belo Jardim, Pernambuco': 2601706, 'Bezerros, Pernambuco': 2601904, 'Bom Conselho, Pernambuco': 2602100, 'Bonito, Pernambuco': 2602308, 'Brejão, Pernambuco': 2602407, 'Brejo da Madre de Deus, Pernambuco': 2602605, 'Buíque, Pernambuco': 2602803, 'Cachoeirinha, Pernambuco': 2603108, 'Caetés, Pernambuco': 2603207, 'Calçado, Pernambuco': 2603306, 'Camocim de São Félix, Pernambuco': 2603504, 'Canhotinho, Pernambuco': 2603702, 'Capoeiras, Pernambuco': 2603801, 'Caruaru, Pernambuco': 2604106, 'Chã Grande, Pernambuco': 2604502, 'Correntes, Pernambuco': 2604700, 'Cumaru, Pernambuco': 2604908, 'Cupira, Pernambuco': 2605004, 'Custódia, Pernambuco': 2605103, 'Garanhuns, Pernambuco': 2606002, 'Gravatá, Pernambuco': 2606408, 'Iati, Pernambuco': 2606507, 'Ibimirim, Pernambuco': 2606606, 'Ibirajuba, Pernambuco': 2606705, 'Inajá, Pernambuco': 2607000, 'Itaíba, Pernambuco': 2607505, 'Jataúba, Pernambuco': 2608008, 'Jucati, Pernambuco': 2608255, 'Jupi, Pernambuco': 2608305, 'Jurema, Pernambuco': 2608404, 'Lagoa do Ouro, Pernambuco': 2608602, 'Lagoa dos Gatos, Pernambuco': 2608701, 'Lajedo, Pernambuco': 2608800, 'Manari, Pernambuco': 2609154, 'Palmeirina, Pernambuco': 2610103, 'Panelas, Pernambuco': 2610202, 'Paranatama, Pernambuco': 2610301, 'Pedra, Pernambuco': 2610806, 'Pesqueira, Pernambuco': 2610905, 'Poção, Pernambuco': 2611200, 'Quipapá, Pernambuco': 2611507, 'Riacho das Almas, Pernambuco': 2611705, 'Sairé, Pernambuco': 2612000, 'Saloá, Pernambuco': 2612307, 'Sanharó, Pernambuco': 2612406, 'Santa Cruz do Capibaribe, Pernambuco': 2612505, 'São Bento do Una, Pernambuco': 2613008, 'São Caitano, Pernambuco': 2613107, 'São João, Pernambuco': 2613206, 'São Joaquim do Monte, Pernambuco': 2613305, 'Sertânia, Pernambuco': 2614105, 'Tacaimbó, Pernambuco': 2614709, 'Taquaritinga do Norte, Pernambuco': 2615003, 'Terezinha, Pernambuco': 2615102, 'Toritama, Pernambuco': 2615409, 'Tupanatinga, Pernambuco': 2615805, 'Venturosa, Pernambuco': 2616001, 'Anadia, Alagoas': 2700201, 'Atalaia, Alagoas': 2700409, 'Barra de Santo Antônio, Alagoas': 2700508, 'Barra de São Miguel, Alagoas': 2700607, 'Boca da Mata, Alagoas': 2701001, 'Branquinha, Alagoas': 2701100, 'Cajueiro, Alagoas': 2701308, 'Campestre, Alagoas': 2701357, 'Campo Alegre, Alagoas': 2701407, 'Capela, Alagoas': 2701704, 'Chã Preta, Alagoas': 2701902, 'Colônia Leopoldina, Alagoas': 2702108, 'Coqueiro Seco, Alagoas': 2702207, 'Coruripe, Alagoas': 2702306, 'Feliz Deserto, Alagoas': 2702702, 'Flexeiras, Alagoas': 2702801, 'Ibateguara, Alagoas': 2703007, 'Igreja Nova, Alagoas': 2703205, 'Jacuípe, Alagoas': 2703502, 'Japaratinga, Alagoas': 2703601, 'Jequiá da Praia, Alagoas': 2703759, 'Joaquim Gomes, Alagoas': 2703809, 'Jundiá, Alagoas': 2703908, 'Maceió, Alagoas': 2704302, 'Maragogi, Alagoas': 2704500, 'Marechal Deodoro, Alagoas': 2704708, 'Mar Vermelho, Alagoas': 2704906, 'Matriz de Camaragibe, Alagoas': 2705101, 'Messias, Alagoas': 2705200, 'Murici, Alagoas': 2705507, 'Novo Lino, Alagoas': 2705606, 'Paripueira, Alagoas': 2706448, 'Passo de Camaragibe, Alagoas': 2706505, 'Penedo, Alagoas': 2706703, 'Piaçabuçu, Alagoas': 2706802, 'Pilar, Alagoas': 2706901, 'Pindoba, Alagoas': 2707008, 'Porto Calvo, Alagoas': 2707305, 'Porto de Pedras, Alagoas': 2707404, 'Porto Real do Colégio, Alagoas': 2707503, 'Rio Largo, Alagoas': 2707701, 'Roteiro, Alagoas': 2707800, 'Santa Luzia do Norte, Alagoas': 2707909, 'Santana do Mundaú, Alagoas': 2708105, 'São Brás, Alagoas': 2708204, 'São José da Laje, Alagoas': 2708303, 'São Luís do Quitunde, Alagoas': 2708501, 'São Miguel dos Campos, Alagoas': 2708600, 'São Miguel dos Milagres, Alagoas': 2708709, 'Satuba, Alagoas': 2708907, 'União dos Palmares, Alagoas': 2709301, 'Viçosa, Alagoas': 2709400, 'Água Branca, Alagoas': 2700102, 'Arapiraca, Alagoas': 2700300, 'Batalha, Alagoas': 2700706, 'Belém, Alagoas': 2700805, 'Belo Monte, Alagoas': 2700904, 'Cacimbinhas, Alagoas': 2701209, 'Campo Grande, Alagoas': 2701506, 'Canapi, Alagoas': 2701605, 'Carneiros, Alagoas': 2701803, 'Coité do Nóia, Alagoas': 2702009, 'Craíbas, Alagoas': 2702355, 'Delmiro Gouveia, Alagoas': 2702405, 'Dois Riachos, Alagoas': 2702504, 'Estrela de Alagoas, Alagoas': 2702553, 'Feira Grande, Alagoas': 2702603, 'Girau do Ponciano, Alagoas': 2702900, 'Igaci, Alagoas': 2703106, 'Inhapi, Alagoas': 2703304, 'Jacaré dos Homens, Alagoas': 2703403, 'Jaramataia, Alagoas': 2703700, 'Junqueiro, Alagoas': 2704005, 'Lagoa da Canoa, Alagoas': 2704104, 'Limoeiro de Anadia, Alagoas': 2704203, 'Major Isidoro, Alagoas': 2704401, 'Maravilha, Alagoas': 2704609, 'Maribondo, Alagoas': 2704807, 'Mata Grande, Alagoas': 2705002, 'Minador do Negrão, Alagoas': 2705309, 'Monteirópolis, Alagoas': 2705408, "Olho d'Água das Flores, Alagoas": 2705705, "Olho d'Água do Casado, Alagoas": 2705804, "Olho d'Água Grande, Alagoas": 2705903, 'Olivença, Alagoas': 2706000, 'Ouro Branco, Alagoas': 2706109, 'Palestina, Alagoas': 2706208, 'Palmeira dos Índios, Alagoas': 2706307, 'Pão de Açúcar, Alagoas': 2706406, 'Pariconha, Alagoas': 2706422, 'Paulo Jacinto, Alagoas': 2706604, 'Piranhas, Alagoas': 2707107, 'Poço das Trincheiras, Alagoas': 2707206, 'Quebrangulo, Alagoas': 2707602, 'Santana do Ipanema, Alagoas': 2708006, 'São José da Tapera, Alagoas': 2708402, 'São Sebastião, Alagoas': 2708808, 'Senador Rui Palmeira, Alagoas': 2708956, "Tanque d'Arca, Alagoas": 2709004, 'Taquarana, Alagoas': 2709103, 'Teotônio Vilela, Alagoas': 2709152, 'Traipu, Alagoas': 2709202, 'Amparo de São Francisco, Sergipe': 2800100, 'Aquidabã, Sergipe': 2800209, 'Aracaju, Sergipe': 2800308, 'Arauá, Sergipe': 2800407, 'Barra dos Coqueiros, Sergipe': 2800605, 'Boquim, Sergipe': 2800670, 'Brejo Grande, Sergipe': 2800704, 'Canhoba, Sergipe': 2801108, 'Capela, Sergipe': 2801306, 'Carmópolis, Sergipe': 2801504, 'Cedro de São João, Sergipe': 2801603, 'Cristinápolis, Sergipe': 2801702, 'Cumbe, Sergipe': 2801900, 'Divina Pastora, Sergipe': 2802007, 'Estância, Sergipe': 2802106, 'General Maynard, Sergipe': 2802502, 'Ilha das Flores, Sergipe': 2802700, 'Indiaroba, Sergipe': 2802809, 'Itabaianinha, Sergipe': 2803005, "Itaporanga d'Ajuda, Sergipe": 2803203, 'Japaratuba, Sergipe': 2803302, 'Japoatã, Sergipe': 2803401, 'Laranjeiras, Sergipe': 2803609, 'Malhada dos Bois, Sergipe': 2803807, 'Maruim, Sergipe': 2804003, 'Muribeca, Sergipe': 2804300, 'Neópolis, Sergipe': 2804409, 'Nossa Senhora das Dores, Sergipe': 2804607, 'Nossa Senhora de Lourdes, Sergipe': 2804706, 'Nossa Senhora do Socorro, Sergipe': 2804805, 'Pacatuba, Sergipe': 2804904, 'Pedrinhas, Sergipe': 2805109, 'Pirambu, Sergipe': 2805307, 'Propriá, Sergipe': 2805703, 'Riachuelo, Sergipe': 2805901, 'Rosário do Catete, Sergipe': 2806107, 'Santa Luzia do Itanhy, Sergipe': 2806305, 'Santana do São Francisco, Sergipe': 2806404, 'Santa Rosa de Lima, Sergipe': 2806503, 'Santo Amaro das Brotas, Sergipe': 2806602, 'São Cristóvão, Sergipe': 2806701, 'São Francisco, Sergipe': 2806909, 'Siriri, Sergipe': 2807204, 'Telha, Sergipe': 2807303, 'Tomar do Geru, Sergipe': 2807501, 'Umbaúba, Sergipe': 2807600, 'Areia Branca, Sergipe': 2800506, 'Campo do Brito, Sergipe': 2801009, 'Canindé de São Francisco, Sergipe': 2801207, 'Carira, Sergipe': 2801405, 'Feira Nova, Sergipe': 2802205, 'Frei Paulo, Sergipe': 2802304, 'Gararu, Sergipe': 2802403, 'Gracho Cardoso, Sergipe': 2802601, 'Itabaiana, Sergipe': 2802908, 'Itabi, Sergipe': 2803104, 'Lagarto, Sergipe': 2803500, 'Macambira, Sergipe': 2803708, 'Malhador, Sergipe': 2803906, 'Moita Bonita, Sergipe': 2804102, 'Monte Alegre de Sergipe, Sergipe': 2804201, 'Nossa Senhora Aparecida, Sergipe': 2804458, 'Nossa Senhora da Glória, Sergipe': 2804508, 'Pedra Mole, Sergipe': 2805000, 'Pinhão, Sergipe': 2805208, 'Poço Redondo, Sergipe': 2805406, 'Poço Verde, Sergipe': 2805505, 'Porto da Folha, Sergipe': 2805604, 'Riachão do Dantas, Sergipe': 2805802, 'Ribeirópolis, Sergipe': 2806008, 'Salgado, Sergipe': 2806206, 'São Domingos, Sergipe': 2806800, 'São Miguel do Aleixo, Sergipe': 2807006, 'Simão Dias, Sergipe': 2807105, 'Tobias Barreto, Sergipe': 2807402, 'Acajutiba, Bahia': 2900306, 'Alagoinhas, Bahia': 2900702, 'Aporá, Bahia': 2901908, 'Araças, Bahia': 2902054, 'Aramari, Bahia': 2902203, 'Camaçari, Bahia': 2905701, 'Candeias, Bahia': 2906501, 'Cardeal da Silva, Bahia': 2907004, 'Catu, Bahia': 2907509, 'Conde, Bahia': 2908606, 'Crisópolis, Bahia': 2909604, "Dias d'Ávila, Bahia": 2910057, 'Entre Rios, Bahia': 2910503, 'Esplanada, Bahia': 2910602, 'Inhambupe, Bahia': 2913705, 'Itanagra, Bahia': 2915908, 'Itapicuru, Bahia': 2916500, 'Jandaíra, Bahia': 2917904, 'Lauro de Freitas, Bahia': 2919207, 'Madre de Deus, Bahia': 2919926, 'Mata de São João, Bahia': 2921005, 'Pedrão, Bahia': 2924108, 'Pojuca, Bahia': 2925204, 'Rio Real, Bahia': 2927002, 'Salvador, Bahia': 2927408, 'Santo Amaro, Bahia': 2928604, 'São Francisco do Conde, Bahia': 2929206, 'São Sebastião do Passé, Bahia': 2929503, 'Sátiro Dias, Bahia': 2929701, 'Saubara, Bahia': 2929750, 'Simões Filho, Bahia': 2930709, 'Teodoro Sampaio, Bahia': 2931400, 'Terra Nova, Bahia': 2931707, 'Amargosa, Bahia': 2901007, 'Aratuípe, Bahia': 2902302, 'Brejões, Bahia': 2904308, 'Cabaceiras do Paraguaçu, Bahia': 2904852, 'Cachoeira, Bahia': 2904902, 'Cairu, Bahia': 2905404, 'Camamu, Bahia': 2905800, 'Castro Alves, Bahia': 2907301, 'Conceição do Almeida, Bahia': 2908309, 'Cruz das Almas, Bahia': 2909802, 'Dom Macedo Costa, Bahia': 2910206, 'Elísio Medrado, Bahia': 2910305, 'Governador Mangabeira, Bahia': 2911600, 'Igrapiúna, Bahia': 2913457, 'Itaparica, Bahia': 2916104, 'Itatim, Bahia': 2916856, 'Ituberá, Bahia': 2917300, 'Jaguaripe, Bahia': 2917805, 'Jiquiriçá, Bahia': 2918209, 'Laje, Bahia': 2918803, 'Maragogipe, Bahia': 2920601, 'Milagres, Bahia': 2921302, 'Muniz Ferreira, Bahia': 2922201, 'Muritiba, Bahia': 2922300, 'Mutuípe, Bahia': 2922409, 'Nazaré, Bahia': 2922508, 'Nilo Peçanha, Bahia': 2922607, 'Nova Itarana, Bahia': 2922805, 'Presidente Tancredo Neves, Bahia': 2925758, 'Salinas da Margarida, Bahia': 2927309, 'Santa Teresinha, Bahia': 2928505, 'Santo Antônio de Jesus, Bahia': 2928703, 'São Félix, Bahia': 2929008, 'São Felipe, Bahia': 2929107, 'São Miguel das Matas, Bahia': 2929404, 'Sapeaçu, Bahia': 2929602, 'Taperoá, Bahia': 2931202, 'Ubaíra, Bahia': 2932101, 'Valença, Bahia': 2932903, 'Varzedo, Bahia': 2933174, 'Vera Cruz, Bahia': 2933208, 'Alcobaça, Bahia': 2900801, 'Almadina, Bahia': 2900900, 'Arataca, Bahia': 2902252, 'Aurelino Leal, Bahia': 2902401, 'Barro Preto, Bahia': 2903300, 'Belmonte, Bahia': 2903409, 'Buerarema, Bahia': 2904704, 'Camacan, Bahia': 2905602, 'Canavieiras, Bahia': 2906303, 'Caravelas, Bahia': 2906907, 'Coaraci, Bahia': 2908002, 'Eunápolis, Bahia': 2910727, 'Firmino Alves, Bahia': 2910909, 'Floresta Azul, Bahia': 2911006, 'Guaratinga, Bahia': 2911808, 'Ibicaraí, Bahia': 2912103, 'Ibicuí, Bahia': 2912301, 'Ibirapitanga, Bahia': 2912707, 'Ibirapuã, Bahia': 2912806, 'Ilhéus, Bahia': 2913606, 'Itabela, Bahia': 2914653, 'Itabuna, Bahia': 2914802, 'Itacaré, Bahia': 2914901, 'Itagimirim, Bahia': 2915304, 'Itaju do Colônia, Bahia': 2915403, 'Itajuípe, Bahia': 2915502, 'Itamaraju, Bahia': 2915601, 'Itanhém, Bahia': 2916005, 'Itapé, Bahia': 2916203, 'Itapebi, Bahia': 2916302, 'Itapitanga, Bahia': 2916609, 'Jucuruçu, Bahia': 2918456, 'Jussari, Bahia': 2918555, 'Lajedão, Bahia': 2918902, 'Maraú, Bahia': 2920700, 'Mascote, Bahia': 2920908, 'Medeiros Neto, Bahia': 2921104, 'Mucuri, Bahia': 2922003, 'Nova Viçosa, Bahia': 2923001, 'Pau Brasil, Bahia': 2923902, 'Porto Seguro, Bahia': 2925303, 'Prado, Bahia': 2925501, 'Santa Cruz Cabrália, Bahia': 2927705, 'Santa Cruz da Vitória, Bahia': 2927804, 'Santa Luzia, Bahia': 2928059, 'São José da Vitória, Bahia': 2929354, 'Teixeira de Freitas, Bahia': 2931350, 'Ubaitaba, Bahia': 2932200, 'Una, Bahia': 2932507, 'Uruçuca, Bahia': 2932705, 'Vereda, Bahia': 2933257, 'Abaíra, Bahia': 2900108, 'Érico Cardoso, Bahia': 2900504, 'Aiquara, Bahia': 2900603, 'Anagé, Bahia': 2901205, 'Apuarema, Bahia': 2901957, 'Aracatu, Bahia': 2902005, 'Barra da Estiva, Bahia': 2902807, 'Barra do Choça, Bahia': 2902906, 'Barra do Rocha, Bahia': 2903102, 'Belo Campo, Bahia': 2903508, 'Boa Nova, Bahia': 2903706, 'Bom Jesus da Serra, Bahia': 2903953, 'Brumado, Bahia': 2904605, 'Caatiba, Bahia': 2904803, 'Caetanos, Bahia': 2905156, 'Cândido Sales, Bahia': 2906709, 'Caraíbas, Bahia': 2906899, 'Caturama, Bahia': 2907558, 'Condeúba, Bahia': 2908705, 'Contendas do Sincorá, Bahia': 2908804, 'Cordeiros, Bahia': 2909000, 'Cravolândia, Bahia': 2909505, 'Dário Meira, Bahia': 2910008, 'Dom Basílio, Bahia': 2910107, 'Encruzilhada, Bahia': 2910404, 'Gandu, Bahia': 2911204, 'Gongogi, Bahia': 2911501, 'Ibicoara, Bahia': 2912202, 'Ibirataia, Bahia': 2912905, 'Iguaí, Bahia': 2913507, 'Ipiaú, Bahia': 2913903, 'Irajuba, Bahia': 2914208, 'Iramaia, Bahia': 2914307, 'Itagi, Bahia': 2915106, 'Itagibá, Bahia': 2915205, 'Itamari, Bahia': 2915700, 'Itambé, Bahia': 2915809, 'Itapetinga, Bahia': 2916401, 'Itaquara, Bahia': 2916708, 'Itarantim, Bahia': 2916807, 'Itiruçu, Bahia': 2916906, 'Itororó, Bahia': 2917102, 'Ituaçu, Bahia': 2917201, 'Jaguaquara, Bahia': 2917607, 'Jequié, Bahia': 2918001, 'Jitaúna, Bahia': 2918308, 'Jussiape, Bahia': 2918605, 'Lafaiete Coutinho, Bahia': 2918704, 'Lajedo do Tabocal, Bahia': 2919058, 'Livramento de Nossa Senhora, Bahia': 2919504, 'Macarani, Bahia': 2919702, 'Maetinga, Bahia': 2919959, 'Maiquinique, Bahia': 2920007, 'Malhada de Pedras, Bahia': 2920304, 'Manoel Vitorino, Bahia': 2920403, 'Maracás, Bahia': 2920502, 'Mirante, Bahia': 2921450, 'Nova Canaã, Bahia': 2922706, 'Nova Ibiá, Bahia': 2922755, 'Paramirim, Bahia': 2923605, 'Piraí do Norte, Bahia': 2924678, 'Piripá, Bahia': 2924702, 'Planaltino, Bahia': 2924900, 'Planalto, Bahia': 2925006, 'Poções, Bahia': 2925105, 'Potiraguá, Bahia': 2925402, 'Presidente Jânio Quadros, Bahia': 2925709, 'Ribeirão do Largo, Bahia': 2926657, 'Rio de Contas, Bahia': 2926707, 'Rio do Pires, Bahia': 2926905, 'Santa Inês, Bahia': 2927903, 'Tanhaçu, Bahia': 2931004, 'Teolândia, Bahia': 2931608, 'Tremedal, Bahia': 2931806, 'Ubatã, Bahia': 2932309, 'Vitória da Conquista, Bahia': 2933307, 'Wenceslau Guimarães, Bahia': 2933505, 'Bom Jesus da Lapa, Bahia': 2903904, 'Boquira, Bahia': 2904100, 'Botuporã, Bahia': 2904209, 'Caculé, Bahia': 2905008, 'Caetité, Bahia': 2905206, 'Candiba, Bahia': 2906600, 'Carinhanha, Bahia': 2907103, 'Feira da Mata, Bahia': 2910776, 'Guajeru, Bahia': 2911659, 'Guanambi, Bahia': 2911709, 'Ibiassucê, Bahia': 2912004, 'Ibipitanga, Bahia': 2912509, 'Igaporã, Bahia': 2913408, 'Iuiú, Bahia': 2917334, 'Jacaraci, Bahia': 2917409, 'Lagoa Real, Bahia': 2918753, 'Licínio de Almeida, Bahia': 2919405, 'Macaúbas, Bahia': 2919801, 'Malhada, Bahia': 2920205, 'Matina, Bahia': 2921054, 'Mortugaba, Bahia': 2921807, 'Palmas de Monte Alto, Bahia': 2923407, 'Paratinga, Bahia': 2923704, 'Pindaí, Bahia': 2924504, 'Riacho de Santana, Bahia': 2926400, 'Rio do Antônio, Bahia': 2926806, 'Sebastião Laranjeiras, Bahia': 2930006, 'Serra do Ramalho, Bahia': 2930154, 'Sítio do Mato, Bahia': 2930758, 'Tanque Novo, Bahia': 2931053, 'Urandi, Bahia': 2932606, 'América Dourada, Bahia': 2901155, 'Barra, Bahia': 2902708, 'Barra do Mendes, Bahia': 2903003, 'Barro Alto, Bahia': 2903235, 'Bonito, Bahia': 2904050, 'Brotas de Macaúbas, Bahia': 2904506, 'Buritirama, Bahia': 2904753, 'Cafarnaum, Bahia': 2905305, 'Canarana, Bahia': 2906204, 'Central, Bahia': 2907608, 'Gentio do Ouro, Bahia': 2911303, 'Ibipeba, Bahia': 2912400, 'Ibititá, Bahia': 2913101, 'Ibotirama, Bahia': 2913200, 'Ipupiara, Bahia': 2914109, 'Irecê, Bahia': 2914604, 'Itaguaçu da Bahia, Bahia': 2915353, 'João Dourado, Bahia': 2918357, 'Jussara, Bahia': 2918506, 'Lapão, Bahia': 2919157, 'Morpará, Bahia': 2921609, 'Morro do Chapéu, Bahia': 2921708, 'Mulungu do Morro, Bahia': 2922052, 'Muquém de São Francisco, Bahia': 2922250, 'Oliveira dos Brejinhos, Bahia': 2923209, 'Presidente Dutra, Bahia': 2925600, 'São Gabriel, Bahia': 2929255, 'Uibaí, Bahia': 2932408, 'Xique-Xique, Bahia': 2933604, 'Abaré, Bahia': 2900207, 'Adustina, Bahia': 2900355, 'Antas, Bahia': 2901601, 'Banzaê, Bahia': 2902658, 'Cansanção, Bahia': 2906808, 'Canudos, Bahia': 2906824, 'Chorrochó, Bahia': 2907707, 'Cícero Dantas, Bahia': 2907806, 'Cipó, Bahia': 2907905, 'Coronel João Sá, Bahia': 2909208, 'Euclides da Cunha, Bahia': 2910701, 'Fátima, Bahia': 2910750, 'Glória, Bahia': 2911402, 'Heliópolis, Bahia': 2911857, 'Jeremoabo, Bahia': 2918100, 'Macururé, Bahia': 2919900, 'Monte Santo, Bahia': 2921500, 'Nova Soure, Bahia': 2922904, 'Novo Triunfo, Bahia': 2923050, 'Olindina, Bahia': 2923100, 'Paripiranga, Bahia': 2923803, 'Paulo Afonso, Bahia': 2924009, 'Pedro Alexandre, Bahia': 2924207, 'Quijingue, Bahia': 2925907, 'Ribeira do Amparo, Bahia': 2926509, 'Ribeira do Pombal, Bahia': 2926608, 'Rodelas, Bahia': 2927101, 'Santa Brígida, Bahia': 2927606, 'Sítio do Quinto, Bahia': 2930766, 'Tucano, Bahia': 2931905, 'Água Fria, Bahia': 2900405, 'Amélia Rodrigues, Bahia': 2901106, 'Andaraí, Bahia': 2901304, 'Anguera, Bahia': 2901502, 'Antônio Cardoso, Bahia': 2901700, 'Araci, Bahia': 2902104, 'Baixa Grande, Bahia': 2902609, 'Barrocas, Bahia': 2903276, 'Biritinga, Bahia': 2903607, 'Boa Vista do Tupim, Bahia': 2903805, 'Boninal, Bahia': 2904001, 'Caém, Bahia': 2905107, 'Caldeirão Grande, Bahia': 2905503, 'Candeal, Bahia': 2906402, 'Capela do Alto Alegre, Bahia': 2906857, 'Capim Grosso, Bahia': 2906873, 'Conceição da Feira, Bahia': 2908200, 'Conceição do Coité, Bahia': 2908408, 'Conceição do Jacuípe, Bahia': 2908507, 'Coração de Maria, Bahia': 2908903, 'Feira de Santana, Bahia': 2910800, 'Gavião, Bahia': 2911253, 'Iaçu, Bahia': 2911907, 'Ibiquera, Bahia': 2912608, 'Ibitiara, Bahia': 2913002, 'Ichu, Bahia': 2913309, 'Ipecaetá, Bahia': 2913804, 'Ipirá, Bahia': 2914000, 'Iraquara, Bahia': 2914406, 'Irará, Bahia': 2914505, 'Itaberaba, Bahia': 2914703, 'Itaeté, Bahia': 2915007, 'Jacobina, Bahia': 2917508, 'Lajedinho, Bahia': 2919009, 'Lamarão, Bahia': 2919108, 'Lençóis, Bahia': 2919306, 'Macajuba, Bahia': 2919603, 'Mairi, Bahia': 2920106, 'Marcionílio Souza, Bahia': 2920809, 'Miguel Calmon, Bahia': 2921203, 'Mirangaba, Bahia': 2921401, 'Mucugê, Bahia': 2921906, 'Mundo Novo, Bahia': 2922102, 'Nordestina, Bahia': 2922656, 'Nova Fátima, Bahia': 2922730, 'Nova Redenção, Bahia': 2922854, 'Novo Horizonte, Bahia': 2923035, 'Ouriçangas, Bahia': 2923308, 'Ourolândia, Bahia': 2923357, 'Palmeiras, Bahia': 2923506, 'Pé de Serra, Bahia': 2924058, 'Piatã, Bahia': 2924306, 'Pintadas, Bahia': 2924652, 'Piritiba, Bahia': 2924801, 'Queimadas, Bahia': 2925808, 'Quixabeira, Bahia': 2925931, 'Rafael Jambeiro, Bahia': 2925956, 'Retirolândia, Bahia': 2926103, 'Riachão do Jacuípe, Bahia': 2926301, 'Ruy Barbosa, Bahia': 2927200, 'Santa Bárbara, Bahia': 2927507, 'Santaluz, Bahia': 2928000, 'Santanópolis, Bahia': 2928307, 'Santo Estêvão, Bahia': 2928802, 'São Domingos, Bahia': 2928950, 'São Gonçalo dos Campos, Bahia': 2929305, 'São José do Jacuípe, Bahia': 2929370, 'Saúde, Bahia': 2929800, 'Seabra, Bahia': 2929909, 'Serra Preta, Bahia': 2930402, 'Serrinha, Bahia': 2930501, 'Serrolândia, Bahia': 2930600, 'Souto Soares, Bahia': 2930808, 'Tanquinho, Bahia': 2931103, 'Tapiramutá, Bahia': 2931301, 'Teofilândia, Bahia': 2931509, 'Umburanas, Bahia': 2932457, 'Utinga, Bahia': 2932804, 'Valente, Bahia': 2933000, 'Várzea da Roça, Bahia': 2933059, 'Várzea do Poço, Bahia': 2933109, 'Várzea Nova, Bahia': 2933158, 'Wagner, Bahia': 2933406, 'Araçaí, Minas Gerais': 3103207, 'Augusto de Lima, Minas Gerais': 3104809, 'Baldim, Minas Gerais': 3105004, 'Barão de Cocais, Minas Gerais': 3105400, 'Belo Horizonte, Minas Gerais': 3106200, 'Betim, Minas Gerais': 3106705, 'Bom Jesus do Amparo, Minas Gerais': 3107703, 'Brumadinho, Minas Gerais': 3109006, 'Buenópolis, Minas Gerais': 3109204, 'Cachoeira da Prata, Minas Gerais': 3109600, 'Caetanópolis, Minas Gerais': 3109907, 'Caeté, Minas Gerais': 3110004, 'Capim Branco, Minas Gerais': 3112505, 'Carmésia, Minas Gerais': 3113800, 'Catas Altas, Minas Gerais': 3115359, 'Conceição do Mato Dentro, Minas Gerais': 3117504, 'Confins, Minas Gerais': 3117876, 'Congonhas do Norte, Minas Gerais': 3118106, 'Contagem, Minas Gerais': 3118601, 'Cordisburgo, Minas Gerais': 3118908, 'Corinto, Minas Gerais': 3119104, 'Curvelo, Minas Gerais': 3120904, 'Esmeraldas, Minas Gerais': 3124104, 'Felixlândia, Minas Gerais': 3125705, 'Ferros, Minas Gerais': 3125903, 'Florestal, Minas Gerais': 3126000, 'Fortuna de Minas, Minas Gerais': 3126406, 'Funilândia, Minas Gerais': 3127206, 'Ibirité, Minas Gerais': 3129806, 'Igarapé, Minas Gerais': 3130101, 'Inhaúma, Minas Gerais': 3131000, 'Inimutaba, Minas Gerais': 3131109, 'Itabira, Minas Gerais': 3131703, 'Itabirito, Minas Gerais': 3131901, 'Itambé do Mato Dentro, Minas Gerais': 3132800, 'Jaboticatubas, Minas Gerais': 3134608, 'Jequitibá, Minas Gerais': 3135704, 'Nova União, Minas Gerais': 3136603, 'Juatuba, Minas Gerais': 3136652, 'Lagoa Santa, Minas Gerais': 3137601, 'Mariana, Minas Gerais': 3140001, 'Mário Campos, Minas Gerais': 3140159, 'Mateus Leme, Minas Gerais': 3140704, 'Matozinhos, Minas Gerais': 3141108, 'Moeda, Minas Gerais': 3142304, 'Monjolos, Minas Gerais': 3142502, 'Morro da Garça, Minas Gerais': 3143609, 'Morro do Pilar, Minas Gerais': 3143708, 'Nova Lima, Minas Gerais': 3144805, 'Ouro Preto, Minas Gerais': 3146107, 'Paraopeba, Minas Gerais': 3147402, 'Passabém, Minas Gerais': 3147501, 'Pedro Leopoldo, Minas Gerais': 3149309, 'Presidente Juscelino, Minas Gerais': 3153202, 'Prudente de Morais, Minas Gerais': 3153608, 'Raposos, Minas Gerais': 3153905, 'Ribeirão das Neves, Minas Gerais': 3154606, 'Rio Acima, Minas Gerais': 3154804, 'Sabará, Minas Gerais': 3156700, 'Santa Bárbara, Minas Gerais': 3157203, 'Santa Luzia, Minas Gerais': 3157807, 'Santa Maria de Itabira, Minas Gerais': 3158003, 'Santana de Pirapama, Minas Gerais': 3158508, 'Santana do Riacho, Minas Gerais': 3159001, 'Santo Antônio do Rio Abaixo, Minas Gerais': 3160504, 'Santo Hipólito, Minas Gerais': 3160603, 'São Joaquim de Bicas, Minas Gerais': 3162922, 'São José da Lapa, Minas Gerais': 3162955, 'São Sebastião do Rio Preto, Minas Gerais': 3164803, 'Sarzedo, Minas Gerais': 3165537, 'Sete Lagoas, Minas Gerais': 3167202, 'Taquaraçu de Minas, Minas Gerais': 3168309, 'Três Marias, Minas Gerais': 3169356, 'Vespasiano, Minas Gerais': 3171204, 'Berizal, Minas Gerais': 3106655, 'Bocaiúva, Minas Gerais': 3107307, 'Bonito de Minas, Minas Gerais': 3108255, 'Botumirim, Minas Gerais': 3108503, 'Brasília de Minas, Minas Gerais': 3108602, 'Buritizeiro, Minas Gerais': 3109402, 'Campo Azul, Minas Gerais': 3111150, 'Capitão Enéas, Minas Gerais': 3112703, 'Catuti, Minas Gerais': 3115474, 'Chapada Gaúcha, Minas Gerais': 3116159, 'Claro dos Poções, Minas Gerais': 3116506, 'Cônego Marinho, Minas Gerais': 3117836, 'Coração de Jesus, Minas Gerais': 3118809, 'Cristália, Minas Gerais': 3120300, 'Curral de Dentro, Minas Gerais': 3120870, 'Engenheiro Navarro, Minas Gerais': 3123809, 'Espinosa, Minas Gerais': 3124302, 'Francisco Dumont, Minas Gerais': 3126604, 'Francisco Sá, Minas Gerais': 3126703, 'Fruta de Leite, Minas Gerais': 3127073, 'Gameleiras, Minas Gerais': 3127339, 'Glaucilândia, Minas Gerais': 3127354, 'Grão Mogol, Minas Gerais': 3127800, 'Guaraciama, Minas Gerais': 3128253, 'Ibiaí, Minas Gerais': 3129608, 'Ibiracatu, Minas Gerais': 3129657, 'Icaraí de Minas, Minas Gerais': 3130051, 'Indaiabira, Minas Gerais': 3130655, 'Itacambira, Minas Gerais': 3132008, 'Itacarambi, Minas Gerais': 3132107, 'Jaíba, Minas Gerais': 3135050, 'Janaúba, Minas Gerais': 3135100, 'Januária, Minas Gerais': 3135209, 'Japonvar, Minas Gerais': 3135357, 'Jequitaí, Minas Gerais': 3135605, 'Joaquim Felício, Minas Gerais': 3136405, 'Josenópolis, Minas Gerais': 3136579, 'Juramento, Minas Gerais': 3136801, 'Juvenília, Minas Gerais': 3136959, 'Lagoa dos Patos, Minas Gerais': 3137304, 'Lassance, Minas Gerais': 3138104, 'Lontra, Minas Gerais': 3138658, 'Luislândia, Minas Gerais': 3138682, 'Mamonas, Minas Gerais': 3139250, 'Manga, Minas Gerais': 3139300, 'Matias Cardoso, Minas Gerais': 3140852, 'Mato Verde, Minas Gerais': 3141009, 'Mirabela, Minas Gerais': 3142007, 'Miravânia, Minas Gerais': 3142254, 'Montalvânia, Minas Gerais': 3142700, 'Monte Azul, Minas Gerais': 3142908, 'Montes Claros, Minas Gerais': 3143302, 'Montezuma, Minas Gerais': 3143450, 'Ninheira, Minas Gerais': 3144656, 'Nova Porteirinha, Minas Gerais': 3145059, 'Novorizonte, Minas Gerais': 3145372, "Olhos-d'Água, Minas Gerais": 3145455, 'Padre Carvalho, Minas Gerais': 3146255, 'Pai Pedro, Minas Gerais': 3146552, 'Patis, Minas Gerais': 3147956, 'Pedras de Maria da Cruz, Minas Gerais': 3149150, 'Pintópolis, Minas Gerais': 3150570, 'Pirapora, Minas Gerais': 3151206, 'Ponto Chique, Minas Gerais': 3152131, 'Porteirinha, Minas Gerais': 3152204, 'Riacho dos Machados, Minas Gerais': 3154507, 'Rio Pardo de Minas, Minas Gerais': 3155603, 'Rubelita, Minas Gerais': 3156502, 'Salinas, Minas Gerais': 3157005, 'Santa Cruz de Salinas, Minas Gerais': 3157377, 'Santa Fé de Minas, Minas Gerais': 3157609, 'Santo Antônio do Retiro, Minas Gerais': 3160454, 'São Francisco, Minas Gerais': 3161106, 'São João da Lagoa, Minas Gerais': 3162252, 'São João da Ponte, Minas Gerais': 3162401, 'São João das Missões, Minas Gerais': 3162450, 'São João do Pacuí, Minas Gerais': 3162658, 'São João do Paraíso, Minas Gerais': 3162708, 'São Romão, Minas Gerais': 3164209, 'Serranópolis de Minas, Minas Gerais': 3166956, 'Taiobeiras, Minas Gerais': 3168002, 'Ubaí, Minas Gerais': 3170008, 'Vargem Grande do Rio Pardo, Minas Gerais': 3170651, 'Várzea da Palma, Minas Gerais': 3170800, 'Varzelândia, Minas Gerais': 3170909, 'Verdelândia, Minas Gerais': 3171030, 'Água Boa, Minas Gerais': 3100609, 'Águas Formosas, Minas Gerais': 3100906, 'Águas Vermelhas, Minas Gerais': 3101003, 'Almenara, Minas Gerais': 3101706, 'Alvorada de Minas, Minas Gerais': 3102407, 'Cachoeira de Pajeú, Minas Gerais': 3102704, 'Angelândia, Minas Gerais': 3102852, 'Araçuaí, Minas Gerais': 3103405, 'Aricanduva, Minas Gerais': 3104452, 'Ataléia, Minas Gerais': 3104700, 'Bandeira, Minas Gerais': 3105202, 'Berilo, Minas Gerais': 3106507, 'Bertópolis, Minas Gerais': 3106606, 'Campanário, Minas Gerais': 3110806, 'Capelinha, Minas Gerais': 3112307, 'Caraí, Minas Gerais': 3113008, 'Carbonita, Minas Gerais': 3113503, 'Carlos Chagas, Minas Gerais': 3113701, 'Catuji, Minas Gerais': 3115458, 'Chapada do Norte, Minas Gerais': 3116100, 'Comercinho, Minas Gerais': 3117009, 'Coronel Murta, Minas Gerais': 3119500, 'Couto de Magalhães de Minas, Minas Gerais': 3120102, 'Crisólita, Minas Gerais': 3120151, 'Datas, Minas Gerais': 3121001, 'Diamantina, Minas Gerais': 3121605, 'Divisa Alegre, Minas Gerais': 3122355, 'Divisópolis, Minas Gerais': 3122454, 'Felício dos Santos, Minas Gerais': 3125408, 'São Gonçalo do Rio Preto, Minas Gerais': 3125507, 'Felisburgo, Minas Gerais': 3125606, 'Francisco Badaró, Minas Gerais': 3126505, 'Franciscópolis, Minas Gerais': 3126752, 'Frei Gaspar, Minas Gerais': 3126802, 'Fronteira dos Vales, Minas Gerais': 3127057, 'Gouveia, Minas Gerais': 3127602, 'Itaipé, Minas Gerais': 3132305, 'Itamarandiba, Minas Gerais': 3132503, 'Itambacuri, Minas Gerais': 3132701, 'Itaobim, Minas Gerais': 3133303, 'Itinga, Minas Gerais': 3134004, 'Jacinto, Minas Gerais': 3134707, 'Jenipapo de Minas, Minas Gerais': 3135456, 'Jequitinhonha, Minas Gerais': 3135803, 'Joaíma, Minas Gerais': 3136009, 'Jordânia, Minas Gerais': 3136504, 'José Gonçalves de Minas, Minas Gerais': 3136520, 'Ladainha, Minas Gerais': 3137007, 'Leme do Prado, Minas Gerais': 3138351, 'Machacalis, Minas Gerais': 3138906, 'Malacacheta, Minas Gerais': 3139201, 'Mata Verde, Minas Gerais': 3140555, 'Medina, Minas Gerais': 3141405, 'Minas Novas, Minas Gerais': 3141801, 'Monte Formoso, Minas Gerais': 3143153, 'Nanuque, Minas Gerais': 3144300, 'Nova Módica, Minas Gerais': 3144904, 'Novo Cruzeiro, Minas Gerais': 3145307, 'Novo Oriente de Minas, Minas Gerais': 3145356, 'Ouro Verde de Minas, Minas Gerais': 3146206, 'Padre Paraíso, Minas Gerais': 3146305, 'Palmópolis, Minas Gerais': 3146750, 'Pavão, Minas Gerais': 3148509, 'Pedra Azul, Minas Gerais': 3148707, 'Pescador, Minas Gerais': 3150000, 'Ponto dos Volantes, Minas Gerais': 3152170, 'Poté, Minas Gerais': 3152402, 'Presidente Kubitschek, Minas Gerais': 3153301, 'Rio do Prado, Minas Gerais': 3155108, 'Rubim, Minas Gerais': 3156601, 'Salto da Divisa, Minas Gerais': 3157104, 'Santa Helena de Minas, Minas Gerais': 3157658, 'Santa Maria do Salto, Minas Gerais': 3158102, 'Santo Antônio do Itambé, Minas Gerais': 3160207, 'Santo Antônio do Jacinto, Minas Gerais': 3160306, 'São José do Divino, Minas Gerais': 3163300, 'Setubinha, Minas Gerais': 3165552, 'Senador Modestino Gonçalves, Minas Gerais': 3165909, 'Serra Azul de Minas, Minas Gerais': 3166501, 'Serra dos Aimorés, Minas Gerais': 3166709, 'Serro, Minas Gerais': 3167103, 'Teófilo Otoni, Minas Gerais': 3168606, 'Turmalina, Minas Gerais': 3169703, 'Umburatiba, Minas Gerais': 3170305, 'Veredinha, Minas Gerais': 3171071, 'Virgem da Lapa, Minas Gerais': 3171600, 'Aimorés, Minas Gerais': 3101102, 'Alpercata, Minas Gerais': 3101805, 'Cantagalo, Minas Gerais': 3112059, 'Capitão Andrade, Minas Gerais': 3112653, 'Central de Minas, Minas Gerais': 3115706, 'Coluna, Minas Gerais': 3116803, 'Conselheiro Pena, Minas Gerais': 3118403, 'Coroaci, Minas Gerais': 3119203, 'Cuparaque, Minas Gerais': 3120839, 'Divino das Laranjeiras, Minas Gerais': 3122108, 'Divinolândia de Minas, Minas Gerais': 3122207, 'Dom Joaquim, Minas Gerais': 3122603, 'Dores de Guanhães, Minas Gerais': 3123106, 'Engenheiro Caldas, Minas Gerais': 3123700, 'Fernandes Tourinho, Minas Gerais': 3125804, 'Frei Inocêncio, Minas Gerais': 3126901, 'Frei Lagonegro, Minas Gerais': 3126950, 'Galiléia, Minas Gerais': 3127305, 'Goiabeira, Minas Gerais': 3127370, 'Gonzaga, Minas Gerais': 3127503, 'Governador Valadares, Minas Gerais': 3127701, 'Guanhães, Minas Gerais': 3128006, 'Itabirinha, Minas Gerais': 3131802, 'Itanhomi, Minas Gerais': 3133204, 'Itueta, Minas Gerais': 3134103, 'Jampruca, Minas Gerais': 3135076, 'José Raydan, Minas Gerais': 3136553, 'Mantena, Minas Gerais': 3139607, 'Marilac, Minas Gerais': 3140100, 'Materlândia, Minas Gerais': 3140605, 'Mendes Pimentel, Minas Gerais': 3141504, 'Nacip Raydan, Minas Gerais': 3144201, 'Nova Belém, Minas Gerais': 3144672, 'Paulistas, Minas Gerais': 3148400, 'Peçanha, Minas Gerais': 3148608, 'Resplendor, Minas Gerais': 3154309, 'Rio Vermelho, Minas Gerais': 3156007, 'Sabinópolis, Minas Gerais': 3156809, 'Santa Efigênia de Minas, Minas Gerais': 3157500, 'Santa Maria do Suaçuí, Minas Gerais': 3158201, 'Santa Rita do Itueto, Minas Gerais': 3159506, 'São Félix de Minas, Minas Gerais': 3161056, 'São Geraldo da Piedade, Minas Gerais': 3161601, 'São Geraldo do Baixio, Minas Gerais': 3161650, 'São João do Manteninha, Minas Gerais': 3162575, 'São João Evangelista, Minas Gerais': 3162807, 'São José da Safira, Minas Gerais': 3163003, 'São José do Jacuri, Minas Gerais': 3163508, 'São Pedro do Suaçuí, Minas Gerais': 3164100, 'São Sebastião do Maranhão, Minas Gerais': 3164506, 'Sardoá, Minas Gerais': 3165503, 'Senhora do Porto, Minas Gerais': 3166105, 'Sobrália, Minas Gerais': 3167707, 'Tarumirim, Minas Gerais': 3168408, 'Tumiritinga, Minas Gerais': 3169505, 'Mathias Lobato, Minas Gerais': 3171501, 'Virginópolis, Minas Gerais': 3171808, 'Virgolândia, Minas Gerais': 3171907, 'Açucena, Minas Gerais': 3100500, 'Alvarenga, Minas Gerais': 3102209, 'Antônio Dias, Minas Gerais': 3103009, 'Bela Vista de Minas, Minas Gerais': 3106002, 'Belo Oriente, Minas Gerais': 3106309, 'Bom Jesus do Galho, Minas Gerais': 3107802, 'Braúnas, Minas Gerais': 3108800, 'Bugre, Minas Gerais': 3109253, 'Caratinga, Minas Gerais': 3113404, 'Coronel Fabriciano, Minas Gerais': 3119401, 'Córrego Novo, Minas Gerais': 3120003, 'Dionísio, Minas Gerais': 3121803, 'Dom Cavati, Minas Gerais': 3122504, 'Entre Folhas, Minas Gerais': 3123858, 'Iapu, Minas Gerais': 3129301, 'Imbé de Minas, Minas Gerais': 3130556, 'Inhapim, Minas Gerais': 3130903, 'Ipaba, Minas Gerais': 3131158, 'Ipatinga, Minas Gerais': 3131307, 'Jaguaraçu, Minas Gerais': 3135001, 'Joanésia, Minas Gerais': 3136108, 'João Monlevade, Minas Gerais': 3136207, 'Marliéria, Minas Gerais': 3140308, 'Mesquita, Minas Gerais': 3141702, 'Naque, Minas Gerais': 3144359, 'Nova Era, Minas Gerais': 3144706, 'Periquito, Minas Gerais': 3149952, 'Piedade de Caratinga, Minas Gerais': 3150158, "Pingo-d'Água, Minas Gerais": 3150539, 'Raul Soares, Minas Gerais': 3154002, 'Rio Piracicaba, Minas Gerais': 3155702, 'Santa Bárbara do Leste, Minas Gerais': 3157252, 'Santana do Paraíso, Minas Gerais': 3158953, 'Santa Rita de Minas, Minas Gerais': 3159357, 'São Domingos das Dores, Minas Gerais': 3160959, 'São Domingos do Prata, Minas Gerais': 3161007, 'São Gonçalo do Rio Abaixo, Minas Gerais': 3161908, 'São João do Oriente, Minas Gerais': 3162609, 'São José do Goiabal, Minas Gerais': 3163409, 'São Sebastião do Anta, Minas Gerais': 3164472, 'Timóteo, Minas Gerais': 3168705, 'Ubaporanga, Minas Gerais': 3170057, 'Vargem Alegre, Minas Gerais': 3170578, 'Vermelho Novo, Minas Gerais': 3171154, 'Abre Campo, Minas Gerais': 3100302, 'Acaiaca, Minas Gerais': 3100401, 'Além Paraíba, Minas Gerais': 3101508, 'Alto Caparaó, Minas Gerais': 3102050, 'Alvinópolis, Minas Gerais': 3102308, 'Amparo do Serra, Minas Gerais': 3102506, 'Andrelândia, Minas Gerais': 3102803, 'Antônio Prado de Minas, Minas Gerais': 3103108, 'Aracitaba, Minas Gerais': 3103306, 'Arantina, Minas Gerais': 3103603, 'Araponga, Minas Gerais': 3103702, 'Argirita, Minas Gerais': 3104403, 'Astolfo Dutra, Minas Gerais': 3104601, 'Barão de Monte Alto, Minas Gerais': 3105509, 'Barra Longa, Minas Gerais': 3105707, 'Belmiro Braga, Minas Gerais': 3106101, 'Bias Fortes, Minas Gerais': 3106804, 'Bicas, Minas Gerais': 3106903, 'Bocaina de Minas, Minas Gerais': 3107208, 'Bom Jardim de Minas, Minas Gerais': 3107505, 'Brás Pires, Minas Gerais': 3108701, 'Caiana, Minas Gerais': 3110103, 'Cajuri, Minas Gerais': 3110202, 'Canaã, Minas Gerais': 3111705, 'Caparaó, Minas Gerais': 3112109, 'Caputira, Minas Gerais': 3112901, 'Carangola, Minas Gerais': 3113305, 'Cataguases, Minas Gerais': 3115300, 'Chácara, Minas Gerais': 3115904, 'Chalé, Minas Gerais': 3116001, 'Chiador, Minas Gerais': 3116209, 'Coimbra, Minas Gerais': 3116704, 'Conceição de Ipanema, Minas Gerais': 3117405, 'Coronel Pacheco, Minas Gerais': 3119609, 'Descoberto, Minas Gerais': 3121308, 'Diogo de Vasconcelos, Minas Gerais': 3121704, 'Divinésia, Minas Gerais': 3121902, 'Divino, Minas Gerais': 3122009, 'Dom Silvério, Minas Gerais': 3122702, 'Dona Eusébia, Minas Gerais': 3122900, 'Dores do Turvo, Minas Gerais': 3123304, 'Durandé, Minas Gerais': 3123528, 'Ervália, Minas Gerais': 3124005, 'Espera Feliz, Minas Gerais': 3124203, 'Estrela Dalva, Minas Gerais': 3124609, 'Eugenópolis, Minas Gerais': 3124906, 'Ewbank da Câmara, Minas Gerais': 3125002, 'Faria Lemos, Minas Gerais': 3125309, 'Fervedouro, Minas Gerais': 3125952, 'Goianá, Minas Gerais': 3127388, 'Guaraciaba, Minas Gerais': 3128204, 'Guarani, Minas Gerais': 3128402, 'Guarará, Minas Gerais': 3128501, 'Guidoval, Minas Gerais': 3128808, 'Guiricema, Minas Gerais': 3129004, 'Ipanema, Minas Gerais': 3131208, 'Itamarati de Minas, Minas Gerais': 3132602, 'Jequeri, Minas Gerais': 3135506, 'Juiz de Fora, Minas Gerais': 3136702, 'Lajinha, Minas Gerais': 3137700, 'Laranjal, Minas Gerais': 3138005, 'Leopoldina, Minas Gerais': 3138401, 'Liberdade, Minas Gerais': 3138500, 'Lima Duarte, Minas Gerais': 3138609, 'Luisburgo, Minas Gerais': 3138674, 'Manhuaçu, Minas Gerais': 3139409, 'Manhumirim, Minas Gerais': 3139508, 'Mar de Espanha, Minas Gerais': 3139805, 'Maripá de Minas, Minas Gerais': 3140209, 'Martins Soares, Minas Gerais': 3140530, 'Matias Barbosa, Minas Gerais': 3140803, 'Matipó, Minas Gerais': 3140902, 'Mercês, Minas Gerais': 3141603, 'Miradouro, Minas Gerais': 3142106, 'Miraí, Minas Gerais': 3142205, 'Muriaé, Minas Gerais': 3143906, 'Mutum, Minas Gerais': 3144003, 'Olaria, Minas Gerais': 3145406, 'Oliveira Fortes, Minas Gerais': 3145703, 'Oratórios, Minas Gerais': 3145851, 'Orizânia, Minas Gerais': 3145877, 'Paiva, Minas Gerais': 3146602, 'Palma, Minas Gerais': 3146701, 'Passa-Vinte, Minas Gerais': 3147808, 'Patrocínio do Muriaé, Minas Gerais': 3148202, 'Paula Cândido, Minas Gerais': 3148301, 'Pedra Bonita, Minas Gerais': 3148756, 'Pedra do Anta, Minas Gerais': 3148806, 'Pedra Dourada, Minas Gerais': 3149002, 'Pedro Teixeira, Minas Gerais': 3149408, 'Pequeri, Minas Gerais': 3149507, 'Piau, Minas Gerais': 3150109, 'Piedade de Ponte Nova, Minas Gerais': 3150208, 'Pirapetinga, Minas Gerais': 3151107, 'Piraúba, Minas Gerais': 3151305, 'Pocrane, Minas Gerais': 3151909, 'Ponte Nova, Minas Gerais': 3152105, 'Porto Firme, Minas Gerais': 3152303, 'Presidente Bernardes, Minas Gerais': 3153103, 'Alto Jequitibá, Minas Gerais': 3153509, 'Recreio, Minas Gerais': 3154101, 'Reduto, Minas Gerais': 3154150, 'Rio Casca, Minas Gerais': 3154903, 'Rio Doce, Minas Gerais': 3155009, 'Rio Novo, Minas Gerais': 3155405, 'Rio Pomba, Minas Gerais': 3155801, 'Rio Preto, Minas Gerais': 3155900, 'Rochedo de Minas, Minas Gerais': 3156205, 'Rodeiro, Minas Gerais': 3156304, 'Rosário da Limeira, Minas Gerais': 3156452, 'Santa Bárbara do Monte Verde, Minas Gerais': 3157278, 'Santa Cruz do Escalvado, Minas Gerais': 3157401, 'Santa Margarida, Minas Gerais': 3157906, 'Santana de Cataguases, Minas Gerais': 3158409, 'Santana do Deserto, Minas Gerais': 3158607, 'Santana do Manhuaçu, Minas Gerais': 3158904, 'Santa Rita de Jacutinga, Minas Gerais': 3159308, 'Santo Antônio do Aventureiro, Minas Gerais': 3160009, 'Santo Antônio do Grama, Minas Gerais': 3160108, 'Santos Dumont, Minas Gerais': 3160702, 'São Francisco do Glória, Minas Gerais': 3161403, 'São Geraldo, Minas Gerais': 3161502, 'São João do Manhuaçu, Minas Gerais': 3162559, 'São João Nepomuceno, Minas Gerais': 3162906, 'São José do Mantimento, Minas Gerais': 3163607, 'São Miguel do Anta, Minas Gerais': 3163805, 'São Pedro dos Ferros, Minas Gerais': 3164001, 'São Sebastião da Vargem Alegre, Minas Gerais': 3164431, 'Sem-Peixe, Minas Gerais': 3165560, 'Senador Cortes, Minas Gerais': 3165602, 'Senador Firmino, Minas Gerais': 3165701, 'Sericita, Minas Gerais': 3166303, 'Silveirânia, Minas Gerais': 3167301, 'Simão Pereira, Minas Gerais': 3167509, 'Simonésia, Minas Gerais': 3167608, 'Tabuleiro, Minas Gerais': 3167905, 'Taparuba, Minas Gerais': 3168051, 'Teixeiras, Minas Gerais': 3168507, 'Tocantins, Minas Gerais': 3169000, 'Tombos, Minas Gerais': 3169208, 'Ubá, Minas Gerais': 3169901, 'Urucânia, Minas Gerais': 3170503, 'Viçosa, Minas Gerais': 3171303, 'Vieiras, Minas Gerais': 3171402, 'Visconde do Rio Branco, Minas Gerais': 3172004, 'Volta Grande, Minas Gerais': 3172103, 'Alfredo Vasconcelos, Minas Gerais': 3101631, 'Alto Rio Doce, Minas Gerais': 3102100, 'Antônio Carlos, Minas Gerais': 3102902, 'Barbacena, Minas Gerais': 3105608, 'Barroso, Minas Gerais': 3105905, 'Belo Vale, Minas Gerais': 3106408, 'Capela Nova, Minas Gerais': 3112208, 'Caranaíba, Minas Gerais': 3113107, 'Carandaí, Minas Gerais': 3113206, 'Casa Grande, Minas Gerais': 3114907, 'Conceição da Barra de Minas, Minas Gerais': 3115201, 'Catas Altas da Noruega, Minas Gerais': 3115409, 'Cipotânea, Minas Gerais': 3116308, 'Congonhas, Minas Gerais': 3118007, 'Conselheiro Lafaiete, Minas Gerais': 3118304, 'Coronel Xavier Chaves, Minas Gerais': 3119708, 'Cristiano Otoni, Minas Gerais': 3120409, 'Desterro de Entre Rios, Minas Gerais': 3121407, 'Desterro do Melo, Minas Gerais': 3121506, 'Dores de Campos, Minas Gerais': 3123007, 'Entre Rios de Minas, Minas Gerais': 3123908, 'Ibertioga, Minas Gerais': 3129400, 'Itaverava, Minas Gerais': 3133907, 'Jeceaba, Minas Gerais': 3135407, 'Lagoa Dourada, Minas Gerais': 3137403, 'Lamim, Minas Gerais': 3137908, 'Madre de Deus de Minas, Minas Gerais': 3139102, 'Nazareno, Minas Gerais': 3144508, 'Ouro Branco, Minas Gerais': 3145901, 'Piedade do Rio Grande, Minas Gerais': 3150307, 'Piranga, Minas Gerais': 3150802, 'Prados, Minas Gerais': 3152709, 'Queluzito, Minas Gerais': 3153806, 'Resende Costa, Minas Gerais': 3154200, 'Ressaquinha, Minas Gerais': 3154408, 'Rio Espera, Minas Gerais': 3155207, 'Ritápolis, Minas Gerais': 3156106, 'Santa Bárbara do Tugúrio, Minas Gerais': 3157302, 'Santa Cruz de Minas, Minas Gerais': 3157336, 'Santana do Garambéu, Minas Gerais': 3158706, 'Santana dos Montes, Minas Gerais': 3159100, 'Santa Rita de Ibitipoca, Minas Gerais': 3159407, 'São Brás do Suaçuí, Minas Gerais': 3160900, 'São João del Rei, Minas Gerais': 3162500, 'São Tiago, Minas Gerais': 3165008, 'São Vicente de Minas, Minas Gerais': 3165305, 'Senhora de Oliveira, Minas Gerais': 3166006, 'Senhora dos Remédios, Minas Gerais': 3166204, 'Tiradentes, Minas Gerais': 3168804, 'Aguanil, Minas Gerais': 3100807, 'Alfenas, Minas Gerais': 3101607, 'Alpinópolis, Minas Gerais': 3101904, 'Alterosa, Minas Gerais': 3102001, 'Arceburgo, Minas Gerais': 3104106, 'Areado, Minas Gerais': 3104304, 'Boa Esperança, Minas Gerais': 3107109, 'Bom Jesus da Penha, Minas Gerais': 3107604, 'Bom Sucesso, Minas Gerais': 3108008, 'Cabo Verde, Minas Gerais': 3109501, 'Cambuquira, Minas Gerais': 3110707, 'Campanha, Minas Gerais': 3110905, 'Campo Belo, Minas Gerais': 3111200, 'Campo do Meio, Minas Gerais': 3111309, 'Campos Gerais, Minas Gerais': 3111606, 'Cana Verde, Minas Gerais': 3111903, 'Candeias, Minas Gerais': 3112000, 'Capetinga, Minas Gerais': 3112406, 'Capitólio, Minas Gerais': 3112802, 'Carmo da Cachoeira, Minas Gerais': 3113909, 'Carmo do Rio Claro, Minas Gerais': 3114402, 'Carrancas, Minas Gerais': 3114600, 'Carvalhópolis, Minas Gerais': 3114709, 'Cássia, Minas Gerais': 3115102, 'Claraval, Minas Gerais': 3116407, 'Conceição da Aparecida, Minas Gerais': 3117108, 'Coqueiral, Minas Gerais': 3118700, 'Cordislândia, Minas Gerais': 3119005, 'Cristais, Minas Gerais': 3120201, 'Delfinópolis, Minas Gerais': 3121209, 'Divisa Nova, Minas Gerais': 3122405, 'Doresópolis, Minas Gerais': 3123403, 'Elói Mendes, Minas Gerais': 3123601, 'Fama, Minas Gerais': 3125200, 'Fortaleza de Minas, Minas Gerais': 3126307, 'Guapé, Minas Gerais': 3128105, 'Guaranésia, Minas Gerais': 3128303, 'Guaxupé, Minas Gerais': 3128709, 'Ibiraci, Minas Gerais': 3129707, 'Ibituruna, Minas Gerais': 3130002, 'Ijaci, Minas Gerais': 3130408, 'Ilicínea, Minas Gerais': 3130507, 'Ingaí, Minas Gerais': 3130804, 'Itamogi, Minas Gerais': 3132909, 'Itaú de Minas, Minas Gerais': 3133758, 'Itumirim, Minas Gerais': 3134301, 'Itutinga, Minas Gerais': 3134509, 'Jacuí, Minas Gerais': 3134806, 'Juruaia, Minas Gerais': 3136900, 'Lavras, Minas Gerais': 3138203, 'Luminárias, Minas Gerais': 3138708, 'Machado, Minas Gerais': 3139003, 'Monsenhor Paulo, Minas Gerais': 3142601, 'Monte Belo, Minas Gerais': 3143005, 'Monte Santo de Minas, Minas Gerais': 3143203, 'Muzambinho, Minas Gerais': 3144102, 'Nepomuceno, Minas Gerais': 3144607, 'Nova Resende, Minas Gerais': 3145109, 'Paraguaçu, Minas Gerais': 3147204, 'Passos, Minas Gerais': 3147907, 'Perdões, Minas Gerais': 3149903, 'Piumhi, Minas Gerais': 3151503, 'Poço Fundo, Minas Gerais': 3151701, 'Pratápolis, Minas Gerais': 3152907, 'Ribeirão Vermelho, Minas Gerais': 3154705, 'Santana da Vargem, Minas Gerais': 3158300, 'Santana do Jacaré, Minas Gerais': 3158805, 'Santo Antônio do Amparo, Minas Gerais': 3159902, 'São Bento Abade, Minas Gerais': 3160801, 'São Gonçalo do Sapucaí, Minas Gerais': 3162005, 'São João Batista do Glória, Minas Gerais': 3162203, 'São José da Barra, Minas Gerais': 3162948, 'São Pedro da União, Minas Gerais': 3163904, 'São Roque de Minas, Minas Gerais': 3164308, 'São Sebastião do Paraíso, Minas Gerais': 3164704, 'São Tomás de Aquino, Minas Gerais': 3165107, 'São Thomé das Letras, Minas Gerais': 3165206, 'Serrania, Minas Gerais': 3166907, 'Três Corações, Minas Gerais': 3169307, 'Três Pontas, Minas Gerais': 3169406, 'Vargem Bonita, Minas Gerais': 3170602, 'Varginha, Minas Gerais': 3170701, 'Aiuruoca, Minas Gerais': 3101201, 'Alagoa, Minas Gerais': 3101300, 'Albertina, Minas Gerais': 3101409, 'Andradas, Minas Gerais': 3102605, 'Baependi, Minas Gerais': 3104908, 'Bandeira do Sul, Minas Gerais': 3105301, 'Bom Repouso, Minas Gerais': 3107901, 'Borda da Mata, Minas Gerais': 3108305, 'Botelhos, Minas Gerais': 3108404, 'Brazópolis, Minas Gerais': 3108909, 'Bueno Brandão, Minas Gerais': 3109105, 'Cachoeira de Minas, Minas Gerais': 3109709, 'Caldas, Minas Gerais': 3110301, 'Camanducaia, Minas Gerais': 3110509, 'Cambuí, Minas Gerais': 3110608, 'Campestre, Minas Gerais': 3111002, 'Careaçu, Minas Gerais': 3113602, 'Carmo de Minas, Minas Gerais': 3114105, 'Carvalhos, Minas Gerais': 3114808, 'Caxambu, Minas Gerais': 3115508, 'Conceição das Pedras, Minas Gerais': 3117207, 'Conceição do Rio Verde, Minas Gerais': 3117702, 'Conceição dos Ouros, Minas Gerais': 3117801, 'Congonhal, Minas Gerais': 3117900, 'Consolação, Minas Gerais': 3118502, 'Córrego do Bom Jesus, Minas Gerais': 3119906, 'Cristina, Minas Gerais': 3120508, 'Cruzília, Minas Gerais': 3120805, 'Delfim Moreira, Minas Gerais': 3121100, 'Dom Viçoso, Minas Gerais': 3122801, 'Espírito Santo do Dourado, Minas Gerais': 3124401, 'Estiva, Minas Gerais': 3124500, 'Extrema, Minas Gerais': 3125101, 'Gonçalves, Minas Gerais': 3127404, 'Heliodora, Minas Gerais': 3129202, 'Ibitiúra de Minas, Minas Gerais': 3129905, 'Inconfidentes, Minas Gerais': 3130606, 'Ipuiúna, Minas Gerais': 3131505, 'Itajubá, Minas Gerais': 3132404, 'Itamonte, Minas Gerais': 3133006, 'Itanhandu, Minas Gerais': 3133105, 'Itapeva, Minas Gerais': 3133600, 'Jacutinga, Minas Gerais': 3134905, 'Jesuânia, Minas Gerais': 3135902, 'Lambari, Minas Gerais': 3137809, 'Maria da Fé, Minas Gerais': 3139904, 'Marmelópolis, Minas Gerais': 3140407, 'Minduri, Minas Gerais': 3141900, 'Monte Sião, Minas Gerais': 3143401, 'Munhoz, Minas Gerais': 3143807, 'Natércia, Minas Gerais': 3144409, 'Olímpio Noronha, Minas Gerais': 3145505, 'Ouro Fino, Minas Gerais': 3146008, 'Paraisópolis, Minas Gerais': 3147303, 'Passa Quatro, Minas Gerais': 3147600, 'Pedralva, Minas Gerais': 3149101, 'Piranguçu, Minas Gerais': 3150901, 'Piranguinho, Minas Gerais': 3151008, 'Poços de Caldas, Minas Gerais': 3151800, 'Pouso Alegre, Minas Gerais': 3152501, 'Pouso Alto, Minas Gerais': 3152600, 'Santa Rita de Caldas, Minas Gerais': 3159209, 'Santa Rita do Sapucaí, Minas Gerais': 3159605, 'São João da Mata, Minas Gerais': 3162302, 'São José do Alegre, Minas Gerais': 3163201, 'São Lourenço, Minas Gerais': 3163706, 'São Sebastião da Bela Vista, Minas Gerais': 3164407, 'São Sebastião do Rio Verde, Minas Gerais': 3164902, 'Sapucaí-Mirim, Minas Gerais': 3165404, 'Senador Amaral, Minas Gerais': 3165578, 'Senador José Bento, Minas Gerais': 3165800, 'Seritinga, Minas Gerais': 3166402, 'Serranos, Minas Gerais': 3167004, 'Silvianópolis, Minas Gerais': 3167400, 'Soledade de Minas, Minas Gerais': 3167806, 'Tocos do Moji, Minas Gerais': 3169059, 'Toledo, Minas Gerais': 3169109, 'Turvolândia, Minas Gerais': 3169802, 'Virgínia, Minas Gerais': 3171709, 'Wenceslau Braz, Minas Gerais': 3172202, 'Água Comprida, Minas Gerais': 3100708, 'Araxá, Minas Gerais': 3104007, 'Campo Florido, Minas Gerais': 3111408, 'Campos Altos, Minas Gerais': 3111507, 'Carneirinho, Minas Gerais': 3114550, 'Comendador Gomes, Minas Gerais': 3116902, 'Conceição das Alagoas, Minas Gerais': 3117306, 'Conquista, Minas Gerais': 3118205, 'Delta, Minas Gerais': 3121258, 'Fronteira, Minas Gerais': 3127008, 'Frutal, Minas Gerais': 3127107, 'Ibiá, Minas Gerais': 3129509, 'Itapagipe, Minas Gerais': 3133402, 'Iturama, Minas Gerais': 3134400, 'Limeira do Oeste, Minas Gerais': 3138625, 'Nova Ponte, Minas Gerais': 3145000, 'Pedrinópolis, Minas Gerais': 3149200, 'Perdizes, Minas Gerais': 3149804, 'Pirajuba, Minas Gerais': 3150703, 'Planura, Minas Gerais': 3151602, 'Pratinha, Minas Gerais': 3153004, 'Sacramento, Minas Gerais': 3156908, 'Santa Juliana, Minas Gerais': 3157708, 'Santa Rosa da Serra, Minas Gerais': 3159704, 'São Francisco de Sales, Minas Gerais': 3161304, 'Tapira, Minas Gerais': 3168101, 'Uberaba, Minas Gerais': 3170107, 'União de Minas, Minas Gerais': 3170438, 'Veríssimo, Minas Gerais': 3171105, 'Arapuá, Minas Gerais': 3103801, 'Arinos, Minas Gerais': 3104502, 'Bonfinópolis de Minas, Minas Gerais': 3108206, 'Brasilândia de Minas, Minas Gerais': 3108552, 'Buritis, Minas Gerais': 3109303, 'Cabeceira Grande, Minas Gerais': 3109451, 'Carmo do Paranaíba, Minas Gerais': 3114303, 'Coromandel, Minas Gerais': 3119302, 'Cruzeiro da Fortaleza, Minas Gerais': 3120706, 'Dom Bosco, Minas Gerais': 3122470, 'Formoso, Minas Gerais': 3126208, 'Guarda-Mor, Minas Gerais': 3128600, 'Guimarânia, Minas Gerais': 3128907, 'João Pinheiro, Minas Gerais': 3136306, 'Lagamar, Minas Gerais': 3137106, 'Lagoa Formosa, Minas Gerais': 3137502, 'Lagoa Grande, Minas Gerais': 3137536, 'Matutina, Minas Gerais': 3141207, 'Natalândia, Minas Gerais': 3144375, 'Paracatu, Minas Gerais': 3147006, 'Patos de Minas, Minas Gerais': 3148004, 'Patrocínio, Minas Gerais': 3148103, 'Presidente Olegário, Minas Gerais': 3153400, 'Riachinho, Minas Gerais': 3154457, 'Rio Paranaíba, Minas Gerais': 3155504, 'São Gonçalo do Abaeté, Minas Gerais': 3161700, 'São Gotardo, Minas Gerais': 3162104, 'Serra do Salitre, Minas Gerais': 3166808, 'Tiros, Minas Gerais': 3168903, 'Unaí, Minas Gerais': 3170404, 'Uruana de Minas, Minas Gerais': 3170479, 'Urucuia, Minas Gerais': 3170529, 'Varjão de Minas, Minas Gerais': 3170750, 'Vazante, Minas Gerais': 3171006, 'Abaeté, Minas Gerais': 3100203, 'Araújos, Minas Gerais': 3103900, 'Arcos, Minas Gerais': 3104205, 'Bambuí, Minas Gerais': 3105103, 'Biquinhas, Minas Gerais': 3107000, 'Bom Despacho, Minas Gerais': 3107406, 'Bonfim, Minas Gerais': 3108107, 'Camacho, Minas Gerais': 3110400, 'Carmo da Mata, Minas Gerais': 3114006, 'Carmo do Cajuru, Minas Gerais': 3114204, 'Carmópolis de Minas, Minas Gerais': 3114501, 'Cedro do Abaeté, Minas Gerais': 3115607, 'Cláudio, Minas Gerais': 3116605, 'Conceição do Pará, Minas Gerais': 3117603, 'Córrego Danta, Minas Gerais': 3119807, 'Córrego Fundo, Minas Gerais': 3119955, 'Crucilândia, Minas Gerais': 3120607, 'Divinópolis, Minas Gerais': 3122306, 'Dores do Indaiá, Minas Gerais': 3123205, 'Estrela do Indaiá, Minas Gerais': 3124708, 'Formiga, Minas Gerais': 3126109, 'Igaratinga, Minas Gerais': 3130200, 'Iguatama, Minas Gerais': 3130309, 'Itaguara, Minas Gerais': 3132206, 'Itapecerica, Minas Gerais': 3133501, 'Itatiaiuçu, Minas Gerais': 3133709, 'Itaúna, Minas Gerais': 3133808, 'Japaraíba, Minas Gerais': 3135308, 'Lagoa da Prata, Minas Gerais': 3137205, 'Leandro Ferreira, Minas Gerais': 3138302, 'Luz, Minas Gerais': 3138807, 'Maravilhas, Minas Gerais': 3139706, 'Martinho Campos, Minas Gerais': 3140506, 'Medeiros, Minas Gerais': 3141306, 'Moema, Minas Gerais': 3142403, 'Morada Nova de Minas, Minas Gerais': 3143500, 'Nova Serrana, Minas Gerais': 3145208, 'Oliveira, Minas Gerais': 3145604, 'Onça de Pitangui, Minas Gerais': 3145802, 'Paineiras, Minas Gerais': 3146404, 'Pains, Minas Gerais': 3146503, 'Papagaios, Minas Gerais': 3146909, 'Pará de Minas, Minas Gerais': 3147105, 'Passa Tempo, Minas Gerais': 3147709, 'Pedra do Indaiá, Minas Gerais': 3148905, 'Pequi, Minas Gerais': 3149606, 'Perdigão, Minas Gerais': 3149705, 'Piedade dos Gerais, Minas Gerais': 3150406, 'Pimenta, Minas Gerais': 3150505, 'Piracema, Minas Gerais': 3150604, 'Pitangui, Minas Gerais': 3151404, 'Pompéu, Minas Gerais': 3152006, 'Quartel Geral, Minas Gerais': 3153707, 'Rio Manso, Minas Gerais': 3155306, 'Santo Antônio do Monte, Minas Gerais': 3160405, 'São Francisco de Paula, Minas Gerais': 3161205, 'São Gonçalo do Pará, Minas Gerais': 3161809, 'São José da Varginha, Minas Gerais': 3163102, 'São Sebastião do Oeste, Minas Gerais': 3164605, 'Serra da Saudade, Minas Gerais': 3166600, 'Tapiraí, Minas Gerais': 3168200, 'Arujá, São Paulo': 3503901, 'Barueri, São Paulo': 3505708, 'Bertioga, São Paulo': 3506359, 'Biritiba-Mirim, São Paulo': 3506607, 'Caieiras, São Paulo': 3509007, 'Cajamar, São Paulo': 3509205, 'Carapicuíba, São Paulo': 3510609, 'Cotia, São Paulo': 3513009, 'Cubatão, São Paulo': 3513504, 'Diadema, São Paulo': 3513801, 'Embu das Artes, São Paulo': 3515004, 'Embu-Guaçu, São Paulo': 3515103, 'Ferraz de Vasconcelos, São Paulo': 3515707, 'Francisco Morato, São Paulo': 3516309, 'Franco da Rocha, São Paulo': 3516408, 'Guararema, São Paulo': 3518305, 'Guarujá, São Paulo': 3518701, 'Guarulhos, São Paulo': 3518800, 'Itanhaém, São Paulo': 3522109, 'Itapecerica da Serra, São Paulo': 3522208, 'Itapevi, São Paulo': 3522505, 'Itaquaquecetuba, São Paulo': 3523107, 'Itariri, São Paulo': 3523305, 'Jandira, São Paulo': 3525003, 'Juquitiba, São Paulo': 3526209, 'Mairiporã, São Paulo': 3528502, 'Mauá, São Paulo': 3529401, 'Mogi das Cruzes, São Paulo': 3530607, 'Mongaguá, São Paulo': 3531100, 'Osasco, São Paulo': 3534401, 'Pedro de Toledo, São Paulo': 3537206, 'Peruíbe, São Paulo': 3537602, 'Pirapora do Bom Jesus, São Paulo': 3539103, 'Poá, São Paulo': 3539806, 'Praia Grande, São Paulo': 3541000, 'Ribeirão Pires, São Paulo': 3543303, 'Rio Grande da Serra, São Paulo': 3544103, 'Salesópolis, São Paulo': 3545001, 'Santa Isabel, São Paulo': 3546801, 'Santana de Parnaíba, São Paulo': 3547304, 'Santo André, São Paulo': 3547809, 'Santos, São Paulo': 3548500, 'São Bernardo do Campo, São Paulo': 3548708, 'São Caetano do Sul, São Paulo': 3548807, 'São Lourenço da Serra, São Paulo': 3549953, 'São Paulo, São Paulo': 3550308, 'São Vicente, São Paulo': 3551009, 'Suzano, São Paulo': 3552502, 'Taboão da Serra, São Paulo': 3552809, 'Vargem Grande Paulista, São Paulo': 3556453, 'Águas de Santa Bárbara, São Paulo': 3500550, 'Alambari, São Paulo': 3500758, 'Alumínio, São Paulo': 3501152, 'Angatuba, São Paulo': 3502200, 'Apiaí, São Paulo': 3502705, 'Araçariguama, São Paulo': 3502754, 'Araçoiaba da Serra, São Paulo': 3502903, 'Arandu, São Paulo': 3503109, 'Avaré, São Paulo': 3504503, 'Barão de Antonina, São Paulo': 3505005, 'Barra do Chapéu, São Paulo': 3505351, 'Barra do Turvo, São Paulo': 3505401, 'Boituva, São Paulo': 3507001, 'Bom Sucesso de Itararé, São Paulo': 3507159, 'Buri, São Paulo': 3508009, 'Cajati, São Paulo': 3509254, 'Campina do Monte Alegre, São Paulo': 3509452, 'Cananéia, São Paulo': 3509908, 'Capão Bonito, São Paulo': 3510203, 'Capela do Alto, São Paulo': 3510302, 'Cerqueira César, São Paulo': 3511409, 'Cerquilho, São Paulo': 3511508, 'Cesário Lange, São Paulo': 3511607, 'Coronel Macedo, São Paulo': 3512605, 'Eldorado, São Paulo': 3514809, 'Guapiara, São Paulo': 3517604, 'Guareí, São Paulo': 3518503, 'Iaras, São Paulo': 3519253, 'Ibiúna, São Paulo': 3519709, 'Iguape, São Paulo': 3520301, 'Ilha Comprida, São Paulo': 3520426, 'Iperó, São Paulo': 3521002, 'Iporanga, São Paulo': 3521200, 'Itaberá, São Paulo': 3521705, 'Itaí, São Paulo': 3521804, 'Itaóca, São Paulo': 3522158, 'Itapetininga, São Paulo': 3522307, 'Itapeva, São Paulo': 3522406, 'Itapirapuã Paulista, São Paulo': 3522653, 'Itaporanga, São Paulo': 3522802, 'Itararé, São Paulo': 3523206, 'Itu, São Paulo': 3523909, 'Jacupiranga, São Paulo': 3524600, 'Jumirim, São Paulo': 3525854, 'Juquiá, São Paulo': 3526100, 'Mairinque, São Paulo': 3528403, 'Manduri, São Paulo': 3528601, 'Miracatu, São Paulo': 3529906, 'Nova Campina, São Paulo': 3532827, 'Óleo, São Paulo': 3533809, 'Paranapanema, São Paulo': 3535804, 'Pariquera-Açu, São Paulo': 3536208, 'Pereiras, São Paulo': 3537503, 'Piedade, São Paulo': 3537800, 'Pilar do Sul, São Paulo': 3537909, 'Porangaba, São Paulo': 3540507, 'Porto Feliz, São Paulo': 3540606, 'Quadra, São Paulo': 3541653, 'Registro, São Paulo': 3542602, 'Ribeira, São Paulo': 3542800, 'Ribeirão Branco, São Paulo': 3543006, 'Ribeirão Grande, São Paulo': 3543253, 'Riversul, São Paulo': 3543501, 'Salto, São Paulo': 3545209, 'Salto de Pirapora, São Paulo': 3545308, 'São Miguel Arcanjo, São Paulo': 3550209, 'São Roque, São Paulo': 3550605, 'Sarapuí, São Paulo': 3551108, 'Sete Barras, São Paulo': 3551801, 'Sorocaba, São Paulo': 3552205, 'Taguaí, São Paulo': 3553005, 'Tapiraí, São Paulo': 3553500, 'Taquarituba, São Paulo': 3553807, 'Taquarivaí, São Paulo': 3553856, 'Tatuí, São Paulo': 3554003, 'Tietê, São Paulo': 3554508, 'Torre de Pedra, São Paulo': 3554656, 'Votorantim, São Paulo': 3557006, 'Agudos, São Paulo': 3500709, 'Anhembi, São Paulo': 3502309, 'Arealva, São Paulo': 3503406, 'Areiópolis, São Paulo': 3503604, 'Avaí, São Paulo': 3504305, 'Balbinos, São Paulo': 3504701, 'Bariri, São Paulo': 3505203, 'Barra Bonita, São Paulo': 3505302, 'Bauru, São Paulo': 3506003, 'Bocaina, São Paulo': 3506805, 'Bofete, São Paulo': 3506904, 'Boracéia, São Paulo': 3507308, 'Borebi, São Paulo': 3507456, 'Botucatu, São Paulo': 3507506, 'Brotas, São Paulo': 3507902, 'Cabrália Paulista, São Paulo': 3508306, 'Cafelândia, São Paulo': 3508801, 'Conchas, São Paulo': 3512308, 'Dois Córregos, São Paulo': 3514106, 'Duartina, São Paulo': 3514502, 'Guaiçara, São Paulo': 3517208, 'Guarantã, São Paulo': 3518107, 'Iacanga, São Paulo': 3519105, 'Igaraçu do Tietê, São Paulo': 3520004, 'Itaju, São Paulo': 3522000, 'Itapuí, São Paulo': 3522901, 'Itatinga, São Paulo': 3523503, 'Jaú, São Paulo': 3525300, 'Lençóis Paulista, São Paulo': 3526803, 'Lins, São Paulo': 3527108, 'Lucianópolis, São Paulo': 3527504, 'Macatuba, São Paulo': 3528007, 'Mineiros do Tietê, São Paulo': 3529807, 'Pardinho, São Paulo': 3536109, 'Paulistânia, São Paulo': 3536570, 'Pederneiras, São Paulo': 3536703, 'Pirajuí, São Paulo': 3538907, 'Piratininga, São Paulo': 3539400, 'Pongaí, São Paulo': 3540101, 'Pratânia, São Paulo': 3541059, 'Presidente Alves, São Paulo': 3541109, 'Promissão, São Paulo': 3541604, 'Reginópolis, São Paulo': 3542503, 'Sabino, São Paulo': 3544608, 'São Manuel, São Paulo': 3550100, 'Torrinha, São Paulo': 3554706, 'Ubirajara, São Paulo': 3555505, 'Uru, São Paulo': 3555901, 'Álvaro de Carvalho, São Paulo': 3501400, 'Alvinlândia, São Paulo': 3501509, 'Arco-Íris, São Paulo': 3503356, 'Assis, São Paulo': 3504008, 'Bastos, São Paulo': 3505807, 'Bernardino de Campos, São Paulo': 3506300, 'Borá, São Paulo': 3507209, 'Campos Novos Paulista, São Paulo': 3509809, 'Cândido Mota, São Paulo': 3510005, 'Canitar, São Paulo': 3510153, 'Cruzália, São Paulo': 3513306, 'Echaporã, São Paulo': 3514700, 'Espírito Santo do Turvo, São Paulo': 3515194, 'Fartura, São Paulo': 3515400, 'Fernão, São Paulo': 3515657, 'Florínia, São Paulo': 3516101, 'Gália, São Paulo': 3516606, 'Garça, São Paulo': 3516705, 'Getulina, São Paulo': 3517000, 'Guaimbê, São Paulo': 3517307, 'Herculândia, São Paulo': 3519006, 'Iacri, São Paulo': 3519204, 'Ibirarema, São Paulo': 3519501, 'Ipaussu, São Paulo': 3520905, 'Júlio Mesquita, São Paulo': 3525805, 'Lupércio, São Paulo': 3527801, 'Lutécia, São Paulo': 3527900, 'Maracaí, São Paulo': 3528809, 'Marília, São Paulo': 3529005, 'Ocauçu, São Paulo': 3533700, 'Oriente, São Paulo': 3534104, 'Oscar Bressane, São Paulo': 3534500, 'Ourinhos, São Paulo': 3534708, 'Palmital, São Paulo': 3535309, 'Paraguaçu Paulista, São Paulo': 3535507, 'Parapuã, São Paulo': 3536000, 'Pedrinhas Paulista, São Paulo': 3537156, 'Piraju, São Paulo': 3538808, 'Platina, São Paulo': 3539707, 'Pompéia, São Paulo': 3540002, 'Queiroz, São Paulo': 3541802, 'Quintana, São Paulo': 3542008, 'Ribeirão do Sul, São Paulo': 3543204, 'Rinópolis, São Paulo': 3543808, 'Salto Grande, São Paulo': 3545407, 'Santa Cruz do Rio Pardo, São Paulo': 3546405, 'São Pedro do Turvo, São Paulo': 3550506, 'Sarutaiá, São Paulo': 3551207, 'Tarumã, São Paulo': 3553955, 'Tejupá, São Paulo': 3554201, 'Timburi, São Paulo': 3554607, 'Tupã, São Paulo': 3555000, 'Vera Cruz, São Paulo': 3556602, 'Chavantes, São Paulo': 3557204, 'Adamantina, São Paulo': 3500105, 'Alfredo Marcondes, São Paulo': 3500808, 'Álvares Machado, São Paulo': 3501301, 'Anhumas, São Paulo': 3502408, 'Caiabu, São Paulo': 3508900, 'Caiuá, São Paulo': 3509106, 'Dracena, São Paulo': 3514403, 'Emilianópolis, São Paulo': 3515129, 'Estrela do Norte, São Paulo': 3515301, 'Euclides da Cunha Paulista, São Paulo': 3515350, 'Flora Rica, São Paulo': 3515806, 'Flórida Paulista, São Paulo': 3516002, 'Iepê, São Paulo': 3519907, 'Indiana, São Paulo': 3520608, 'Inúbia Paulista, São Paulo': 3520806, 'Irapuru, São Paulo': 3521606, 'João Ramalho, São Paulo': 3525607, 'Junqueirópolis, São Paulo': 3526001, 'Lucélia, São Paulo': 3527405, 'Marabá Paulista, São Paulo': 3528700, 'Mariápolis, São Paulo': 3528908, 'Martinópolis, São Paulo': 3529203, 'Mirante do Paranapanema, São Paulo': 3530201, 'Monte Castelo, São Paulo': 3531605, 'Nantes, São Paulo': 3532157, 'Narandiba, São Paulo': 3532207, 'Nova Guataporanga, São Paulo': 3533106, 'Osvaldo Cruz, São Paulo': 3534609, 'Ouro Verde, São Paulo': 3534807, 'Pacaembu, São Paulo': 3534906, 'Panorama, São Paulo': 3535408, 'Paulicéia, São Paulo': 3536406, 'Piquerobi, São Paulo': 3538303, 'Pirapozinho, São Paulo': 3539202, 'Pracinha, São Paulo': 3540853, 'Presidente Bernardes, São Paulo': 3541208, 'Presidente Epitácio, São Paulo': 3541307, 'Presidente Prudente, São Paulo': 3541406, 'Presidente Venceslau, São Paulo': 3541505, 'Quatá, São Paulo': 3541703, 'Rancharia, São Paulo': 3542206, 'Regente Feijó, São Paulo': 3542404, 'Ribeirão dos Índios, São Paulo': 3543238, 'Rosana, São Paulo': 3544251, 'Sagres, São Paulo': 3544707, 'Salmourão, São Paulo': 3545100, 'Sandovalina, São Paulo': 3545506, 'Santa Mercedes, São Paulo': 3547106, 'Santo Anastácio, São Paulo': 3547700, 'Santo Expedito, São Paulo': 3548302, "São João do Pau d'Alho, São Paulo": 3549300, 'Taciba, São Paulo': 3552908, 'Tarabai, São Paulo': 3553906, 'Teodoro Sampaio, São Paulo': 3554300, 'Tupi Paulista, São Paulo': 3555109, 'Alto Alegre, São Paulo': 3501103, 'Andradina, São Paulo': 3502101, 'Araçatuba, São Paulo': 3502804, 'Auriflama, São Paulo': 3504206, 'Avanhandava, São Paulo': 3504404, 'Barbosa, São Paulo': 3505104, 'Bento de Abreu, São Paulo': 3506201, 'Bilac, São Paulo': 3506409, 'Birigui, São Paulo': 3506508, 'Braúna, São Paulo': 3507704, 'Brejo Alegre, São Paulo': 3507753, 'Buritama, São Paulo': 3508108, 'Castilho, São Paulo': 3511003, 'Clementina, São Paulo': 3511904, 'Coroados, São Paulo': 3512506, 'Gabriel Monteiro, São Paulo': 3516507, 'Gastão Vidigal, São Paulo': 3516804, 'General Salgado, São Paulo': 3516903, 'Glicério, São Paulo': 3517109, 'Guaraçaí, São Paulo': 3517802, 'Guararapes, São Paulo': 3518206, 'Guzolândia, São Paulo': 3518909, 'Ilha Solteira, São Paulo': 3520442, 'Itapura, São Paulo': 3523008, 'Lavínia, São Paulo': 3526506, 'Lourdes, São Paulo': 3527256, 'Luiziânia, São Paulo': 3527702, 'Magda, São Paulo': 3528304, 'Mirandópolis, São Paulo': 3530102, 'Monções, São Paulo': 3531001, 'Murutinga do Sul, São Paulo': 3532108, 'Nova Castilho, São Paulo': 3532868, 'Nova Independência, São Paulo': 3533205, 'Nova Luzitânia, São Paulo': 3533304, 'Penápolis, São Paulo': 3537305, 'Pereira Barreto, São Paulo': 3537404, 'Piacatu, São Paulo': 3537701, 'Rubiácea, São Paulo': 3544400, 'Santo Antônio do Aracanguá, São Paulo': 3548054, 'Santópolis do Aguapeí, São Paulo': 3548401, 'Sud Mennucci, São Paulo': 3552304, 'Turiúba, São Paulo': 3555208, 'Valparaíso, São Paulo': 3556305, 'Zacarias, São Paulo': 3557154, 'Adolfo, São Paulo': 3500204, 'Altair, São Paulo': 3500907, 'Álvares Florence, São Paulo': 3501202, 'Américo de Campos, São Paulo': 3501806, "Aparecida d'Oeste, São Paulo": 3502606, 'Ariranha, São Paulo': 3503703, 'Aspásia, São Paulo': 3503950, 'Bady Bassitt, São Paulo': 3504602, 'Bálsamo, São Paulo': 3504800, 'Cardoso, São Paulo': 3510708, 'Catanduva, São Paulo': 3511102, 'Catiguá, São Paulo': 3511201, 'Cedral, São Paulo': 3511300, 'Cosmorama, São Paulo': 3512902, 'Dirce Reis, São Paulo': 3513850, 'Dolcinópolis, São Paulo': 3514205, 'Elisiário, São Paulo': 3514924, 'Embaúba, São Paulo': 3514957, "Estrela d'Oeste, São Paulo": 3515202, 'Fernandópolis, São Paulo': 3515509, 'Fernando Prestes, São Paulo': 3515608, 'Floreal, São Paulo': 3515905, 'Guapiaçu, São Paulo': 3517505, "Guarani d'Oeste, São Paulo": 3518008, 'Ibirá, São Paulo': 3519402, 'Icém, São Paulo': 3519808, 'Indiaporã, São Paulo': 3520707, 'Ipiguá, São Paulo': 3521150, 'Irapuã, São Paulo': 3521507, 'Itajobi, São Paulo': 3521903, 'Jaci, São Paulo': 3524501, 'Jales, São Paulo': 3524808, 'José Bonifácio, São Paulo': 3525706, 'Macaubal, São Paulo': 3528106, 'Macedônia, São Paulo': 3528205, 'Marapoama, São Paulo': 3528858, 'Marinópolis, São Paulo': 3529104, 'Mendonça, São Paulo': 3529500, 'Meridiano, São Paulo': 3529609, 'Mesópolis, São Paulo': 3529658, 'Mira Estrela, São Paulo': 3530003, 'Mirassol, São Paulo': 3530300, 'Mirassolândia, São Paulo': 3530409, 'Monte Aprazível, São Paulo': 3531407, 'Neves Paulista, São Paulo': 3532504, 'Nhandeara, São Paulo': 3532603, 'Nipoã, São Paulo': 3532702, 'Nova Aliança, São Paulo': 3532801, 'Nova Canaã Paulista, São Paulo': 3532843, 'Nova Granada, São Paulo': 3533007, 'Novais, São Paulo': 3533254, 'Novo Horizonte, São Paulo': 3533502, 'Onda Verde, São Paulo': 3534005, 'Orindiúva, São Paulo': 3534203, 'Ouroeste, São Paulo': 3534757, 'Palestina, São Paulo': 3535002, 'Palmares Paulista, São Paulo': 3535101, "Palmeira d'Oeste, São Paulo": 3535200, 'Paraíso, São Paulo': 3535705, 'Paranapuã, São Paulo': 3535903, 'Parisi, São Paulo': 3536257, 'Paulo de Faria, São Paulo': 3536604, 'Pedranópolis, São Paulo': 3536901, 'Pindorama, São Paulo': 3538105, 'Pirangi, São Paulo': 3539004, 'Planalto, São Paulo': 3539608, 'Poloni, São Paulo': 3539905, 'Pontalinda, São Paulo': 3540259, 'Pontes Gestal, São Paulo': 3540309, 'Populina, São Paulo': 3540408, 'Potirendaba, São Paulo': 3540804, 'Riolândia, São Paulo': 3544202, 'Rubinéia, São Paulo': 3544509, 'Sales, São Paulo': 3544806, 'Santa Adélia, São Paulo': 3545605, 'Santa Albertina, São Paulo': 3545704, "Santa Clara d'Oeste, São Paulo": 3546108, 'Santa Fé do Sul, São Paulo': 3546603, 'Santana da Ponte Pensa, São Paulo': 3547205, "Santa Rita d'Oeste, São Paulo": 3547403, 'Santa Salete, São Paulo': 3547650, 'São Francisco, São Paulo': 3549003, 'São João das Duas Pontes, São Paulo': 3549201, 'São João de Iracema, São Paulo': 3549250, 'São José do Rio Preto, São Paulo': 3549805, 'Sebastianópolis do Sul, São Paulo': 3551306, 'Suzanápolis, São Paulo': 3552551, 'Tabapuã, São Paulo': 3552601, 'Tanabi, São Paulo': 3553401, 'Três Fronteiras, São Paulo': 3554904, 'Turmalina, São Paulo': 3555307, 'Ubarana, São Paulo': 3555356, 'Uchoa, São Paulo': 3555604, 'União Paulista, São Paulo': 3555703, 'Urânia, São Paulo': 3555802, 'Urupês, São Paulo': 3556008, 'Valentim Gentil, São Paulo': 3556107, 'Vista Alegre do Alto, São Paulo': 3556909, 'Vitória Brasil, São Paulo': 3556958, 'Votuporanga, São Paulo': 3557105, 'Altinópolis, São Paulo': 3501004, 'Aramina, São Paulo': 3503000, 'Barretos, São Paulo': 3505500, 'Barrinha, São Paulo': 3505609, 'Batatais, São Paulo': 3505906, 'Bebedouro, São Paulo': 3506102, 'Brodowski, São Paulo': 3507803, 'Buritizal, São Paulo': 3508207, 'Cajobi, São Paulo': 3509304, 'Cajuru, São Paulo': 3509403, 'Cássia dos Coqueiros, São Paulo': 3510906, 'Colina, São Paulo': 3512001, 'Colômbia, São Paulo': 3512100, 'Cravinhos, São Paulo': 3513108, 'Cristais Paulista, São Paulo': 3513207, 'Dumont, São Paulo': 3514601, 'Franca, São Paulo': 3516200, 'Guaíra, São Paulo': 3517406, 'Guará, São Paulo': 3517703, 'Guaraci, São Paulo': 3517901, 'Guariba, São Paulo': 3518602, 'Guatapará, São Paulo': 3518859, 'Igarapava, São Paulo': 3520103, 'Ipuã, São Paulo': 3521309, 'Itirapuã, São Paulo': 3523701, 'Ituverava, São Paulo': 3524105, 'Jaborandi, São Paulo': 3524204, 'Jaboticabal, São Paulo': 3524303, 'Jardinópolis, São Paulo': 3525102, 'Jeriquara, São Paulo': 3525409, 'Luís Antônio, São Paulo': 3527603, 'Miguelópolis, São Paulo': 3529708, 'Monte Alto, São Paulo': 3531308, 'Monte Azul Paulista, São Paulo': 3531506, 'Morro Agudo, São Paulo': 3531902, 'Nuporanga, São Paulo': 3533601, 'Olímpia, São Paulo': 3533908, 'Orlândia, São Paulo': 3534302, 'Patrocínio Paulista, São Paulo': 3536307, 'Pedregulho, São Paulo': 3537008, 'Pitangueiras, São Paulo': 3539509, 'Pontal, São Paulo': 3540200, 'Pradópolis, São Paulo': 3540903, 'Restinga, São Paulo': 3542701, 'Ribeirão Corrente, São Paulo': 3543105, 'Ribeirão Preto, São Paulo': 3543402, 'Rifaina, São Paulo': 3543600, 'Sales Oliveira, São Paulo': 3544905, 'Santa Cruz da Esperança, São Paulo': 3546256, 'Santa Ernestina, São Paulo': 3546504, 'Santa Rosa de Viterbo, São Paulo': 3547601, 'Santo Antônio da Alegria, São Paulo': 3547908, 'São Joaquim da Barra, São Paulo': 3549409, 'São José da Bela Vista, São Paulo': 3549508, 'São Simão, São Paulo': 3550902, 'Serra Azul, São Paulo': 3551405, 'Serrana, São Paulo': 3551504, 'Sertãozinho, São Paulo': 3551702, 'Severínia, São Paulo': 3551900, 'Taiaçu, São Paulo': 3553104, 'Taiúva, São Paulo': 3553203, 'Taquaral, São Paulo': 3553658, 'Terra Roxa, São Paulo': 3554409, 'Viradouro, São Paulo': 3556800, 'Aguaí, São Paulo': 3500303, 'Águas da Prata, São Paulo': 3500402, 'Águas de Lindóia, São Paulo': 3500501, 'Águas de São Pedro, São Paulo': 3500600, 'Americana, São Paulo': 3501608, 'Amparo, São Paulo': 3501905, 'Analândia, São Paulo': 3502002, 'Araras, São Paulo': 3503307, 'Artur Nogueira, São Paulo': 3503802, 'Atibaia, São Paulo': 3504107, 'Bom Jesus dos Perdões, São Paulo': 3507100, 'Bragança Paulista, São Paulo': 3507605, 'Cabreúva, São Paulo': 3508405, 'Caconde, São Paulo': 3508702, 'Campinas, São Paulo': 3509502, 'Campo Limpo Paulista, São Paulo': 3509601, 'Capivari, São Paulo': 3510401, 'Casa Branca, São Paulo': 3510807, 'Charqueada, São Paulo': 3511706, 'Conchal, São Paulo': 3512209, 'Cordeirópolis, São Paulo': 3512407, 'Corumbataí, São Paulo': 3512704, 'Cosmópolis, São Paulo': 3512803, 'Divinolândia, São Paulo': 3513900, 'Elias Fausto, São Paulo': 3514908, 'Engenheiro Coelho, São Paulo': 3515152, 'Espírito Santo do Pinhal, São Paulo': 3515186, 'Holambra, São Paulo': 3519055, 'Hortolândia, São Paulo': 3519071, 'Indaiatuba, São Paulo': 3520509, 'Ipeúna, São Paulo': 3521101, 'Iracemápolis, São Paulo': 3521408, 'Itapira, São Paulo': 3522604, 'Itatiba, São Paulo': 3523404, 'Itobi, São Paulo': 3523800, 'Itupeva, São Paulo': 3524006, 'Jaguariúna, São Paulo': 3524709, 'Jarinu, São Paulo': 3525201, 'Joanópolis, São Paulo': 3525508, 'Jundiaí, São Paulo': 3525904, 'Laranjal Paulista, São Paulo': 3526407, 'Leme, São Paulo': 3526704, 'Limeira, São Paulo': 3526902, 'Lindóia, São Paulo': 3527009, 'Louveira, São Paulo': 3527306, 'Mococa, São Paulo': 3530508, 'Mogi Guaçu, São Paulo': 3530706, 'Mogi Mirim, São Paulo': 3530805, 'Mombuca, São Paulo': 3530904, 'Monte Alegre do Sul, São Paulo': 3531209, 'Monte Mor, São Paulo': 3531803, 'Morungaba, São Paulo': 3532009, 'Nazaré Paulista, São Paulo': 3532405, 'Nova Odessa, São Paulo': 3533403, 'Paulínia, São Paulo': 3536505, 'Pedra Bela, São Paulo': 3536802, 'Pedreira, São Paulo': 3537107, 'Pinhalzinho, São Paulo': 3538204, 'Piracaia, São Paulo': 3538600, 'Piracicaba, São Paulo': 3538709, 'Rafard, São Paulo': 3542107, 'Rio Claro, São Paulo': 3543907, 'Rio das Pedras, São Paulo': 3544004, 'Saltinho, São Paulo': 3545159, "Santa Bárbara d'Oeste, São Paulo": 3545803, 'Santa Cruz da Conceição, São Paulo': 3546207, 'Santa Cruz das Palmeiras, São Paulo': 3546306, 'Santa Gertrudes, São Paulo': 3546702, 'Santa Maria da Serra, São Paulo': 3547007, 'Santo Antônio de Posse, São Paulo': 3548005, 'Santo Antônio do Jardim, São Paulo': 3548104, 'São João da Boa Vista, São Paulo': 3549102, 'São José do Rio Pardo, São Paulo': 3549706, 'São Pedro, São Paulo': 3550407, 'São Sebastião da Grama, São Paulo': 3550803, 'Serra Negra, São Paulo': 3551603, 'Socorro, São Paulo': 3552106, 'Sumaré, São Paulo': 3552403, 'Tambaú, São Paulo': 3553302, 'Tapiratiba, São Paulo': 3553609, 'Tuiuti, São Paulo': 3554953, 'Valinhos, São Paulo': 3556206, 'Vargem, São Paulo': 3556354, 'Vargem Grande do Sul, São Paulo': 3556404, 'Várzea Paulista, São Paulo': 3556503, 'Vinhedo, São Paulo': 3556701, 'Estiva Gerbi, São Paulo': 3557303, 'Aparecida, São Paulo': 3502507, 'Arapeí, São Paulo': 3503158, 'Areias, São Paulo': 3503505, 'Bananal, São Paulo': 3504909, 'Caçapava, São Paulo': 3508504, 'Cachoeira Paulista, São Paulo': 3508603, 'Campos do Jordão, São Paulo': 3509700, 'Canas, São Paulo': 3509957, 'Caraguatatuba, São Paulo': 3510500, 'Cruzeiro, São Paulo': 3513405, 'Cunha, São Paulo': 3513603, 'Guaratinguetá, São Paulo': 3518404, 'Igaratá, São Paulo': 3520202, 'Ilhabela, São Paulo': 3520400, 'Jacareí, São Paulo': 3524402, 'Jambeiro, São Paulo': 3524907, 'Lagoinha, São Paulo': 3526308, 'Lavrinhas, São Paulo': 3526605, 'Lorena, São Paulo': 3527207, 'Monteiro Lobato, São Paulo': 3531704, 'Natividade da Serra, São Paulo': 3532306, 'Paraibuna, São Paulo': 3535606, 'Pindamonhangaba, São Paulo': 3538006, 'Piquete, São Paulo': 3538501, 'Potim, São Paulo': 3540754, 'Queluz, São Paulo': 3541901, 'Redenção da Serra, São Paulo': 3542305, 'Roseira, São Paulo': 3544301, 'Santa Branca, São Paulo': 3546009, 'Santo Antônio do Pinhal, São Paulo': 3548203, 'São Bento do Sapucaí, São Paulo': 3548609, 'São José do Barreiro, São Paulo': 3549607, 'São José dos Campos, São Paulo': 3549904, 'São Luís do Paraitinga, São Paulo': 3550001, 'São Sebastião, São Paulo': 3550704, 'Silveiras, São Paulo': 3552007, 'Taubaté, São Paulo': 3554102, 'Tremembé, São Paulo': 3554805, 'Ubatuba, São Paulo': 3555406, 'Adrianópolis, Paraná': 4100202, 'Agudos do Sul, Paraná': 4100301, 'Almirante Tamandaré, Paraná': 4100400, 'Antonina, Paraná': 4101200, 'Antônio Olinto, Paraná': 4101309, 'Araucária, Paraná': 4101804, 'Balsa Nova, Paraná': 4102307, 'Bituruna, Paraná': 4102901, 'Bocaiúva do Sul, Paraná': 4103107, 'Campina Grande do Sul, Paraná': 4104006, 'Campo do Tenente, Paraná': 4104105, 'Campo Largo, Paraná': 4104204, 'Campo Magro, Paraná': 4104253, 'Cerro Azul, Paraná': 4105201, 'Colombo, Paraná': 4105805, 'Contenda, Paraná': 4106209, 'Cruz Machado, Paraná': 4106803, 'Curitiba, Paraná': 4106902, 'Fazenda Rio Grande, Paraná': 4107652, 'General Carneiro, Paraná': 4108502, 'Guaraqueçaba, Paraná': 4109500, 'Guaratuba, Paraná': 4109609, 'Itaperuçu, Paraná': 4111258, 'Lapa, Paraná': 4113205, 'Mandirituba, Paraná': 4114302, 'Matinhos, Paraná': 4115705, 'Morretes, Paraná': 4116208, 'Paranaguá, Paraná': 4118204, 'Paula Freitas, Paraná': 4118600, 'Paulo Frontin, Paraná': 4118709, 'Piên, Paraná': 4119103, 'Pinhais, Paraná': 4119152, 'Piraquara, Paraná': 4119509, 'Pontal do Paraná, Paraná': 4119954, 'Porto Vitória, Paraná': 4120309, 'Quatro Barras, Paraná': 4120804, 'Quitandinha, Paraná': 4121208, 'Rio Branco do Sul, Paraná': 4122206, 'Rio Negro, Paraná': 4122305, 'São José dos Pinhais, Paraná': 4125506, 'São Mateus do Sul, Paraná': 4125605, 'Tijucas do Sul, Paraná': 4127601, 'Tunas do Paraná, Paraná': 4127882, 'União da Vitória, Paraná': 4128203, 'Doutor Ulysses, Paraná': 4128633, 'Ampére, Paraná': 4101002, 'Anahy, Paraná': 4101051, 'Assis Chateaubriand, Paraná': 4102000, 'Barracão, Paraná': 4102604, 'Bela Vista da Caroba, Paraná': 4102752, 'Boa Esperança do Iguaçu, Paraná': 4103024, 'Boa Vista da Aparecida, Paraná': 4103057, 'Bom Jesus do Sul, Paraná': 4103156, 'Bom Sucesso do Sul, Paraná': 4103222, 'Braganey, Paraná': 4103354, 'Cafelândia, Paraná': 4103453, 'Campo Bonito, Paraná': 4104055, 'Capanema, Paraná': 4104501, 'Capitão Leônidas Marques, Paraná': 4104600, 'Cascavel, Paraná': 4104808, 'Catanduvas, Paraná': 4105003, 'Céu Azul, Paraná': 4105300, 'Chopinzinho, Paraná': 4105409, 'Clevelândia, Paraná': 4105706, 'Corbélia, Paraná': 4106308, 'Coronel Domingos Soares, Paraná': 4106456, 'Coronel Vivida, Paraná': 4106506, 'Cruzeiro do Iguaçu, Paraná': 4106571, 'Diamante do Sul, Paraná': 4107124, "Diamante D'Oeste, Paraná": 4107157, 'Dois Vizinhos, Paraná': 4107207, 'Enéas Marques, Paraná': 4107405, 'Entre Rios do Oeste, Paraná': 4107538, 'Espigão Alto do Iguaçu, Paraná': 4107546, 'Flor da Serra do Sul, Paraná': 4107850, 'Formosa do Oeste, Paraná': 4108205, 'Foz do Iguaçu, Paraná': 4108304, 'Francisco Beltrão, Paraná': 4108403, 'Guaíra, Paraná': 4108809, 'Guaraniaçu, Paraná': 4109302, 'Honório Serpa, Paraná': 4109658, 'Ibema, Paraná': 4109757, 'Iguatu, Paraná': 4110052, 'Iracema do Oeste, Paraná': 4110656, 'Itaipulândia, Paraná': 4110953, "Itapejara d'Oeste, Paraná": 4111209, 'Jesuítas, Paraná': 4112751, 'Laranjeiras do Sul, Paraná': 4113304, 'Lindoeste, Paraná': 4113452, 'Manfrinópolis, Paraná': 4114351, 'Mangueirinha, Paraná': 4114401, 'Marechal Cândido Rondon, Paraná': 4114609, 'Mariópolis, Paraná': 4115309, 'Maripá, Paraná': 4115358, 'Marmeleiro, Paraná': 4115408, 'Marquinho, Paraná': 4115457, 'Matelândia, Paraná': 4115606, 'Medianeira, Paraná': 4115804, 'Mercedes, Paraná': 4115853, 'Missal, Paraná': 4116059, 'Nova Aurora, Paraná': 4116703, 'Nova Esperança do Sudoeste, Paraná': 4116950, 'Nova Laranjeiras, Paraná': 4117057, 'Nova Santa Rosa, Paraná': 4117222, 'Nova Prata do Iguaçu, Paraná': 4117255, 'Ouro Verde do Oeste, Paraná': 4117453, 'Palmas, Paraná': 4117602, 'Palotina, Paraná': 4117909, 'Pato Bragado, Paraná': 4118451, 'Pato Branco, Paraná': 4118501, "Pérola d'Oeste, Paraná": 4119004, 'Pinhal de São Bento, Paraná': 4119251, 'Planalto, Paraná': 4119806, 'Porto Barreiro, Paraná': 4120150, 'Pranchita, Paraná': 4120358, 'Quatro Pontes, Paraná': 4120853, 'Quedas do Iguaçu, Paraná': 4120903, 'Ramilândia, Paraná': 4121257, 'Realeza, Paraná': 4121406, 'Renascença, Paraná': 4121604, 'Rio Bonito do Iguaçu, Paraná': 4122156, 'Salgado Filho, Paraná': 4122800, 'Salto do Lontra, Paraná': 4123006, 'Santa Helena, Paraná': 4123501, 'Santa Izabel do Oeste, Paraná': 4123808, 'Santa Lúcia, Paraná': 4123824, 'Santa Tereza do Oeste, Paraná': 4124020, 'Santa Terezinha de Itaipu, Paraná': 4124053, 'Santo Antônio do Sudoeste, Paraná': 4124400, 'São João, Paraná': 4124806, "São Jorge d'Oeste, Paraná": 4125209, 'São José das Palmeiras, Paraná': 4125456, 'São Miguel do Iguaçu, Paraná': 4125704, 'São Pedro do Iguaçu, Paraná': 4125753, 'Saudade do Iguaçu, Paraná': 4126272, 'Serranópolis do Iguaçu, Paraná': 4126355, 'Sulina, Paraná': 4126652, 'Terra Roxa, Paraná': 4127403, 'Toledo, Paraná': 4127700, 'Três Barras do Paraná, Paraná': 4127858, 'Tupãssi, Paraná': 4127957, 'Vera Cruz do Oeste, Paraná': 4128559, 'Verê, Paraná': 4128609, 'Virmond, Paraná': 4128658, 'Vitorino, Paraná': 4128708, 'Altamira do Paraná, Paraná': 4100459, 'Altônia, Paraná': 4100509, 'Alto Paraná, Paraná': 4100608, 'Alto Piquiri, Paraná': 4100707, 'Amaporã, Paraná': 4100905, 'Ângulo, Paraná': 4101150, 'Araruna, Paraná': 4101705, 'Astorga, Paraná': 4102109, 'Atalaia, Paraná': 4102208, 'Barbosa Ferraz, Paraná': 4102505, 'Boa Esperança, Paraná': 4103008, 'Brasilândia do Sul, Paraná': 4103370, 'Cafezal do Sul, Paraná': 4103479, 'Campina da Lagoa, Paraná': 4103909, 'Campo Mourão, Paraná': 4104303, 'Cianorte, Paraná': 4105508, 'Cidade Gaúcha, Paraná': 4105607, 'Colorado, Paraná': 4105904, 'Corumbataí do Sul, Paraná': 4106555, 'Cruzeiro do Oeste, Paraná': 4106605, 'Cruzeiro do Sul, Paraná': 4106704, 'Diamante do Norte, Paraná': 4107108, 'Douradina, Paraná': 4107256, 'Doutor Camargo, Paraná': 4107306, 'Engenheiro Beltrão, Paraná': 4107504, 'Esperança Nova, Paraná': 4107520, 'Farol, Paraná': 4107553, 'Fênix, Paraná': 4107702, 'Floraí, Paraná': 4107801, 'Floresta, Paraná': 4107900, 'Flórida, Paraná': 4108106, 'Francisco Alves, Paraná': 4108320, 'Goioerê, Paraná': 4108601, 'Guairaçá, Paraná': 4108908, 'Guaporema, Paraná': 4109104, 'Icaraíma, Paraná': 4109906, 'Iguaraçu, Paraná': 4110003, 'Inajá, Paraná': 4110300, 'Indianópolis, Paraná': 4110409, 'Iporã, Paraná': 4110607, 'Iretama, Paraná': 4110805, 'Itaguajé, Paraná': 4110904, 'Itambé, Paraná': 4111100, 'Itaúna do Sul, Paraná': 4111308, 'Ivaté, Paraná': 4111555, 'Ivatuba, Paraná': 4111605, 'Janiópolis, Paraná': 4112207, 'Japurá, Paraná': 4112405, 'Jardim Olinda, Paraná': 4112603, 'Juranda, Paraná': 4112959, 'Jussara, Paraná': 4113007, 'Loanda, Paraná': 4113502, 'Lobato, Paraná': 4113601, 'Luiziana, Paraná': 4113734, 'Mamborê, Paraná': 4114005, 'Mandaguaçu, Paraná': 4114104, 'Mandaguari, Paraná': 4114203, 'Maria Helena, Paraná': 4114708, 'Marialva, Paraná': 4114807, 'Marilena, Paraná': 4115002, 'Mariluz, Paraná': 4115101, 'Maringá, Paraná': 4115200, 'Mirador, Paraná': 4115903, 'Moreira Sales, Paraná': 4116109, 'Munhoz de Melo, Paraná': 4116307, 'Nossa Senhora das Graças, Paraná': 4116406, 'Nova Aliança do Ivaí, Paraná': 4116505, 'Nova Cantu, Paraná': 4116802, 'Nova Esperança, Paraná': 4116901, 'Nova Londrina, Paraná': 4117107, 'Nova Olímpia, Paraná': 4117206, 'Ourizona, Paraná': 4117404, 'Paiçandu, Paraná': 4117503, 'Paraíso do Norte, Paraná': 4118006, 'Paranacity, Paraná': 4118105, 'Paranapoema, Paraná': 4118303, 'Paranavaí, Paraná': 4118402, 'Peabiru, Paraná': 4118808, 'Perobal, Paraná': 4118857, 'Pérola, Paraná': 4118907, 'Planaltina do Paraná, Paraná': 4119707, 'Porto Rico, Paraná': 4120200, 'Presidente Castelo Branco, Paraná': 4120408, 'Quarto Centenário, Paraná': 4120655, 'Querência do Norte, Paraná': 4121000, 'Quinta do Sol, Paraná': 4121109, "Rancho Alegre D'Oeste, Paraná": 4121356, 'Roncador, Paraná': 4122503, 'Rondon, Paraná': 4122602, 'Santa Cruz de Monte Castelo, Paraná': 4123303, 'Santa Fé, Paraná': 4123402, 'Santa Inês, Paraná': 4123600, 'Santa Isabel do Ivaí, Paraná': 4123709, 'Santa Mônica, Paraná': 4123956, 'Santo Antônio do Caiuá, Paraná': 4124202, 'Santo Inácio, Paraná': 4124509, 'São Carlos do Ivaí, Paraná': 4124608, 'São João do Caiuá, Paraná': 4124905, 'São Jorge do Ivaí, Paraná': 4125308, 'São Jorge do Patrocínio, Paraná': 4125357, 'São Manoel do Paraná, Paraná': 4125555, 'São Pedro do Paraná, Paraná': 4125902, 'São Tomé, Paraná': 4126108, 'Sarandi, Paraná': 4126256, 'Tamboara, Paraná': 4126702, 'Tapejara, Paraná': 4126801, 'Tapira, Paraná': 4126900, 'Terra Boa, Paraná': 4127205, 'Terra Rica, Paraná': 4127304, 'Tuneiras do Oeste, Paraná': 4127908, 'Ubiratã, Paraná': 4128005, 'Umuarama, Paraná': 4128104, 'Uniflor, Paraná': 4128302, 'Alto Paraíso, Paraná': 4128625, 'Xambrê, Paraná': 4128807, 'Abatiá, Paraná': 4100103, 'Alvorada do Sul, Paraná': 4100806, 'Andirá, Paraná': 4101101, 'Apucarana, Paraná': 4101408, 'Arapongas, Paraná': 4101507, 'Arapuã, Paraná': 4101655, 'Ariranha do Ivaí, Paraná': 4101853, 'Assaí, Paraná': 4101903, 'Bandeirantes, Paraná': 4102406, 'Barra do Jacaré, Paraná': 4102703, 'Bela Vista do Paraíso, Paraná': 4102802, 'Bom Sucesso, Paraná': 4103206, 'Borrazópolis, Paraná': 4103305, 'Cafeara, Paraná': 4103404, 'Califórnia, Paraná': 4103503, 'Cambará, Paraná': 4103602, 'Cambé, Paraná': 4103701, 'Cambira, Paraná': 4103800, 'Cândido de Abreu, Paraná': 4104402, 'Carlópolis, Paraná': 4104709, 'Centenário do Sul, Paraná': 4105102, 'Congonhinhas, Paraná': 4106001, 'Conselheiro Mairinck, Paraná': 4106100, 'Cornélio Procópio, Paraná': 4106407, 'Cruzmaltina, Paraná': 4106852, 'Faxinal, Paraná': 4107603, 'Figueira, Paraná': 4107751, 'Florestópolis, Paraná': 4108007, 'Godoy Moreira, Paraná': 4108551, 'Grandes Rios, Paraná': 4108700, 'Guapirama, Paraná': 4109005, 'Guaraci, Paraná': 4109203, 'Ibaiti, Paraná': 4109708, 'Ibiporã, Paraná': 4109807, 'Itambaracá, Paraná': 4111001, 'Ivaiporã, Paraná': 4111506, 'Jaboti, Paraná': 4111704, 'Jacarezinho, Paraná': 4111803, 'Jaguapitã, Paraná': 4111902, 'Jandaia do Sul, Paraná': 4112108, 'Japira, Paraná': 4112306, 'Jardim Alegre, Paraná': 4112504, 'Jataizinho, Paraná': 4112702, 'Joaquim Távora, Paraná': 4112801, 'Jundiaí do Sul, Paraná': 4112900, 'Kaloré, Paraná': 4113106, 'Leópolis, Paraná': 4113403, 'Lidianópolis, Paraná': 4113429, 'Londrina, Paraná': 4113700, 'Lunardelli, Paraná': 4113759, 'Lupionópolis, Paraná': 4113809, 'Manoel Ribas, Paraná': 4114500, 'Marilândia do Sul, Paraná': 4114906, 'Marumbi, Paraná': 4115507, 'Mauá da Serra, Paraná': 4115754, 'Miraselva, Paraná': 4116000, 'Nova América da Colina, Paraná': 4116604, 'Nova Fátima, Paraná': 4117008, 'Nova Santa Bárbara, Paraná': 4117214, 'Novo Itacolomi, Paraná': 4117297, 'Pinhalão, Paraná': 4119202, 'Pitangueiras, Paraná': 4119657, 'Porecatu, Paraná': 4120002, 'Prado Ferreira, Paraná': 4120333, 'Primeiro de Maio, Paraná': 4120507, 'Quatiguá, Paraná': 4120705, 'Rancho Alegre, Paraná': 4121307, 'Ribeirão Claro, Paraná': 4121802, 'Ribeirão do Pinhal, Paraná': 4121901, 'Rio Bom, Paraná': 4122107, 'Rio Branco do Ivaí, Paraná': 4122172, 'Rolândia, Paraná': 4122404, 'Rosário do Ivaí, Paraná': 4122651, 'Sabáudia, Paraná': 4122701, 'Salto do Itararé, Paraná': 4122909, 'Santa Amélia, Paraná': 4123105, 'Santa Cecília do Pavão, Paraná': 4123204, 'Santa Mariana, Paraná': 4123907, 'Santana do Itararé, Paraná': 4124004, 'Santo Antônio da Platina, Paraná': 4124103, 'Santo Antônio do Paraíso, Paraná': 4124301, 'São Jerônimo da Serra, Paraná': 4124707, 'São João do Ivaí, Paraná': 4125001, 'São José da Boa Vista, Paraná': 4125407, 'São Pedro do Ivaí, Paraná': 4125803, 'São Sebastião da Amoreira, Paraná': 4126009, 'Sapopema, Paraná': 4126207, 'Sertaneja, Paraná': 4126405, 'Sertanópolis, Paraná': 4126504, 'Siqueira Campos, Paraná': 4126603, 'Tamarana, Paraná': 4126678, 'Tomazina, Paraná': 4127809, 'Uraí, Paraná': 4128401, 'Wenceslau Braz, Paraná': 4128500, 'Araranguá, Santa Catarina': 4201406, 'Armazém, Santa Catarina': 4201505, 'Balneário Arroio do Silva, Santa Catarina': 4201950, 'Balneário Gaivota, Santa Catarina': 4202073, 'Braço do Norte, Santa Catarina': 4202800, 'Capivari de Baixo, Santa Catarina': 4203956, 'Cocal do Sul, Santa Catarina': 4204251, 'Criciúma, Santa Catarina': 4204608, 'Ermo, Santa Catarina': 4205191, 'Forquilhinha, Santa Catarina': 4205456, 'Grão Pará, Santa Catarina': 4206108, 'Gravatal, Santa Catarina': 4206207, 'Içara, Santa Catarina': 4207007, 'Imaruí, Santa Catarina': 4207205, 'Jacinto Machado, Santa Catarina': 4208708, 'Jaguaruna, Santa Catarina': 4208807, 'Laguna, Santa Catarina': 4209409, 'Lauro Muller, Santa Catarina': 4209607, 'Maracajá, Santa Catarina': 4210407, 'Meleiro, Santa Catarina': 4210803, 'Morro da Fumaça, Santa Catarina': 4211207, 'Morro Grande, Santa Catarina': 4211256, 'Nova Veneza, Santa Catarina': 4211603, 'Orleans, Santa Catarina': 4211702, 'Passo de Torres, Santa Catarina': 4212254, 'Pedras Grandes, Santa Catarina': 4212403, 'Pescaria Brava, Santa Catarina': 4212650, 'Praia Grande, Santa Catarina': 4213807, 'Rio Fortuna, Santa Catarina': 4214904, 'Sangão, Santa Catarina': 4215455, 'Santa Rosa de Lima, Santa Catarina': 4215604, 'Santa Rosa do Sul, Santa Catarina': 4215653, 'São João do Sul, Santa Catarina': 4216404, 'São Ludgero, Santa Catarina': 4217006, 'São Martinho, Santa Catarina': 4217105, 'Siderópolis, Santa Catarina': 4217600, 'Sombrio, Santa Catarina': 4217709, 'Timbé do Sul, Santa Catarina': 4218103, 'Treviso, Santa Catarina': 4218350, 'Treze de Maio, Santa Catarina': 4218400, 'Tubarão, Santa Catarina': 4218707, 'Turvo, Santa Catarina': 4218806, 'Urussanga, Santa Catarina': 4219002, 'Balneário Rincão, Santa Catarina': 4220000, 'Abdon Batista, Santa Catarina': 4200051, 'Abelardo Luz, Santa Catarina': 4200101, 'Água Doce, Santa Catarina': 4200408, 'Águas de Chapecó, Santa Catarina': 4200507, 'Águas Frias, Santa Catarina': 4200556, 'Alto Bela Vista, Santa Catarina': 4200754, 'Anchieta, Santa Catarina': 4200804, 'Arabutã, Santa Catarina': 4201273, 'Arvoredo, Santa Catarina': 4201653, 'Bandeirante, Santa Catarina': 4202081, 'Barra Bonita, Santa Catarina': 4202099, 'Belmonte, Santa Catarina': 4202156, 'Bom Jesus, Santa Catarina': 4202537, 'Bom Jesus do Oeste, Santa Catarina': 4202578, 'Caibi, Santa Catarina': 4203105, 'Campo Erê, Santa Catarina': 4203501, 'Campos Novos, Santa Catarina': 4203600, 'Capinzal, Santa Catarina': 4203907, 'Catanduvas, Santa Catarina': 4204004, 'Caxambu do Sul, Santa Catarina': 4204103, 'Celso Ramos, Santa Catarina': 4204152, 'Chapecó, Santa Catarina': 4204202, 'Concórdia, Santa Catarina': 4204301, 'Cordilheira Alta, Santa Catarina': 4204350, 'Coronel Freitas, Santa Catarina': 4204400, 'Coronel Martins, Santa Catarina': 4204459, 'Cunha Porã, Santa Catarina': 4204707, 'Cunhataí, Santa Catarina': 4204756, 'Descanso, Santa Catarina': 4204905, 'Dionísio Cerqueira, Santa Catarina': 4205001, 'Entre Rios, Santa Catarina': 4205175, 'Erval Velho, Santa Catarina': 4205209, 'Faxinal dos Guedes, Santa Catarina': 4205308, 'Flor do Sertão, Santa Catarina': 4205357, 'Formosa do Sul, Santa Catarina': 4205431, 'Galvão, Santa Catarina': 4205605, 'Guaraciaba, Santa Catarina': 4206405, 'Guarujá do Sul, Santa Catarina': 4206603, 'Guatambú, Santa Catarina': 4206652, "Herval d'Oeste, Santa Catarina": 4206702, 'Ibicaré, Santa Catarina': 4206801, 'Ipira, Santa Catarina': 4207601, 'Iporã do Oeste, Santa Catarina': 4207650, 'Ipuaçu, Santa Catarina': 4207684, 'Ipumirim, Santa Catarina': 4207700, 'Iraceminha, Santa Catarina': 4207759, 'Irani, Santa Catarina': 4207809, 'Irati, Santa Catarina': 4207858, 'Itá, Santa Catarina': 4208005, 'Itapiranga, Santa Catarina': 4208401, 'Jaborá, Santa Catarina': 4208609, 'Jardinópolis, Santa Catarina': 4208955, 'Joaçaba, Santa Catarina': 4209003, 'Jupiá, Santa Catarina': 4209177, 'Lacerdópolis, Santa Catarina': 4209201, 'Lajeado Grande, Santa Catarina': 4209458, 'Lindóia do Sul, Santa Catarina': 4209854, 'Luzerna, Santa Catarina': 4210035, 'Maravilha, Santa Catarina': 4210506, 'Marema, Santa Catarina': 4210555, 'Modelo, Santa Catarina': 4210902, 'Mondaí, Santa Catarina': 4211009, 'Nova Erechim, Santa Catarina': 4211405, 'Nova Itaberaba, Santa Catarina': 4211454, 'Novo Horizonte, Santa Catarina': 4211652, 'Ouro, Santa Catarina': 4211801, 'Ouro Verde, Santa Catarina': 4211850, 'Paial, Santa Catarina': 4211876, 'Palma Sola, Santa Catarina': 4212007, 'Palmitos, Santa Catarina': 4212106, 'Paraíso, Santa Catarina': 4212239, 'Passos Maia, Santa Catarina': 4212270, 'Peritiba, Santa Catarina': 4212601, 'Pinhalzinho, Santa Catarina': 4212908, 'Piratuba, Santa Catarina': 4213104, 'Planalto Alegre, Santa Catarina': 4213153, 'Ponte Serrada, Santa Catarina': 4213401, 'Presidente Castello Branco, Santa Catarina': 4213906, 'Princesa, Santa Catarina': 4214151, 'Quilombo, Santa Catarina': 4214201, 'Riqueza, Santa Catarina': 4215075, 'Romelândia, Santa Catarina': 4215208, 'Saltinho, Santa Catarina': 4215356, 'Santa Helena, Santa Catarina': 4215554, 'Santa Terezinha do Progresso, Santa Catarina': 4215687, 'Santiago do Sul, Santa Catarina': 4215695, 'São Bernardino, Santa Catarina': 4215752, 'São Carlos, Santa Catarina': 4216008, 'São Domingos, Santa Catarina': 4216107, 'São João do Oeste, Santa Catarina': 4216255, 'São José do Cedro, Santa Catarina': 4216701, 'São Lourenço do Oeste, Santa Catarina': 4216909, 'São Miguel da Boa Vista, Santa Catarina': 4217154, 'São Miguel do Oeste, Santa Catarina': 4217204, 'Saudades, Santa Catarina': 4217303, 'Seara, Santa Catarina': 4217501, 'Serra Alta, Santa Catarina': 4217550, 'Sul Brasil, Santa Catarina': 4217758, 'Tigrinhos, Santa Catarina': 4217956, 'Treze Tílias, Santa Catarina': 4218509, 'Tunápolis, Santa Catarina': 4218756, 'União do Oeste, Santa Catarina': 4218855, 'Vargeão, Santa Catarina': 4219101, 'Vargem, Santa Catarina': 4219150, 'Vargem Bonita, Santa Catarina': 4219176, 'Xanxerê, Santa Catarina': 4219507, 'Xavantina, Santa Catarina': 4219606, 'Xaxim, Santa Catarina': 4219705, 'Zortéa, Santa Catarina': 4219853, 'Agrolândia, Santa Catarina': 4200200, 'Agronômica, Santa Catarina': 4200309, 'Apiúna, Santa Catarina': 4201257, 'Ascurra, Santa Catarina': 4201703, 'Atalanta, Santa Catarina': 4201802, 'Aurora, Santa Catarina': 4201901, 'Balneário Camboriú, Santa Catarina': 4202008, 'Barra Velha, Santa Catarina': 4202107, 'Benedito Novo, Santa Catarina': 4202206, 'Blumenau, Santa Catarina': 4202404, 'Bombinhas, Santa Catarina': 4202453, 'Botuverá, Santa Catarina': 4202701, 'Braço do Trombudo, Santa Catarina': 4202859, 'Brusque, Santa Catarina': 4202909, 'Camboriú, Santa Catarina': 4203204, 'Canelinha, Santa Catarina': 4203709, 'Chapadão do Lageado, Santa Catarina': 4204194, 'Dona Emma, Santa Catarina': 4205100, 'Doutor Pedrinho, Santa Catarina': 4205159, 'Gaspar, Santa Catarina': 4205902, 'Guabiruba, Santa Catarina': 4206306, 'Ibirama, Santa Catarina': 4206900, 'Ilhota, Santa Catarina': 4207106, 'Imbuia, Santa Catarina': 4207403, 'Indaial, Santa Catarina': 4207502, 'Itajaí, Santa Catarina': 4208203, 'Itapema, Santa Catarina': 4208302, 'Ituporanga, Santa Catarina': 4208500, 'José Boiteux, Santa Catarina': 4209151, 'Laurentino, Santa Catarina': 4209508, 'Leoberto Leal, Santa Catarina': 4209805, 'Lontras, Santa Catarina': 4209904, 'Luiz Alves, Santa Catarina': 4210001, 'Major Gercino, Santa Catarina': 4210209, 'Mirim Doce, Santa Catarina': 4210852, 'Navegantes, Santa Catarina': 4211306, 'Nova Trento, Santa Catarina': 4211504, 'Penha, Santa Catarina': 4212502, 'Petrolândia, Santa Catarina': 4212700, 'Balneário Piçarras, Santa Catarina': 4212809, 'Pomerode, Santa Catarina': 4213203, 'Porto Belo, Santa Catarina': 4213500, 'Pouso Redondo, Santa Catarina': 4213708, 'Presidente Getúlio, Santa Catarina': 4214003, 'Presidente Nereu, Santa Catarina': 4214102, 'Rio do Campo, Santa Catarina': 4214508, 'Rio do Oeste, Santa Catarina': 4214607, 'Rio dos Cedros, Santa Catarina': 4214706, 'Rio do Sul, Santa Catarina': 4214805, 'Rodeio, Santa Catarina': 4215109, 'Salete, Santa Catarina': 4215307, 'Santa Terezinha, Santa Catarina': 4215679, 'São João Batista, Santa Catarina': 4216305, 'Taió, Santa Catarina': 4217808, 'Tijucas, Santa Catarina': 4218004, 'Timbó, Santa Catarina': 4218202, 'Trombudo Central, Santa Catarina': 4218608, 'Vidal Ramos, Santa Catarina': 4219200, 'Vitor Meireles, Santa Catarina': 4219358, 'Witmarsum, Santa Catarina': 4219408, 'Alvorada, Rio Grande do Sul': 4300604, 'Amaral Ferrador, Rio Grande do Sul': 4300638, 'Arambaré, Rio Grande do Sul': 4300851, 'Araricá, Rio Grande do Sul': 4300877, 'Arroio do Sal, Rio Grande do Sul': 4301057, 'Arroio dos Ratos, Rio Grande do Sul': 4301107, 'Balneário Pinhal, Rio Grande do Sul': 4301636, 'Barão do Triunfo, Rio Grande do Sul': 4301750, 'Barra do Ribeiro, Rio Grande do Sul': 4301909, 'Bom Princípio, Rio Grande do Sul': 4302352, 'Brochier, Rio Grande do Sul': 4302659, 'Butiá, Rio Grande do Sul': 4302709, 'Cachoeirinha, Rio Grande do Sul': 4303103, 'Camaquã, Rio Grande do Sul': 4303509, 'Campo Bom, Rio Grande do Sul': 4303905, 'Canoas, Rio Grande do Sul': 4304606, 'Capão da Canoa, Rio Grande do Sul': 4304630, 'Capivari do Sul, Rio Grande do Sul': 4304671, 'Capela de Santana, Rio Grande do Sul': 4304689, 'Caraá, Rio Grande do Sul': 4304713, 'Cerro Grande do Sul, Rio Grande do Sul': 4305173, 'Charqueadas, Rio Grande do Sul': 4305355, 'Chuvisca, Rio Grande do Sul': 4305447, 'Cidreira, Rio Grande do Sul': 4305454, 'Cristal, Rio Grande do Sul': 4306056, 'Dois Irmãos, Rio Grande do Sul': 4306403, 'Dom Feliciano, Rio Grande do Sul': 4306502, 'Dom Pedro de Alcântara, Rio Grande do Sul': 4306551, 'Eldorado do Sul, Rio Grande do Sul': 4306767, 'Estância Velha, Rio Grande do Sul': 4307609, 'Esteio, Rio Grande do Sul': 4307708, 'General Câmara, Rio Grande do Sul': 4308805, 'Glorinha, Rio Grande do Sul': 4309050, 'Gravataí, Rio Grande do Sul': 4309209, 'Guaíba, Rio Grande do Sul': 4309308, 'Harmonia, Rio Grande do Sul': 4309555, 'Igrejinha, Rio Grande do Sul': 4310108, 'Imbé, Rio Grande do Sul': 4310330, 'Itati, Rio Grande do Sul': 4310652, 'Ivoti, Rio Grande do Sul': 4310801, 'Lindolfo Collor, Rio Grande do Sul': 4311627, 'Linha Nova, Rio Grande do Sul': 4311643, 'Mampituba, Rio Grande do Sul': 4311734, 'Maquiné, Rio Grande do Sul': 4311775, 'Maratá, Rio Grande do Sul': 4311791, 'Mariana Pimentel, Rio Grande do Sul': 4311981, 'Minas do Leão, Rio Grande do Sul': 4312252, 'Montenegro, Rio Grande do Sul': 4312401, 'Morrinhos do Sul, Rio Grande do Sul': 4312443, 'Morro Reuter, Rio Grande do Sul': 4312476, 'Mostardas, Rio Grande do Sul': 4312500, 'Nova Hartz, Rio Grande do Sul': 4313060, 'Nova Santa Rita, Rio Grande do Sul': 4313375, 'Novo Hamburgo, Rio Grande do Sul': 4313409, 'Osório, Rio Grande do Sul': 4313508, 'Palmares do Sul, Rio Grande do Sul': 4313656, 'Pareci Novo, Rio Grande do Sul': 4314035, 'Parobé, Rio Grande do Sul': 4314050, 'Portão, Rio Grande do Sul': 4314803, 'Porto Alegre, Rio Grande do Sul': 4314902, 'Presidente Lucena, Rio Grande do Sul': 4315149, 'Riozinho, Rio Grande do Sul': 4315750, 'Rolante, Rio Grande do Sul': 4316006, 'Salvador do Sul, Rio Grande do Sul': 4316501, 'Santa Maria do Herval, Rio Grande do Sul': 4316956, 'Santo Antônio da Patrulha, Rio Grande do Sul': 4317608, 'São Jerônimo, Rio Grande do Sul': 4318408, 'São José do Hortêncio, Rio Grande do Sul': 4318481, 'São José do Sul, Rio Grande do Sul': 4318614, 'São Leopoldo, Rio Grande do Sul': 4318705, 'São Pedro da Serra, Rio Grande do Sul': 4319356, 'São Sebastião do Caí, Rio Grande do Sul': 4319505, 'São Vendelino, Rio Grande do Sul': 4319752, 'Sapiranga, Rio Grande do Sul': 4319901, 'Sapucaia do Sul, Rio Grande do Sul': 4320008, 'Sentinela do Sul, Rio Grande do Sul': 4320354, 'Sertão Santana, Rio Grande do Sul': 4320552, 'Tapes, Rio Grande do Sul': 4321105, 'Taquara, Rio Grande do Sul': 4321204, 'Tavares, Rio Grande do Sul': 4321352, 'Terra de Areia, Rio Grande do Sul': 4321436, 'Torres, Rio Grande do Sul': 4321501, 'Tramandaí, Rio Grande do Sul': 4321600, 'Três Cachoeiras, Rio Grande do Sul': 4321667, 'Três Coroas, Rio Grande do Sul': 4321709, 'Três Forquilhas, Rio Grande do Sul': 4321832, 'Triunfo, Rio Grande do Sul': 4322004, 'Tupandi, Rio Grande do Sul': 4322251, 'Viamão, Rio Grande do Sul': 4323002, 'Xangri-lá, Rio Grande do Sul': 4323804, 'Agudo, Rio Grande do Sul': 4300109, 'Caçapava do Sul, Rio Grande do Sul': 4302808, 'Cacequi, Rio Grande do Sul': 4302907, 'Cachoeira do Sul, Rio Grande do Sul': 4303004, 'Capão do Cipó, Rio Grande do Sul': 4304655, 'Cerro Branco, Rio Grande do Sul': 4305132, 'Dilermando de Aguiar, Rio Grande do Sul': 4306379, 'Dona Francisca, Rio Grande do Sul': 4306700, 'Faxinal do Soturno, Rio Grande do Sul': 4308003, 'Formigueiro, Rio Grande do Sul': 4308409, 'Itaara, Rio Grande do Sul': 4310538, 'Itacurubi, Rio Grande do Sul': 4310553, 'Ivorá, Rio Grande do Sul': 4310751, 'Jaguari, Rio Grande do Sul': 4311106, 'Jari, Rio Grande do Sul': 4311130, 'Júlio de Castilhos, Rio Grande do Sul': 4311205, 'Lavras do Sul, Rio Grande do Sul': 4311502, 'Mata, Rio Grande do Sul': 4312104, 'Nova Esperança do Sul, Rio Grande do Sul': 4313037, 'Nova Palma, Rio Grande do Sul': 4313102, 'Novo Cabrais, Rio Grande do Sul': 4313391, 'Paraíso do Sul, Rio Grande do Sul': 4314027, 'Pinhal Grande, Rio Grande do Sul': 4314472, 'Quevedos, Rio Grande do Sul': 4315321, 'Restinga Seca, Rio Grande do Sul': 4315503, 'Santa Maria, Rio Grande do Sul': 4316907, 'Santa Margarida do Sul, Rio Grande do Sul': 4316972, 'Santana da Boa Vista, Rio Grande do Sul': 4317004, 'Santiago, Rio Grande do Sul': 4317400, 'São Francisco de Assis, Rio Grande do Sul': 4318101, 'São Gabriel, Rio Grande do Sul': 4318309, 'São João do Polêsine, Rio Grande do Sul': 4318432, 'São Martinho da Serra, Rio Grande do Sul': 4319125, 'São Pedro do Sul, Rio Grande do Sul': 4319406, 'São Sepé, Rio Grande do Sul': 4319604, 'São Vicente do Sul, Rio Grande do Sul': 4319802, 'Silveira Martins, Rio Grande do Sul': 4320651, 'Toropi, Rio Grande do Sul': 4321493, 'Unistalda, Rio Grande do Sul': 4322376, 'Vila Nova do Sul, Rio Grande do Sul': 4323457, 'Ajuricaba, Rio Grande do Sul': 4300208, 'Alecrim, Rio Grande do Sul': 4300307, 'Alegria, Rio Grande do Sul': 4300455, 'Augusto Pestana, Rio Grande do Sul': 4301503, 'Barra do Guarita, Rio Grande do Sul': 4301859, 'Boa Vista do Buricá, Rio Grande do Sul': 4302204, 'Bom Progresso, Rio Grande do Sul': 4302378, 'Bossoroca, Rio Grande do Sul': 4302501, 'Bozano, Rio Grande do Sul': 4302584, 'Braga, Rio Grande do Sul': 4302600, 'Caibaté, Rio Grande do Sul': 4303301, 'Campina das Missões, Rio Grande do Sul': 4303707, 'Campo Novo, Rio Grande do Sul': 4304002, 'Cândido Godói, Rio Grande do Sul': 4304309, 'Catuípe, Rio Grande do Sul': 4305009, 'Cerro Largo, Rio Grande do Sul': 4305207, 'Chiapetta, Rio Grande do Sul': 4305405, 'Condor, Rio Grande do Sul': 4305702, 'Coronel Barros, Rio Grande do Sul': 4305871, 'Coronel Bicaco, Rio Grande do Sul': 4305900, 'Crissiumal, Rio Grande do Sul': 4306007, 'Derrubadas, Rio Grande do Sul': 4306320, 'Dezesseis de Novembro, Rio Grande do Sul': 4306353, 'Doutor Maurício Cardoso, Rio Grande do Sul': 4306734, 'Entre-Ijuís, Rio Grande do Sul': 4306932, 'Esperança do Sul, Rio Grande do Sul': 4307450, 'Eugênio de Castro, Rio Grande do Sul': 4307831, 'Garruchos, Rio Grande do Sul': 4308656, 'Giruá, Rio Grande do Sul': 4309001, 'Guarani das Missões, Rio Grande do Sul': 4309506, 'Horizontina, Rio Grande do Sul': 4309605, 'Humaitá, Rio Grande do Sul': 4309704, 'Ijuí, Rio Grande do Sul': 4310207, 'Independência, Rio Grande do Sul': 4310405, 'Inhacorá, Rio Grande do Sul': 4310413, 'Jóia, Rio Grande do Sul': 4311155, 'Mato Queimado, Rio Grande do Sul': 4312179, 'Miraguaí, Rio Grande do Sul': 4312302, 'Nova Candelária, Rio Grande do Sul': 4313011, 'Nova Ramada, Rio Grande do Sul': 4313334, 'Novo Machado, Rio Grande do Sul': 4313425, 'Panambi, Rio Grande do Sul': 4313904, 'Pejuçara, Rio Grande do Sul': 4314308, 'Pirapó, Rio Grande do Sul': 4314555, 'Porto Lucena, Rio Grande do Sul': 4315008, 'Porto Mauá, Rio Grande do Sul': 4315057, 'Porto Vera Cruz, Rio Grande do Sul': 4315073, 'Porto Xavier, Rio Grande do Sul': 4315107, 'Redentora, Rio Grande do Sul': 4315404, 'Rolador, Rio Grande do Sul': 4315958, 'Roque Gonzales, Rio Grande do Sul': 4316303, 'Salvador das Missões, Rio Grande do Sul': 4316477, 'Santa Rosa, Rio Grande do Sul': 4317202, 'Santo Ângelo, Rio Grande do Sul': 4317509, 'Santo Antônio das Missões, Rio Grande do Sul': 4317707, 'Santo Augusto, Rio Grande do Sul': 4317806, 'Santo Cristo, Rio Grande do Sul': 4317905, 'São José do Inhacorá, Rio Grande do Sul': 4318499, 'São Luiz Gonzaga, Rio Grande do Sul': 4318903, 'São Martinho, Rio Grande do Sul': 4319109, 'São Miguel das Missões, Rio Grande do Sul': 4319158, 'São Nicolau, Rio Grande do Sul': 4319208, 'São Paulo das Missões, Rio Grande do Sul': 4319307, 'São Pedro do Butiá, Rio Grande do Sul': 4319372, 'São Valério do Sul, Rio Grande do Sul': 4319737, 'Sede Nova, Rio Grande do Sul': 4320230, 'Senador Salgado Filho, Rio Grande do Sul': 4320321, 'Sete de Setembro, Rio Grande do Sul': 4320578, 'Tenente Portela, Rio Grande do Sul': 4321402, 'Tiradentes do Sul, Rio Grande do Sul': 4321477, 'Três de Maio, Rio Grande do Sul': 4321808, 'Três Passos, Rio Grande do Sul': 4321907, 'Tucunduva, Rio Grande do Sul': 4322103, 'Tuparendi, Rio Grande do Sul': 4322301, 'Ubiretama, Rio Grande do Sul': 4322343, 'Vista Gaúcha, Rio Grande do Sul': 4323705, 'Vitória das Missões, Rio Grande do Sul': 4323754, 'Água Santa, Rio Grande do Sul': 4300059, 'Almirante Tamandaré do Sul, Rio Grande do Sul': 4300471, 'Alpestre, Rio Grande do Sul': 4300505, 'Alto Alegre, Rio Grande do Sul': 4300554, 'Ametista do Sul, Rio Grande do Sul': 4300646, 'Aratiba, Rio Grande do Sul': 4300901, 'Arvorezinha, Rio Grande do Sul': 4301404, 'Áurea, Rio Grande do Sul': 4301552, 'Barão de Cotegipe, Rio Grande do Sul': 4301701, 'Barracão, Rio Grande do Sul': 4301800, 'Barra do Rio Azul, Rio Grande do Sul': 4301925, 'Barra Funda, Rio Grande do Sul': 4301958, 'Barros Cassal, Rio Grande do Sul': 4302006, 'Benjamin Constant do Sul, Rio Grande do Sul': 4302055, 'Boa Vista das Missões, Rio Grande do Sul': 4302154, 'Boa Vista do Cadeado, Rio Grande do Sul': 4302220, 'Boa Vista do Incra, Rio Grande do Sul': 4302238, 'Cacique Doble, Rio Grande do Sul': 4303202, 'Caiçara, Rio Grande do Sul': 4303400, 'Camargo, Rio Grande do Sul': 4303558, 'Campinas do Sul, Rio Grande do Sul': 4303806, 'Campos Borges, Rio Grande do Sul': 4304101, 'Capão Bonito do Sul, Rio Grande do Sul': 4304622, 'Carazinho, Rio Grande do Sul': 4304705, 'Carlos Gomes, Rio Grande do Sul': 4304853, 'Casca, Rio Grande do Sul': 4304903, 'Caseiros, Rio Grande do Sul': 4304952, 'Centenário, Rio Grande do Sul': 4305116, 'Cerro Grande, Rio Grande do Sul': 4305157, 'Chapada, Rio Grande do Sul': 4305306, 'Charrua, Rio Grande do Sul': 4305371, 'Ciríaco, Rio Grande do Sul': 4305504, 'Colorado, Rio Grande do Sul': 4305603, 'Constantina, Rio Grande do Sul': 4305801, 'Coqueiros do Sul, Rio Grande do Sul': 4305850, 'Coxilha, Rio Grande do Sul': 4305975, 'Cristal do Sul, Rio Grande do Sul': 4306072, 'Cruz Alta, Rio Grande do Sul': 4306106, 'Cruzaltense, Rio Grande do Sul': 4306130, 'David Canabarro, Rio Grande do Sul': 4306304, 'Dois Irmãos das Missões, Rio Grande do Sul': 4306429, 'Engenho Velho, Rio Grande do Sul': 4306924, 'Entre Rios do Sul, Rio Grande do Sul': 4306957, 'Erebango, Rio Grande do Sul': 4306973, 'Erechim, Rio Grande do Sul': 4307005, 'Ernestina, Rio Grande do Sul': 4307054, 'Erval Grande, Rio Grande do Sul': 4307203, 'Erval Seco, Rio Grande do Sul': 4307302, 'Espumoso, Rio Grande do Sul': 4307500, 'Estação, Rio Grande do Sul': 4307559, 'Faxinalzinho, Rio Grande do Sul': 4308052, 'Floriano Peixoto, Rio Grande do Sul': 4308250, 'Fontoura Xavier, Rio Grande do Sul': 4308300, 'Fortaleza dos Valos, Rio Grande do Sul': 4308458, 'Frederico Westphalen, Rio Grande do Sul': 4308508, 'Gaurama, Rio Grande do Sul': 4308706, 'Gentil, Rio Grande do Sul': 4308854, 'Getúlio Vargas, Rio Grande do Sul': 4308904, 'Gramado dos Loureiros, Rio Grande do Sul': 4309126, 'Ibiaçá, Rio Grande do Sul': 4309803, 'Ibiraiaras, Rio Grande do Sul': 4309902, 'Ibirapuitã, Rio Grande do Sul': 4309951, 'Ibirubá, Rio Grande do Sul': 4310009, 'Ipiranga do Sul, Rio Grande do Sul': 4310462, 'Iraí, Rio Grande do Sul': 4310504, 'Itapuca, Rio Grande do Sul': 4310579, 'Itatiba do Sul, Rio Grande do Sul': 4310702, 'Jaboticaba, Rio Grande do Sul': 4310850, 'Jacuizinho, Rio Grande do Sul': 4310876, 'Jacutinga, Rio Grande do Sul': 4310900, 'Lagoa dos Três Cantos, Rio Grande do Sul': 4311270, 'Lagoa Vermelha, Rio Grande do Sul': 4311304, 'Lajeado do Bugre, Rio Grande do Sul': 4311429, 'Liberato Salzano, Rio Grande do Sul': 4311601, 'Machadinho, Rio Grande do Sul': 4311700, 'Marau, Rio Grande do Sul': 4311809, 'Marcelino Ramos, Rio Grande do Sul': 4311908, 'Mariano Moro, Rio Grande do Sul': 4312005, 'Mato Castelhano, Rio Grande do Sul': 4312138, 'Maximiliano de Almeida, Rio Grande do Sul': 4312203, 'Mormaço, Rio Grande do Sul': 4312427, 'Muliterno, Rio Grande do Sul': 4312625, 'Não-Me-Toque, Rio Grande do Sul': 4312658, 'Nicolau Vergueiro, Rio Grande do Sul': 4312674, 'Nonoai, Rio Grande do Sul': 4312708, 'Nova Alvorada, Rio Grande do Sul': 4312757, 'Nova Boa Vista, Rio Grande do Sul': 4312955, 'Novo Tiradentes, Rio Grande do Sul': 4313441, 'Novo Xingu, Rio Grande do Sul': 4313466, 'Novo Barreiro, Rio Grande do Sul': 4313490, 'Paim Filho, Rio Grande do Sul': 4313607, 'Palmeira das Missões, Rio Grande do Sul': 4313706, 'Palmitinho, Rio Grande do Sul': 4313805, 'Passo Fundo, Rio Grande do Sul': 4314100, 'Paulo Bento, Rio Grande do Sul': 4314134, 'Pinhal, Rio Grande do Sul': 4314456, 'Pinheirinho do Vale, Rio Grande do Sul': 4314498, 'Planalto, Rio Grande do Sul': 4314704, 'Pontão, Rio Grande do Sul': 4314779, 'Ponte Preta, Rio Grande do Sul': 4314787, 'Quatro Irmãos, Rio Grande do Sul': 4315313, 'Quinze de Novembro, Rio Grande do Sul': 4315354, 'Rio dos Índios, Rio Grande do Sul': 4315552, 'Rodeio Bonito, Rio Grande do Sul': 4315909, 'Ronda Alta, Rio Grande do Sul': 4316105, 'Rondinha, Rio Grande do Sul': 4316204, 'Sagrada Família, Rio Grande do Sul': 4316428, 'Saldanha Marinho, Rio Grande do Sul': 4316436, 'Salto do Jacuí, Rio Grande do Sul': 4316451, 'Sananduva, Rio Grande do Sul': 4316600, 'Santa Bárbara do Sul, Rio Grande do Sul': 4316709, 'Santa Cecília do Sul, Rio Grande do Sul': 4316733, 'Santo Antônio do Palma, Rio Grande do Sul': 4317558, 'Santo Antônio do Planalto, Rio Grande do Sul': 4317756, 'Santo Expedito do Sul, Rio Grande do Sul': 4317954, 'São Domingos do Sul, Rio Grande do Sul': 4318051, 'São João da Urtiga, Rio Grande do Sul': 4318424, 'São José das Missões, Rio Grande do Sul': 4318457, 'São José do Herval, Rio Grande do Sul': 4318465, 'São José do Ouro, Rio Grande do Sul': 4318606, 'São Pedro das Missões, Rio Grande do Sul': 4319364, 'São Valentim, Rio Grande do Sul': 4319703, 'Sarandi, Rio Grande do Sul': 4320107, 'Seberi, Rio Grande do Sul': 4320206, 'Selbach, Rio Grande do Sul': 4320305, 'Sertão, Rio Grande do Sul': 4320503, 'Severiano de Almeida, Rio Grande do Sul': 4320602, 'Soledade, Rio Grande do Sul': 4320800, 'Tapejara, Rio Grande do Sul': 4320909, 'Tapera, Rio Grande do Sul': 4321006, 'Taquaruçu do Sul, Rio Grande do Sul': 4321329, 'Tio Hugo, Rio Grande do Sul': 4321469, 'Três Arroios, Rio Grande do Sul': 4321634, 'Três Palmeiras, Rio Grande do Sul': 4321857, 'Trindade do Sul, Rio Grande do Sul': 4321956, 'Tupanci do Sul, Rio Grande do Sul': 4322186, 'Tupanciretã, Rio Grande do Sul': 4322202, 'Vanini, Rio Grande do Sul': 4322558, 'Viadutos, Rio Grande do Sul': 4322905, 'Vicente Dutra, Rio Grande do Sul': 4323101, 'Victor Graeff, Rio Grande do Sul': 4323200, 'Vila Lângaro, Rio Grande do Sul': 4323358, 'Vila Maria, Rio Grande do Sul': 4323408, 'Vista Alegre, Rio Grande do Sul': 4323507, 'Alto Feliz, Rio Grande do Sul': 4300570, 'André da Rocha, Rio Grande do Sul': 4300661, 'Antônio Prado, Rio Grande do Sul': 4300802, 'Barão, Rio Grande do Sul': 4301651, 'Bento Gonçalves, Rio Grande do Sul': 4302105, 'Boa Vista do Sul, Rio Grande do Sul': 4302253, 'Bom Jesus, Rio Grande do Sul': 4302303, 'Cambará do Sul, Rio Grande do Sul': 4303608, 'Campestre da Serra, Rio Grande do Sul': 4303673, 'Canela, Rio Grande do Sul': 4304408, 'Carlos Barbosa, Rio Grande do Sul': 4304804, 'Caxias do Sul, Rio Grande do Sul': 4305108, 'Coronel Pilar, Rio Grande do Sul': 4305934, 'Cotiporã, Rio Grande do Sul': 4305959, 'Dois Lajeados, Rio Grande do Sul': 4306452, 'Esmeralda, Rio Grande do Sul': 4307401, 'Fagundes Varela, Rio Grande do Sul': 4307864, 'Farroupilha, Rio Grande do Sul': 4307906, 'Feliz, Rio Grande do Sul': 4308102, 'Flores da Cunha, Rio Grande do Sul': 4308201, 'Garibaldi, Rio Grande do Sul': 4308607, 'Gramado, Rio Grande do Sul': 4309100, 'Guabiju, Rio Grande do Sul': 4309258, 'Guaporé, Rio Grande do Sul': 4309407, 'Ipê, Rio Grande do Sul': 4310439, 'Jaquirana, Rio Grande do Sul': 4311122, 'Montauri, Rio Grande do Sul': 4312351, 'Monte Alegre dos Campos, Rio Grande do Sul': 4312377, 'Monte Belo do Sul, Rio Grande do Sul': 4312385, 'Muitos Capões, Rio Grande do Sul': 4312617, 'Nova Araçá, Rio Grande do Sul': 4312807, 'Nova Bassano, Rio Grande do Sul': 4312906, 'Nova Pádua, Rio Grande do Sul': 4313086, 'Nova Petrópolis, Rio Grande do Sul': 4313201, 'Nova Prata, Rio Grande do Sul': 4313300, 'Nova Roma do Sul, Rio Grande do Sul': 4313359, 'Paraí, Rio Grande do Sul': 4314001, 'Picada Café, Rio Grande do Sul': 4314423, 'Pinhal da Serra, Rio Grande do Sul': 4314464, 'Pinto Bandeira, Rio Grande do Sul': 4314548, 'Protásio Alves, Rio Grande do Sul': 4315172, 'Santa Tereza, Rio Grande do Sul': 4317251, 'São Francisco de Paula, Rio Grande do Sul': 4318200, 'São Jorge, Rio Grande do Sul': 4318440, 'São José dos Ausentes, Rio Grande do Sul': 4318622, 'São Marcos, Rio Grande do Sul': 4319000, 'São Valentim do Sul, Rio Grande do Sul': 4319711, 'Serafina Corrêa, Rio Grande do Sul': 4320404, 'União da Serra, Rio Grande do Sul': 4322350, 'Vacaria, Rio Grande do Sul': 4322509, 'Vale Real, Rio Grande do Sul': 4322541, 'Veranópolis, Rio Grande do Sul': 4322806, 'Vila Flores, Rio Grande do Sul': 4323309, 'Vista Alegre do Prata, Rio Grande do Sul': 4323606, 'Anta Gorda, Rio Grande do Sul': 4300703, 'Arroio do Meio, Rio Grande do Sul': 4301008, 'Arroio do Tigre, Rio Grande do Sul': 4301206, 'Bom Retiro do Sul, Rio Grande do Sul': 4302402, 'Boqueirão do Leão, Rio Grande do Sul': 4302451, 'Candelária, Rio Grande do Sul': 4304200, 'Canudos do Vale, Rio Grande do Sul': 4304614, 'Capitão, Rio Grande do Sul': 4304697, 'Colinas, Rio Grande do Sul': 4305587, 'Coqueiro Baixo, Rio Grande do Sul': 4305835, 'Cruzeiro do Sul, Rio Grande do Sul': 4306205, 'Doutor Ricardo, Rio Grande do Sul': 4306759, 'Encantado, Rio Grande do Sul': 4306809, 'Encruzilhada do Sul, Rio Grande do Sul': 4306908, 'Estrela, Rio Grande do Sul': 4307807, 'Estrela Velha, Rio Grande do Sul': 4307815, 'Fazenda Vilanova, Rio Grande do Sul': 4308078, 'Forquetinha, Rio Grande do Sul': 4308433, 'Gramado Xavier, Rio Grande do Sul': 4309159, 'Herveiras, Rio Grande do Sul': 4309571, 'Ibarama, Rio Grande do Sul': 4309753, 'Ilópolis, Rio Grande do Sul': 4310306, 'Imigrante, Rio Grande do Sul': 4310363, 'Lagoa Bonita do Sul, Rio Grande do Sul': 4311239, 'Lagoão, Rio Grande do Sul': 4311254, 'Lajeado, Rio Grande do Sul': 4311403, 'Marques de Souza, Rio Grande do Sul': 4312054, 'Mato Leitão, Rio Grande do Sul': 4312153, 'Muçum, Rio Grande do Sul': 4312609, 'Nova Bréscia, Rio Grande do Sul': 4313003, 'Pantano Grande, Rio Grande do Sul': 4313953, 'Passa Sete, Rio Grande do Sul': 4314068, 'Passo do Sobrado, Rio Grande do Sul': 4314076, 'Paverama, Rio Grande do Sul': 4314159, 'Poço das Antas, Rio Grande do Sul': 4314753, 'Pouso Novo, Rio Grande do Sul': 4315131, 'Progresso, Rio Grande do Sul': 4315156, 'Putinga, Rio Grande do Sul': 4315206, 'Relvado, Rio Grande do Sul': 4315453, 'Rio Pardo, Rio Grande do Sul': 4315701, 'Roca Sales, Rio Grande do Sul': 4315800, 'Santa Clara do Sul, Rio Grande do Sul': 4316758, 'Santa Cruz do Sul, Rio Grande do Sul': 4316808, 'Segredo, Rio Grande do Sul': 4320263, 'Sério, Rio Grande do Sul': 4320453, 'Sinimbu, Rio Grande do Sul': 4320677, 'Sobradinho, Rio Grande do Sul': 4320701, 'Tabaí, Rio Grande do Sul': 4320859, 'Taquari, Rio Grande do Sul': 4321303, 'Teutônia, Rio Grande do Sul': 4321451, 'Travesseiro, Rio Grande do Sul': 4321626, 'Tunas, Rio Grande do Sul': 4322152, 'Vale Verde, Rio Grande do Sul': 4322525, 'Vale do Sol, Rio Grande do Sul': 4322533, 'Venâncio Aires, Rio Grande do Sul': 4322608, 'Vera Cruz, Rio Grande do Sul': 4322707, 'Vespasiano Correa, Rio Grande do Sul': 4322855, 'Westfalia, Rio Grande do Sul': 4323770, 'Água Clara, Mato Grosso do Sul': 5000203, 'Alcinópolis, Mato Grosso do Sul': 5000252, 'Aparecida do Taboado, Mato Grosso do Sul': 5001003, 'Bandeirantes, Mato Grosso do Sul': 5001508, 'Bataguassu, Mato Grosso do Sul': 5001904, 'Brasilândia, Mato Grosso do Sul': 5002308, 'Camapuã, Mato Grosso do Sul': 5002605, 'Campo Grande, Mato Grosso do Sul': 5002704, 'Cassilândia, Mato Grosso do Sul': 5002902, 'Chapadão do Sul, Mato Grosso do Sul': 5002951, 'Corguinho, Mato Grosso do Sul': 5003108, 'Costa Rica, Mato Grosso do Sul': 5003256, 'Coxim, Mato Grosso do Sul': 5003306, 'Dois Irmãos do Buriti, Mato Grosso do Sul': 5003488, 'Figueirão, Mato Grosso do Sul': 5003900, 'Inocência, Mato Grosso do Sul': 5004403, 'Jaraguari, Mato Grosso do Sul': 5004908, 'Nova Alvorada do Sul, Mato Grosso do Sul': 5006002, 'Paraíso das Águas, Mato Grosso do Sul': 5006275, 'Paranaíba, Mato Grosso do Sul': 5006309, 'Pedro Gomes, Mato Grosso do Sul': 5006408, 'Ribas do Rio Pardo, Mato Grosso do Sul': 5007109, 'Rio Negro, Mato Grosso do Sul': 5007307, 'Rio Verde de Mato Grosso, Mato Grosso do Sul': 5007406, 'Rochedo, Mato Grosso do Sul': 5007505, 'Santa Rita do Pardo, Mato Grosso do Sul': 5007554, 'São Gabriel do Oeste, Mato Grosso do Sul': 5007695, 'Selvíria, Mato Grosso do Sul': 5007802, 'Sidrolândia, Mato Grosso do Sul': 5007901, 'Sonora, Mato Grosso do Sul': 5007935, 'Terenos, Mato Grosso do Sul': 5008008, 'Três Lagoas, Mato Grosso do Sul': 5008305, 'Amambai, Mato Grosso do Sul': 5000609, 'Anaurilândia, Mato Grosso do Sul': 5000807, 'Angélica, Mato Grosso do Sul': 5000856, 'Antônio João, Mato Grosso do Sul': 5000906, 'Aral Moreira, Mato Grosso do Sul': 5001243, 'Batayporã, Mato Grosso do Sul': 5002001, 'Caarapó, Mato Grosso do Sul': 5002407, 'Coronel Sapucaia, Mato Grosso do Sul': 5003157, 'Deodápolis, Mato Grosso do Sul': 5003454, 'Douradina, Mato Grosso do Sul': 5003504, 'Dourados, Mato Grosso do Sul': 5003702, 'Eldorado, Mato Grosso do Sul': 5003751, 'Fátima do Sul, Mato Grosso do Sul': 5003801, 'Glória de Dourados, Mato Grosso do Sul': 5004007, 'Iguatemi, Mato Grosso do Sul': 5004304, 'Itaporã, Mato Grosso do Sul': 5004502, 'Itaquiraí, Mato Grosso do Sul': 5004601, 'Ivinhema, Mato Grosso do Sul': 5004700, 'Japorã, Mato Grosso do Sul': 5004809, 'Jateí, Mato Grosso do Sul': 5005103, 'Juti, Mato Grosso do Sul': 5005152, 'Laguna Carapã, Mato Grosso do Sul': 5005251, 'Maracaju, Mato Grosso do Sul': 5005400, 'Mundo Novo, Mato Grosso do Sul': 5005681, 'Naviraí, Mato Grosso do Sul': 5005707, 'Nova Andradina, Mato Grosso do Sul': 5006200, 'Novo Horizonte do Sul, Mato Grosso do Sul': 5006259, 'Paranhos, Mato Grosso do Sul': 5006358, 'Ponta Porã, Mato Grosso do Sul': 5006606, 'Rio Brilhante, Mato Grosso do Sul': 5007208, 'Sete Quedas, Mato Grosso do Sul': 5007703, 'Tacuru, Mato Grosso do Sul': 5007950, 'Taquarussu, Mato Grosso do Sul': 5007976, 'Vicentina, Mato Grosso do Sul': 5008404, 'Acorizal, Mato Grosso': 5100102, 'Alto Paraguai, Mato Grosso': 5100508, 'Arenápolis, Mato Grosso': 5101308, 'Barão de Melgaço, Mato Grosso': 5101605, 'Barra do Bugres, Mato Grosso': 5101704, 'Brasnorte, Mato Grosso': 5101902, 'Campo Novo do Parecis, Mato Grosso': 5102637, 'Campo Verde, Mato Grosso': 5102678, 'Chapada dos Guimarães, Mato Grosso': 5103007, 'Cuiabá, Mato Grosso': 5103403, 'Denise, Mato Grosso': 5103452, 'Diamantino, Mato Grosso': 5103502, 'Jangada, Mato Grosso': 5104906, 'Nobres, Mato Grosso': 5105903, 'Nortelândia, Mato Grosso': 5106000, 'Nossa Senhora do Livramento, Mato Grosso': 5106109, 'Nova Brasilândia, Mato Grosso': 5106208, 'Nova Olímpia, Mato Grosso': 5106232, 'Planalto da Serra, Mato Grosso': 5106455, 'Poconé, Mato Grosso': 5106505, 'Porto Estrela, Mato Grosso': 5106851, 'Santo Afonso, Mato Grosso': 5107263, 'São José do Rio Claro, Mato Grosso': 5107305, 'Rosário Oeste, Mato Grosso': 5107701, 'Santo Antônio do Leverger, Mato Grosso': 5107800, 'Sapezal, Mato Grosso': 5107875, 'Tangará da Serra, Mato Grosso': 5107958, 'Várzea Grande, Mato Grosso': 5108402, 'Nova Marilândia, Mato Grosso': 5108857, 'Nova Maringá, Mato Grosso': 5108907, 'Alta Floresta, Mato Grosso': 5100250, 'Apiacás, Mato Grosso': 5100805, 'Aripuanã, Mato Grosso': 5101407, 'Carlinda, Mato Grosso': 5102793, 'Castanheira, Mato Grosso': 5102850, 'Cláudia, Mato Grosso': 5103056, 'Colíder, Mato Grosso': 5103205, 'Colniza, Mato Grosso': 5103254, 'Cotriguaçu, Mato Grosso': 5103379, 'Feliz Natal, Mato Grosso': 5103700, 'Guarantã do Norte, Mato Grosso': 5104104, 'Ipiranga do Norte, Mato Grosso': 5104526, 'Itanhangá, Mato Grosso': 5104542, 'Itaúba, Mato Grosso': 5104559, 'Juara, Mato Grosso': 5105101, 'Juína, Mato Grosso': 5105150, 'Juruena, Mato Grosso': 5105176, 'Lucas do Rio Verde, Mato Grosso': 5105259, 'Marcelândia, Mato Grosso': 5105580, 'Matupá, Mato Grosso': 5105606, 'Nova Bandeirantes, Mato Grosso': 5106158, 'Nova Santa Helena, Mato Grosso': 5106190, 'Nova Canaã do Norte, Mato Grosso': 5106216, 'Nova Mutum, Mato Grosso': 5106224, 'Nova Ubiratã, Mato Grosso': 5106240, 'Novo Mundo, Mato Grosso': 5106265, 'Novo Horizonte do Norte, Mato Grosso': 5106273, 'Paranaíta, Mato Grosso': 5106299, 'Peixoto de Azevedo, Mato Grosso': 5106422, 'Porto dos Gaúchos, Mato Grosso': 5106802, 'Santa Carmem, Mato Grosso': 5107248, 'Rondolândia, Mato Grosso': 5107578, 'Santa Rita do Trivelato, Mato Grosso': 5107768, 'Sinop, Mato Grosso': 5107909, 'Sorriso, Mato Grosso': 5107925, 'Tabaporã, Mato Grosso': 5107941, 'Tapurah, Mato Grosso': 5108006, 'Terra Nova do Norte, Mato Grosso': 5108055, 'União do Sul, Mato Grosso': 5108303, 'Vera, Mato Grosso': 5108501, 'Nova Guarita, Mato Grosso': 5108808, 'Nova Monte Verde, Mato Grosso': 5108956, 'Água Boa, Mato Grosso': 5100201, 'Alto Boa Vista, Mato Grosso': 5100359, 'Araguaiana, Mato Grosso': 5101001, 'Barra do Garças, Mato Grosso': 5101803, 'Bom Jesus do Araguaia, Mato Grosso': 5101852, 'Campinápolis, Mato Grosso': 5102603, 'Canabrava do Norte, Mato Grosso': 5102694, 'Canarana, Mato Grosso': 5102702, 'Cocalinho, Mato Grosso': 5103106, 'Confresa, Mato Grosso': 5103353, 'Gaúcha do Norte, Mato Grosso': 5103858, 'General Carneiro, Mato Grosso': 5103908, 'Luciara, Mato Grosso': 5105309, 'Nova Nazaré, Mato Grosso': 5106174, 'Nova Xavantina, Mato Grosso': 5106257, 'Novo São Joaquim, Mato Grosso': 5106281, 'Novo Santo Antônio, Mato Grosso': 5106315, 'Pontal do Araguaia, Mato Grosso': 5106653, 'Ponte Branca, Mato Grosso': 5106703, 'Porto Alegre do Norte, Mato Grosso': 5106778, 'Querência, Mato Grosso': 5107065, 'Ribeirão Cascalheira, Mato Grosso': 5107180, 'Ribeirãozinho, Mato Grosso': 5107198, 'São José do Xingu, Mato Grosso': 5107354, 'Santa Cruz do Xingu, Mato Grosso': 5107743, 'Santa Terezinha, Mato Grosso': 5107776, 'São Félix do Araguaia, Mato Grosso': 5107859, 'Serra Nova Dourada, Mato Grosso': 5107883, 'Torixoréu, Mato Grosso': 5108204, 'Vila Rica, Mato Grosso': 5108600, 'Abadia de Goiás, Goiás': 5200050, 'Abadiânia, Goiás': 5200100, 'Adelândia, Goiás': 5200159, 'Alexânia, Goiás': 5200308, 'Americano do Brasil, Goiás': 5200852, 'Anápolis, Goiás': 5201108, 'Anhanguera, Goiás': 5201207, 'Anicuns, Goiás': 5201306, 'Aparecida de Goiânia, Goiás': 5201405, 'Araçu, Goiás': 5201603, 'Aragoiânia, Goiás': 5201801, 'Araguapaz, Goiás': 5202155, 'Aruanã, Goiás': 5202502, 'Avelinópolis, Goiás': 5202809, 'Bela Vista de Goiás, Goiás': 5203302, 'Bonfinópolis, Goiás': 5203559, 'Brazabrantes, Goiás': 5203609, 'Britânia, Goiás': 5203807, 'Caldazinha, Goiás': 5204557, 'Campo Alegre de Goiás, Goiás': 5204805, 'Campo Limpo de Goiás, Goiás': 5204854, 'Catalão, Goiás': 5205109, 'Caturaí, Goiás': 5205208, 'Corumbá de Goiás, Goiás': 5205802, 'Cumari, Goiás': 5206602, 'Damolândia, Goiás': 5206800, 'Davinópolis, Goiás': 5206909, 'Faina, Goiás': 5207535, 'Gameleira de Goiás, Goiás': 5208152, 'Goianápolis, Goiás': 5208400, 'Goiandira, Goiás': 5208509, 'Goiânia, Goiás': 5208707, 'Goianira, Goiás': 5208806, 'Goiás, Goiás': 5208905, 'Guapó, Goiás': 5209200, 'Guaraíta, Goiás': 5209291, 'Heitoraí, Goiás': 5209606, 'Hidrolândia, Goiás': 5209705, 'Inhumas, Goiás': 5210000, 'Ipameri, Goiás': 5210109, 'Itaberaí, Goiás': 5210406, 'Itaguari, Goiás': 5210562, 'Itaguaru, Goiás': 5210604, 'Itapirapuã, Goiás': 5211008, 'Itapuranga, Goiás': 5211206, 'Itauçu, Goiás': 5211404, 'Jaraguá, Goiás': 5211800, 'Jesúpolis, Goiás': 5212055, 'Jussara, Goiás': 5212204, 'Leopoldo de Bulhões, Goiás': 5212303, 'Matrinchã, Goiás': 5212956, 'Mossâmedes, Goiás': 5213905, 'Mozarlândia, Goiás': 5214002, 'Nerópolis, Goiás': 5214507, 'Nova Aurora, Goiás': 5214804, 'Nova Crixás, Goiás': 5214838, 'Nova Veneza, Goiás': 5215009, 'Novo Brasil, Goiás': 5215207, 'Orizona, Goiás': 5215306, 'Ouro Verde de Goiás, Goiás': 5215405, 'Ouvidor, Goiás': 5215504, 'Palmelo, Goiás': 5215801, 'Petrolina de Goiás, Goiás': 5216809, 'Pirenópolis, Goiás': 5217302, 'Pires do Rio, Goiás': 5217401, 'Santa Cruz de Goiás, Goiás': 5219209, 'Santa Fé de Goiás, Goiás': 5219258, 'Santa Rosa de Goiás, Goiás': 5219506, 'Santo Antônio de Goiás, Goiás': 5219738, 'São Francisco de Goiás, Goiás': 5219902, 'São Miguel do Passa Quatro, Goiás': 5220264, 'Senador Canedo, Goiás': 5220454, 'Silvânia, Goiás': 5220603, 'Taquaral de Goiás, Goiás': 5221007, 'Terezópolis de Goiás, Goiás': 5221197, 'Três Ranchos, Goiás': 5221304, 'Trindade, Goiás': 5221403, 'Urutaí, Goiás': 5221809, 'Varjão, Goiás': 5221908, 'Vianópolis, Goiás': 5222005, 'Aparecida do Rio Doce, Goiás': 5201454, 'Aporé, Goiás': 5201504, 'Cachoeira Alta, Goiás': 5204102, 'Caçu, Goiás': 5204300, 'Caiapônia, Goiás': 5204409, 'Castelândia, Goiás': 5205059, 'Chapadão do Céu, Goiás': 5205471, 'Doverlândia, Goiás': 5207253, 'Gouvelândia, Goiás': 5209150, 'Inaciolândia, Goiás': 5209937, 'Itajá, Goiás': 5210802, 'Itarumã, Goiás': 5211305, 'Jataí, Goiás': 5211909, 'Lagoa Santa, Goiás': 5212253, 'Maurilândia, Goiás': 5213004, 'Mineiros, Goiás': 5213103, 'Montividiu, Goiás': 5213756, 'Paranaiguara, Goiás': 5216304, 'Perolândia, Goiás': 5216452, 'Porteirão, Goiás': 5218052, 'Portelândia, Goiás': 5218102, 'Quirinópolis, Goiás': 5218508, 'Rio Verde, Goiás': 5218805, 'Santa Helena de Goiás, Goiás': 5219308, 'Santa Rita do Araguaia, Goiás': 5219407, 'Santo Antônio da Barra, Goiás': 5219712, 'São Simão, Goiás': 5220405, 'Serranópolis, Goiás': 5220504, 'Turvelândia, Goiás': 5221551, 'Acreúna, Goiás': 5200134, 'Amorinópolis, Goiás': 5200902, 'Aragarças, Goiás': 5201702, 'Arenópolis, Goiás': 5202353, 'Aurilândia, Goiás': 5202601, 'Baliza, Goiás': 5203104, 'Bom Jardim de Goiás, Goiás': 5203401, 'Buriti de Goiás, Goiás': 5203939, 'Cachoeira de Goiás, Goiás': 5204201, 'Campestre de Goiás, Goiás': 5204607, 'Cezarina, Goiás': 5205455, 'Córrego do Ouro, Goiás': 5205703, 'Diorama, Goiás': 5207105, 'Edéia, Goiás': 5207402, 'Fazenda Nova, Goiás': 5207600, 'Firminópolis, Goiás': 5207808, 'Indiara, Goiás': 5209952, 'Iporá, Goiás': 5210208, 'Israelândia, Goiás': 5210307, 'Ivolândia, Goiás': 5211602, 'Jandaia, Goiás': 5211701, 'Jaupaci, Goiás': 5212006, 'Moiporá, Goiás': 5213400, 'Montes Claros de Goiás, Goiás': 5213707, 'Nazário, Goiás': 5214408, 'Palestina de Goiás, Goiás': 5215652, 'Palmeiras de Goiás, Goiás': 5215702, 'Palminópolis, Goiás': 5215900, 'Paraúna, Goiás': 5216403, 'Piranhas, Goiás': 5217203, 'Sanclerlândia, Goiás': 5219001, 'Santa Bárbara de Goiás, Goiás': 5219100, 'São João da Paraúna, Goiás': 5220058, 'São Luís de Montes Belos, Goiás': 5220108, 'Turvânia, Goiás': 5221502, 'Alto Horizonte, Goiás': 5200555, 'Amaralina, Goiás': 5200829, 'Barro Alto, Goiás': 5203203, 'Bonópolis, Goiás': 5203575, 'Campinaçu, Goiás': 5204656, 'Campinorte, Goiás': 5204706, 'Campos Verdes, Goiás': 5204953, 'Carmo do Rio Verde, Goiás': 5205000, 'Ceres, Goiás': 5205406, 'Colinas do Sul, Goiás': 5205521, 'Crixás, Goiás': 5206404, 'Estrela do Norte, Goiás': 5207501, 'Formoso, Goiás': 5208103, 'Goianésia, Goiás': 5208608, 'Guarinos, Goiás': 5209457, 'Hidrolina, Goiás': 5209804, 'Ipiranga de Goiás, Goiás': 5210158, 'Itapaci, Goiás': 5210901, 'Mara Rosa, Goiás': 5212808, 'Minaçu, Goiás': 5213087, 'Montividiu do Norte, Goiás': 5213772, 'Morro Agudo de Goiás, Goiás': 5213855, 'Mundo Novo, Goiás': 5214051, 'Mutunópolis, Goiás': 5214101, 'Niquelândia, Goiás': 5214606, 'Nova América, Goiás': 5214705, 'Nova Glória, Goiás': 5214861, 'Nova Iguaçu de Goiás, Goiás': 5214879, 'Novo Planalto, Goiás': 5215256, 'Pilar de Goiás, Goiás': 5216908, 'Porangatu, Goiás': 5218003, 'Rialma, Goiás': 5218607, 'Rianápolis, Goiás': 5218706, 'Rubiataba, Goiás': 5218904, 'Santa Isabel, Goiás': 5219357, 'Santa Rita do Novo Destino, Goiás': 5219456, 'Santa Tereza de Goiás, Goiás': 5219605, 'Santa Terezinha de Goiás, Goiás': 5219704, 'São Luíz do Norte, Goiás': 5220157, 'São Miguel do Araguaia, Goiás': 5220207, 'São Patrício, Goiás': 5220280, 'Trombas, Goiás': 5221452, 'Uirapuru, Goiás': 5221577, 'Uruaçu, Goiás': 5221601, 'Uruana, Goiás': 5221700, 'Vila Propício, Goiás': 5222302, 'Água Fria de Goiás, Goiás': 5200175, 'Águas Lindas de Goiás, Goiás': 5200258, 'Alto Paraíso de Goiás, Goiás': 5200605, 'Alvorada do Norte, Goiás': 5200803, 'Buritinópolis, Goiás': 5203962, 'Cabeceiras, Goiás': 5204003, 'Campos Belos, Goiás': 5204904, 'Cavalcante, Goiás': 5205307, 'Cidade Ocidental, Goiás': 5205497, 'Cocalzinho de Goiás, Goiás': 5205513, 'Cristalina, Goiás': 5206206, 'Damianópolis, Goiás': 5206701, 'Flores de Goiás, Goiás': 5207907, 'Formosa, Goiás': 5208004, 'Divinópolis de Goiás, Goiás': 5208301, 'Guarani de Goiás, Goiás': 5209408, 'Iaciara, Goiás': 5209903, 'Luziânia, Goiás': 5212501, 'Mambaí, Goiás': 5212709, 'Mimoso de Goiás, Goiás': 5213053, 'Monte Alegre de Goiás, Goiás': 5213509, 'Nova Roma, Goiás': 5214903, 'Novo Gama, Goiás': 5215231, 'Padre Bernardo, Goiás': 5215603, 'Planaltina, Goiás': 5217609, 'Posse, Goiás': 5218300, 'Santo Antônio do Descoberto, Goiás': 5219753, 'São Domingos, Goiás': 5219803, "São João d'Aliança, Goiás": 5220009, 'Simolândia, Goiás': 5220686, "Sítio d'Abadia, Goiás": 5220702, 'Teresina de Goiás, Goiás': 5221080, 'Valparaíso de Goiás, Goiás': 5221858, 'Vila Boa, Goiás': 5222203} diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index d8da3f2eb..2841982d0 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -22,8 +22,10 @@ ) from pipelines.datasets.mercadolivre_ofertas.tasks import ( - crawler_mercadolivre_ofertas, + crawler_mercadolivre_item, + crawler_mercadolivre_seller, clean_item, + clean_seller, ) from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item @@ -31,7 +33,9 @@ name="mercadolivre_ofertas.item", code_owners=["lucascr91"] ) as mercadolivre_ofertas_item: # Parameters - dataset_id = Parameter("dataset_id", default="mercadolivre_ofertas", required=True) + dataset_id = Parameter( + "dataset_id", default="br_mercadolivre_ofertas", required=True + ) table_id = Parameter("table_id", default="item", required=True) materialization_mode = Parameter( "materialization_mode", default="dev", required=False @@ -45,7 +49,9 @@ prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id ) - filepath_raw = crawler_mercadolivre_ofertas() + get_sellers = Parameter("get_sellers", default=False, required=False) + + filepath_raw = crawler_mercadolivre_item() filepath = clean_item(filepath_raw) @@ -86,6 +92,107 @@ seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) + with case(get_sellers, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + sellers_flow = create_flow_run( + flow_name="mercadolivre_ofertas.vendedor", + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + "seller_ids": None, + "seller_links": None, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + sellers_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + mercadolivre_ofertas_item.storage = GCS(constants.GCS_FLOWS_BUCKET.value) mercadolivre_ofertas_item.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) mercadolivre_ofertas_item.schedule = every_day_item + + +with Flow( + name="mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] +) as mercadolivre_ofertas_vendedor: + # Parameters + dataset_id = Parameter( + "dataset_id", default="br_mercadolivre_ofertas", required=True + ) + table_id = Parameter("table_id", default="item", required=True) + materialization_mode = Parameter( + "materialization_mode", default="dev", required=False + ) + materialize_after_dump = Parameter( + "materialize_after_dump", default=True, required=False + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) + + seller_ids = Parameter("seller_ids", default=None, required=False) + seller_links = Parameter("seller_names", default=None, required=False) + + rename_flow_run = rename_current_flow_run_dataset_table( + prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id + ) + + filepath_raw = crawler_mercadolivre_seller(seller_ids, seller_links) + + filepath = clean_seller(filepath_raw) + + wait_upload_table = create_table_and_upload_to_gcs( + data_path=filepath, + dataset_id=dataset_id, + table_id=table_id, + dump_mode="overwrite", + wait=filepath, + ) + + with case(materialize_after_dump, True): + # Trigger DBT flow run + current_flow_labels = get_current_flow_labels() + materialization_flow = create_flow_run( + flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, + parameters={ + "dataset_id": dataset_id, + "table_id": table_id, + "mode": materialization_mode, + "dbt_alias": dbt_alias, + }, + labels=current_flow_labels, + run_name=f"Materialize {dataset_id}.{table_id}", + ) + + wait_for_materialization = wait_for_flow_run( + materialization_flow, + stream_states=True, + stream_logs=True, + raise_final_state=True, + ) + wait_for_materialization.max_retries = ( + dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value + ) + wait_for_materialization.retry_delay = timedelta( + seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value + ) + +mercadolivre_ofertas_vendedor.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +mercadolivre_ofertas_vendedor.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 5179cf8a3..1aa183a11 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -6,6 +6,7 @@ import asyncio import time import os +import re from prefect import task import pandas as pd @@ -14,7 +15,7 @@ from pipelines.datasets.mercadolivre_ofertas.constants import ( constants as const_mercadolivre, ) -from pipelines.datasets.mercadolivre_ofertas.utils import main +from pipelines.datasets.mercadolivre_ofertas.utils import main_item, main_seller, get_id less100 = const_mercadolivre.LESS100.value oferta_dia = const_mercadolivre.OFERTA_DIA.value @@ -28,7 +29,7 @@ @task -def crawler_mercadolivre_ofertas(): +def crawler_mercadolivre_item(): """ Executes the crawler for Mercado Livre offers by running the main process, processing the results, and saving them to a CSV file. @@ -40,7 +41,7 @@ def crawler_mercadolivre_ofertas(): None """ loop = asyncio.get_event_loop() - contents = loop.run_until_complete(main(dict_tables, kwargs_list)) + contents = loop.run_until_complete(main_item(dict_tables, kwargs_list)) time.sleep(5) df = pd.DataFrame(contents) total = df.shape[0] @@ -151,4 +152,70 @@ def clean_item(filepath): item.to_csv(f"br_mercadolivre_ofertas/item/dia={today}/items.csv", index=False) - return f"br_mercadolivre_ofertas/item/" + return "br_mercadolivre_ofertas/item/" + + +@task +def crawler_mercadolivre_seller(seller_ids, seller_links): + filepath_raw = "vendedor.csv" + asyncio.run(main_seller(seller_ids, seller_links, filepath)) + + return filepath_raw + + +@task +def clean_seller(filepath_raw): + seller = pd.read_csv(filepath_raw) + + new_cols = [ + "nome", + "experiencia", + "reputacao", + "classificacao", + "localizacao", + "opinioes", + "data", + "id_vendor", + ] + + seller.columns = new_cols + # remove if title is nan + seller = seller[seller["nome"].notna()] + # clean experiencia: 3 anos vendendo no Mercado Livre -> 3 + seller["experiencia"] = seller["experiencia"].apply( + lambda x: re.findall(r"\d+", x)[0] + ) + # clean classificacao: MercadoLíder Platinum -> Platinum + seller["classificacao"] = seller["classificacao"].str.replace("MercadoLíder ", "") + # clean localizacao: LocalizaçãoJuiz de Fora, Minas Gerais. -> Juiz de Fora, Minas Gerais. + seller["localizacao"] = seller["localizacao"].str.replace("Localização", "") + # clean opinioes: [{'Bom': 771, 'Regular': 67, 'Ruim': 174}] -> {'Bom': 771, 'Regular': 67, 'Ruim': 174} + dict_municipios = const_mercadolivre.MAP_MUNICIPIO_TO_ID.value + seller["localizacao"] = seller["localizacao"].apply( + lambda x: get_id(x, dict_municipios) + ) + # rename localizacao to id_municipio + seller = seller.rename(columns={"localizacao": "id_municipio"}) + seller["opinioes"] = seller["opinioes"].str.replace("[", "") + seller["opinioes"] = seller["opinioes"].str.replace("]", "") + + # put id_vendor in the first column + new_order = [ + "id_vendor", + "nome", + "experiencia", + "reputacao", + "classificacao", + "id_municipio", + "opinioes", + "data", + ] + seller = seller.reindex(new_order, axis=1) + + today = pd.Timestamp.today().strftime("%Y-%m-%d") + os.system(f"mkdir -p br_mercadolivre_ofertas/vendedor/dia={today}") + seller.to_csv( + f"br_mercadolivre_ofertas/vendedor/dia={today}/seller.csv", index=False + ) + + return "br_mercadolivre_ofertas/vendedor/" diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index c331c61b4..d74072687 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -7,9 +7,11 @@ from datetime import datetime import requests +from tqdm import tqdm from bs4 import BeautifulSoup from fake_useragent import UserAgent import Levenshtein +import pandas as pd ua = UserAgent() @@ -355,7 +357,7 @@ async def process_table(table, url, kwargs_list): return results -async def main(dict_tables, kwargs_list): +async def main_item(dict_tables, kwargs_list): """ Executes the main process by processing multiple tables and consolidating the results. @@ -377,3 +379,36 @@ async def main(dict_tables, kwargs_list): for table_results in results: contents.extend(table_results) return contents + +async def get_seller_async(url, seller_id): + kwargs_list = [ + {"id": "store-info__name"}, + {"class_": "experience"}, + {"class_": "seller-info__subtitle-sales"}, + {"class_": "message__title"}, + {"class_": "location__wrapper"}, + ] + keys = ["title", "experience", "reputation", "classification", "location"] + tasks = [get_byelement(url=url, attempts=2, **kwargs) for kwargs in kwargs_list] + results = await asyncio.gather(*tasks) + info = dict(zip(keys, results)) + info["opinions"] = await asyncio.gather(get_features(url, attempts=2)) + info["date"] = datetime.now().strftime("%Y-%m-%d") + info["seller_id"] = seller_id + + return info + + +async def main_seller(seller_ids, seller_links, file_dest): + # get list of unique sellers + dict_id_link = dict(zip(seller_ids, seller_links)) + + sellers = [] + for seller_id, link in tqdm(dict_id_link.items()): + seller = await get_seller_async(link, seller_id) + sellers.append(seller) + + # save sellers as a pandas dataframe + df_sellers = pd.DataFrame(sellers) + df_sellers = df_sellers.astype(str) + df_sellers.to_csv(file_dest, index=False) From 0ce5eb7ef8082972064c31f504ef0a11c4f6f12b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 15:44:18 +0000 Subject: [PATCH 34/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../mercadolivre_ofertas/constants.py | 5573 ++++++++++++++++- .../datasets/mercadolivre_ofertas/utils.py | 1 + 2 files changed, 5573 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/constants.py b/pipelines/datasets/mercadolivre_ofertas/constants.py index b98f377b2..bcb99a0ff 100644 --- a/pipelines/datasets/mercadolivre_ofertas/constants.py +++ b/pipelines/datasets/mercadolivre_ofertas/constants.py @@ -23,4 +23,5575 @@ class constants(Enum): # pylint: disable=c0103 }, ] TABLES_NAMES = ["less100", "oferta_dia", "relampago", "barato_dia"] - MAP_MUNICIPIO_TO_ID = {'Ariquemes, Rondônia': 1100023, 'Guajará-Mirim, Rondônia': 1100106, 'Jaru, Rondônia': 1100114, "Machadinho D'Oeste, Rondônia": 1100130, 'Porto Velho, Rondônia': 1100205, 'Rio Crespo, Rondônia': 1100262, 'Nova Mamoré, Rondônia': 1100338, 'Alto Paraíso, Rondônia': 1100403, 'Buritis, Rondônia': 1100452, 'Cacaulândia, Rondônia': 1100601, 'Campo Novo de Rondônia, Rondônia': 1100700, 'Candeias do Jamari, Rondônia': 1100809, 'Cujubim, Rondônia': 1100940, 'Governador Jorge Teixeira, Rondônia': 1101005, 'Itapuã do Oeste, Rondônia': 1101104, 'Monte Negro, Rondônia': 1101401, 'Theobroma, Rondônia': 1101609, 'Vale do Anari, Rondônia': 1101757, 'Acrelândia, Acre': 1200013, 'Assis Brasil, Acre': 1200054, 'Brasiléia, Acre': 1200104, 'Bujari, Acre': 1200138, 'Capixaba, Acre': 1200179, 'Cruzeiro do Sul, Acre': 1200203, 'Epitaciolândia, Acre': 1200252, 'Feijó, Acre': 1200302, 'Jordão, Acre': 1200328, 'Mâncio Lima, Acre': 1200336, 'Manoel Urbano, Acre': 1200344, 'Marechal Thaumaturgo, Acre': 1200351, 'Plácido de Castro, Acre': 1200385, 'Porto Walter, Acre': 1200393, 'Rio Branco, Acre': 1200401, 'Rodrigues Alves, Acre': 1200427, 'Santa Rosa do Purus, Acre': 1200435, 'Senador Guiomard, Acre': 1200450, 'Sena Madureira, Acre': 1200500, 'Tarauacá, Acre': 1200609, 'Xapuri, Acre': 1200708, 'Porto Acre, Acre': 1200807, 'Alvarães, Amazonas': 1300029, 'Amaturá, Amazonas': 1300060, 'Anamã, Amazonas': 1300086, 'Anori, Amazonas': 1300102, 'Apuí, Amazonas': 1300144, 'Atalaia do Norte, Amazonas': 1300201, 'Autazes, Amazonas': 1300300, 'Barcelos, Amazonas': 1300409, 'Barreirinha, Amazonas': 1300508, 'Benjamin Constant, Amazonas': 1300607, 'Beruri, Amazonas': 1300631, 'Boa Vista do Ramos, Amazonas': 1300680, 'Boca do Acre, Amazonas': 1300706, 'Borba, Amazonas': 1300805, 'Caapiranga, Amazonas': 1300839, 'Canutama, Amazonas': 1300904, 'Carauari, Amazonas': 1301001, 'Careiro, Amazonas': 1301100, 'Careiro da Várzea, Amazonas': 1301159, 'Coari, Amazonas': 1301209, 'Codajás, Amazonas': 1301308, 'Eirunepé, Amazonas': 1301407, 'Envira, Amazonas': 1301506, 'Fonte Boa, Amazonas': 1301605, 'Guajará, Amazonas': 1301654, 'Humaitá, Amazonas': 1301704, 'Ipixuna, Amazonas': 1301803, 'Iranduba, Amazonas': 1301852, 'Itacoatiara, Amazonas': 1301902, 'Itamarati, Amazonas': 1301951, 'Itapiranga, Amazonas': 1302009, 'Japurá, Amazonas': 1302108, 'Juruá, Amazonas': 1302207, 'Jutaí, Amazonas': 1302306, 'Lábrea, Amazonas': 1302405, 'Manacapuru, Amazonas': 1302504, 'Manaquiri, Amazonas': 1302553, 'Manaus, Amazonas': 1302603, 'Manicoré, Amazonas': 1302702, 'Maraã, Amazonas': 1302801, 'Maués, Amazonas': 1302900, 'Nhamundá, Amazonas': 1303007, 'Nova Olinda do Norte, Amazonas': 1303106, 'Novo Airão, Amazonas': 1303205, 'Novo Aripuanã, Amazonas': 1303304, 'Parintins, Amazonas': 1303403, 'Pauini, Amazonas': 1303502, 'Presidente Figueiredo, Amazonas': 1303536, 'Rio Preto da Eva, Amazonas': 1303569, 'Santa Isabel do Rio Negro, Amazonas': 1303601, 'Santo Antônio do Içá, Amazonas': 1303700, 'São Gabriel da Cachoeira, Amazonas': 1303809, 'São Paulo de Olivença, Amazonas': 1303908, 'São Sebastião do Uatumã, Amazonas': 1303957, 'Silves, Amazonas': 1304005, 'Tabatinga, Amazonas': 1304062, 'Tapauá, Amazonas': 1304104, 'Tefé, Amazonas': 1304203, 'Tonantins, Amazonas': 1304237, 'Uarini, Amazonas': 1304260, 'Urucará, Amazonas': 1304302, 'Urucurituba, Amazonas': 1304401, 'Amajari, Roraima': 1400027, 'Alto Alegre, Roraima': 1400050, 'Boa Vista, Roraima': 1400100, 'Bonfim, Roraima': 1400159, 'Cantá, Roraima': 1400175, 'Caracaraí, Roraima': 1400209, 'Caroebe, Roraima': 1400233, 'Iracema, Roraima': 1400282, 'Mucajaí, Roraima': 1400308, 'Normandia, Roraima': 1400407, 'Pacaraima, Roraima': 1400456, 'Rorainópolis, Roraima': 1400472, 'São João da Baliza, Roraima': 1400506, 'São Luiz, Roraima': 1400605, 'Uiramutã, Roraima': 1400704, 'Abaetetuba, Pará': 1500107, 'Abel Figueiredo, Pará': 1500131, 'Acará, Pará': 1500206, 'Afuá, Pará': 1500305, 'Água Azul do Norte, Pará': 1500347, 'Alenquer, Pará': 1500404, 'Almeirim, Pará': 1500503, 'Altamira, Pará': 1500602, 'Anajás, Pará': 1500701, 'Ananindeua, Pará': 1500800, 'Anapu, Pará': 1500859, 'Aveiro, Pará': 1501006, 'Bagre, Pará': 1501105, 'Baião, Pará': 1501204, 'Bannach, Pará': 1501253, 'Barcarena, Pará': 1501303, 'Belém, Pará': 1501402, 'Belterra, Pará': 1501451, 'Benevides, Pará': 1501501, 'Bom Jesus do Tocantins, Pará': 1501576, 'Brasil Novo, Pará': 1501725, 'Brejo Grande do Araguaia, Pará': 1501758, 'Breu Branco, Pará': 1501782, 'Breves, Pará': 1501808, 'Bujaru, Pará': 1501907, 'Cachoeira do Arari, Pará': 1502004, 'Cametá, Pará': 1502103, 'Canaã dos Carajás, Pará': 1502152, 'Chaves, Pará': 1502509, 'Colares, Pará': 1502608, 'Conceição do Araguaia, Pará': 1502707, 'Concórdia do Pará, Pará': 1502756, 'Cumaru do Norte, Pará': 1502764, 'Curionópolis, Pará': 1502772, 'Curralinho, Pará': 1502806, 'Curuá, Pará': 1502855, 'Eldorado do Carajás, Pará': 1502954, 'Faro, Pará': 1503002, 'Floresta do Araguaia, Pará': 1503044, 'Goianésia do Pará, Pará': 1503093, 'Gurupá, Pará': 1503101, 'Igarapé-Miri, Pará': 1503309, 'Itaituba, Pará': 1503606, 'Itupiranga, Pará': 1503705, 'Jacareacanga, Pará': 1503754, 'Jacundá, Pará': 1503804, 'Juruti, Pará': 1503903, 'Limoeiro do Ajuru, Pará': 1504000, 'Marabá, Pará': 1504208, 'Marituba, Pará': 1504422, 'Medicilândia, Pará': 1504455, 'Melgaço, Pará': 1504505, 'Mocajuba, Pará': 1504604, 'Moju, Pará': 1504703, 'Mojuí dos Campos, Pará': 1504752, 'Monte Alegre, Pará': 1504802, 'Muaná, Pará': 1504901, 'Nova Ipixuna, Pará': 1504976, 'Novo Progresso, Pará': 1505031, 'Novo Repartimento, Pará': 1505064, 'Óbidos, Pará': 1505106, 'Oeiras do Pará, Pará': 1505205, 'Oriximiná, Pará': 1505304, 'Ourilândia do Norte, Pará': 1505437, 'Pacajá, Pará': 1505486, 'Palestina do Pará, Pará': 1505494, 'Parauapebas, Pará': 1505536, "Pau D'Arco, Pará": 1505551, 'Piçarra, Pará': 1505635, 'Placas, Pará': 1505650, 'Ponta de Pedras, Pará': 1505700, 'Portel, Pará': 1505809, 'Porto de Moz, Pará': 1505908, 'Prainha, Pará': 1506005, 'Redenção, Pará': 1506138, 'Rio Maria, Pará': 1506161, 'Rondon do Pará, Pará': 1506187, 'Rurópolis, Pará': 1506195, 'Salvaterra, Pará': 1506302, 'Santa Bárbara do Pará, Pará': 1506351, 'Santa Cruz do Arari, Pará': 1506401, 'Santa Isabel do Pará, Pará': 1506500, 'Santa Maria das Barreiras, Pará': 1506583, 'Santana do Araguaia, Pará': 1506708, 'Santarém, Pará': 1506807, 'Santo Antônio do Tauá, Pará': 1507003, 'São Caetano de Odivelas, Pará': 1507102, 'São Domingos do Araguaia, Pará': 1507151, 'São Félix do Xingu, Pará': 1507300, 'São Geraldo do Araguaia, Pará': 1507458, 'São João do Araguaia, Pará': 1507508, 'São Sebastião da Boa Vista, Pará': 1507706, 'Sapucaia, Pará': 1507755, 'Senador José Porfírio, Pará': 1507805, 'Soure, Pará': 1507904, 'Tailândia, Pará': 1507953, 'Terra Santa, Pará': 1507979, 'Tomé-Açu, Pará': 1508001, 'Trairão, Pará': 1508050, 'Tucumã, Pará': 1508084, 'Tucuruí, Pará': 1508100, 'Uruará, Pará': 1508159, 'Vigia, Pará': 1508209, 'Vitória do Xingu, Pará': 1508357, 'Xinguara, Pará': 1508407, 'Serra do Navio, Amapá': 1600055, 'Amapá, Amapá': 1600105, 'Pedra Branca do Amapari, Amapá': 1600154, 'Calçoene, Amapá': 1600204, 'Cutias, Amapá': 1600212, 'Ferreira Gomes, Amapá': 1600238, 'Itaubal, Amapá': 1600253, 'Laranjal do Jari, Amapá': 1600279, 'Macapá, Amapá': 1600303, 'Mazagão, Amapá': 1600402, 'Oiapoque, Amapá': 1600501, 'Porto Grande, Amapá': 1600535, 'Pracuúba, Amapá': 1600550, 'Santana, Amapá': 1600600, 'Tartarugalzinho, Amapá': 1600709, 'Vitória do Jari, Amapá': 1600808, 'Afonso Cunha, Maranhão': 2100105, 'Aldeias Altas, Maranhão': 2100303, 'Buriti Bravo, Maranhão': 2102309, 'Caxias, Maranhão': 2103000, 'Codó, Maranhão': 2103307, 'Coelho Neto, Maranhão': 2103406, 'Coroatá, Maranhão': 2103604, 'Duque Bacelar, Maranhão': 2103901, 'Matões, Maranhão': 2106607, 'Parnarama, Maranhão': 2107803, 'Peritoró, Maranhão': 2108454, 'São João do Soter, Maranhão': 2111078, 'Timbiras, Maranhão': 2112100, 'Timon, Maranhão': 2112209, 'Alvorada do Gurguéia, Piauí': 2200459, 'Anísio de Abreu, Piauí': 2200707, 'Avelino Lopes, Piauí': 2201101, 'Barreiras do Piauí, Piauí': 2201309, 'Bom Jesus, Piauí': 2201903, 'Bonfim do Piauí, Piauí': 2201929, 'Campo Alegre do Fidalgo, Piauí': 2202117, 'Capitão Gervásio Oliveira, Piauí': 2202455, 'Caracol, Piauí': 2202505, 'Colônia do Gurguéia, Piauí': 2202752, 'Coronel José Dias, Piauí': 2202851, 'Corrente, Piauí': 2202901, 'Cristalândia do Piauí, Piauí': 2203008, 'Cristino Castro, Piauí': 2203107, 'Curimatá, Piauí': 2203206, 'Currais, Piauí': 2203230, 'Dirceu Arcoverde, Piauí': 2203354, 'Dom Inocêncio, Piauí': 2203453, 'Fartura do Piauí, Piauí': 2203750, 'Gilbués, Piauí': 2204402, 'Guaribas, Piauí': 2204550, 'João Costa, Piauí': 2205359, 'Júlio Borges, Piauí': 2205524, 'Jurema, Piauí': 2205532, 'Lagoa do Barro do Piauí, Piauí': 2205565, 'Monte Alegre do Piauí, Piauí': 2206605, 'Morro Cabeça no Tempo, Piauí': 2206654, 'Palmeira do Piauí, Piauí': 2207405, 'Parnaguá, Piauí': 2207603, 'Pedro Laurentino, Piauí': 2207934, 'Nova Santa Rita, Piauí': 2207959, 'Redenção do Gurguéia, Piauí': 2208700, 'Riacho Frio, Piauí': 2208858, 'Ribeira do Piauí, Piauí': 2208874, 'Santa Filomena, Piauí': 2209203, 'Santa Luz, Piauí': 2209302, 'São Braz do Piauí, Piauí': 2209559, 'São Gonçalo do Gurguéia, Piauí': 2209757, 'São João do Piauí, Piauí': 2210003, 'São Lourenço do Piauí, Piauí': 2210359, 'São Raimundo Nonato, Piauí': 2210607, 'Sebastião Barros, Piauí': 2210623, 'Várzea Branca, Piauí': 2211357, 'Acopiara, Ceará': 2300309, 'Ararendá, Ceará': 2301257, 'Arneiroz, Ceará': 2301505, 'Baixio, Ceará': 2301802, 'Cariús, Ceará': 2303303, 'Catarina, Ceará': 2303600, 'Cedro, Ceará': 2303808, 'Crateús, Ceará': 2304103, 'Icó, Ceará': 2305407, 'Iguatu, Ceará': 2305506, 'Independência, Ceará': 2305605, 'Ipaporanga, Ceará': 2305654, 'Ipaumirim, Ceará': 2305704, 'Jucás, Ceará': 2307403, 'Mombaça, Ceará': 2308500, 'Monsenhor Tabosa, Ceará': 2308609, 'Nova Russas, Ceará': 2309300, 'Novo Oriente, Ceará': 2309409, 'Orós, Ceará': 2309508, 'Parambu, Ceará': 2310308, 'Piquet Carneiro, Ceará': 2310902, 'Poranga, Ceará': 2311009, 'Quiterianópolis, Ceará': 2311264, 'Quixelô, Ceará': 2311355, 'Saboeiro, Ceará': 2311900, 'Tamboril, Ceará': 2313203, 'Tauá, Ceará': 2313302, 'Umari, Ceará': 2313708, 'Acari, Rio Grande do Norte': 2400109, 'Bodó, Rio Grande do Norte': 2401651, 'Caicó, Rio Grande do Norte': 2402006, 'Carnaúba dos Dantas, Rio Grande do Norte': 2402402, 'Cerro Corá, Rio Grande do Norte': 2402709, 'Cruzeta, Rio Grande do Norte': 2403004, 'Currais Novos, Rio Grande do Norte': 2403103, 'Equador, Rio Grande do Norte': 2403400, 'Florânia, Rio Grande do Norte': 2403806, 'Ipueira, Rio Grande do Norte': 2404804, 'Jardim de Piranhas, Rio Grande do Norte': 2405603, 'Jardim do Seridó, Rio Grande do Norte': 2405702, 'Jucurutu, Rio Grande do Norte': 2406106, 'Lagoa Nova, Rio Grande do Norte': 2406502, 'Ouro Branco, Rio Grande do Norte': 2408508, 'Parelhas, Rio Grande do Norte': 2408904, 'Santana do Seridó, Rio Grande do Norte': 2411429, 'São Fernando, Rio Grande do Norte': 2411809, 'São João do Sabugi, Rio Grande do Norte': 2412104, 'São José do Seridó, Rio Grande do Norte': 2412401, 'São Vicente, Rio Grande do Norte': 2413003, 'Serra Negra do Norte, Rio Grande do Norte': 2413409, 'Tenente Laurentino Cruz, Rio Grande do Norte': 2414159, 'Timbaúba dos Batistas, Rio Grande do Norte': 2414308, 'São João do Rio do Peixe, Paraíba': 2500700, 'Aparecida, Paraíba': 2500775, 'Bernardino Batista, Paraíba': 2502052, 'Bom Jesus, Paraíba': 2502201, 'Bonito de Santa Fé, Paraíba': 2502409, 'Cachoeira dos Índios, Paraíba': 2503308, 'Cajazeiras, Paraíba': 2503704, 'Carrapateira, Paraíba': 2504108, 'Lastro, Paraíba': 2508406, 'Marizópolis, Paraíba': 2509156, 'Monte Horebe, Paraíba': 2509602, 'Nazarezinho, Paraíba': 2510006, 'Poço Dantas, Paraíba': 2512036, 'Poço de José de Moura, Paraíba': 2512077, 'Santa Cruz, Paraíba': 2513208, 'Santa Helena, Paraíba': 2513307, 'Joca Claudino, Paraíba': 2513653, 'São Francisco, Paraíba': 2513984, 'São José da Lagoa Tapada, Paraíba': 2514206, 'São José de Piranhas, Paraíba': 2514503, 'Serra Grande, Paraíba': 2515708, 'Sousa, Paraíba': 2516201, 'Triunfo, Paraíba': 2516805, 'Uiraúna, Paraíba': 2516904, 'Vieirópolis, Paraíba': 2517209, 'Afogados da Ingazeira, Pernambuco': 2600104, 'Afrânio, Pernambuco': 2600203, 'Araripina, Pernambuco': 2601102, 'Belém do São Francisco, Pernambuco': 2601607, 'Betânia, Pernambuco': 2601805, 'Bodocó, Pernambuco': 2602001, 'Brejinho, Pernambuco': 2602506, 'Cabrobó, Pernambuco': 2603009, 'Calumbi, Pernambuco': 2603405, 'Carnaíba, Pernambuco': 2603900, 'Carnaubeira da Penha, Pernambuco': 2603926, 'Cedro, Pernambuco': 2604304, 'Dormentes, Pernambuco': 2605152, 'Exu, Pernambuco': 2605301, 'Flores, Pernambuco': 2605608, 'Floresta, Pernambuco': 2605707, 'Granito, Pernambuco': 2606309, 'Iguaraci, Pernambuco': 2606903, 'Ingazeira, Pernambuco': 2607109, 'Ipubi, Pernambuco': 2607307, 'Itacuruba, Pernambuco': 2607406, 'Itapetim, Pernambuco': 2607703, 'Jatobá, Pernambuco': 2608057, 'Lagoa Grande, Pernambuco': 2608750, 'Mirandiba, Pernambuco': 2609303, 'Orocó, Pernambuco': 2609808, 'Ouricuri, Pernambuco': 2609907, 'Parnamirim, Pernambuco': 2610400, 'Petrolândia, Pernambuco': 2611002, 'Petrolina, Pernambuco': 2611101, 'Quixaba, Pernambuco': 2611533, 'Salgueiro, Pernambuco': 2612208, 'Santa Cruz, Pernambuco': 2612455, 'Santa Cruz da Baixa Verde, Pernambuco': 2612471, 'Santa Filomena, Pernambuco': 2612554, 'Santa Maria da Boa Vista, Pernambuco': 2612604, 'Santa Terezinha, Pernambuco': 2612802, 'São José do Belmonte, Pernambuco': 2613503, 'São José do Egito, Pernambuco': 2613602, 'Serra Talhada, Pernambuco': 2613909, 'Serrita, Pernambuco': 2614006, 'Moreilândia, Pernambuco': 2614303, 'Solidão, Pernambuco': 2614402, 'Tabira, Pernambuco': 2614600, 'Tacaratu, Pernambuco': 2614808, 'Terra Nova, Pernambuco': 2615201, 'Trindade, Pernambuco': 2615607, 'Triunfo, Pernambuco': 2615706, 'Tuparetama, Pernambuco': 2615904, 'Verdejante, Pernambuco': 2616100, 'Andorinha, Bahia': 2901353, 'Angical, Bahia': 2901403, 'Antônio Gonçalves, Bahia': 2901809, 'Baianópolis, Bahia': 2902500, 'Barreiras, Bahia': 2903201, 'Brejolândia, Bahia': 2904407, 'Campo Alegre de Lourdes, Bahia': 2905909, 'Campo Formoso, Bahia': 2906006, 'Canápolis, Bahia': 2906105, 'Casa Nova, Bahia': 2907202, 'Catolândia, Bahia': 2907400, 'Cocos, Bahia': 2908101, 'Coribe, Bahia': 2909109, 'Correntina, Bahia': 2909307, 'Cotegipe, Bahia': 2909406, 'Cristópolis, Bahia': 2909703, 'Curaçá, Bahia': 2909901, 'Filadélfia, Bahia': 2910859, 'Formosa do Rio Preto, Bahia': 2911105, 'Itiúba, Bahia': 2917003, 'Jaborandi, Bahia': 2917359, 'Jaguarari, Bahia': 2917706, 'Juazeiro, Bahia': 2918407, 'Luís Eduardo Magalhães, Bahia': 2919553, 'Mansidão, Bahia': 2920452, 'Pilão Arcado, Bahia': 2924405, 'Pindobaçu, Bahia': 2924603, 'Ponto Novo, Bahia': 2925253, 'Remanso, Bahia': 2926004, 'Riachão das Neves, Bahia': 2926202, 'Santa Maria da Vitória, Bahia': 2928109, 'Santana, Bahia': 2928208, 'Santa Rita de Cássia, Bahia': 2928406, 'São Desidério, Bahia': 2928901, 'São Félix do Coribe, Bahia': 2929057, 'Senhor do Bonfim, Bahia': 2930105, 'Sento Sé, Bahia': 2930204, 'Serra Dourada, Bahia': 2930303, 'Sobradinho, Bahia': 2930774, 'Tabocas do Brejo Velho, Bahia': 2930907, 'Uauá, Bahia': 2932002, 'Wanderley, Bahia': 2933455, 'Abadia dos Dourados, Minas Gerais': 3100104, 'Araguari, Minas Gerais': 3103504, 'Araporã, Minas Gerais': 3103751, 'Cachoeira Dourada, Minas Gerais': 3109808, 'Campina Verde, Minas Gerais': 3111101, 'Canápolis, Minas Gerais': 3111804, 'Capinópolis, Minas Gerais': 3112604, 'Cascalho Rico, Minas Gerais': 3115003, 'Centralina, Minas Gerais': 3115805, 'Douradoquara, Minas Gerais': 3123502, 'Estrela do Sul, Minas Gerais': 3124807, 'Grupiara, Minas Gerais': 3127909, 'Gurinhatã, Minas Gerais': 3129103, 'Indianópolis, Minas Gerais': 3130705, 'Ipiaçu, Minas Gerais': 3131406, 'Iraí de Minas, Minas Gerais': 3131604, 'Ituiutaba, Minas Gerais': 3134202, 'Monte Alegre de Minas, Minas Gerais': 3142809, 'Monte Carmelo, Minas Gerais': 3143104, 'Prata, Minas Gerais': 3152808, 'Romaria, Minas Gerais': 3156403, 'Santa Vitória, Minas Gerais': 3159803, 'Tupaciguara, Minas Gerais': 3169604, 'Uberlândia, Minas Gerais': 3170206, 'Afonso Cláudio, Espírito Santo': 3200102, 'Águia Branca, Espírito Santo': 3200136, 'Água Doce do Norte, Espírito Santo': 3200169, 'Alegre, Espírito Santo': 3200201, 'Alfredo Chaves, Espírito Santo': 3200300, 'Alto Rio Novo, Espírito Santo': 3200359, 'Anchieta, Espírito Santo': 3200409, 'Apiacá, Espírito Santo': 3200508, 'Aracruz, Espírito Santo': 3200607, 'Atilio Vivacqua, Espírito Santo': 3200706, 'Baixo Guandu, Espírito Santo': 3200805, 'Barra de São Francisco, Espírito Santo': 3200904, 'Boa Esperança, Espírito Santo': 3201001, 'Bom Jesus do Norte, Espírito Santo': 3201100, 'Brejetuba, Espírito Santo': 3201159, 'Cachoeiro de Itapemirim, Espírito Santo': 3201209, 'Cariacica, Espírito Santo': 3201308, 'Castelo, Espírito Santo': 3201407, 'Colatina, Espírito Santo': 3201506, 'Conceição da Barra, Espírito Santo': 3201605, 'Conceição do Castelo, Espírito Santo': 3201704, 'Divino de São Lourenço, Espírito Santo': 3201803, 'Domingos Martins, Espírito Santo': 3201902, 'Dores do Rio Preto, Espírito Santo': 3202009, 'Ecoporanga, Espírito Santo': 3202108, 'Fundão, Espírito Santo': 3202207, 'Governador Lindenberg, Espírito Santo': 3202256, 'Guaçuí, Espírito Santo': 3202306, 'Guarapari, Espírito Santo': 3202405, 'Ibatiba, Espírito Santo': 3202454, 'Ibiraçu, Espírito Santo': 3202504, 'Ibitirama, Espírito Santo': 3202553, 'Iconha, Espírito Santo': 3202603, 'Irupi, Espírito Santo': 3202652, 'Itaguaçu, Espírito Santo': 3202702, 'Itapemirim, Espírito Santo': 3202801, 'Itarana, Espírito Santo': 3202900, 'Iúna, Espírito Santo': 3203007, 'Jaguaré, Espírito Santo': 3203056, 'Jerônimo Monteiro, Espírito Santo': 3203106, 'João Neiva, Espírito Santo': 3203130, 'Laranja da Terra, Espírito Santo': 3203163, 'Linhares, Espírito Santo': 3203205, 'Mantenópolis, Espírito Santo': 3203304, 'Marataízes, Espírito Santo': 3203320, 'Marechal Floriano, Espírito Santo': 3203346, 'Marilândia, Espírito Santo': 3203353, 'Mimoso do Sul, Espírito Santo': 3203403, 'Montanha, Espírito Santo': 3203502, 'Mucurici, Espírito Santo': 3203601, 'Muniz Freire, Espírito Santo': 3203700, 'Muqui, Espírito Santo': 3203809, 'Nova Venécia, Espírito Santo': 3203908, 'Pancas, Espírito Santo': 3204005, 'Pedro Canário, Espírito Santo': 3204054, 'Pinheiros, Espírito Santo': 3204104, 'Piúma, Espírito Santo': 3204203, 'Ponto Belo, Espírito Santo': 3204252, 'Presidente Kennedy, Espírito Santo': 3204302, 'Rio Bananal, Espírito Santo': 3204351, 'Rio Novo do Sul, Espírito Santo': 3204401, 'Santa Leopoldina, Espírito Santo': 3204500, 'Santa Maria de Jetibá, Espírito Santo': 3204559, 'Santa Teresa, Espírito Santo': 3204609, 'São Domingos do Norte, Espírito Santo': 3204658, 'São Gabriel da Palha, Espírito Santo': 3204708, 'São José do Calçado, Espírito Santo': 3204807, 'São Mateus, Espírito Santo': 3204906, 'São Roque do Canaã, Espírito Santo': 3204955, 'Serra, Espírito Santo': 3205002, 'Sooretama, Espírito Santo': 3205010, 'Vargem Alta, Espírito Santo': 3205036, 'Venda Nova do Imigrante, Espírito Santo': 3205069, 'Viana, Espírito Santo': 3205101, 'Vila Pavão, Espírito Santo': 3205150, 'Vila Valério, Espírito Santo': 3205176, 'Vila Velha, Espírito Santo': 3205200, 'Vitória, Espírito Santo': 3205309, 'Angra dos Reis, Rio de Janeiro': 3300100, 'Aperibé, Rio de Janeiro': 3300159, 'Araruama, Rio de Janeiro': 3300209, 'Areal, Rio de Janeiro': 3300225, 'Armação dos Búzios, Rio de Janeiro': 3300233, 'Arraial do Cabo, Rio de Janeiro': 3300258, 'Barra do Piraí, Rio de Janeiro': 3300308, 'Barra Mansa, Rio de Janeiro': 3300407, 'Belford Roxo, Rio de Janeiro': 3300456, 'Bom Jardim, Rio de Janeiro': 3300506, 'Bom Jesus do Itabapoana, Rio de Janeiro': 3300605, 'Cabo Frio, Rio de Janeiro': 3300704, 'Cachoeiras de Macacu, Rio de Janeiro': 3300803, 'Cambuci, Rio de Janeiro': 3300902, 'Carapebus, Rio de Janeiro': 3300936, 'Comendador Levy Gasparian, Rio de Janeiro': 3300951, 'Campos dos Goytacazes, Rio de Janeiro': 3301009, 'Cantagalo, Rio de Janeiro': 3301108, 'Cardoso Moreira, Rio de Janeiro': 3301157, 'Carmo, Rio de Janeiro': 3301207, 'Casimiro de Abreu, Rio de Janeiro': 3301306, 'Conceição de Macabu, Rio de Janeiro': 3301405, 'Cordeiro, Rio de Janeiro': 3301504, 'Duas Barras, Rio de Janeiro': 3301603, 'Duque de Caxias, Rio de Janeiro': 3301702, 'Engenheiro Paulo de Frontin, Rio de Janeiro': 3301801, 'Guapimirim, Rio de Janeiro': 3301850, 'Iguaba Grande, Rio de Janeiro': 3301876, 'Itaboraí, Rio de Janeiro': 3301900, 'Itaguaí, Rio de Janeiro': 3302007, 'Italva, Rio de Janeiro': 3302056, 'Itaocara, Rio de Janeiro': 3302106, 'Itaperuna, Rio de Janeiro': 3302205, 'Itatiaia, Rio de Janeiro': 3302254, 'Japeri, Rio de Janeiro': 3302270, 'Laje do Muriaé, Rio de Janeiro': 3302304, 'Macaé, Rio de Janeiro': 3302403, 'Macuco, Rio de Janeiro': 3302452, 'Magé, Rio de Janeiro': 3302502, 'Mangaratiba, Rio de Janeiro': 3302601, 'Maricá, Rio de Janeiro': 3302700, 'Mendes, Rio de Janeiro': 3302809, 'Mesquita, Rio de Janeiro': 3302858, 'Miguel Pereira, Rio de Janeiro': 3302908, 'Miracema, Rio de Janeiro': 3303005, 'Natividade, Rio de Janeiro': 3303104, 'Nilópolis, Rio de Janeiro': 3303203, 'Niterói, Rio de Janeiro': 3303302, 'Nova Friburgo, Rio de Janeiro': 3303401, 'Nova Iguaçu, Rio de Janeiro': 3303500, 'Paracambi, Rio de Janeiro': 3303609, 'Paraíba do Sul, Rio de Janeiro': 3303708, 'Paraty, Rio de Janeiro': 3303807, 'Paty do Alferes, Rio de Janeiro': 3303856, 'Petrópolis, Rio de Janeiro': 3303906, 'Pinheiral, Rio de Janeiro': 3303955, 'Piraí, Rio de Janeiro': 3304003, 'Porciúncula, Rio de Janeiro': 3304102, 'Porto Real, Rio de Janeiro': 3304110, 'Quatis, Rio de Janeiro': 3304128, 'Queimados, Rio de Janeiro': 3304144, 'Quissamã, Rio de Janeiro': 3304151, 'Resende, Rio de Janeiro': 3304201, 'Rio Bonito, Rio de Janeiro': 3304300, 'Rio Claro, Rio de Janeiro': 3304409, 'Rio das Flores, Rio de Janeiro': 3304508, 'Rio das Ostras, Rio de Janeiro': 3304524, 'Rio de Janeiro, Rio de Janeiro': 3304557, 'Santa Maria Madalena, Rio de Janeiro': 3304607, 'Santo Antônio de Pádua, Rio de Janeiro': 3304706, 'São Francisco de Itabapoana, Rio de Janeiro': 3304755, 'São Fidélis, Rio de Janeiro': 3304805, 'São Gonçalo, Rio de Janeiro': 3304904, 'São João da Barra, Rio de Janeiro': 3305000, 'São João de Meriti, Rio de Janeiro': 3305109, 'São José de Ubá, Rio de Janeiro': 3305133, 'São José do Vale do Rio Preto, Rio de Janeiro': 3305158, 'São Pedro da Aldeia, Rio de Janeiro': 3305208, 'São Sebastião do Alto, Rio de Janeiro': 3305307, 'Sapucaia, Rio de Janeiro': 3305406, 'Saquarema, Rio de Janeiro': 3305505, 'Seropédica, Rio de Janeiro': 3305554, 'Silva Jardim, Rio de Janeiro': 3305604, 'Sumidouro, Rio de Janeiro': 3305703, 'Tanguá, Rio de Janeiro': 3305752, 'Teresópolis, Rio de Janeiro': 3305802, 'Trajano de Moraes, Rio de Janeiro': 3305901, 'Três Rios, Rio de Janeiro': 3306008, 'Valença, Rio de Janeiro': 3306107, 'Varre-Sai, Rio de Janeiro': 3306156, 'Vassouras, Rio de Janeiro': 3306206, 'Volta Redonda, Rio de Janeiro': 3306305, 'Américo Brasiliense, São Paulo': 3501707, 'Araraquara, São Paulo': 3503208, 'Boa Esperança do Sul, São Paulo': 3506706, 'Borborema, São Paulo': 3507407, 'Cândido Rodrigues, São Paulo': 3510104, 'Descalvado, São Paulo': 3513702, 'Dobrada, São Paulo': 3514007, 'Dourado, São Paulo': 3514304, 'Gavião Peixoto, São Paulo': 3516853, 'Ibaté, São Paulo': 3519303, 'Ibitinga, São Paulo': 3519600, 'Itápolis, São Paulo': 3522703, 'Itirapina, São Paulo': 3523602, 'Matão, São Paulo': 3529302, 'Motuca, São Paulo': 3532058, 'Nova Europa, São Paulo': 3532900, 'Pirassununga, São Paulo': 3539301, 'Porto Ferreira, São Paulo': 3540705, 'Ribeirão Bonito, São Paulo': 3542909, 'Rincão, São Paulo': 3543709, 'Santa Lúcia, São Paulo': 3546900, 'Santa Rita do Passa Quatro, São Paulo': 3547502, 'São Carlos, São Paulo': 3548906, 'Tabatinga, São Paulo': 3552700, 'Taquaritinga, São Paulo': 3553708, 'Trabiju, São Paulo': 3554755, 'Arapoti, Paraná': 4101606, 'Boa Ventura de São Roque, Paraná': 4103040, 'Campina do Simão, Paraná': 4103958, 'Candói, Paraná': 4104428, 'Cantagalo, Paraná': 4104451, 'Carambeí, Paraná': 4104659, 'Castro, Paraná': 4104907, 'Curiúva, Paraná': 4107009, 'Fernandes Pinheiro, Paraná': 4107736, 'Foz do Jordão, Paraná': 4108452, 'Goioxim, Paraná': 4108650, 'Guamiranga, Paraná': 4108957, 'Guarapuava, Paraná': 4109401, 'Imbaú, Paraná': 4110078, 'Imbituva, Paraná': 4110102, 'Inácio Martins, Paraná': 4110201, 'Ipiranga, Paraná': 4110508, 'Irati, Paraná': 4110706, 'Ivaí, Paraná': 4111407, 'Jaguariaíva, Paraná': 4112009, 'Laranjal, Paraná': 4113254, 'Mallet, Paraná': 4113908, 'Mato Rico, Paraná': 4115739, 'Nova Tebas, Paraná': 4117271, 'Ortigueira, Paraná': 4117305, 'Palmeira, Paraná': 4117701, 'Palmital, Paraná': 4117800, 'Pinhão, Paraná': 4119301, 'Piraí do Sul, Paraná': 4119400, 'Pitanga, Paraná': 4119608, 'Ponta Grossa, Paraná': 4119905, 'Porto Amazonas, Paraná': 4120101, 'Prudentópolis, Paraná': 4120606, 'Rebouças, Paraná': 4121505, 'Reserva, Paraná': 4121703, 'Reserva do Iguaçu, Paraná': 4121752, 'Rio Azul, Paraná': 4122008, 'Santa Maria do Oeste, Paraná': 4123857, 'São João do Triunfo, Paraná': 4125100, 'Sengés, Paraná': 4126306, 'Teixeira Soares, Paraná': 4127007, 'Telêmaco Borba, Paraná': 4127106, 'Tibagi, Paraná': 4127502, 'Turvo, Paraná': 4127965, 'Ventania, Paraná': 4128534, 'Águas Mornas, Santa Catarina': 4200606, 'Alfredo Wagner, Santa Catarina': 4200705, 'Angelina, Santa Catarina': 4200903, 'Anita Garibaldi, Santa Catarina': 4201000, 'Anitápolis, Santa Catarina': 4201109, 'Antônio Carlos, Santa Catarina': 4201208, 'Araquari, Santa Catarina': 4201307, 'Arroio Trinta, Santa Catarina': 4201604, 'Balneário Barra do Sul, Santa Catarina': 4202057, 'Bela Vista do Toldo, Santa Catarina': 4202131, 'Biguaçu, Santa Catarina': 4202305, 'Bocaina do Sul, Santa Catarina': 4202438, 'Bom Jardim da Serra, Santa Catarina': 4202503, 'Bom Retiro, Santa Catarina': 4202602, 'Brunópolis, Santa Catarina': 4202875, 'Caçador, Santa Catarina': 4203006, 'Calmon, Santa Catarina': 4203154, 'Capão Alto, Santa Catarina': 4203253, 'Campo Alegre, Santa Catarina': 4203303, 'Campo Belo do Sul, Santa Catarina': 4203402, 'Canoinhas, Santa Catarina': 4203808, 'Cerro Negro, Santa Catarina': 4204178, 'Corupá, Santa Catarina': 4204509, 'Correia Pinto, Santa Catarina': 4204558, 'Curitibanos, Santa Catarina': 4204806, 'Florianópolis, Santa Catarina': 4205407, 'Fraiburgo, Santa Catarina': 4205506, 'Frei Rogério, Santa Catarina': 4205555, 'Garopaba, Santa Catarina': 4205704, 'Garuva, Santa Catarina': 4205803, 'Governador Celso Ramos, Santa Catarina': 4206009, 'Guaramirim, Santa Catarina': 4206504, 'Ibiam, Santa Catarina': 4206751, 'Imbituba, Santa Catarina': 4207304, 'Iomerê, Santa Catarina': 4207577, 'Irineópolis, Santa Catarina': 4207908, 'Itaiópolis, Santa Catarina': 4208104, 'Itapoá, Santa Catarina': 4208450, 'Jaraguá do Sul, Santa Catarina': 4208906, 'Joinville, Santa Catarina': 4209102, 'Lages, Santa Catarina': 4209300, 'Lebon Régis, Santa Catarina': 4209706, 'Macieira, Santa Catarina': 4210050, 'Mafra, Santa Catarina': 4210100, 'Major Vieira, Santa Catarina': 4210308, 'Massaranduba, Santa Catarina': 4210605, 'Matos Costa, Santa Catarina': 4210704, 'Monte Carlo, Santa Catarina': 4211058, 'Monte Castelo, Santa Catarina': 4211108, 'Otacílio Costa, Santa Catarina': 4211751, 'Painel, Santa Catarina': 4211892, 'Palhoça, Santa Catarina': 4211900, 'Palmeira, Santa Catarina': 4212056, 'Papanduva, Santa Catarina': 4212205, 'Paulo Lopes, Santa Catarina': 4212304, 'Pinheiro Preto, Santa Catarina': 4213005, 'Ponte Alta, Santa Catarina': 4213302, 'Ponte Alta do Norte, Santa Catarina': 4213351, 'Porto União, Santa Catarina': 4213609, 'Rancho Queimado, Santa Catarina': 4214300, 'Rio das Antas, Santa Catarina': 4214409, 'Rio Negrinho, Santa Catarina': 4215000, 'Rio Rufino, Santa Catarina': 4215059, 'Salto Veloso, Santa Catarina': 4215406, 'Santa Cecília, Santa Catarina': 4215505, 'Santo Amaro da Imperatriz, Santa Catarina': 4215703, 'São Bento do Sul, Santa Catarina': 4215802, 'São Bonifácio, Santa Catarina': 4215901, 'São Cristovão do Sul, Santa Catarina': 4216057, 'São Francisco do Sul, Santa Catarina': 4216206, 'São João do Itaperiú, Santa Catarina': 4216354, 'São Joaquim, Santa Catarina': 4216503, 'São José, Santa Catarina': 4216602, 'São José do Cerrito, Santa Catarina': 4216800, 'São Pedro de Alcântara, Santa Catarina': 4217253, 'Schroeder, Santa Catarina': 4217402, 'Tangará, Santa Catarina': 4217907, 'Timbó Grande, Santa Catarina': 4218251, 'Três Barras, Santa Catarina': 4218301, 'Urubici, Santa Catarina': 4218905, 'Urupema, Santa Catarina': 4218954, 'Videira, Santa Catarina': 4219309, 'Aceguá, Rio Grande do Sul': 4300034, 'Alegrete, Rio Grande do Sul': 4300406, 'Arroio do Padre, Rio Grande do Sul': 4301073, 'Arroio Grande, Rio Grande do Sul': 4301305, 'Bagé, Rio Grande do Sul': 4301602, 'Barra do Quaraí, Rio Grande do Sul': 4301875, 'Candiota, Rio Grande do Sul': 4304358, 'Canguçu, Rio Grande do Sul': 4304507, 'Capão do Leão, Rio Grande do Sul': 4304663, 'Cerrito, Rio Grande do Sul': 4305124, 'Chuí, Rio Grande do Sul': 4305439, 'Dom Pedrito, Rio Grande do Sul': 4306601, 'Herval, Rio Grande do Sul': 4307104, 'Hulha Negra, Rio Grande do Sul': 4309654, 'Itaqui, Rio Grande do Sul': 4310603, 'Jaguarão, Rio Grande do Sul': 4311007, 'Maçambará, Rio Grande do Sul': 4311718, 'Manoel Viana, Rio Grande do Sul': 4311759, 'Morro Redondo, Rio Grande do Sul': 4312450, 'Pedras Altas, Rio Grande do Sul': 4314175, 'Pedro Osório, Rio Grande do Sul': 4314209, 'Pelotas, Rio Grande do Sul': 4314407, 'Pinheiro Machado, Rio Grande do Sul': 4314506, 'Piratini, Rio Grande do Sul': 4314605, 'Quaraí, Rio Grande do Sul': 4315305, 'Rio Grande, Rio Grande do Sul': 4315602, 'Rosário do Sul, Rio Grande do Sul': 4316402, "Sant'Ana do Livramento, Rio Grande do Sul": 4317103, 'Santa Vitória do Palmar, Rio Grande do Sul': 4317301, 'São Borja, Rio Grande do Sul': 4318002, 'São José do Norte, Rio Grande do Sul': 4318507, 'São Lourenço do Sul, Rio Grande do Sul': 4318804, 'Turuçu, Rio Grande do Sul': 4322327, 'Uruguaiana, Rio Grande do Sul': 4322400, 'Anastácio, Mato Grosso do Sul': 5000708, 'Aquidauana, Mato Grosso do Sul': 5001102, 'Bela Vista, Mato Grosso do Sul': 5002100, 'Bodoquena, Mato Grosso do Sul': 5002159, 'Bonito, Mato Grosso do Sul': 5002209, 'Caracol, Mato Grosso do Sul': 5002803, 'Corumbá, Mato Grosso do Sul': 5003207, 'Guia Lopes da Laguna, Mato Grosso do Sul': 5004106, 'Jardim, Mato Grosso do Sul': 5005004, 'Ladário, Mato Grosso do Sul': 5005202, 'Miranda, Mato Grosso do Sul': 5005608, 'Nioaque, Mato Grosso do Sul': 5005806, 'Porto Murtinho, Mato Grosso do Sul': 5006903, 'Alto Araguaia, Mato Grosso': 5100300, 'Alto Garças, Mato Grosso': 5100409, 'Alto Taquari, Mato Grosso': 5100607, 'Araguainha, Mato Grosso': 5101209, 'Araputanga, Mato Grosso': 5101258, 'Cáceres, Mato Grosso': 5102504, 'Campos de Júlio, Mato Grosso': 5102686, 'Comodoro, Mato Grosso': 5103304, "Conquista D'Oeste, Mato Grosso": 5103361, 'Curvelândia, Mato Grosso': 5103437, 'Dom Aquino, Mato Grosso': 5103601, "Figueirópolis D'Oeste, Mato Grosso": 5103809, "Glória D'Oeste, Mato Grosso": 5103957, 'Guiratinga, Mato Grosso': 5104203, 'Indiavaí, Mato Grosso': 5104500, 'Itiquira, Mato Grosso': 5104609, 'Jaciara, Mato Grosso': 5104807, 'Jauru, Mato Grosso': 5105002, 'Juscimeira, Mato Grosso': 5105200, "Lambari D'Oeste, Mato Grosso": 5105234, 'Vila Bela da Santíssima Trindade, Mato Grosso': 5105507, "Mirassol d'Oeste, Mato Grosso": 5105622, 'Nova Lacerda, Mato Grosso': 5106182, 'Paranatinga, Mato Grosso': 5106307, 'Pedra Preta, Mato Grosso': 5106372, 'Pontes e Lacerda, Mato Grosso': 5106752, 'Porto Esperidião, Mato Grosso': 5106828, 'Poxoréo, Mato Grosso': 5107008, 'Primavera do Leste, Mato Grosso': 5107040, 'São José dos Quatro Marcos, Mato Grosso': 5107107, 'Reserva do Cabaçal, Mato Grosso': 5107156, 'Rio Branco, Mato Grosso': 5107206, 'São José do Povo, Mato Grosso': 5107297, 'São Pedro da Cipa, Mato Grosso': 5107404, 'Rondonópolis, Mato Grosso': 5107602, 'Salto do Céu, Mato Grosso': 5107750, 'Santo Antônio do Leste, Mato Grosso': 5107792, 'Tesouro, Mato Grosso': 5108105, 'Vale de São Domingos, Mato Grosso': 5108352, 'Água Limpa, Goiás': 5200209, 'Aloândia, Goiás': 5200506, 'Bom Jesus de Goiás, Goiás': 5203500, 'Buriti Alegre, Goiás': 5203906, 'Cachoeira Dourada, Goiás': 5204250, 'Caldas Novas, Goiás': 5204508, 'Corumbaíba, Goiás': 5205901, 'Cristianópolis, Goiás': 5206305, 'Cromínia, Goiás': 5206503, 'Edealina, Goiás': 5207352, 'Goiatuba, Goiás': 5209101, 'Itumbiara, Goiás': 5211503, 'Joviânia, Goiás': 5212105, 'Mairipotaba, Goiás': 5212600, 'Marzagão, Goiás': 5212907, 'Morrinhos, Goiás': 5213806, 'Panamá, Goiás': 5216007, 'Piracanjuba, Goiás': 5217104, 'Pontalina, Goiás': 5217708, 'Professor Jamil, Goiás': 5218391, 'Rio Quente, Goiás': 5218789, 'Vicentinópolis, Goiás': 5222054, 'Brasília, Distrito Federal': 5300108, "Alta Floresta D'Oeste, Rondônia": 1100015, 'Cabixi, Rondônia': 1100031, 'Cacoal, Rondônia': 1100049, 'Cerejeiras, Rondônia': 1100056, 'Colorado do Oeste, Rondônia': 1100064, 'Corumbiara, Rondônia': 1100072, 'Costa Marques, Rondônia': 1100080, "Espigão D'Oeste, Rondônia": 1100098, 'Ji-Paraná, Rondônia': 1100122, "Nova Brasilândia D'Oeste, Rondônia": 1100148, 'Ouro Preto do Oeste, Rondônia': 1100155, 'Pimenta Bueno, Rondônia': 1100189, 'Presidente Médici, Rondônia': 1100254, 'Rolim de Moura, Rondônia': 1100288, "Santa Luzia D'Oeste, Rondônia": 1100296, 'Vilhena, Rondônia': 1100304, 'São Miguel do Guaporé, Rondônia': 1100320, "Alvorada D'Oeste, Rondônia": 1100346, 'Alto Alegre dos Parecis, Rondônia': 1100379, 'Novo Horizonte do Oeste, Rondônia': 1100502, 'Castanheiras, Rondônia': 1100908, 'Chupinguaia, Rondônia': 1100924, 'Ministro Andreazza, Rondônia': 1101203, 'Mirante da Serra, Rondônia': 1101302, 'Nova União, Rondônia': 1101435, 'Parecis, Rondônia': 1101450, 'Pimenteiras do Oeste, Rondônia': 1101468, 'Primavera de Rondônia, Rondônia': 1101476, "São Felipe D'Oeste, Rondônia": 1101484, 'São Francisco do Guaporé, Rondônia': 1101492, 'Seringueiras, Rondônia': 1101500, 'Teixeirópolis, Rondônia': 1101559, 'Urupá, Rondônia': 1101708, 'Vale do Paraíso, Rondônia': 1101807, 'Augusto Corrêa, Pará': 1500909, 'Aurora do Pará, Pará': 1500958, 'Bonito, Pará': 1501600, 'Bragança, Pará': 1501709, 'Cachoeira do Piriá, Pará': 1501956, 'Capanema, Pará': 1502202, 'Capitão Poço, Pará': 1502301, 'Castanhal, Pará': 1502400, 'Curuçá, Pará': 1502905, 'Dom Eliseu, Pará': 1502939, 'Garrafão do Norte, Pará': 1503077, 'Igarapé-Açu, Pará': 1503200, 'Inhangapi, Pará': 1503408, 'Ipixuna do Pará, Pará': 1503457, 'Irituia, Pará': 1503507, 'Mãe do Rio, Pará': 1504059, 'Magalhães Barata, Pará': 1504109, 'Maracanã, Pará': 1504307, 'Marapanim, Pará': 1504406, 'Nova Esperança do Piriá, Pará': 1504950, 'Nova Timboteua, Pará': 1505007, 'Ourém, Pará': 1505403, 'Paragominas, Pará': 1505502, 'Peixe-Boi, Pará': 1505601, 'Primavera, Pará': 1506104, 'Quatipuru, Pará': 1506112, 'Salinópolis, Pará': 1506203, 'Santa Luzia do Pará, Pará': 1506559, 'Santa Maria do Pará, Pará': 1506609, 'Santarém Novo, Pará': 1506906, 'São Domingos do Capim, Pará': 1507201, 'São Francisco do Pará, Pará': 1507409, 'São João da Ponta, Pará': 1507466, 'São João de Pirabas, Pará': 1507474, 'São Miguel do Guamá, Pará': 1507607, 'Terra Alta, Pará': 1507961, 'Tracuateua, Pará': 1508035, 'Ulianópolis, Pará': 1508126, 'Viseu, Pará': 1508308, 'Abreulândia, Tocantins': 1700251, 'Aparecida do Rio Negro, Tocantins': 1701101, 'Araguacema, Tocantins': 1701903, 'Barrolândia, Tocantins': 1703107, 'Brejinho de Nazaré, Tocantins': 1703701, 'Caseara, Tocantins': 1703909, 'Chapada de Areia, Tocantins': 1704600, 'Chapada da Natividade, Tocantins': 1705102, 'Cristalândia, Tocantins': 1706100, 'Divinópolis do Tocantins, Tocantins': 1707108, 'Dois Irmãos do Tocantins, Tocantins': 1707207, 'Fátima, Tocantins': 1707553, 'Ipueiras, Tocantins': 1709807, 'Lagoa da Confusão, Tocantins': 1711902, 'Lagoa do Tocantins, Tocantins': 1711951, 'Lajeado, Tocantins': 1712009, 'Lizarda, Tocantins': 1712405, 'Marianópolis do Tocantins, Tocantins': 1712504, 'Mateiros, Tocantins': 1712702, 'Miracema do Tocantins, Tocantins': 1713205, 'Miranorte, Tocantins': 1713304, 'Monte do Carmo, Tocantins': 1713601, 'Monte Santo do Tocantins, Tocantins': 1713700, 'Natividade, Tocantins': 1714203, 'Nova Rosalândia, Tocantins': 1715002, 'Novo Acordo, Tocantins': 1715101, 'Oliveira de Fátima, Tocantins': 1715507, 'Paraíso do Tocantins, Tocantins': 1716109, 'Pindorama do Tocantins, Tocantins': 1717008, 'Pium, Tocantins': 1717503, 'Ponte Alta do Tocantins, Tocantins': 1717909, 'Porto Nacional, Tocantins': 1718204, 'Pugmil, Tocantins': 1718451, 'Rio dos Bois, Tocantins': 1718709, 'Rio Sono, Tocantins': 1718758, 'Santa Rita do Tocantins, Tocantins': 1718899, 'Santa Rosa do Tocantins, Tocantins': 1718907, 'Santa Tereza do Tocantins, Tocantins': 1719004, 'São Félix do Tocantins, Tocantins': 1720150, 'Silvanópolis, Tocantins': 1720655, 'Palmas, Tocantins': 1721000, 'Tocantínia, Tocantins': 1721109, 'Aguiarnópolis, Tocantins': 1700301, 'Ananás, Tocantins': 1701002, 'Angico, Tocantins': 1701051, 'Aragominas, Tocantins': 1701309, 'Araguaína, Tocantins': 1702109, 'Araguanã, Tocantins': 1702158, 'Araguatins, Tocantins': 1702208, 'Arapoema, Tocantins': 1702307, 'Augustinópolis, Tocantins': 1702554, 'Axixá do Tocantins, Tocantins': 1702901, 'Babaçulândia, Tocantins': 1703008, 'Bandeirantes do Tocantins, Tocantins': 1703057, 'Barra do Ouro, Tocantins': 1703073, 'Bernardo Sayão, Tocantins': 1703206, 'Bom Jesus do Tocantins, Tocantins': 1703305, 'Brasilândia do Tocantins, Tocantins': 1703602, 'Buriti do Tocantins, Tocantins': 1703800, 'Cachoeirinha, Tocantins': 1703826, 'Campos Lindos, Tocantins': 1703842, 'Carmolândia, Tocantins': 1703883, 'Carrasco Bonito, Tocantins': 1703891, 'Centenário, Tocantins': 1704105, 'Colinas do Tocantins, Tocantins': 1705508, 'Couto Magalhães, Tocantins': 1706001, 'Darcinópolis, Tocantins': 1706506, 'Esperantina, Tocantins': 1707405, 'Filadélfia, Tocantins': 1707702, 'Fortaleza do Tabocão, Tocantins': 1708254, 'Goianorte, Tocantins': 1708304, 'Goiatins, Tocantins': 1709005, 'Guaraí, Tocantins': 1709302, 'Itacajá, Tocantins': 1710508, 'Itaguatins, Tocantins': 1710706, 'Itapiratins, Tocantins': 1710904, 'Itaporã do Tocantins, Tocantins': 1711100, 'Juarina, Tocantins': 1711803, 'Luzinópolis, Tocantins': 1712454, 'Maurilândia do Tocantins, Tocantins': 1712801, 'Palmeiras do Tocantins, Tocantins': 1713809, 'Muricilândia, Tocantins': 1713957, 'Nazaré, Tocantins': 1714302, 'Nova Olinda, Tocantins': 1714880, 'Palmeirante, Tocantins': 1715705, "Pau D'Arco, Tocantins": 1716307, 'Pedro Afonso, Tocantins': 1716505, 'Pequizeiro, Tocantins': 1716653, 'Colméia, Tocantins': 1716703, 'Piraquê, Tocantins': 1717206, 'Praia Norte, Tocantins': 1718303, 'Presidente Kennedy, Tocantins': 1718402, 'Recursolândia, Tocantins': 1718501, 'Riachinho, Tocantins': 1718550, 'Sampaio, Tocantins': 1718808, 'Santa Fé do Araguaia, Tocantins': 1718865, 'Santa Maria do Tocantins, Tocantins': 1718881, 'Santa Terezinha do Tocantins, Tocantins': 1720002, 'São Bento do Tocantins, Tocantins': 1720101, 'São Miguel do Tocantins, Tocantins': 1720200, 'São Sebastião do Tocantins, Tocantins': 1720309, 'Sítio Novo do Tocantins, Tocantins': 1720804, 'Tocantinópolis, Tocantins': 1721208, 'Tupirama, Tocantins': 1721257, 'Tupiratins, Tocantins': 1721307, 'Wanderlândia, Tocantins': 1722081, 'Xambioá, Tocantins': 1722107, 'Aliança do Tocantins, Tocantins': 1700350, 'Almas, Tocantins': 1700400, 'Alvorada, Tocantins': 1700707, 'Araguaçu, Tocantins': 1702000, 'Arraias, Tocantins': 1702406, 'Aurora do Tocantins, Tocantins': 1702703, 'Cariri do Tocantins, Tocantins': 1703867, 'Combinado, Tocantins': 1705557, 'Conceição do Tocantins, Tocantins': 1705607, 'Crixás do Tocantins, Tocantins': 1706258, 'Dianópolis, Tocantins': 1707009, 'Dueré, Tocantins': 1707306, 'Figueirópolis, Tocantins': 1707652, 'Formoso do Araguaia, Tocantins': 1708205, 'Gurupi, Tocantins': 1709500, 'Jaú do Tocantins, Tocantins': 1711506, 'Lavandeira, Tocantins': 1712157, 'Novo Alegre, Tocantins': 1715150, 'Novo Jardim, Tocantins': 1715259, 'Palmeirópolis, Tocantins': 1715754, 'Paranã, Tocantins': 1716208, 'Peixe, Tocantins': 1716604, 'Ponte Alta do Bom Jesus, Tocantins': 1717800, 'Porto Alegre do Tocantins, Tocantins': 1718006, 'Rio da Conceição, Tocantins': 1718659, 'Sandolândia, Tocantins': 1718840, 'São Salvador do Tocantins, Tocantins': 1720259, 'São Valério, Tocantins': 1720499, 'Sucupira, Tocantins': 1720853, 'Taguatinga, Tocantins': 1720903, 'Taipas do Tocantins, Tocantins': 1720937, 'Talismã, Tocantins': 1720978, 'Água Doce do Maranhão, Maranhão': 2100154, 'Alcântara, Maranhão': 2100204, 'Anajatuba, Maranhão': 2100709, 'Anapurus, Maranhão': 2100808, 'Apicum-Açu, Maranhão': 2100832, 'Araioses, Maranhão': 2100907, 'Arari, Maranhão': 2101004, 'Axixá, Maranhão': 2101103, 'Bacabeira, Maranhão': 2101251, 'Bacuri, Maranhão': 2101301, 'Bacurituba, Maranhão': 2101350, 'Barreirinhas, Maranhão': 2101707, 'Belágua, Maranhão': 2101731, 'Bequimão, Maranhão': 2101905, 'Brejo, Maranhão': 2102101, 'Buriti, Maranhão': 2102200, 'Cachoeira Grande, Maranhão': 2102374, 'Cajapió, Maranhão': 2102408, 'Cajari, Maranhão': 2102507, 'Cantanhede, Maranhão': 2102705, 'Cedral, Maranhão': 2103109, 'Central do Maranhão, Maranhão': 2103125, 'Chapadinha, Maranhão': 2103208, 'Cururupu, Maranhão': 2103703, 'Guimarães, Maranhão': 2104909, 'Humberto de Campos, Maranhão': 2105005, 'Icatu, Maranhão': 2105104, 'Itapecuru Mirim, Maranhão': 2105401, 'Magalhães de Almeida, Maranhão': 2106300, 'Mata Roma, Maranhão': 2106409, 'Matinha, Maranhão': 2106508, 'Matões do Norte, Maranhão': 2106631, 'Milagres do Maranhão, Maranhão': 2106672, 'Miranda do Norte, Maranhão': 2106755, 'Mirinzal, Maranhão': 2106805, 'Morros, Maranhão': 2107100, 'Nina Rodrigues, Maranhão': 2107209, 'Olinda Nova do Maranhão, Maranhão': 2107456, 'Paço do Lumiar, Maranhão': 2107506, 'Palmeirândia, Maranhão': 2107605, 'Paulino Neves, Maranhão': 2108058, 'Pedro do Rosário, Maranhão': 2108256, 'Penalva, Maranhão': 2108306, 'Peri Mirim, Maranhão': 2108405, 'Pinheiro, Maranhão': 2108603, 'Pirapemas, Maranhão': 2108801, 'Porto Rico do Maranhão, Maranhão': 2109056, 'Presidente Juscelino, Maranhão': 2109205, 'Presidente Sarney, Maranhão': 2109270, 'Presidente Vargas, Maranhão': 2109304, 'Primeira Cruz, Maranhão': 2109403, 'Raposa, Maranhão': 2109452, 'Rosário, Maranhão': 2109601, 'Santa Helena, Maranhão': 2109809, 'Santa Quitéria do Maranhão, Maranhão': 2110104, 'Santa Rita, Maranhão': 2110203, 'Santana do Maranhão, Maranhão': 2110237, 'Santo Amaro do Maranhão, Maranhão': 2110278, 'São Benedito do Rio Preto, Maranhão': 2110401, 'São Bento, Maranhão': 2110500, 'São Bernardo, Maranhão': 2110609, 'São João Batista, Maranhão': 2111003, 'São José de Ribamar, Maranhão': 2111201, 'São Luís, Maranhão': 2111300, 'São Vicente Ferrer, Maranhão': 2111706, 'Serrano do Maranhão, Maranhão': 2111789, 'Turiaçu, Maranhão': 2112407, 'Turilândia, Maranhão': 2112456, 'Tutóia, Maranhão': 2112506, 'Urbano Santos, Maranhão': 2112605, 'Vargem Grande, Maranhão': 2112704, 'Viana, Maranhão': 2112803, 'Vitória do Mearim, Maranhão': 2112902, 'Altamira do Maranhão, Maranhão': 2100402, 'Alto Alegre do Maranhão, Maranhão': 2100436, 'Alto Alegre do Pindaré, Maranhão': 2100477, 'Amapá do Maranhão, Maranhão': 2100550, 'Araguanã, Maranhão': 2100873, 'Bacabal, Maranhão': 2101202, 'Bela Vista do Maranhão, Maranhão': 2101772, 'Bernardo do Mearim, Maranhão': 2101939, 'Boa Vista do Gurupi, Maranhão': 2101970, 'Bom Jardim, Maranhão': 2102002, 'Bom Lugar, Maranhão': 2102077, 'Brejo de Areia, Maranhão': 2102150, 'Cândido Mendes, Maranhão': 2102606, 'Capinzal do Norte, Maranhão': 2102754, 'Carutapera, Maranhão': 2102903, 'Centro do Guilherme, Maranhão': 2103158, 'Centro Novo do Maranhão, Maranhão': 2103174, 'Conceição do Lago-Açu, Maranhão': 2103554, 'Esperantinópolis, Maranhão': 2104008, 'Godofredo Viana, Maranhão': 2104305, 'Governador Newton Bello, Maranhão': 2104651, 'Governador Nunes Freire, Maranhão': 2104677, 'Igarapé do Meio, Maranhão': 2105153, 'Igarapé Grande, Maranhão': 2105203, 'Joselândia, Maranhão': 2105609, 'Junco do Maranhão, Maranhão': 2105658, 'Lago da Pedra, Maranhão': 2105708, 'Lago do Junco, Maranhão': 2105807, 'Lago Verde, Maranhão': 2105906, 'Lago dos Rodrigues, Maranhão': 2105948, 'Lagoa Grande do Maranhão, Maranhão': 2105963, 'Lima Campos, Maranhão': 2106003, 'Luís Domingues, Maranhão': 2106201, 'Maracaçumé, Maranhão': 2106326, 'Marajá do Sena, Maranhão': 2106359, 'Maranhãozinho, Maranhão': 2106375, 'Monção, Maranhão': 2106904, 'Nova Olinda do Maranhão, Maranhão': 2107357, "Olho d'Água das Cunhãs, Maranhão": 2107407, 'Paulo Ramos, Maranhão': 2108108, 'Pedreiras, Maranhão': 2108207, 'Pindaré-Mirim, Maranhão': 2108504, 'Pio XII, Maranhão': 2108702, 'Poção de Pedras, Maranhão': 2108900, 'Presidente Médici, Maranhão': 2109239, 'Santa Inês, Maranhão': 2109908, 'Santa Luzia, Maranhão': 2110005, 'Santa Luzia do Paruá, Maranhão': 2110039, 'Santo Antônio dos Lopes, Maranhão': 2110302, 'São João do Carú, Maranhão': 2111029, 'São Luís Gonzaga do Maranhão, Maranhão': 2111409, 'São Mateus do Maranhão, Maranhão': 2111508, 'São Raimundo do Doca Bezerra, Maranhão': 2111631, 'São Roberto, Maranhão': 2111672, 'Satubinha, Maranhão': 2111722, 'Trizidela do Vale, Maranhão': 2112233, 'Tufilândia, Maranhão': 2112274, 'Vitorino Freire, Maranhão': 2113009, 'Zé Doca, Maranhão': 2114007, 'Barão de Grajaú, Maranhão': 2101509, 'Benedito Leite, Maranhão': 2101806, 'Colinas, Maranhão': 2103505, 'Dom Pedro, Maranhão': 2103802, 'Fortuna, Maranhão': 2104206, 'Gonçalves Dias, Maranhão': 2104404, 'Governador Archer, Maranhão': 2104503, 'Governador Eugênio Barros, Maranhão': 2104602, 'Governador Luiz Rocha, Maranhão': 2104628, 'Graça Aranha, Maranhão': 2104701, 'Jatobá, Maranhão': 2105450, 'Lagoa do Mato, Maranhão': 2105922, 'Mirador, Maranhão': 2106706, 'Nova Iorque, Maranhão': 2107308, 'Paraibano, Maranhão': 2107704, 'Passagem Franca, Maranhão': 2107902, 'Pastos Bons, Maranhão': 2108009, 'Presidente Dutra, Maranhão': 2109106, 'Santa Filomena do Maranhão, Maranhão': 2109759, 'São Domingos do Azeitão, Maranhão': 2110658, 'São Domingos do Maranhão, Maranhão': 2110708, 'São Francisco do Maranhão, Maranhão': 2110906, 'São João dos Patos, Maranhão': 2111102, 'São José dos Basílios, Maranhão': 2111250, 'Senador Alexandre Costa, Maranhão': 2111748, 'Sucupira do Norte, Maranhão': 2111904, 'Sucupira do Riachão, Maranhão': 2111953, 'Tuntum, Maranhão': 2112308, 'Açailândia, Maranhão': 2100055, 'Alto Parnaíba, Maranhão': 2100501, 'Amarante do Maranhão, Maranhão': 2100600, 'Arame, Maranhão': 2100956, 'Balsas, Maranhão': 2101400, 'Barra do Corda, Maranhão': 2101608, 'Bom Jesus das Selvas, Maranhão': 2102036, 'Buriticupu, Maranhão': 2102325, 'Buritirana, Maranhão': 2102358, 'Campestre do Maranhão, Maranhão': 2102556, 'Carolina, Maranhão': 2102804, 'Cidelândia, Maranhão': 2103257, 'Davinópolis, Maranhão': 2103752, 'Estreito, Maranhão': 2104057, 'Feira Nova do Maranhão, Maranhão': 2104073, 'Fernando Falcão, Maranhão': 2104081, 'Formosa da Serra Negra, Maranhão': 2104099, 'Fortaleza dos Nogueiras, Maranhão': 2104107, 'Governador Edison Lobão, Maranhão': 2104552, 'Grajaú, Maranhão': 2104800, 'Imperatriz, Maranhão': 2105302, 'Itaipava do Grajaú, Maranhão': 2105351, 'Itinga do Maranhão, Maranhão': 2105427, 'Jenipapo dos Vieiras, Maranhão': 2105476, 'João Lisboa, Maranhão': 2105500, 'Lajeado Novo, Maranhão': 2105989, 'Loreto, Maranhão': 2106102, 'Montes Altos, Maranhão': 2107001, 'Nova Colinas, Maranhão': 2107258, 'Porto Franco, Maranhão': 2109007, 'Riachão, Maranhão': 2109502, 'Ribamar Fiquene, Maranhão': 2109551, 'Sambaíba, Maranhão': 2109700, 'São Félix de Balsas, Maranhão': 2110807, 'São Francisco do Brejão, Maranhão': 2110856, 'São João do Paraíso, Maranhão': 2111052, 'São Pedro da Água Branca, Maranhão': 2111532, 'São Pedro dos Crentes, Maranhão': 2111573, 'São Raimundo das Mangabeiras, Maranhão': 2111607, 'Senador La Rocque, Maranhão': 2111763, 'Sítio Novo, Maranhão': 2111805, 'Tasso Fragoso, Maranhão': 2112001, 'Vila Nova dos Martírios, Maranhão': 2112852, 'Agricolândia, Piauí': 2200103, 'Água Branca, Piauí': 2200202, 'Alto Longá, Piauí': 2200301, 'Altos, Piauí': 2200400, 'Amarante, Piauí': 2200509, 'Angical do Piauí, Piauí': 2200608, 'Aroazes, Piauí': 2200905, 'Assunção do Piauí, Piauí': 2201051, "Barra D'Alcântara, Piauí": 2201176, 'Barras, Piauí': 2201200, 'Barro Duro, Piauí': 2201408, 'Beneditinos, Piauí': 2201606, 'Boa Hora, Piauí': 2201770, 'Boqueirão do Piauí, Piauí': 2201945, 'Buriti dos Montes, Piauí': 2202026, 'Cabeceiras do Piauí, Piauí': 2202059, 'Campo Largo do Piauí, Piauí': 2202174, 'Campo Maior, Piauí': 2202208, 'Castelo do Piauí, Piauí': 2202604, 'Cocal de Telha, Piauí': 2202711, 'Coivaras, Piauí': 2202737, 'Curralinhos, Piauí': 2203255, 'Demerval Lobão, Piauí': 2203305, 'Elesbão Veloso, Piauí': 2203503, 'Francinópolis, Piauí': 2204006, 'Hugo Napoleão, Piauí': 2204600, 'Inhuma, Piauí': 2204709, 'Ipiranga do Piauí, Piauí': 2204808, 'Jardim do Mulato, Piauí': 2205250, 'Jatobá do Piauí, Piauí': 2205276, 'José de Freitas, Piauí': 2205508, 'Juazeiro do Piauí, Piauí': 2205516, 'Lagoinha do Piauí, Piauí': 2205540, 'Lagoa Alegre, Piauí': 2205557, 'Lagoa do Piauí, Piauí': 2205581, 'Lagoa do Sítio, Piauí': 2205599, 'Miguel Alves, Piauí': 2206209, 'Miguel Leão, Piauí': 2206308, 'Monsenhor Gil, Piauí': 2206407, 'Nazária, Piauí': 2206720, 'Nossa Senhora de Nazaré, Piauí': 2206753, 'Nossa Senhora dos Remédios, Piauí': 2206803, 'Novo Oriente do Piauí, Piauí': 2206902, 'Novo Santo Antônio, Piauí': 2206951, "Olho D'Água do Piauí, Piauí": 2207108, 'Palmeirais, Piauí': 2207504, 'Passagem Franca do Piauí, Piauí': 2207751, "Pau D'Arco do Piauí, Piauí": 2207793, 'Pimenteiras, Piauí': 2208106, 'Porto, Piauí': 2208502, 'Prata do Piauí, Piauí': 2208601, 'Regeneração, Piauí': 2208809, 'Santa Cruz dos Milagres, Piauí': 2209153, 'Santo Antônio dos Milagres, Piauí': 2209450, 'São Félix do Piauí, Piauí': 2209609, 'São Gonçalo do Piauí, Piauí': 2209807, 'São João da Serra, Piauí': 2209906, 'São Miguel da Baixa Grande, Piauí': 2210383, 'São Miguel do Tapuio, Piauí': 2210409, 'São Pedro do Piauí, Piauí': 2210508, 'Sigefredo Pacheco, Piauí': 2210656, 'Teresina, Piauí': 2211001, 'União, Piauí': 2211100, 'Valença do Piauí, Piauí': 2211308, 'Várzea Grande, Piauí': 2211407, 'Batalha, Piauí': 2201507, 'Bom Princípio do Piauí, Piauí': 2201919, 'Brasileira, Piauí': 2201960, 'Buriti dos Lopes, Piauí': 2202000, 'Cajueiro da Praia, Piauí': 2202083, 'Capitão de Campos, Piauí': 2202406, 'Caraúbas do Piauí, Piauí': 2202539, 'Caxingó, Piauí': 2202653, 'Cocal, Piauí': 2202703, 'Cocal dos Alves, Piauí': 2202729, 'Domingos Mourão, Piauí': 2203420, 'Esperantina, Piauí': 2203701, 'Ilha Grande, Piauí': 2204659, 'Joaquim Pires, Piauí': 2205409, 'Joca Marques, Piauí': 2205458, 'Lagoa de São Francisco, Piauí': 2205573, 'Luís Correia, Piauí': 2205706, 'Luzilândia, Piauí': 2205805, 'Madeiro, Piauí': 2205854, 'Matias Olímpio, Piauí': 2206100, 'Milton Brandão, Piauí': 2206357, 'Morro do Chapéu do Piauí, Piauí': 2206670, 'Murici dos Portelas, Piauí': 2206696, 'Parnaíba, Piauí': 2207702, 'Pedro II, Piauí': 2207900, 'Piracuruca, Piauí': 2208304, 'Piripiri, Piauí': 2208403, 'São João da Fronteira, Piauí': 2209872, 'São João do Arraial, Piauí': 2209971, 'São José do Divino, Piauí': 2210052, 'Acauã, Piauí': 2200053, 'Alagoinha do Piauí, Piauí': 2200251, 'Alegrete do Piauí, Piauí': 2200277, 'Aroeiras do Itaim, Piauí': 2200954, 'Bela Vista do Piauí, Piauí': 2201556, 'Belém do Piauí, Piauí': 2201572, 'Betânia do Piauí, Piauí': 2201739, 'Bocaina, Piauí': 2201804, 'Cajazeiras do Piauí, Piauí': 2202075, 'Caldeirão Grande do Piauí, Piauí': 2202091, 'Campinas do Piauí, Piauí': 2202109, 'Campo Grande do Piauí, Piauí': 2202133, 'Caridade do Piauí, Piauí': 2202554, 'Colônia do Piauí, Piauí': 2202778, 'Conceição do Canindé, Piauí': 2202802, 'Curral Novo do Piauí, Piauí': 2203271, 'Dom Expedito Lopes, Piauí': 2203404, 'Floresta do Piauí, Piauí': 2203859, 'Francisco Macedo, Piauí': 2204154, 'Francisco Santos, Piauí': 2204204, 'Fronteiras, Piauí': 2204303, 'Geminiano, Piauí': 2204352, 'Isaías Coelho, Piauí': 2204907, 'Itainópolis, Piauí': 2205003, 'Jacobina do Piauí, Piauí': 2205151, 'Jaicós, Piauí': 2205201, 'Marcolândia, Piauí': 2205953, 'Massapê do Piauí, Piauí': 2206050, 'Monsenhor Hipólito, Piauí': 2206506, 'Oeiras, Piauí': 2207009, 'Padre Marcos, Piauí': 2207207, 'Paes Landim, Piauí': 2207306, 'Paquetá, Piauí': 2207553, 'Patos do Piauí, Piauí': 2207777, 'Paulistana, Piauí': 2207801, 'Picos, Piauí': 2208007, 'Pio IX, Piauí': 2208205, 'Queimada Nova, Piauí': 2208650, 'Santa Cruz do Piauí, Piauí': 2209104, 'Santana do Piauí, Piauí': 2209351, 'Santa Rosa do Piauí, Piauí': 2209377, 'Santo Antônio de Lisboa, Piauí': 2209401, 'Santo Inácio do Piauí, Piauí': 2209500, 'São Francisco de Assis do Piauí, Piauí': 2209658, 'São João da Canabrava, Piauí': 2209856, 'São João da Varjota, Piauí': 2209955, 'São José do Piauí, Piauí': 2210201, 'São Julião, Piauí': 2210300, 'São Luis do Piauí, Piauí': 2210375, 'São Miguel do Fidalgo, Piauí': 2210391, 'Simões, Piauí': 2210706, 'Simplício Mendes, Piauí': 2210805, 'Socorro do Piauí, Piauí': 2210904, 'Sussuapara, Piauí': 2210938, 'Tanque do Piauí, Piauí': 2210979, 'Vera Mendes, Piauí': 2211506, 'Vila Nova do Piauí, Piauí': 2211605, 'Wall Ferraz, Piauí': 2211704, 'Antônio Almeida, Piauí': 2200806, 'Arraial, Piauí': 2201002, 'Baixa Grande do Ribeiro, Piauí': 2201150, 'Bertolínia, Piauí': 2201705, 'Brejo do Piauí, Piauí': 2201988, 'Canavieira, Piauí': 2202251, 'Canto do Buriti, Piauí': 2202307, 'Eliseu Martins, Piauí': 2203602, 'Flores do Piauí, Piauí': 2203800, 'Floriano, Piauí': 2203909, 'Francisco Ayres, Piauí': 2204105, 'Guadalupe, Piauí': 2204501, 'Itaueira, Piauí': 2205102, 'Jerumenha, Piauí': 2205300, 'Landri Sales, Piauí': 2205607, 'Manoel Emídio, Piauí': 2205904, 'Marcos Parente, Piauí': 2206001, 'Nazaré do Piauí, Piauí': 2206704, 'Pajeú do Piauí, Piauí': 2207355, 'Pavussu, Piauí': 2207850, 'Porto Alegre do Piauí, Piauí': 2208551, 'Ribeiro Gonçalves, Piauí': 2208908, 'Rio Grande do Piauí, Piauí': 2209005, 'São Francisco do Piauí, Piauí': 2209708, 'São José do Peixe, Piauí': 2210102, 'Sebastião Leal, Piauí': 2210631, 'Tamboril do Piauí, Piauí': 2210953, 'Uruçuí, Piauí': 2211209, 'Acarape, Ceará': 2300150, 'Amontada, Ceará': 2300754, 'Apuiarés, Ceará': 2300903, 'Aquiraz, Ceará': 2301000, 'Aracoiaba, Ceará': 2301208, 'Aratuba, Ceará': 2301406, 'Barreira, Ceará': 2301950, 'Baturité, Ceará': 2302107, 'Beberibe, Ceará': 2302206, 'Boa Viagem, Ceará': 2302404, 'Canindé, Ceará': 2302800, 'Capistrano, Ceará': 2302909, 'Caridade, Ceará': 2303006, 'Cascavel, Ceará': 2303501, 'Caucaia, Ceará': 2303709, 'Chorozinho, Ceará': 2303956, 'Eusébio, Ceará': 2304285, 'Fortaleza, Ceará': 2304400, 'General Sampaio, Ceará': 2304608, 'Guaiúba, Ceará': 2304954, 'Guaramiranga, Ceará': 2305100, 'Horizonte, Ceará': 2305233, 'Irauçuba, Ceará': 2306108, 'Itaitinga, Ceará': 2306256, 'Itapagé, Ceará': 2306306, 'Itapipoca, Ceará': 2306405, 'Itapiúna, Ceará': 2306504, 'Itatira, Ceará': 2306603, 'Madalena, Ceará': 2307635, 'Maracanaú, Ceará': 2307650, 'Maranguape, Ceará': 2307700, 'Miraíma, Ceará': 2308377, 'Mulungu, Ceará': 2309102, 'Ocara, Ceará': 2309458, 'Pacajus, Ceará': 2309607, 'Pacatuba, Ceará': 2309706, 'Pacoti, Ceará': 2309805, 'Palmácia, Ceará': 2310100, 'Paracuru, Ceará': 2310209, 'Paraipaba, Ceará': 2310258, 'Paramoti, Ceará': 2310407, 'Pentecoste, Ceará': 2310704, 'Pindoretama, Ceará': 2310852, 'Redenção, Ceará': 2311603, 'São Gonçalo do Amarante, Ceará': 2312403, 'São Luís do Curu, Ceará': 2312601, 'Tejuçuoca, Ceará': 2313351, 'Trairi, Ceará': 2313500, 'Tururu, Ceará': 2313559, 'Umirim, Ceará': 2313757, 'Uruburetama, Ceará': 2313807, 'Alto Santo, Ceará': 2300705, 'Aracati, Ceará': 2301109, 'Banabuiú, Ceará': 2301851, 'Choró, Ceará': 2303931, 'Deputado Irapuan Pinheiro, Ceará': 2304269, 'Ererê, Ceará': 2304277, 'Fortim, Ceará': 2304459, 'Ibaretama, Ceará': 2305266, 'Ibicuitinga, Ceará': 2305332, 'Icapuí, Ceará': 2305357, 'Iracema, Ceará': 2306009, 'Itaiçaba, Ceará': 2306207, 'Jaguaretama, Ceará': 2306702, 'Jaguaribara, Ceará': 2306801, 'Jaguaribe, Ceará': 2306900, 'Jaguaruana, Ceará': 2307007, 'Limoeiro do Norte, Ceará': 2307601, 'Milhã, Ceará': 2308351, 'Morada Nova, Ceará': 2308708, 'Palhano, Ceará': 2310001, 'Pedra Branca, Ceará': 2310506, 'Pereiro, Ceará': 2310803, 'Potiretama, Ceará': 2311231, 'Quixadá, Ceará': 2311306, 'Quixeramobim, Ceará': 2311405, 'Quixeré, Ceará': 2311504, 'Russas, Ceará': 2311801, 'São João do Jaguaribe, Ceará': 2312502, 'Senador Pompeu, Ceará': 2312700, 'Solonópole, Ceará': 2313005, 'Tabuleiro do Norte, Ceará': 2313104, 'Abaiara, Ceará': 2300101, 'Aiuaba, Ceará': 2300408, 'Altaneira, Ceará': 2300606, 'Antonina do Norte, Ceará': 2300804, 'Araripe, Ceará': 2301307, 'Assaré, Ceará': 2301604, 'Aurora, Ceará': 2301703, 'Barbalha, Ceará': 2301901, 'Barro, Ceará': 2302008, 'Brejo Santo, Ceará': 2302503, 'Campos Sales, Ceará': 2302701, 'Caririaçu, Ceará': 2303204, 'Crato, Ceará': 2304202, 'Farias Brito, Ceará': 2304301, 'Granjeiro, Ceará': 2304806, 'Jardim, Ceará': 2307106, 'Jati, Ceará': 2307205, 'Juazeiro do Norte, Ceará': 2307304, 'Lavras da Mangabeira, Ceará': 2307502, 'Mauriti, Ceará': 2308104, 'Milagres, Ceará': 2308302, 'Missão Velha, Ceará': 2308401, 'Nova Olinda, Ceará': 2309201, 'Penaforte, Ceará': 2310605, 'Porteiras, Ceará': 2311108, 'Potengi, Ceará': 2311207, 'Salitre, Ceará': 2311959, 'Santana do Cariri, Ceará': 2312106, 'Tarrafas, Ceará': 2313252, 'Várzea Alegre, Ceará': 2314003, 'Acaraú, Ceará': 2300200, 'Alcântaras, Ceará': 2300507, 'Barroquinha, Ceará': 2302057, 'Bela Cruz, Ceará': 2302305, 'Camocim, Ceará': 2302602, 'Cariré, Ceará': 2303105, 'Carnaubal, Ceará': 2303402, 'Catunda, Ceará': 2303659, 'Chaval, Ceará': 2303907, 'Coreaú, Ceará': 2304004, 'Croatá, Ceará': 2304236, 'Cruz, Ceará': 2304251, 'Forquilha, Ceará': 2304350, 'Frecheirinha, Ceará': 2304509, 'Graça, Ceará': 2304657, 'Granja, Ceará': 2304707, 'Groaíras, Ceará': 2304905, 'Guaraciaba do Norte, Ceará': 2305001, 'Hidrolândia, Ceará': 2305209, 'Ibiapina, Ceará': 2305308, 'Ipu, Ceará': 2305803, 'Ipueiras, Ceará': 2305902, 'Itarema, Ceará': 2306553, 'Jijoca de Jericoacoara, Ceará': 2307254, 'Marco, Ceará': 2307809, 'Martinópole, Ceará': 2307908, 'Massapê, Ceará': 2308005, 'Meruoca, Ceará': 2308203, 'Moraújo, Ceará': 2308807, 'Morrinhos, Ceará': 2308906, 'Mucambo, Ceará': 2309003, 'Pacujá, Ceará': 2309904, 'Pires Ferreira, Ceará': 2310951, 'Reriutaba, Ceará': 2311702, 'Santana do Acaraú, Ceará': 2312007, 'Santa Quitéria, Ceará': 2312205, 'São Benedito, Ceará': 2312304, 'Senador Sá, Ceará': 2312809, 'Sobral, Ceará': 2312908, 'Tianguá, Ceará': 2313401, 'Ubajara, Ceará': 2313609, 'Uruoca, Ceará': 2313906, 'Varjota, Ceará': 2313955, 'Viçosa do Ceará, Ceará': 2314102, 'Arês, Rio Grande do Norte': 2401206, 'Baía Formosa, Rio Grande do Norte': 2401404, 'Barcelona, Rio Grande do Norte': 2401503, 'Bento Fernandes, Rio Grande do Norte': 2401602, 'Bom Jesus, Rio Grande do Norte': 2401701, 'Brejinho, Rio Grande do Norte': 2401800, 'Caiçara do Norte, Rio Grande do Norte': 2401859, 'Caiçara do Rio do Vento, Rio Grande do Norte': 2401909, 'Campo Redondo, Rio Grande do Norte': 2402105, 'Canguaretama, Rio Grande do Norte': 2402204, 'Ceará-Mirim, Rio Grande do Norte': 2402600, 'Coronel Ezequiel, Rio Grande do Norte': 2402808, 'Parnamirim, Rio Grande do Norte': 2403251, 'Espírito Santo, Rio Grande do Norte': 2403509, 'Extremoz, Rio Grande do Norte': 2403608, 'Galinhos, Rio Grande do Norte': 2404101, 'Goianinha, Rio Grande do Norte': 2404200, 'Ielmo Marinho, Rio Grande do Norte': 2404606, 'Jaçanã, Rio Grande do Norte': 2405009, 'Jandaíra, Rio Grande do Norte': 2405108, 'Boa Saúde, Rio Grande do Norte': 2405306, 'Japi, Rio Grande do Norte': 2405405, 'Jardim de Angicos, Rio Grande do Norte': 2405504, 'João Câmara, Rio Grande do Norte': 2405801, 'Jundiá, Rio Grande do Norte': 2406155, "Lagoa d'Anta, Rio Grande do Norte": 2406205, 'Lagoa de Pedras, Rio Grande do Norte': 2406304, 'Lagoa de Velhos, Rio Grande do Norte': 2406403, 'Lagoa Salgada, Rio Grande do Norte': 2406601, 'Lajes Pintadas, Rio Grande do Norte': 2406809, 'Macaíba, Rio Grande do Norte': 2407104, 'Maxaranguape, Rio Grande do Norte': 2407500, 'Montanhas, Rio Grande do Norte': 2407708, 'Monte Alegre, Rio Grande do Norte': 2407807, 'Monte das Gameleiras, Rio Grande do Norte': 2407906, 'Natal, Rio Grande do Norte': 2408102, 'Nísia Floresta, Rio Grande do Norte': 2408201, 'Nova Cruz, Rio Grande do Norte': 2408300, 'Parazinho, Rio Grande do Norte': 2408805, 'Rio do Fogo, Rio Grande do Norte': 2408953, 'Passa e Fica, Rio Grande do Norte': 2409100, 'Passagem, Rio Grande do Norte': 2409209, 'Santa Maria, Rio Grande do Norte': 2409332, 'Pedra Grande, Rio Grande do Norte': 2409506, 'Pedra Preta, Rio Grande do Norte': 2409605, 'Pedro Avelino, Rio Grande do Norte': 2409704, 'Pedro Velho, Rio Grande do Norte': 2409803, 'Poço Branco, Rio Grande do Norte': 2410108, 'Serra Caiada, Rio Grande do Norte': 2410306, 'Pureza, Rio Grande do Norte': 2410405, 'Riachuelo, Rio Grande do Norte': 2410900, 'Ruy Barbosa, Rio Grande do Norte': 2411106, 'Santa Cruz, Rio Grande do Norte': 2411205, 'Santo Antônio, Rio Grande do Norte': 2411502, 'São Bento do Norte, Rio Grande do Norte': 2411601, 'São Bento do Trairí, Rio Grande do Norte': 2411700, 'São Gonçalo do Amarante, Rio Grande do Norte': 2412005, 'São José de Mipibu, Rio Grande do Norte': 2412203, 'São José do Campestre, Rio Grande do Norte': 2412302, 'São Miguel do Gostoso, Rio Grande do Norte': 2412559, 'São Paulo do Potengi, Rio Grande do Norte': 2412609, 'São Pedro, Rio Grande do Norte': 2412708, 'São Tomé, Rio Grande do Norte': 2412906, 'Senador Elói de Souza, Rio Grande do Norte': 2413102, 'Senador Georgino Avelino, Rio Grande do Norte': 2413201, 'Serra de São Bento, Rio Grande do Norte': 2413300, 'Serrinha, Rio Grande do Norte': 2413508, 'Sítio Novo, Rio Grande do Norte': 2413706, 'Taipu, Rio Grande do Norte': 2413904, 'Tangará, Rio Grande do Norte': 2414001, 'Tibau do Sul, Rio Grande do Norte': 2414209, 'Touros, Rio Grande do Norte': 2414407, 'Várzea, Rio Grande do Norte': 2414704, 'Vera Cruz, Rio Grande do Norte': 2414803, 'Vila Flor, Rio Grande do Norte': 2415008, 'Açu, Rio Grande do Norte': 2400208, 'Afonso Bezerra, Rio Grande do Norte': 2400307, 'Água Nova, Rio Grande do Norte': 2400406, 'Alexandria, Rio Grande do Norte': 2400505, 'Almino Afonso, Rio Grande do Norte': 2400604, 'Alto do Rodrigues, Rio Grande do Norte': 2400703, 'Angicos, Rio Grande do Norte': 2400802, 'Antônio Martins, Rio Grande do Norte': 2400901, 'Apodi, Rio Grande do Norte': 2401008, 'Areia Branca, Rio Grande do Norte': 2401107, 'Campo Grande, Rio Grande do Norte': 2401305, 'Baraúna, Rio Grande do Norte': 2401453, 'Caraúbas, Rio Grande do Norte': 2402303, 'Carnaubais, Rio Grande do Norte': 2402501, 'Coronel João Pessoa, Rio Grande do Norte': 2402907, 'Doutor Severiano, Rio Grande do Norte': 2403202, 'Encanto, Rio Grande do Norte': 2403301, 'Felipe Guerra, Rio Grande do Norte': 2403707, 'Fernando Pedroza, Rio Grande do Norte': 2403756, 'Francisco Dantas, Rio Grande do Norte': 2403905, 'Frutuoso Gomes, Rio Grande do Norte': 2404002, 'Governador Dix-Sept Rosado, Rio Grande do Norte': 2404309, 'Grossos, Rio Grande do Norte': 2404408, 'Guamaré, Rio Grande do Norte': 2404507, 'Ipanguaçu, Rio Grande do Norte': 2404705, 'Itajá, Rio Grande do Norte': 2404853, 'Itaú, Rio Grande do Norte': 2404903, 'Janduís, Rio Grande do Norte': 2405207, 'João Dias, Rio Grande do Norte': 2405900, 'José da Penha, Rio Grande do Norte': 2406007, 'Lajes, Rio Grande do Norte': 2406700, 'Lucrécia, Rio Grande do Norte': 2406908, 'Luís Gomes, Rio Grande do Norte': 2407005, 'Macau, Rio Grande do Norte': 2407203, 'Major Sales, Rio Grande do Norte': 2407252, 'Marcelino Vieira, Rio Grande do Norte': 2407302, 'Martins, Rio Grande do Norte': 2407401, 'Messias Targino, Rio Grande do Norte': 2407609, 'Mossoró, Rio Grande do Norte': 2408003, "Olho-d'Água do Borges, Rio Grande do Norte": 2408409, 'Paraná, Rio Grande do Norte': 2408607, 'Paraú, Rio Grande do Norte': 2408706, 'Patu, Rio Grande do Norte': 2409308, 'Pau dos Ferros, Rio Grande do Norte': 2409407, 'Pendências, Rio Grande do Norte': 2409902, 'Pilões, Rio Grande do Norte': 2410009, 'Portalegre, Rio Grande do Norte': 2410207, 'Porto do Mangue, Rio Grande do Norte': 2410256, 'Rafael Fernandes, Rio Grande do Norte': 2410504, 'Rafael Godeiro, Rio Grande do Norte': 2410603, 'Riacho da Cruz, Rio Grande do Norte': 2410702, 'Riacho de Santana, Rio Grande do Norte': 2410801, 'Rodolfo Fernandes, Rio Grande do Norte': 2411007, 'Tibau, Rio Grande do Norte': 2411056, 'Santana do Matos, Rio Grande do Norte': 2411403, 'São Francisco do Oeste, Rio Grande do Norte': 2411908, 'São Miguel, Rio Grande do Norte': 2412500, 'São Rafael, Rio Grande do Norte': 2412807, 'Serra do Mel, Rio Grande do Norte': 2413359, 'Serrinha dos Pintos, Rio Grande do Norte': 2413557, 'Severiano Melo, Rio Grande do Norte': 2413607, 'Taboleiro Grande, Rio Grande do Norte': 2413805, 'Tenente Ananias, Rio Grande do Norte': 2414100, 'Triunfo Potiguar, Rio Grande do Norte': 2414456, 'Umarizal, Rio Grande do Norte': 2414506, 'Upanema, Rio Grande do Norte': 2414605, 'Venha-Ver, Rio Grande do Norte': 2414753, 'Viçosa, Rio Grande do Norte': 2414902, 'Alagoinha, Paraíba': 2500502, 'Alhandra, Paraíba': 2500601, 'Araçagi, Paraíba': 2500809, 'Arara, Paraíba': 2500908, 'Araruna, Paraíba': 2501005, 'Baía da Traição, Paraíba': 2501401, 'Bananeiras, Paraíba': 2501500, 'Bayeux, Paraíba': 2501807, 'Belém, Paraíba': 2501906, 'Borborema, Paraíba': 2502706, 'Caaporã, Paraíba': 2503001, 'Cabedelo, Paraíba': 2503209, 'Cacimba de Dentro, Paraíba': 2503506, 'Caiçara, Paraíba': 2503605, 'Caldas Brandão, Paraíba': 2503803, 'Capim, Paraíba': 2504033, 'Casserengue, Paraíba': 2504157, 'Conde, Paraíba': 2504603, 'Cruz do Espírito Santo, Paraíba': 2504900, 'Cuitegi, Paraíba': 2505204, 'Cuité de Mamanguape, Paraíba': 2505238, 'Curral de Cima, Paraíba': 2505279, 'Dona Inês, Paraíba': 2505709, 'Duas Estradas, Paraíba': 2505808, 'Guarabira, Paraíba': 2506301, 'Gurinhém, Paraíba': 2506400, 'Itabaiana, Paraíba': 2506905, 'Itapororoca, Paraíba': 2507101, 'Jacaraú, Paraíba': 2507309, 'João Pessoa, Paraíba': 2507507, 'Juarez Távora, Paraíba': 2507606, 'Juripiranga, Paraíba': 2507903, 'Lagoa de Dentro, Paraíba': 2508208, 'Logradouro, Paraíba': 2508554, 'Lucena, Paraíba': 2508604, 'Mamanguape, Paraíba': 2508901, 'Marcação, Paraíba': 2509057, 'Mari, Paraíba': 2509107, 'Mataraca, Paraíba': 2509305, 'Mogeiro, Paraíba': 2509404, 'Mulungu, Paraíba': 2509800, 'Natuba, Paraíba': 2509909, 'Pedras de Fogo, Paraíba': 2511202, 'Pilar, Paraíba': 2511509, 'Pilões, Paraíba': 2511608, 'Pilõezinhos, Paraíba': 2511707, 'Pirpirituba, Paraíba': 2511806, 'Pitimbu, Paraíba': 2511905, 'Pedro Régis, Paraíba': 2512721, 'Riachão, Paraíba': 2512747, 'Riachão do Poço, Paraíba': 2512762, 'Rio Tinto, Paraíba': 2512903, 'Salgado de São Félix, Paraíba': 2513109, 'Santa Rita, Paraíba': 2513703, 'São José dos Ramos, Paraíba': 2514453, 'São Miguel de Taipu, Paraíba': 2515005, 'Sapé, Paraíba': 2515302, 'Serra da Raiz, Paraíba': 2515609, 'Serraria, Paraíba': 2515906, 'Sertãozinho, Paraíba': 2515930, 'Sobrado, Paraíba': 2515971, 'Solânea, Paraíba': 2516003, 'Tacima, Paraíba': 2516409, 'Alagoa Grande, Paraíba': 2500304, 'Alagoa Nova, Paraíba': 2500403, 'Alcantil, Paraíba': 2500536, 'Algodão de Jandaíra, Paraíba': 2500577, 'Amparo, Paraíba': 2500734, 'Areia, Paraíba': 2501104, 'Areial, Paraíba': 2501203, 'Aroeiras, Paraíba': 2501302, 'Assunção, Paraíba': 2501351, 'Baraúna, Paraíba': 2501534, 'Barra de Santana, Paraíba': 2501575, 'Barra de Santa Rosa, Paraíba': 2501609, 'Barra de São Miguel, Paraíba': 2501708, 'Boa Vista, Paraíba': 2502151, 'Boqueirão, Paraíba': 2502508, 'Cabaceiras, Paraíba': 2503100, 'Camalaú, Paraíba': 2503902, 'Campina Grande, Paraíba': 2504009, 'Caraúbas, Paraíba': 2504074, 'Caturité, Paraíba': 2504355, 'Congo, Paraíba': 2504702, 'Coxixola, Paraíba': 2504850, 'Cubati, Paraíba': 2505006, 'Cuité, Paraíba': 2505105, 'Damião, Paraíba': 2505352, 'Esperança, Paraíba': 2506004, 'Fagundes, Paraíba': 2506103, 'Frei Martinho, Paraíba': 2506202, 'Gado Bravo, Paraíba': 2506251, 'Gurjão, Paraíba': 2506509, 'Ingá, Paraíba': 2506806, 'Itatuba, Paraíba': 2507200, 'Juazeirinho, Paraíba': 2507705, 'Junco do Seridó, Paraíba': 2507804, 'Lagoa Seca, Paraíba': 2508307, 'Livramento, Paraíba': 2508505, 'Massaranduba, Paraíba': 2509206, 'Matinhas, Paraíba': 2509339, 'Montadas, Paraíba': 2509503, 'Monteiro, Paraíba': 2509701, 'Nova Floresta, Paraíba': 2510105, 'Nova Palmeira, Paraíba': 2510303, 'Olivedos, Paraíba': 2510501, 'Ouro Velho, Paraíba': 2510600, 'Parari, Paraíba': 2510659, 'Pedra Lavrada, Paraíba': 2511103, 'Picuí, Paraíba': 2511400, 'Pocinhos, Paraíba': 2512002, 'Prata, Paraíba': 2512200, 'Puxinanã, Paraíba': 2512408, 'Queimadas, Paraíba': 2512507, 'Remígio, Paraíba': 2512705, 'Riachão do Bacamarte, Paraíba': 2512754, 'Riacho de Santo Antônio, Paraíba': 2512788, 'Santa Cecília, Paraíba': 2513158, 'Santo André, Paraíba': 2513851, 'São Domingos do Cariri, Paraíba': 2513943, 'São João do Cariri, Paraíba': 2514008, 'São João do Tigre, Paraíba': 2514107, 'São José dos Cordeiros, Paraíba': 2514800, 'São Sebastião de Lagoa de Roça, Paraíba': 2515104, 'São Sebastião do Umbuzeiro, Paraíba': 2515203, 'São Vicente do Seridó, Paraíba': 2515401, 'Serra Branca, Paraíba': 2515500, 'Serra Redonda, Paraíba': 2515807, 'Soledade, Paraíba': 2516102, 'Sossêgo, Paraíba': 2516151, 'Sumé, Paraíba': 2516300, 'Taperoá, Paraíba': 2516508, 'Tenório, Paraíba': 2516755, 'Umbuzeiro, Paraíba': 2517001, 'Zabelê, Paraíba': 2517407, 'Água Branca, Paraíba': 2500106, 'Aguiar, Paraíba': 2500205, 'Areia de Baraúnas, Paraíba': 2501153, 'Belém do Brejo do Cruz, Paraíba': 2502003, 'Boa Ventura, Paraíba': 2502102, 'Bom Sucesso, Paraíba': 2502300, 'Igaracy, Paraíba': 2502607, 'Brejo do Cruz, Paraíba': 2502805, 'Brejo dos Santos, Paraíba': 2502904, 'Cacimba de Areia, Paraíba': 2503407, 'Cacimbas, Paraíba': 2503555, 'Cajazeirinhas, Paraíba': 2503753, 'Catingueira, Paraíba': 2504207, 'Catolé do Rocha, Paraíba': 2504306, 'Conceição, Paraíba': 2504405, 'Condado, Paraíba': 2504504, 'Coremas, Paraíba': 2504801, 'Curral Velho, Paraíba': 2505303, 'Desterro, Paraíba': 2505402, 'Vista Serrana, Paraíba': 2505501, 'Diamante, Paraíba': 2505600, 'Emas, Paraíba': 2505907, 'Ibiara, Paraíba': 2506608, 'Imaculada, Paraíba': 2506707, 'Itaporanga, Paraíba': 2507002, 'Jericó, Paraíba': 2507408, 'Juru, Paraíba': 2508000, 'Lagoa, Paraíba': 2508109, "Mãe d'Água, Paraíba": 2508703, 'Malta, Paraíba': 2508802, 'Manaíra, Paraíba': 2509008, 'Mato Grosso, Paraíba': 2509370, 'Maturéia, Paraíba': 2509396, 'Nova Olinda, Paraíba': 2510204, "Olho d'Água, Paraíba": 2510402, 'Passagem, Paraíba': 2510709, 'Patos, Paraíba': 2510808, 'Paulista, Paraíba': 2510907, 'Pedra Branca, Paraíba': 2511004, 'Piancó, Paraíba': 2511301, 'Pombal, Paraíba': 2512101, 'Princesa Isabel, Paraíba': 2512309, 'Quixabá, Paraíba': 2512606, 'Riacho dos Cavalos, Paraíba': 2512804, 'Salgadinho, Paraíba': 2513000, 'Santa Inês, Paraíba': 2513356, 'Santa Luzia, Paraíba': 2513406, 'Santana de Mangueira, Paraíba': 2513505, 'Santana dos Garrotes, Paraíba': 2513604, 'Santa Teresinha, Paraíba': 2513802, 'São Bento, Paraíba': 2513901, 'São Bentinho, Paraíba': 2513927, 'São Domingos, Paraíba': 2513968, 'São José de Caiana, Paraíba': 2514305, 'São José de Espinharas, Paraíba': 2514404, 'São José de Princesa, Paraíba': 2514552, 'São José do Bonfim, Paraíba': 2514602, 'São José do Brejo do Cruz, Paraíba': 2514651, 'São José do Sabugi, Paraíba': 2514701, 'São Mamede, Paraíba': 2514909, 'Tavares, Paraíba': 2516607, 'Teixeira, Paraíba': 2516706, 'Várzea, Paraíba': 2517100, 'Abreu e Lima, Pernambuco': 2600054, 'Água Preta, Pernambuco': 2600401, 'Aliança, Pernambuco': 2600708, 'Amaraji, Pernambuco': 2600906, 'Araçoiaba, Pernambuco': 2601052, 'Barreiros, Pernambuco': 2601409, 'Belém de Maria, Pernambuco': 2601508, 'Bom Jardim, Pernambuco': 2602209, 'Buenos Aires, Pernambuco': 2602704, 'Cabo de Santo Agostinho, Pernambuco': 2602902, 'Camaragibe, Pernambuco': 2603454, 'Camutanga, Pernambuco': 2603603, 'Carpina, Pernambuco': 2604007, 'Casinhas, Pernambuco': 2604155, 'Catende, Pernambuco': 2604205, 'Chã de Alegria, Pernambuco': 2604403, 'Condado, Pernambuco': 2604601, 'Cortês, Pernambuco': 2604809, 'Escada, Pernambuco': 2605202, 'Feira Nova, Pernambuco': 2605400, 'Fernando de Noronha, Pernambuco': 2605459, 'Ferreiros, Pernambuco': 2605509, 'Frei Miguelinho, Pernambuco': 2605806, 'Gameleira, Pernambuco': 2605905, 'Glória do Goitá, Pernambuco': 2606101, 'Goiana, Pernambuco': 2606200, 'Igarassu, Pernambuco': 2606804, 'Ipojuca, Pernambuco': 2607208, 'Ilha de Itamaracá, Pernambuco': 2607604, 'Itambé, Pernambuco': 2607653, 'Itapissuma, Pernambuco': 2607752, 'Itaquitinga, Pernambuco': 2607802, 'Jaboatão dos Guararapes, Pernambuco': 2607901, 'Jaqueira, Pernambuco': 2607950, 'João Alfredo, Pernambuco': 2608107, 'Joaquim Nabuco, Pernambuco': 2608206, 'Lagoa do Carro, Pernambuco': 2608453, 'Lagoa de Itaenga, Pernambuco': 2608503, 'Limoeiro, Pernambuco': 2608909, 'Macaparana, Pernambuco': 2609006, 'Machados, Pernambuco': 2609105, 'Maraial, Pernambuco': 2609204, 'Moreno, Pernambuco': 2609402, 'Nazaré da Mata, Pernambuco': 2609501, 'Olinda, Pernambuco': 2609600, 'Orobó, Pernambuco': 2609709, 'Palmares, Pernambuco': 2610004, 'Passira, Pernambuco': 2610509, 'Paudalho, Pernambuco': 2610608, 'Paulista, Pernambuco': 2610707, 'Pombos, Pernambuco': 2611309, 'Primavera, Pernambuco': 2611408, 'Recife, Pernambuco': 2611606, 'Ribeirão, Pernambuco': 2611804, 'Rio Formoso, Pernambuco': 2611903, 'Salgadinho, Pernambuco': 2612109, 'Santa Maria do Cambucá, Pernambuco': 2612703, 'São Benedito do Sul, Pernambuco': 2612901, 'São José da Coroa Grande, Pernambuco': 2613404, 'São Lourenço da Mata, Pernambuco': 2613701, 'São Vicente Ferrer, Pernambuco': 2613800, 'Sirinhaém, Pernambuco': 2614204, 'Surubim, Pernambuco': 2614501, 'Tamandaré, Pernambuco': 2614857, 'Timbaúba, Pernambuco': 2615300, 'Tracunhaém, Pernambuco': 2615508, 'Vertente do Lério, Pernambuco': 2616183, 'Vertentes, Pernambuco': 2616209, 'Vicência, Pernambuco': 2616308, 'Vitória de Santo Antão, Pernambuco': 2616407, 'Xexéu, Pernambuco': 2616506, 'Agrestina, Pernambuco': 2600302, 'Águas Belas, Pernambuco': 2600500, 'Alagoinha, Pernambuco': 2600609, 'Altinho, Pernambuco': 2600807, 'Angelim, Pernambuco': 2601003, 'Arcoverde, Pernambuco': 2601201, 'Barra de Guabiraba, Pernambuco': 2601300, 'Belo Jardim, Pernambuco': 2601706, 'Bezerros, Pernambuco': 2601904, 'Bom Conselho, Pernambuco': 2602100, 'Bonito, Pernambuco': 2602308, 'Brejão, Pernambuco': 2602407, 'Brejo da Madre de Deus, Pernambuco': 2602605, 'Buíque, Pernambuco': 2602803, 'Cachoeirinha, Pernambuco': 2603108, 'Caetés, Pernambuco': 2603207, 'Calçado, Pernambuco': 2603306, 'Camocim de São Félix, Pernambuco': 2603504, 'Canhotinho, Pernambuco': 2603702, 'Capoeiras, Pernambuco': 2603801, 'Caruaru, Pernambuco': 2604106, 'Chã Grande, Pernambuco': 2604502, 'Correntes, Pernambuco': 2604700, 'Cumaru, Pernambuco': 2604908, 'Cupira, Pernambuco': 2605004, 'Custódia, Pernambuco': 2605103, 'Garanhuns, Pernambuco': 2606002, 'Gravatá, Pernambuco': 2606408, 'Iati, Pernambuco': 2606507, 'Ibimirim, Pernambuco': 2606606, 'Ibirajuba, Pernambuco': 2606705, 'Inajá, Pernambuco': 2607000, 'Itaíba, Pernambuco': 2607505, 'Jataúba, Pernambuco': 2608008, 'Jucati, Pernambuco': 2608255, 'Jupi, Pernambuco': 2608305, 'Jurema, Pernambuco': 2608404, 'Lagoa do Ouro, Pernambuco': 2608602, 'Lagoa dos Gatos, Pernambuco': 2608701, 'Lajedo, Pernambuco': 2608800, 'Manari, Pernambuco': 2609154, 'Palmeirina, Pernambuco': 2610103, 'Panelas, Pernambuco': 2610202, 'Paranatama, Pernambuco': 2610301, 'Pedra, Pernambuco': 2610806, 'Pesqueira, Pernambuco': 2610905, 'Poção, Pernambuco': 2611200, 'Quipapá, Pernambuco': 2611507, 'Riacho das Almas, Pernambuco': 2611705, 'Sairé, Pernambuco': 2612000, 'Saloá, Pernambuco': 2612307, 'Sanharó, Pernambuco': 2612406, 'Santa Cruz do Capibaribe, Pernambuco': 2612505, 'São Bento do Una, Pernambuco': 2613008, 'São Caitano, Pernambuco': 2613107, 'São João, Pernambuco': 2613206, 'São Joaquim do Monte, Pernambuco': 2613305, 'Sertânia, Pernambuco': 2614105, 'Tacaimbó, Pernambuco': 2614709, 'Taquaritinga do Norte, Pernambuco': 2615003, 'Terezinha, Pernambuco': 2615102, 'Toritama, Pernambuco': 2615409, 'Tupanatinga, Pernambuco': 2615805, 'Venturosa, Pernambuco': 2616001, 'Anadia, Alagoas': 2700201, 'Atalaia, Alagoas': 2700409, 'Barra de Santo Antônio, Alagoas': 2700508, 'Barra de São Miguel, Alagoas': 2700607, 'Boca da Mata, Alagoas': 2701001, 'Branquinha, Alagoas': 2701100, 'Cajueiro, Alagoas': 2701308, 'Campestre, Alagoas': 2701357, 'Campo Alegre, Alagoas': 2701407, 'Capela, Alagoas': 2701704, 'Chã Preta, Alagoas': 2701902, 'Colônia Leopoldina, Alagoas': 2702108, 'Coqueiro Seco, Alagoas': 2702207, 'Coruripe, Alagoas': 2702306, 'Feliz Deserto, Alagoas': 2702702, 'Flexeiras, Alagoas': 2702801, 'Ibateguara, Alagoas': 2703007, 'Igreja Nova, Alagoas': 2703205, 'Jacuípe, Alagoas': 2703502, 'Japaratinga, Alagoas': 2703601, 'Jequiá da Praia, Alagoas': 2703759, 'Joaquim Gomes, Alagoas': 2703809, 'Jundiá, Alagoas': 2703908, 'Maceió, Alagoas': 2704302, 'Maragogi, Alagoas': 2704500, 'Marechal Deodoro, Alagoas': 2704708, 'Mar Vermelho, Alagoas': 2704906, 'Matriz de Camaragibe, Alagoas': 2705101, 'Messias, Alagoas': 2705200, 'Murici, Alagoas': 2705507, 'Novo Lino, Alagoas': 2705606, 'Paripueira, Alagoas': 2706448, 'Passo de Camaragibe, Alagoas': 2706505, 'Penedo, Alagoas': 2706703, 'Piaçabuçu, Alagoas': 2706802, 'Pilar, Alagoas': 2706901, 'Pindoba, Alagoas': 2707008, 'Porto Calvo, Alagoas': 2707305, 'Porto de Pedras, Alagoas': 2707404, 'Porto Real do Colégio, Alagoas': 2707503, 'Rio Largo, Alagoas': 2707701, 'Roteiro, Alagoas': 2707800, 'Santa Luzia do Norte, Alagoas': 2707909, 'Santana do Mundaú, Alagoas': 2708105, 'São Brás, Alagoas': 2708204, 'São José da Laje, Alagoas': 2708303, 'São Luís do Quitunde, Alagoas': 2708501, 'São Miguel dos Campos, Alagoas': 2708600, 'São Miguel dos Milagres, Alagoas': 2708709, 'Satuba, Alagoas': 2708907, 'União dos Palmares, Alagoas': 2709301, 'Viçosa, Alagoas': 2709400, 'Água Branca, Alagoas': 2700102, 'Arapiraca, Alagoas': 2700300, 'Batalha, Alagoas': 2700706, 'Belém, Alagoas': 2700805, 'Belo Monte, Alagoas': 2700904, 'Cacimbinhas, Alagoas': 2701209, 'Campo Grande, Alagoas': 2701506, 'Canapi, Alagoas': 2701605, 'Carneiros, Alagoas': 2701803, 'Coité do Nóia, Alagoas': 2702009, 'Craíbas, Alagoas': 2702355, 'Delmiro Gouveia, Alagoas': 2702405, 'Dois Riachos, Alagoas': 2702504, 'Estrela de Alagoas, Alagoas': 2702553, 'Feira Grande, Alagoas': 2702603, 'Girau do Ponciano, Alagoas': 2702900, 'Igaci, Alagoas': 2703106, 'Inhapi, Alagoas': 2703304, 'Jacaré dos Homens, Alagoas': 2703403, 'Jaramataia, Alagoas': 2703700, 'Junqueiro, Alagoas': 2704005, 'Lagoa da Canoa, Alagoas': 2704104, 'Limoeiro de Anadia, Alagoas': 2704203, 'Major Isidoro, Alagoas': 2704401, 'Maravilha, Alagoas': 2704609, 'Maribondo, Alagoas': 2704807, 'Mata Grande, Alagoas': 2705002, 'Minador do Negrão, Alagoas': 2705309, 'Monteirópolis, Alagoas': 2705408, "Olho d'Água das Flores, Alagoas": 2705705, "Olho d'Água do Casado, Alagoas": 2705804, "Olho d'Água Grande, Alagoas": 2705903, 'Olivença, Alagoas': 2706000, 'Ouro Branco, Alagoas': 2706109, 'Palestina, Alagoas': 2706208, 'Palmeira dos Índios, Alagoas': 2706307, 'Pão de Açúcar, Alagoas': 2706406, 'Pariconha, Alagoas': 2706422, 'Paulo Jacinto, Alagoas': 2706604, 'Piranhas, Alagoas': 2707107, 'Poço das Trincheiras, Alagoas': 2707206, 'Quebrangulo, Alagoas': 2707602, 'Santana do Ipanema, Alagoas': 2708006, 'São José da Tapera, Alagoas': 2708402, 'São Sebastião, Alagoas': 2708808, 'Senador Rui Palmeira, Alagoas': 2708956, "Tanque d'Arca, Alagoas": 2709004, 'Taquarana, Alagoas': 2709103, 'Teotônio Vilela, Alagoas': 2709152, 'Traipu, Alagoas': 2709202, 'Amparo de São Francisco, Sergipe': 2800100, 'Aquidabã, Sergipe': 2800209, 'Aracaju, Sergipe': 2800308, 'Arauá, Sergipe': 2800407, 'Barra dos Coqueiros, Sergipe': 2800605, 'Boquim, Sergipe': 2800670, 'Brejo Grande, Sergipe': 2800704, 'Canhoba, Sergipe': 2801108, 'Capela, Sergipe': 2801306, 'Carmópolis, Sergipe': 2801504, 'Cedro de São João, Sergipe': 2801603, 'Cristinápolis, Sergipe': 2801702, 'Cumbe, Sergipe': 2801900, 'Divina Pastora, Sergipe': 2802007, 'Estância, Sergipe': 2802106, 'General Maynard, Sergipe': 2802502, 'Ilha das Flores, Sergipe': 2802700, 'Indiaroba, Sergipe': 2802809, 'Itabaianinha, Sergipe': 2803005, "Itaporanga d'Ajuda, Sergipe": 2803203, 'Japaratuba, Sergipe': 2803302, 'Japoatã, Sergipe': 2803401, 'Laranjeiras, Sergipe': 2803609, 'Malhada dos Bois, Sergipe': 2803807, 'Maruim, Sergipe': 2804003, 'Muribeca, Sergipe': 2804300, 'Neópolis, Sergipe': 2804409, 'Nossa Senhora das Dores, Sergipe': 2804607, 'Nossa Senhora de Lourdes, Sergipe': 2804706, 'Nossa Senhora do Socorro, Sergipe': 2804805, 'Pacatuba, Sergipe': 2804904, 'Pedrinhas, Sergipe': 2805109, 'Pirambu, Sergipe': 2805307, 'Propriá, Sergipe': 2805703, 'Riachuelo, Sergipe': 2805901, 'Rosário do Catete, Sergipe': 2806107, 'Santa Luzia do Itanhy, Sergipe': 2806305, 'Santana do São Francisco, Sergipe': 2806404, 'Santa Rosa de Lima, Sergipe': 2806503, 'Santo Amaro das Brotas, Sergipe': 2806602, 'São Cristóvão, Sergipe': 2806701, 'São Francisco, Sergipe': 2806909, 'Siriri, Sergipe': 2807204, 'Telha, Sergipe': 2807303, 'Tomar do Geru, Sergipe': 2807501, 'Umbaúba, Sergipe': 2807600, 'Areia Branca, Sergipe': 2800506, 'Campo do Brito, Sergipe': 2801009, 'Canindé de São Francisco, Sergipe': 2801207, 'Carira, Sergipe': 2801405, 'Feira Nova, Sergipe': 2802205, 'Frei Paulo, Sergipe': 2802304, 'Gararu, Sergipe': 2802403, 'Gracho Cardoso, Sergipe': 2802601, 'Itabaiana, Sergipe': 2802908, 'Itabi, Sergipe': 2803104, 'Lagarto, Sergipe': 2803500, 'Macambira, Sergipe': 2803708, 'Malhador, Sergipe': 2803906, 'Moita Bonita, Sergipe': 2804102, 'Monte Alegre de Sergipe, Sergipe': 2804201, 'Nossa Senhora Aparecida, Sergipe': 2804458, 'Nossa Senhora da Glória, Sergipe': 2804508, 'Pedra Mole, Sergipe': 2805000, 'Pinhão, Sergipe': 2805208, 'Poço Redondo, Sergipe': 2805406, 'Poço Verde, Sergipe': 2805505, 'Porto da Folha, Sergipe': 2805604, 'Riachão do Dantas, Sergipe': 2805802, 'Ribeirópolis, Sergipe': 2806008, 'Salgado, Sergipe': 2806206, 'São Domingos, Sergipe': 2806800, 'São Miguel do Aleixo, Sergipe': 2807006, 'Simão Dias, Sergipe': 2807105, 'Tobias Barreto, Sergipe': 2807402, 'Acajutiba, Bahia': 2900306, 'Alagoinhas, Bahia': 2900702, 'Aporá, Bahia': 2901908, 'Araças, Bahia': 2902054, 'Aramari, Bahia': 2902203, 'Camaçari, Bahia': 2905701, 'Candeias, Bahia': 2906501, 'Cardeal da Silva, Bahia': 2907004, 'Catu, Bahia': 2907509, 'Conde, Bahia': 2908606, 'Crisópolis, Bahia': 2909604, "Dias d'Ávila, Bahia": 2910057, 'Entre Rios, Bahia': 2910503, 'Esplanada, Bahia': 2910602, 'Inhambupe, Bahia': 2913705, 'Itanagra, Bahia': 2915908, 'Itapicuru, Bahia': 2916500, 'Jandaíra, Bahia': 2917904, 'Lauro de Freitas, Bahia': 2919207, 'Madre de Deus, Bahia': 2919926, 'Mata de São João, Bahia': 2921005, 'Pedrão, Bahia': 2924108, 'Pojuca, Bahia': 2925204, 'Rio Real, Bahia': 2927002, 'Salvador, Bahia': 2927408, 'Santo Amaro, Bahia': 2928604, 'São Francisco do Conde, Bahia': 2929206, 'São Sebastião do Passé, Bahia': 2929503, 'Sátiro Dias, Bahia': 2929701, 'Saubara, Bahia': 2929750, 'Simões Filho, Bahia': 2930709, 'Teodoro Sampaio, Bahia': 2931400, 'Terra Nova, Bahia': 2931707, 'Amargosa, Bahia': 2901007, 'Aratuípe, Bahia': 2902302, 'Brejões, Bahia': 2904308, 'Cabaceiras do Paraguaçu, Bahia': 2904852, 'Cachoeira, Bahia': 2904902, 'Cairu, Bahia': 2905404, 'Camamu, Bahia': 2905800, 'Castro Alves, Bahia': 2907301, 'Conceição do Almeida, Bahia': 2908309, 'Cruz das Almas, Bahia': 2909802, 'Dom Macedo Costa, Bahia': 2910206, 'Elísio Medrado, Bahia': 2910305, 'Governador Mangabeira, Bahia': 2911600, 'Igrapiúna, Bahia': 2913457, 'Itaparica, Bahia': 2916104, 'Itatim, Bahia': 2916856, 'Ituberá, Bahia': 2917300, 'Jaguaripe, Bahia': 2917805, 'Jiquiriçá, Bahia': 2918209, 'Laje, Bahia': 2918803, 'Maragogipe, Bahia': 2920601, 'Milagres, Bahia': 2921302, 'Muniz Ferreira, Bahia': 2922201, 'Muritiba, Bahia': 2922300, 'Mutuípe, Bahia': 2922409, 'Nazaré, Bahia': 2922508, 'Nilo Peçanha, Bahia': 2922607, 'Nova Itarana, Bahia': 2922805, 'Presidente Tancredo Neves, Bahia': 2925758, 'Salinas da Margarida, Bahia': 2927309, 'Santa Teresinha, Bahia': 2928505, 'Santo Antônio de Jesus, Bahia': 2928703, 'São Félix, Bahia': 2929008, 'São Felipe, Bahia': 2929107, 'São Miguel das Matas, Bahia': 2929404, 'Sapeaçu, Bahia': 2929602, 'Taperoá, Bahia': 2931202, 'Ubaíra, Bahia': 2932101, 'Valença, Bahia': 2932903, 'Varzedo, Bahia': 2933174, 'Vera Cruz, Bahia': 2933208, 'Alcobaça, Bahia': 2900801, 'Almadina, Bahia': 2900900, 'Arataca, Bahia': 2902252, 'Aurelino Leal, Bahia': 2902401, 'Barro Preto, Bahia': 2903300, 'Belmonte, Bahia': 2903409, 'Buerarema, Bahia': 2904704, 'Camacan, Bahia': 2905602, 'Canavieiras, Bahia': 2906303, 'Caravelas, Bahia': 2906907, 'Coaraci, Bahia': 2908002, 'Eunápolis, Bahia': 2910727, 'Firmino Alves, Bahia': 2910909, 'Floresta Azul, Bahia': 2911006, 'Guaratinga, Bahia': 2911808, 'Ibicaraí, Bahia': 2912103, 'Ibicuí, Bahia': 2912301, 'Ibirapitanga, Bahia': 2912707, 'Ibirapuã, Bahia': 2912806, 'Ilhéus, Bahia': 2913606, 'Itabela, Bahia': 2914653, 'Itabuna, Bahia': 2914802, 'Itacaré, Bahia': 2914901, 'Itagimirim, Bahia': 2915304, 'Itaju do Colônia, Bahia': 2915403, 'Itajuípe, Bahia': 2915502, 'Itamaraju, Bahia': 2915601, 'Itanhém, Bahia': 2916005, 'Itapé, Bahia': 2916203, 'Itapebi, Bahia': 2916302, 'Itapitanga, Bahia': 2916609, 'Jucuruçu, Bahia': 2918456, 'Jussari, Bahia': 2918555, 'Lajedão, Bahia': 2918902, 'Maraú, Bahia': 2920700, 'Mascote, Bahia': 2920908, 'Medeiros Neto, Bahia': 2921104, 'Mucuri, Bahia': 2922003, 'Nova Viçosa, Bahia': 2923001, 'Pau Brasil, Bahia': 2923902, 'Porto Seguro, Bahia': 2925303, 'Prado, Bahia': 2925501, 'Santa Cruz Cabrália, Bahia': 2927705, 'Santa Cruz da Vitória, Bahia': 2927804, 'Santa Luzia, Bahia': 2928059, 'São José da Vitória, Bahia': 2929354, 'Teixeira de Freitas, Bahia': 2931350, 'Ubaitaba, Bahia': 2932200, 'Una, Bahia': 2932507, 'Uruçuca, Bahia': 2932705, 'Vereda, Bahia': 2933257, 'Abaíra, Bahia': 2900108, 'Érico Cardoso, Bahia': 2900504, 'Aiquara, Bahia': 2900603, 'Anagé, Bahia': 2901205, 'Apuarema, Bahia': 2901957, 'Aracatu, Bahia': 2902005, 'Barra da Estiva, Bahia': 2902807, 'Barra do Choça, Bahia': 2902906, 'Barra do Rocha, Bahia': 2903102, 'Belo Campo, Bahia': 2903508, 'Boa Nova, Bahia': 2903706, 'Bom Jesus da Serra, Bahia': 2903953, 'Brumado, Bahia': 2904605, 'Caatiba, Bahia': 2904803, 'Caetanos, Bahia': 2905156, 'Cândido Sales, Bahia': 2906709, 'Caraíbas, Bahia': 2906899, 'Caturama, Bahia': 2907558, 'Condeúba, Bahia': 2908705, 'Contendas do Sincorá, Bahia': 2908804, 'Cordeiros, Bahia': 2909000, 'Cravolândia, Bahia': 2909505, 'Dário Meira, Bahia': 2910008, 'Dom Basílio, Bahia': 2910107, 'Encruzilhada, Bahia': 2910404, 'Gandu, Bahia': 2911204, 'Gongogi, Bahia': 2911501, 'Ibicoara, Bahia': 2912202, 'Ibirataia, Bahia': 2912905, 'Iguaí, Bahia': 2913507, 'Ipiaú, Bahia': 2913903, 'Irajuba, Bahia': 2914208, 'Iramaia, Bahia': 2914307, 'Itagi, Bahia': 2915106, 'Itagibá, Bahia': 2915205, 'Itamari, Bahia': 2915700, 'Itambé, Bahia': 2915809, 'Itapetinga, Bahia': 2916401, 'Itaquara, Bahia': 2916708, 'Itarantim, Bahia': 2916807, 'Itiruçu, Bahia': 2916906, 'Itororó, Bahia': 2917102, 'Ituaçu, Bahia': 2917201, 'Jaguaquara, Bahia': 2917607, 'Jequié, Bahia': 2918001, 'Jitaúna, Bahia': 2918308, 'Jussiape, Bahia': 2918605, 'Lafaiete Coutinho, Bahia': 2918704, 'Lajedo do Tabocal, Bahia': 2919058, 'Livramento de Nossa Senhora, Bahia': 2919504, 'Macarani, Bahia': 2919702, 'Maetinga, Bahia': 2919959, 'Maiquinique, Bahia': 2920007, 'Malhada de Pedras, Bahia': 2920304, 'Manoel Vitorino, Bahia': 2920403, 'Maracás, Bahia': 2920502, 'Mirante, Bahia': 2921450, 'Nova Canaã, Bahia': 2922706, 'Nova Ibiá, Bahia': 2922755, 'Paramirim, Bahia': 2923605, 'Piraí do Norte, Bahia': 2924678, 'Piripá, Bahia': 2924702, 'Planaltino, Bahia': 2924900, 'Planalto, Bahia': 2925006, 'Poções, Bahia': 2925105, 'Potiraguá, Bahia': 2925402, 'Presidente Jânio Quadros, Bahia': 2925709, 'Ribeirão do Largo, Bahia': 2926657, 'Rio de Contas, Bahia': 2926707, 'Rio do Pires, Bahia': 2926905, 'Santa Inês, Bahia': 2927903, 'Tanhaçu, Bahia': 2931004, 'Teolândia, Bahia': 2931608, 'Tremedal, Bahia': 2931806, 'Ubatã, Bahia': 2932309, 'Vitória da Conquista, Bahia': 2933307, 'Wenceslau Guimarães, Bahia': 2933505, 'Bom Jesus da Lapa, Bahia': 2903904, 'Boquira, Bahia': 2904100, 'Botuporã, Bahia': 2904209, 'Caculé, Bahia': 2905008, 'Caetité, Bahia': 2905206, 'Candiba, Bahia': 2906600, 'Carinhanha, Bahia': 2907103, 'Feira da Mata, Bahia': 2910776, 'Guajeru, Bahia': 2911659, 'Guanambi, Bahia': 2911709, 'Ibiassucê, Bahia': 2912004, 'Ibipitanga, Bahia': 2912509, 'Igaporã, Bahia': 2913408, 'Iuiú, Bahia': 2917334, 'Jacaraci, Bahia': 2917409, 'Lagoa Real, Bahia': 2918753, 'Licínio de Almeida, Bahia': 2919405, 'Macaúbas, Bahia': 2919801, 'Malhada, Bahia': 2920205, 'Matina, Bahia': 2921054, 'Mortugaba, Bahia': 2921807, 'Palmas de Monte Alto, Bahia': 2923407, 'Paratinga, Bahia': 2923704, 'Pindaí, Bahia': 2924504, 'Riacho de Santana, Bahia': 2926400, 'Rio do Antônio, Bahia': 2926806, 'Sebastião Laranjeiras, Bahia': 2930006, 'Serra do Ramalho, Bahia': 2930154, 'Sítio do Mato, Bahia': 2930758, 'Tanque Novo, Bahia': 2931053, 'Urandi, Bahia': 2932606, 'América Dourada, Bahia': 2901155, 'Barra, Bahia': 2902708, 'Barra do Mendes, Bahia': 2903003, 'Barro Alto, Bahia': 2903235, 'Bonito, Bahia': 2904050, 'Brotas de Macaúbas, Bahia': 2904506, 'Buritirama, Bahia': 2904753, 'Cafarnaum, Bahia': 2905305, 'Canarana, Bahia': 2906204, 'Central, Bahia': 2907608, 'Gentio do Ouro, Bahia': 2911303, 'Ibipeba, Bahia': 2912400, 'Ibititá, Bahia': 2913101, 'Ibotirama, Bahia': 2913200, 'Ipupiara, Bahia': 2914109, 'Irecê, Bahia': 2914604, 'Itaguaçu da Bahia, Bahia': 2915353, 'João Dourado, Bahia': 2918357, 'Jussara, Bahia': 2918506, 'Lapão, Bahia': 2919157, 'Morpará, Bahia': 2921609, 'Morro do Chapéu, Bahia': 2921708, 'Mulungu do Morro, Bahia': 2922052, 'Muquém de São Francisco, Bahia': 2922250, 'Oliveira dos Brejinhos, Bahia': 2923209, 'Presidente Dutra, Bahia': 2925600, 'São Gabriel, Bahia': 2929255, 'Uibaí, Bahia': 2932408, 'Xique-Xique, Bahia': 2933604, 'Abaré, Bahia': 2900207, 'Adustina, Bahia': 2900355, 'Antas, Bahia': 2901601, 'Banzaê, Bahia': 2902658, 'Cansanção, Bahia': 2906808, 'Canudos, Bahia': 2906824, 'Chorrochó, Bahia': 2907707, 'Cícero Dantas, Bahia': 2907806, 'Cipó, Bahia': 2907905, 'Coronel João Sá, Bahia': 2909208, 'Euclides da Cunha, Bahia': 2910701, 'Fátima, Bahia': 2910750, 'Glória, Bahia': 2911402, 'Heliópolis, Bahia': 2911857, 'Jeremoabo, Bahia': 2918100, 'Macururé, Bahia': 2919900, 'Monte Santo, Bahia': 2921500, 'Nova Soure, Bahia': 2922904, 'Novo Triunfo, Bahia': 2923050, 'Olindina, Bahia': 2923100, 'Paripiranga, Bahia': 2923803, 'Paulo Afonso, Bahia': 2924009, 'Pedro Alexandre, Bahia': 2924207, 'Quijingue, Bahia': 2925907, 'Ribeira do Amparo, Bahia': 2926509, 'Ribeira do Pombal, Bahia': 2926608, 'Rodelas, Bahia': 2927101, 'Santa Brígida, Bahia': 2927606, 'Sítio do Quinto, Bahia': 2930766, 'Tucano, Bahia': 2931905, 'Água Fria, Bahia': 2900405, 'Amélia Rodrigues, Bahia': 2901106, 'Andaraí, Bahia': 2901304, 'Anguera, Bahia': 2901502, 'Antônio Cardoso, Bahia': 2901700, 'Araci, Bahia': 2902104, 'Baixa Grande, Bahia': 2902609, 'Barrocas, Bahia': 2903276, 'Biritinga, Bahia': 2903607, 'Boa Vista do Tupim, Bahia': 2903805, 'Boninal, Bahia': 2904001, 'Caém, Bahia': 2905107, 'Caldeirão Grande, Bahia': 2905503, 'Candeal, Bahia': 2906402, 'Capela do Alto Alegre, Bahia': 2906857, 'Capim Grosso, Bahia': 2906873, 'Conceição da Feira, Bahia': 2908200, 'Conceição do Coité, Bahia': 2908408, 'Conceição do Jacuípe, Bahia': 2908507, 'Coração de Maria, Bahia': 2908903, 'Feira de Santana, Bahia': 2910800, 'Gavião, Bahia': 2911253, 'Iaçu, Bahia': 2911907, 'Ibiquera, Bahia': 2912608, 'Ibitiara, Bahia': 2913002, 'Ichu, Bahia': 2913309, 'Ipecaetá, Bahia': 2913804, 'Ipirá, Bahia': 2914000, 'Iraquara, Bahia': 2914406, 'Irará, Bahia': 2914505, 'Itaberaba, Bahia': 2914703, 'Itaeté, Bahia': 2915007, 'Jacobina, Bahia': 2917508, 'Lajedinho, Bahia': 2919009, 'Lamarão, Bahia': 2919108, 'Lençóis, Bahia': 2919306, 'Macajuba, Bahia': 2919603, 'Mairi, Bahia': 2920106, 'Marcionílio Souza, Bahia': 2920809, 'Miguel Calmon, Bahia': 2921203, 'Mirangaba, Bahia': 2921401, 'Mucugê, Bahia': 2921906, 'Mundo Novo, Bahia': 2922102, 'Nordestina, Bahia': 2922656, 'Nova Fátima, Bahia': 2922730, 'Nova Redenção, Bahia': 2922854, 'Novo Horizonte, Bahia': 2923035, 'Ouriçangas, Bahia': 2923308, 'Ourolândia, Bahia': 2923357, 'Palmeiras, Bahia': 2923506, 'Pé de Serra, Bahia': 2924058, 'Piatã, Bahia': 2924306, 'Pintadas, Bahia': 2924652, 'Piritiba, Bahia': 2924801, 'Queimadas, Bahia': 2925808, 'Quixabeira, Bahia': 2925931, 'Rafael Jambeiro, Bahia': 2925956, 'Retirolândia, Bahia': 2926103, 'Riachão do Jacuípe, Bahia': 2926301, 'Ruy Barbosa, Bahia': 2927200, 'Santa Bárbara, Bahia': 2927507, 'Santaluz, Bahia': 2928000, 'Santanópolis, Bahia': 2928307, 'Santo Estêvão, Bahia': 2928802, 'São Domingos, Bahia': 2928950, 'São Gonçalo dos Campos, Bahia': 2929305, 'São José do Jacuípe, Bahia': 2929370, 'Saúde, Bahia': 2929800, 'Seabra, Bahia': 2929909, 'Serra Preta, Bahia': 2930402, 'Serrinha, Bahia': 2930501, 'Serrolândia, Bahia': 2930600, 'Souto Soares, Bahia': 2930808, 'Tanquinho, Bahia': 2931103, 'Tapiramutá, Bahia': 2931301, 'Teofilândia, Bahia': 2931509, 'Umburanas, Bahia': 2932457, 'Utinga, Bahia': 2932804, 'Valente, Bahia': 2933000, 'Várzea da Roça, Bahia': 2933059, 'Várzea do Poço, Bahia': 2933109, 'Várzea Nova, Bahia': 2933158, 'Wagner, Bahia': 2933406, 'Araçaí, Minas Gerais': 3103207, 'Augusto de Lima, Minas Gerais': 3104809, 'Baldim, Minas Gerais': 3105004, 'Barão de Cocais, Minas Gerais': 3105400, 'Belo Horizonte, Minas Gerais': 3106200, 'Betim, Minas Gerais': 3106705, 'Bom Jesus do Amparo, Minas Gerais': 3107703, 'Brumadinho, Minas Gerais': 3109006, 'Buenópolis, Minas Gerais': 3109204, 'Cachoeira da Prata, Minas Gerais': 3109600, 'Caetanópolis, Minas Gerais': 3109907, 'Caeté, Minas Gerais': 3110004, 'Capim Branco, Minas Gerais': 3112505, 'Carmésia, Minas Gerais': 3113800, 'Catas Altas, Minas Gerais': 3115359, 'Conceição do Mato Dentro, Minas Gerais': 3117504, 'Confins, Minas Gerais': 3117876, 'Congonhas do Norte, Minas Gerais': 3118106, 'Contagem, Minas Gerais': 3118601, 'Cordisburgo, Minas Gerais': 3118908, 'Corinto, Minas Gerais': 3119104, 'Curvelo, Minas Gerais': 3120904, 'Esmeraldas, Minas Gerais': 3124104, 'Felixlândia, Minas Gerais': 3125705, 'Ferros, Minas Gerais': 3125903, 'Florestal, Minas Gerais': 3126000, 'Fortuna de Minas, Minas Gerais': 3126406, 'Funilândia, Minas Gerais': 3127206, 'Ibirité, Minas Gerais': 3129806, 'Igarapé, Minas Gerais': 3130101, 'Inhaúma, Minas Gerais': 3131000, 'Inimutaba, Minas Gerais': 3131109, 'Itabira, Minas Gerais': 3131703, 'Itabirito, Minas Gerais': 3131901, 'Itambé do Mato Dentro, Minas Gerais': 3132800, 'Jaboticatubas, Minas Gerais': 3134608, 'Jequitibá, Minas Gerais': 3135704, 'Nova União, Minas Gerais': 3136603, 'Juatuba, Minas Gerais': 3136652, 'Lagoa Santa, Minas Gerais': 3137601, 'Mariana, Minas Gerais': 3140001, 'Mário Campos, Minas Gerais': 3140159, 'Mateus Leme, Minas Gerais': 3140704, 'Matozinhos, Minas Gerais': 3141108, 'Moeda, Minas Gerais': 3142304, 'Monjolos, Minas Gerais': 3142502, 'Morro da Garça, Minas Gerais': 3143609, 'Morro do Pilar, Minas Gerais': 3143708, 'Nova Lima, Minas Gerais': 3144805, 'Ouro Preto, Minas Gerais': 3146107, 'Paraopeba, Minas Gerais': 3147402, 'Passabém, Minas Gerais': 3147501, 'Pedro Leopoldo, Minas Gerais': 3149309, 'Presidente Juscelino, Minas Gerais': 3153202, 'Prudente de Morais, Minas Gerais': 3153608, 'Raposos, Minas Gerais': 3153905, 'Ribeirão das Neves, Minas Gerais': 3154606, 'Rio Acima, Minas Gerais': 3154804, 'Sabará, Minas Gerais': 3156700, 'Santa Bárbara, Minas Gerais': 3157203, 'Santa Luzia, Minas Gerais': 3157807, 'Santa Maria de Itabira, Minas Gerais': 3158003, 'Santana de Pirapama, Minas Gerais': 3158508, 'Santana do Riacho, Minas Gerais': 3159001, 'Santo Antônio do Rio Abaixo, Minas Gerais': 3160504, 'Santo Hipólito, Minas Gerais': 3160603, 'São Joaquim de Bicas, Minas Gerais': 3162922, 'São José da Lapa, Minas Gerais': 3162955, 'São Sebastião do Rio Preto, Minas Gerais': 3164803, 'Sarzedo, Minas Gerais': 3165537, 'Sete Lagoas, Minas Gerais': 3167202, 'Taquaraçu de Minas, Minas Gerais': 3168309, 'Três Marias, Minas Gerais': 3169356, 'Vespasiano, Minas Gerais': 3171204, 'Berizal, Minas Gerais': 3106655, 'Bocaiúva, Minas Gerais': 3107307, 'Bonito de Minas, Minas Gerais': 3108255, 'Botumirim, Minas Gerais': 3108503, 'Brasília de Minas, Minas Gerais': 3108602, 'Buritizeiro, Minas Gerais': 3109402, 'Campo Azul, Minas Gerais': 3111150, 'Capitão Enéas, Minas Gerais': 3112703, 'Catuti, Minas Gerais': 3115474, 'Chapada Gaúcha, Minas Gerais': 3116159, 'Claro dos Poções, Minas Gerais': 3116506, 'Cônego Marinho, Minas Gerais': 3117836, 'Coração de Jesus, Minas Gerais': 3118809, 'Cristália, Minas Gerais': 3120300, 'Curral de Dentro, Minas Gerais': 3120870, 'Engenheiro Navarro, Minas Gerais': 3123809, 'Espinosa, Minas Gerais': 3124302, 'Francisco Dumont, Minas Gerais': 3126604, 'Francisco Sá, Minas Gerais': 3126703, 'Fruta de Leite, Minas Gerais': 3127073, 'Gameleiras, Minas Gerais': 3127339, 'Glaucilândia, Minas Gerais': 3127354, 'Grão Mogol, Minas Gerais': 3127800, 'Guaraciama, Minas Gerais': 3128253, 'Ibiaí, Minas Gerais': 3129608, 'Ibiracatu, Minas Gerais': 3129657, 'Icaraí de Minas, Minas Gerais': 3130051, 'Indaiabira, Minas Gerais': 3130655, 'Itacambira, Minas Gerais': 3132008, 'Itacarambi, Minas Gerais': 3132107, 'Jaíba, Minas Gerais': 3135050, 'Janaúba, Minas Gerais': 3135100, 'Januária, Minas Gerais': 3135209, 'Japonvar, Minas Gerais': 3135357, 'Jequitaí, Minas Gerais': 3135605, 'Joaquim Felício, Minas Gerais': 3136405, 'Josenópolis, Minas Gerais': 3136579, 'Juramento, Minas Gerais': 3136801, 'Juvenília, Minas Gerais': 3136959, 'Lagoa dos Patos, Minas Gerais': 3137304, 'Lassance, Minas Gerais': 3138104, 'Lontra, Minas Gerais': 3138658, 'Luislândia, Minas Gerais': 3138682, 'Mamonas, Minas Gerais': 3139250, 'Manga, Minas Gerais': 3139300, 'Matias Cardoso, Minas Gerais': 3140852, 'Mato Verde, Minas Gerais': 3141009, 'Mirabela, Minas Gerais': 3142007, 'Miravânia, Minas Gerais': 3142254, 'Montalvânia, Minas Gerais': 3142700, 'Monte Azul, Minas Gerais': 3142908, 'Montes Claros, Minas Gerais': 3143302, 'Montezuma, Minas Gerais': 3143450, 'Ninheira, Minas Gerais': 3144656, 'Nova Porteirinha, Minas Gerais': 3145059, 'Novorizonte, Minas Gerais': 3145372, "Olhos-d'Água, Minas Gerais": 3145455, 'Padre Carvalho, Minas Gerais': 3146255, 'Pai Pedro, Minas Gerais': 3146552, 'Patis, Minas Gerais': 3147956, 'Pedras de Maria da Cruz, Minas Gerais': 3149150, 'Pintópolis, Minas Gerais': 3150570, 'Pirapora, Minas Gerais': 3151206, 'Ponto Chique, Minas Gerais': 3152131, 'Porteirinha, Minas Gerais': 3152204, 'Riacho dos Machados, Minas Gerais': 3154507, 'Rio Pardo de Minas, Minas Gerais': 3155603, 'Rubelita, Minas Gerais': 3156502, 'Salinas, Minas Gerais': 3157005, 'Santa Cruz de Salinas, Minas Gerais': 3157377, 'Santa Fé de Minas, Minas Gerais': 3157609, 'Santo Antônio do Retiro, Minas Gerais': 3160454, 'São Francisco, Minas Gerais': 3161106, 'São João da Lagoa, Minas Gerais': 3162252, 'São João da Ponte, Minas Gerais': 3162401, 'São João das Missões, Minas Gerais': 3162450, 'São João do Pacuí, Minas Gerais': 3162658, 'São João do Paraíso, Minas Gerais': 3162708, 'São Romão, Minas Gerais': 3164209, 'Serranópolis de Minas, Minas Gerais': 3166956, 'Taiobeiras, Minas Gerais': 3168002, 'Ubaí, Minas Gerais': 3170008, 'Vargem Grande do Rio Pardo, Minas Gerais': 3170651, 'Várzea da Palma, Minas Gerais': 3170800, 'Varzelândia, Minas Gerais': 3170909, 'Verdelândia, Minas Gerais': 3171030, 'Água Boa, Minas Gerais': 3100609, 'Águas Formosas, Minas Gerais': 3100906, 'Águas Vermelhas, Minas Gerais': 3101003, 'Almenara, Minas Gerais': 3101706, 'Alvorada de Minas, Minas Gerais': 3102407, 'Cachoeira de Pajeú, Minas Gerais': 3102704, 'Angelândia, Minas Gerais': 3102852, 'Araçuaí, Minas Gerais': 3103405, 'Aricanduva, Minas Gerais': 3104452, 'Ataléia, Minas Gerais': 3104700, 'Bandeira, Minas Gerais': 3105202, 'Berilo, Minas Gerais': 3106507, 'Bertópolis, Minas Gerais': 3106606, 'Campanário, Minas Gerais': 3110806, 'Capelinha, Minas Gerais': 3112307, 'Caraí, Minas Gerais': 3113008, 'Carbonita, Minas Gerais': 3113503, 'Carlos Chagas, Minas Gerais': 3113701, 'Catuji, Minas Gerais': 3115458, 'Chapada do Norte, Minas Gerais': 3116100, 'Comercinho, Minas Gerais': 3117009, 'Coronel Murta, Minas Gerais': 3119500, 'Couto de Magalhães de Minas, Minas Gerais': 3120102, 'Crisólita, Minas Gerais': 3120151, 'Datas, Minas Gerais': 3121001, 'Diamantina, Minas Gerais': 3121605, 'Divisa Alegre, Minas Gerais': 3122355, 'Divisópolis, Minas Gerais': 3122454, 'Felício dos Santos, Minas Gerais': 3125408, 'São Gonçalo do Rio Preto, Minas Gerais': 3125507, 'Felisburgo, Minas Gerais': 3125606, 'Francisco Badaró, Minas Gerais': 3126505, 'Franciscópolis, Minas Gerais': 3126752, 'Frei Gaspar, Minas Gerais': 3126802, 'Fronteira dos Vales, Minas Gerais': 3127057, 'Gouveia, Minas Gerais': 3127602, 'Itaipé, Minas Gerais': 3132305, 'Itamarandiba, Minas Gerais': 3132503, 'Itambacuri, Minas Gerais': 3132701, 'Itaobim, Minas Gerais': 3133303, 'Itinga, Minas Gerais': 3134004, 'Jacinto, Minas Gerais': 3134707, 'Jenipapo de Minas, Minas Gerais': 3135456, 'Jequitinhonha, Minas Gerais': 3135803, 'Joaíma, Minas Gerais': 3136009, 'Jordânia, Minas Gerais': 3136504, 'José Gonçalves de Minas, Minas Gerais': 3136520, 'Ladainha, Minas Gerais': 3137007, 'Leme do Prado, Minas Gerais': 3138351, 'Machacalis, Minas Gerais': 3138906, 'Malacacheta, Minas Gerais': 3139201, 'Mata Verde, Minas Gerais': 3140555, 'Medina, Minas Gerais': 3141405, 'Minas Novas, Minas Gerais': 3141801, 'Monte Formoso, Minas Gerais': 3143153, 'Nanuque, Minas Gerais': 3144300, 'Nova Módica, Minas Gerais': 3144904, 'Novo Cruzeiro, Minas Gerais': 3145307, 'Novo Oriente de Minas, Minas Gerais': 3145356, 'Ouro Verde de Minas, Minas Gerais': 3146206, 'Padre Paraíso, Minas Gerais': 3146305, 'Palmópolis, Minas Gerais': 3146750, 'Pavão, Minas Gerais': 3148509, 'Pedra Azul, Minas Gerais': 3148707, 'Pescador, Minas Gerais': 3150000, 'Ponto dos Volantes, Minas Gerais': 3152170, 'Poté, Minas Gerais': 3152402, 'Presidente Kubitschek, Minas Gerais': 3153301, 'Rio do Prado, Minas Gerais': 3155108, 'Rubim, Minas Gerais': 3156601, 'Salto da Divisa, Minas Gerais': 3157104, 'Santa Helena de Minas, Minas Gerais': 3157658, 'Santa Maria do Salto, Minas Gerais': 3158102, 'Santo Antônio do Itambé, Minas Gerais': 3160207, 'Santo Antônio do Jacinto, Minas Gerais': 3160306, 'São José do Divino, Minas Gerais': 3163300, 'Setubinha, Minas Gerais': 3165552, 'Senador Modestino Gonçalves, Minas Gerais': 3165909, 'Serra Azul de Minas, Minas Gerais': 3166501, 'Serra dos Aimorés, Minas Gerais': 3166709, 'Serro, Minas Gerais': 3167103, 'Teófilo Otoni, Minas Gerais': 3168606, 'Turmalina, Minas Gerais': 3169703, 'Umburatiba, Minas Gerais': 3170305, 'Veredinha, Minas Gerais': 3171071, 'Virgem da Lapa, Minas Gerais': 3171600, 'Aimorés, Minas Gerais': 3101102, 'Alpercata, Minas Gerais': 3101805, 'Cantagalo, Minas Gerais': 3112059, 'Capitão Andrade, Minas Gerais': 3112653, 'Central de Minas, Minas Gerais': 3115706, 'Coluna, Minas Gerais': 3116803, 'Conselheiro Pena, Minas Gerais': 3118403, 'Coroaci, Minas Gerais': 3119203, 'Cuparaque, Minas Gerais': 3120839, 'Divino das Laranjeiras, Minas Gerais': 3122108, 'Divinolândia de Minas, Minas Gerais': 3122207, 'Dom Joaquim, Minas Gerais': 3122603, 'Dores de Guanhães, Minas Gerais': 3123106, 'Engenheiro Caldas, Minas Gerais': 3123700, 'Fernandes Tourinho, Minas Gerais': 3125804, 'Frei Inocêncio, Minas Gerais': 3126901, 'Frei Lagonegro, Minas Gerais': 3126950, 'Galiléia, Minas Gerais': 3127305, 'Goiabeira, Minas Gerais': 3127370, 'Gonzaga, Minas Gerais': 3127503, 'Governador Valadares, Minas Gerais': 3127701, 'Guanhães, Minas Gerais': 3128006, 'Itabirinha, Minas Gerais': 3131802, 'Itanhomi, Minas Gerais': 3133204, 'Itueta, Minas Gerais': 3134103, 'Jampruca, Minas Gerais': 3135076, 'José Raydan, Minas Gerais': 3136553, 'Mantena, Minas Gerais': 3139607, 'Marilac, Minas Gerais': 3140100, 'Materlândia, Minas Gerais': 3140605, 'Mendes Pimentel, Minas Gerais': 3141504, 'Nacip Raydan, Minas Gerais': 3144201, 'Nova Belém, Minas Gerais': 3144672, 'Paulistas, Minas Gerais': 3148400, 'Peçanha, Minas Gerais': 3148608, 'Resplendor, Minas Gerais': 3154309, 'Rio Vermelho, Minas Gerais': 3156007, 'Sabinópolis, Minas Gerais': 3156809, 'Santa Efigênia de Minas, Minas Gerais': 3157500, 'Santa Maria do Suaçuí, Minas Gerais': 3158201, 'Santa Rita do Itueto, Minas Gerais': 3159506, 'São Félix de Minas, Minas Gerais': 3161056, 'São Geraldo da Piedade, Minas Gerais': 3161601, 'São Geraldo do Baixio, Minas Gerais': 3161650, 'São João do Manteninha, Minas Gerais': 3162575, 'São João Evangelista, Minas Gerais': 3162807, 'São José da Safira, Minas Gerais': 3163003, 'São José do Jacuri, Minas Gerais': 3163508, 'São Pedro do Suaçuí, Minas Gerais': 3164100, 'São Sebastião do Maranhão, Minas Gerais': 3164506, 'Sardoá, Minas Gerais': 3165503, 'Senhora do Porto, Minas Gerais': 3166105, 'Sobrália, Minas Gerais': 3167707, 'Tarumirim, Minas Gerais': 3168408, 'Tumiritinga, Minas Gerais': 3169505, 'Mathias Lobato, Minas Gerais': 3171501, 'Virginópolis, Minas Gerais': 3171808, 'Virgolândia, Minas Gerais': 3171907, 'Açucena, Minas Gerais': 3100500, 'Alvarenga, Minas Gerais': 3102209, 'Antônio Dias, Minas Gerais': 3103009, 'Bela Vista de Minas, Minas Gerais': 3106002, 'Belo Oriente, Minas Gerais': 3106309, 'Bom Jesus do Galho, Minas Gerais': 3107802, 'Braúnas, Minas Gerais': 3108800, 'Bugre, Minas Gerais': 3109253, 'Caratinga, Minas Gerais': 3113404, 'Coronel Fabriciano, Minas Gerais': 3119401, 'Córrego Novo, Minas Gerais': 3120003, 'Dionísio, Minas Gerais': 3121803, 'Dom Cavati, Minas Gerais': 3122504, 'Entre Folhas, Minas Gerais': 3123858, 'Iapu, Minas Gerais': 3129301, 'Imbé de Minas, Minas Gerais': 3130556, 'Inhapim, Minas Gerais': 3130903, 'Ipaba, Minas Gerais': 3131158, 'Ipatinga, Minas Gerais': 3131307, 'Jaguaraçu, Minas Gerais': 3135001, 'Joanésia, Minas Gerais': 3136108, 'João Monlevade, Minas Gerais': 3136207, 'Marliéria, Minas Gerais': 3140308, 'Mesquita, Minas Gerais': 3141702, 'Naque, Minas Gerais': 3144359, 'Nova Era, Minas Gerais': 3144706, 'Periquito, Minas Gerais': 3149952, 'Piedade de Caratinga, Minas Gerais': 3150158, "Pingo-d'Água, Minas Gerais": 3150539, 'Raul Soares, Minas Gerais': 3154002, 'Rio Piracicaba, Minas Gerais': 3155702, 'Santa Bárbara do Leste, Minas Gerais': 3157252, 'Santana do Paraíso, Minas Gerais': 3158953, 'Santa Rita de Minas, Minas Gerais': 3159357, 'São Domingos das Dores, Minas Gerais': 3160959, 'São Domingos do Prata, Minas Gerais': 3161007, 'São Gonçalo do Rio Abaixo, Minas Gerais': 3161908, 'São João do Oriente, Minas Gerais': 3162609, 'São José do Goiabal, Minas Gerais': 3163409, 'São Sebastião do Anta, Minas Gerais': 3164472, 'Timóteo, Minas Gerais': 3168705, 'Ubaporanga, Minas Gerais': 3170057, 'Vargem Alegre, Minas Gerais': 3170578, 'Vermelho Novo, Minas Gerais': 3171154, 'Abre Campo, Minas Gerais': 3100302, 'Acaiaca, Minas Gerais': 3100401, 'Além Paraíba, Minas Gerais': 3101508, 'Alto Caparaó, Minas Gerais': 3102050, 'Alvinópolis, Minas Gerais': 3102308, 'Amparo do Serra, Minas Gerais': 3102506, 'Andrelândia, Minas Gerais': 3102803, 'Antônio Prado de Minas, Minas Gerais': 3103108, 'Aracitaba, Minas Gerais': 3103306, 'Arantina, Minas Gerais': 3103603, 'Araponga, Minas Gerais': 3103702, 'Argirita, Minas Gerais': 3104403, 'Astolfo Dutra, Minas Gerais': 3104601, 'Barão de Monte Alto, Minas Gerais': 3105509, 'Barra Longa, Minas Gerais': 3105707, 'Belmiro Braga, Minas Gerais': 3106101, 'Bias Fortes, Minas Gerais': 3106804, 'Bicas, Minas Gerais': 3106903, 'Bocaina de Minas, Minas Gerais': 3107208, 'Bom Jardim de Minas, Minas Gerais': 3107505, 'Brás Pires, Minas Gerais': 3108701, 'Caiana, Minas Gerais': 3110103, 'Cajuri, Minas Gerais': 3110202, 'Canaã, Minas Gerais': 3111705, 'Caparaó, Minas Gerais': 3112109, 'Caputira, Minas Gerais': 3112901, 'Carangola, Minas Gerais': 3113305, 'Cataguases, Minas Gerais': 3115300, 'Chácara, Minas Gerais': 3115904, 'Chalé, Minas Gerais': 3116001, 'Chiador, Minas Gerais': 3116209, 'Coimbra, Minas Gerais': 3116704, 'Conceição de Ipanema, Minas Gerais': 3117405, 'Coronel Pacheco, Minas Gerais': 3119609, 'Descoberto, Minas Gerais': 3121308, 'Diogo de Vasconcelos, Minas Gerais': 3121704, 'Divinésia, Minas Gerais': 3121902, 'Divino, Minas Gerais': 3122009, 'Dom Silvério, Minas Gerais': 3122702, 'Dona Eusébia, Minas Gerais': 3122900, 'Dores do Turvo, Minas Gerais': 3123304, 'Durandé, Minas Gerais': 3123528, 'Ervália, Minas Gerais': 3124005, 'Espera Feliz, Minas Gerais': 3124203, 'Estrela Dalva, Minas Gerais': 3124609, 'Eugenópolis, Minas Gerais': 3124906, 'Ewbank da Câmara, Minas Gerais': 3125002, 'Faria Lemos, Minas Gerais': 3125309, 'Fervedouro, Minas Gerais': 3125952, 'Goianá, Minas Gerais': 3127388, 'Guaraciaba, Minas Gerais': 3128204, 'Guarani, Minas Gerais': 3128402, 'Guarará, Minas Gerais': 3128501, 'Guidoval, Minas Gerais': 3128808, 'Guiricema, Minas Gerais': 3129004, 'Ipanema, Minas Gerais': 3131208, 'Itamarati de Minas, Minas Gerais': 3132602, 'Jequeri, Minas Gerais': 3135506, 'Juiz de Fora, Minas Gerais': 3136702, 'Lajinha, Minas Gerais': 3137700, 'Laranjal, Minas Gerais': 3138005, 'Leopoldina, Minas Gerais': 3138401, 'Liberdade, Minas Gerais': 3138500, 'Lima Duarte, Minas Gerais': 3138609, 'Luisburgo, Minas Gerais': 3138674, 'Manhuaçu, Minas Gerais': 3139409, 'Manhumirim, Minas Gerais': 3139508, 'Mar de Espanha, Minas Gerais': 3139805, 'Maripá de Minas, Minas Gerais': 3140209, 'Martins Soares, Minas Gerais': 3140530, 'Matias Barbosa, Minas Gerais': 3140803, 'Matipó, Minas Gerais': 3140902, 'Mercês, Minas Gerais': 3141603, 'Miradouro, Minas Gerais': 3142106, 'Miraí, Minas Gerais': 3142205, 'Muriaé, Minas Gerais': 3143906, 'Mutum, Minas Gerais': 3144003, 'Olaria, Minas Gerais': 3145406, 'Oliveira Fortes, Minas Gerais': 3145703, 'Oratórios, Minas Gerais': 3145851, 'Orizânia, Minas Gerais': 3145877, 'Paiva, Minas Gerais': 3146602, 'Palma, Minas Gerais': 3146701, 'Passa-Vinte, Minas Gerais': 3147808, 'Patrocínio do Muriaé, Minas Gerais': 3148202, 'Paula Cândido, Minas Gerais': 3148301, 'Pedra Bonita, Minas Gerais': 3148756, 'Pedra do Anta, Minas Gerais': 3148806, 'Pedra Dourada, Minas Gerais': 3149002, 'Pedro Teixeira, Minas Gerais': 3149408, 'Pequeri, Minas Gerais': 3149507, 'Piau, Minas Gerais': 3150109, 'Piedade de Ponte Nova, Minas Gerais': 3150208, 'Pirapetinga, Minas Gerais': 3151107, 'Piraúba, Minas Gerais': 3151305, 'Pocrane, Minas Gerais': 3151909, 'Ponte Nova, Minas Gerais': 3152105, 'Porto Firme, Minas Gerais': 3152303, 'Presidente Bernardes, Minas Gerais': 3153103, 'Alto Jequitibá, Minas Gerais': 3153509, 'Recreio, Minas Gerais': 3154101, 'Reduto, Minas Gerais': 3154150, 'Rio Casca, Minas Gerais': 3154903, 'Rio Doce, Minas Gerais': 3155009, 'Rio Novo, Minas Gerais': 3155405, 'Rio Pomba, Minas Gerais': 3155801, 'Rio Preto, Minas Gerais': 3155900, 'Rochedo de Minas, Minas Gerais': 3156205, 'Rodeiro, Minas Gerais': 3156304, 'Rosário da Limeira, Minas Gerais': 3156452, 'Santa Bárbara do Monte Verde, Minas Gerais': 3157278, 'Santa Cruz do Escalvado, Minas Gerais': 3157401, 'Santa Margarida, Minas Gerais': 3157906, 'Santana de Cataguases, Minas Gerais': 3158409, 'Santana do Deserto, Minas Gerais': 3158607, 'Santana do Manhuaçu, Minas Gerais': 3158904, 'Santa Rita de Jacutinga, Minas Gerais': 3159308, 'Santo Antônio do Aventureiro, Minas Gerais': 3160009, 'Santo Antônio do Grama, Minas Gerais': 3160108, 'Santos Dumont, Minas Gerais': 3160702, 'São Francisco do Glória, Minas Gerais': 3161403, 'São Geraldo, Minas Gerais': 3161502, 'São João do Manhuaçu, Minas Gerais': 3162559, 'São João Nepomuceno, Minas Gerais': 3162906, 'São José do Mantimento, Minas Gerais': 3163607, 'São Miguel do Anta, Minas Gerais': 3163805, 'São Pedro dos Ferros, Minas Gerais': 3164001, 'São Sebastião da Vargem Alegre, Minas Gerais': 3164431, 'Sem-Peixe, Minas Gerais': 3165560, 'Senador Cortes, Minas Gerais': 3165602, 'Senador Firmino, Minas Gerais': 3165701, 'Sericita, Minas Gerais': 3166303, 'Silveirânia, Minas Gerais': 3167301, 'Simão Pereira, Minas Gerais': 3167509, 'Simonésia, Minas Gerais': 3167608, 'Tabuleiro, Minas Gerais': 3167905, 'Taparuba, Minas Gerais': 3168051, 'Teixeiras, Minas Gerais': 3168507, 'Tocantins, Minas Gerais': 3169000, 'Tombos, Minas Gerais': 3169208, 'Ubá, Minas Gerais': 3169901, 'Urucânia, Minas Gerais': 3170503, 'Viçosa, Minas Gerais': 3171303, 'Vieiras, Minas Gerais': 3171402, 'Visconde do Rio Branco, Minas Gerais': 3172004, 'Volta Grande, Minas Gerais': 3172103, 'Alfredo Vasconcelos, Minas Gerais': 3101631, 'Alto Rio Doce, Minas Gerais': 3102100, 'Antônio Carlos, Minas Gerais': 3102902, 'Barbacena, Minas Gerais': 3105608, 'Barroso, Minas Gerais': 3105905, 'Belo Vale, Minas Gerais': 3106408, 'Capela Nova, Minas Gerais': 3112208, 'Caranaíba, Minas Gerais': 3113107, 'Carandaí, Minas Gerais': 3113206, 'Casa Grande, Minas Gerais': 3114907, 'Conceição da Barra de Minas, Minas Gerais': 3115201, 'Catas Altas da Noruega, Minas Gerais': 3115409, 'Cipotânea, Minas Gerais': 3116308, 'Congonhas, Minas Gerais': 3118007, 'Conselheiro Lafaiete, Minas Gerais': 3118304, 'Coronel Xavier Chaves, Minas Gerais': 3119708, 'Cristiano Otoni, Minas Gerais': 3120409, 'Desterro de Entre Rios, Minas Gerais': 3121407, 'Desterro do Melo, Minas Gerais': 3121506, 'Dores de Campos, Minas Gerais': 3123007, 'Entre Rios de Minas, Minas Gerais': 3123908, 'Ibertioga, Minas Gerais': 3129400, 'Itaverava, Minas Gerais': 3133907, 'Jeceaba, Minas Gerais': 3135407, 'Lagoa Dourada, Minas Gerais': 3137403, 'Lamim, Minas Gerais': 3137908, 'Madre de Deus de Minas, Minas Gerais': 3139102, 'Nazareno, Minas Gerais': 3144508, 'Ouro Branco, Minas Gerais': 3145901, 'Piedade do Rio Grande, Minas Gerais': 3150307, 'Piranga, Minas Gerais': 3150802, 'Prados, Minas Gerais': 3152709, 'Queluzito, Minas Gerais': 3153806, 'Resende Costa, Minas Gerais': 3154200, 'Ressaquinha, Minas Gerais': 3154408, 'Rio Espera, Minas Gerais': 3155207, 'Ritápolis, Minas Gerais': 3156106, 'Santa Bárbara do Tugúrio, Minas Gerais': 3157302, 'Santa Cruz de Minas, Minas Gerais': 3157336, 'Santana do Garambéu, Minas Gerais': 3158706, 'Santana dos Montes, Minas Gerais': 3159100, 'Santa Rita de Ibitipoca, Minas Gerais': 3159407, 'São Brás do Suaçuí, Minas Gerais': 3160900, 'São João del Rei, Minas Gerais': 3162500, 'São Tiago, Minas Gerais': 3165008, 'São Vicente de Minas, Minas Gerais': 3165305, 'Senhora de Oliveira, Minas Gerais': 3166006, 'Senhora dos Remédios, Minas Gerais': 3166204, 'Tiradentes, Minas Gerais': 3168804, 'Aguanil, Minas Gerais': 3100807, 'Alfenas, Minas Gerais': 3101607, 'Alpinópolis, Minas Gerais': 3101904, 'Alterosa, Minas Gerais': 3102001, 'Arceburgo, Minas Gerais': 3104106, 'Areado, Minas Gerais': 3104304, 'Boa Esperança, Minas Gerais': 3107109, 'Bom Jesus da Penha, Minas Gerais': 3107604, 'Bom Sucesso, Minas Gerais': 3108008, 'Cabo Verde, Minas Gerais': 3109501, 'Cambuquira, Minas Gerais': 3110707, 'Campanha, Minas Gerais': 3110905, 'Campo Belo, Minas Gerais': 3111200, 'Campo do Meio, Minas Gerais': 3111309, 'Campos Gerais, Minas Gerais': 3111606, 'Cana Verde, Minas Gerais': 3111903, 'Candeias, Minas Gerais': 3112000, 'Capetinga, Minas Gerais': 3112406, 'Capitólio, Minas Gerais': 3112802, 'Carmo da Cachoeira, Minas Gerais': 3113909, 'Carmo do Rio Claro, Minas Gerais': 3114402, 'Carrancas, Minas Gerais': 3114600, 'Carvalhópolis, Minas Gerais': 3114709, 'Cássia, Minas Gerais': 3115102, 'Claraval, Minas Gerais': 3116407, 'Conceição da Aparecida, Minas Gerais': 3117108, 'Coqueiral, Minas Gerais': 3118700, 'Cordislândia, Minas Gerais': 3119005, 'Cristais, Minas Gerais': 3120201, 'Delfinópolis, Minas Gerais': 3121209, 'Divisa Nova, Minas Gerais': 3122405, 'Doresópolis, Minas Gerais': 3123403, 'Elói Mendes, Minas Gerais': 3123601, 'Fama, Minas Gerais': 3125200, 'Fortaleza de Minas, Minas Gerais': 3126307, 'Guapé, Minas Gerais': 3128105, 'Guaranésia, Minas Gerais': 3128303, 'Guaxupé, Minas Gerais': 3128709, 'Ibiraci, Minas Gerais': 3129707, 'Ibituruna, Minas Gerais': 3130002, 'Ijaci, Minas Gerais': 3130408, 'Ilicínea, Minas Gerais': 3130507, 'Ingaí, Minas Gerais': 3130804, 'Itamogi, Minas Gerais': 3132909, 'Itaú de Minas, Minas Gerais': 3133758, 'Itumirim, Minas Gerais': 3134301, 'Itutinga, Minas Gerais': 3134509, 'Jacuí, Minas Gerais': 3134806, 'Juruaia, Minas Gerais': 3136900, 'Lavras, Minas Gerais': 3138203, 'Luminárias, Minas Gerais': 3138708, 'Machado, Minas Gerais': 3139003, 'Monsenhor Paulo, Minas Gerais': 3142601, 'Monte Belo, Minas Gerais': 3143005, 'Monte Santo de Minas, Minas Gerais': 3143203, 'Muzambinho, Minas Gerais': 3144102, 'Nepomuceno, Minas Gerais': 3144607, 'Nova Resende, Minas Gerais': 3145109, 'Paraguaçu, Minas Gerais': 3147204, 'Passos, Minas Gerais': 3147907, 'Perdões, Minas Gerais': 3149903, 'Piumhi, Minas Gerais': 3151503, 'Poço Fundo, Minas Gerais': 3151701, 'Pratápolis, Minas Gerais': 3152907, 'Ribeirão Vermelho, Minas Gerais': 3154705, 'Santana da Vargem, Minas Gerais': 3158300, 'Santana do Jacaré, Minas Gerais': 3158805, 'Santo Antônio do Amparo, Minas Gerais': 3159902, 'São Bento Abade, Minas Gerais': 3160801, 'São Gonçalo do Sapucaí, Minas Gerais': 3162005, 'São João Batista do Glória, Minas Gerais': 3162203, 'São José da Barra, Minas Gerais': 3162948, 'São Pedro da União, Minas Gerais': 3163904, 'São Roque de Minas, Minas Gerais': 3164308, 'São Sebastião do Paraíso, Minas Gerais': 3164704, 'São Tomás de Aquino, Minas Gerais': 3165107, 'São Thomé das Letras, Minas Gerais': 3165206, 'Serrania, Minas Gerais': 3166907, 'Três Corações, Minas Gerais': 3169307, 'Três Pontas, Minas Gerais': 3169406, 'Vargem Bonita, Minas Gerais': 3170602, 'Varginha, Minas Gerais': 3170701, 'Aiuruoca, Minas Gerais': 3101201, 'Alagoa, Minas Gerais': 3101300, 'Albertina, Minas Gerais': 3101409, 'Andradas, Minas Gerais': 3102605, 'Baependi, Minas Gerais': 3104908, 'Bandeira do Sul, Minas Gerais': 3105301, 'Bom Repouso, Minas Gerais': 3107901, 'Borda da Mata, Minas Gerais': 3108305, 'Botelhos, Minas Gerais': 3108404, 'Brazópolis, Minas Gerais': 3108909, 'Bueno Brandão, Minas Gerais': 3109105, 'Cachoeira de Minas, Minas Gerais': 3109709, 'Caldas, Minas Gerais': 3110301, 'Camanducaia, Minas Gerais': 3110509, 'Cambuí, Minas Gerais': 3110608, 'Campestre, Minas Gerais': 3111002, 'Careaçu, Minas Gerais': 3113602, 'Carmo de Minas, Minas Gerais': 3114105, 'Carvalhos, Minas Gerais': 3114808, 'Caxambu, Minas Gerais': 3115508, 'Conceição das Pedras, Minas Gerais': 3117207, 'Conceição do Rio Verde, Minas Gerais': 3117702, 'Conceição dos Ouros, Minas Gerais': 3117801, 'Congonhal, Minas Gerais': 3117900, 'Consolação, Minas Gerais': 3118502, 'Córrego do Bom Jesus, Minas Gerais': 3119906, 'Cristina, Minas Gerais': 3120508, 'Cruzília, Minas Gerais': 3120805, 'Delfim Moreira, Minas Gerais': 3121100, 'Dom Viçoso, Minas Gerais': 3122801, 'Espírito Santo do Dourado, Minas Gerais': 3124401, 'Estiva, Minas Gerais': 3124500, 'Extrema, Minas Gerais': 3125101, 'Gonçalves, Minas Gerais': 3127404, 'Heliodora, Minas Gerais': 3129202, 'Ibitiúra de Minas, Minas Gerais': 3129905, 'Inconfidentes, Minas Gerais': 3130606, 'Ipuiúna, Minas Gerais': 3131505, 'Itajubá, Minas Gerais': 3132404, 'Itamonte, Minas Gerais': 3133006, 'Itanhandu, Minas Gerais': 3133105, 'Itapeva, Minas Gerais': 3133600, 'Jacutinga, Minas Gerais': 3134905, 'Jesuânia, Minas Gerais': 3135902, 'Lambari, Minas Gerais': 3137809, 'Maria da Fé, Minas Gerais': 3139904, 'Marmelópolis, Minas Gerais': 3140407, 'Minduri, Minas Gerais': 3141900, 'Monte Sião, Minas Gerais': 3143401, 'Munhoz, Minas Gerais': 3143807, 'Natércia, Minas Gerais': 3144409, 'Olímpio Noronha, Minas Gerais': 3145505, 'Ouro Fino, Minas Gerais': 3146008, 'Paraisópolis, Minas Gerais': 3147303, 'Passa Quatro, Minas Gerais': 3147600, 'Pedralva, Minas Gerais': 3149101, 'Piranguçu, Minas Gerais': 3150901, 'Piranguinho, Minas Gerais': 3151008, 'Poços de Caldas, Minas Gerais': 3151800, 'Pouso Alegre, Minas Gerais': 3152501, 'Pouso Alto, Minas Gerais': 3152600, 'Santa Rita de Caldas, Minas Gerais': 3159209, 'Santa Rita do Sapucaí, Minas Gerais': 3159605, 'São João da Mata, Minas Gerais': 3162302, 'São José do Alegre, Minas Gerais': 3163201, 'São Lourenço, Minas Gerais': 3163706, 'São Sebastião da Bela Vista, Minas Gerais': 3164407, 'São Sebastião do Rio Verde, Minas Gerais': 3164902, 'Sapucaí-Mirim, Minas Gerais': 3165404, 'Senador Amaral, Minas Gerais': 3165578, 'Senador José Bento, Minas Gerais': 3165800, 'Seritinga, Minas Gerais': 3166402, 'Serranos, Minas Gerais': 3167004, 'Silvianópolis, Minas Gerais': 3167400, 'Soledade de Minas, Minas Gerais': 3167806, 'Tocos do Moji, Minas Gerais': 3169059, 'Toledo, Minas Gerais': 3169109, 'Turvolândia, Minas Gerais': 3169802, 'Virgínia, Minas Gerais': 3171709, 'Wenceslau Braz, Minas Gerais': 3172202, 'Água Comprida, Minas Gerais': 3100708, 'Araxá, Minas Gerais': 3104007, 'Campo Florido, Minas Gerais': 3111408, 'Campos Altos, Minas Gerais': 3111507, 'Carneirinho, Minas Gerais': 3114550, 'Comendador Gomes, Minas Gerais': 3116902, 'Conceição das Alagoas, Minas Gerais': 3117306, 'Conquista, Minas Gerais': 3118205, 'Delta, Minas Gerais': 3121258, 'Fronteira, Minas Gerais': 3127008, 'Frutal, Minas Gerais': 3127107, 'Ibiá, Minas Gerais': 3129509, 'Itapagipe, Minas Gerais': 3133402, 'Iturama, Minas Gerais': 3134400, 'Limeira do Oeste, Minas Gerais': 3138625, 'Nova Ponte, Minas Gerais': 3145000, 'Pedrinópolis, Minas Gerais': 3149200, 'Perdizes, Minas Gerais': 3149804, 'Pirajuba, Minas Gerais': 3150703, 'Planura, Minas Gerais': 3151602, 'Pratinha, Minas Gerais': 3153004, 'Sacramento, Minas Gerais': 3156908, 'Santa Juliana, Minas Gerais': 3157708, 'Santa Rosa da Serra, Minas Gerais': 3159704, 'São Francisco de Sales, Minas Gerais': 3161304, 'Tapira, Minas Gerais': 3168101, 'Uberaba, Minas Gerais': 3170107, 'União de Minas, Minas Gerais': 3170438, 'Veríssimo, Minas Gerais': 3171105, 'Arapuá, Minas Gerais': 3103801, 'Arinos, Minas Gerais': 3104502, 'Bonfinópolis de Minas, Minas Gerais': 3108206, 'Brasilândia de Minas, Minas Gerais': 3108552, 'Buritis, Minas Gerais': 3109303, 'Cabeceira Grande, Minas Gerais': 3109451, 'Carmo do Paranaíba, Minas Gerais': 3114303, 'Coromandel, Minas Gerais': 3119302, 'Cruzeiro da Fortaleza, Minas Gerais': 3120706, 'Dom Bosco, Minas Gerais': 3122470, 'Formoso, Minas Gerais': 3126208, 'Guarda-Mor, Minas Gerais': 3128600, 'Guimarânia, Minas Gerais': 3128907, 'João Pinheiro, Minas Gerais': 3136306, 'Lagamar, Minas Gerais': 3137106, 'Lagoa Formosa, Minas Gerais': 3137502, 'Lagoa Grande, Minas Gerais': 3137536, 'Matutina, Minas Gerais': 3141207, 'Natalândia, Minas Gerais': 3144375, 'Paracatu, Minas Gerais': 3147006, 'Patos de Minas, Minas Gerais': 3148004, 'Patrocínio, Minas Gerais': 3148103, 'Presidente Olegário, Minas Gerais': 3153400, 'Riachinho, Minas Gerais': 3154457, 'Rio Paranaíba, Minas Gerais': 3155504, 'São Gonçalo do Abaeté, Minas Gerais': 3161700, 'São Gotardo, Minas Gerais': 3162104, 'Serra do Salitre, Minas Gerais': 3166808, 'Tiros, Minas Gerais': 3168903, 'Unaí, Minas Gerais': 3170404, 'Uruana de Minas, Minas Gerais': 3170479, 'Urucuia, Minas Gerais': 3170529, 'Varjão de Minas, Minas Gerais': 3170750, 'Vazante, Minas Gerais': 3171006, 'Abaeté, Minas Gerais': 3100203, 'Araújos, Minas Gerais': 3103900, 'Arcos, Minas Gerais': 3104205, 'Bambuí, Minas Gerais': 3105103, 'Biquinhas, Minas Gerais': 3107000, 'Bom Despacho, Minas Gerais': 3107406, 'Bonfim, Minas Gerais': 3108107, 'Camacho, Minas Gerais': 3110400, 'Carmo da Mata, Minas Gerais': 3114006, 'Carmo do Cajuru, Minas Gerais': 3114204, 'Carmópolis de Minas, Minas Gerais': 3114501, 'Cedro do Abaeté, Minas Gerais': 3115607, 'Cláudio, Minas Gerais': 3116605, 'Conceição do Pará, Minas Gerais': 3117603, 'Córrego Danta, Minas Gerais': 3119807, 'Córrego Fundo, Minas Gerais': 3119955, 'Crucilândia, Minas Gerais': 3120607, 'Divinópolis, Minas Gerais': 3122306, 'Dores do Indaiá, Minas Gerais': 3123205, 'Estrela do Indaiá, Minas Gerais': 3124708, 'Formiga, Minas Gerais': 3126109, 'Igaratinga, Minas Gerais': 3130200, 'Iguatama, Minas Gerais': 3130309, 'Itaguara, Minas Gerais': 3132206, 'Itapecerica, Minas Gerais': 3133501, 'Itatiaiuçu, Minas Gerais': 3133709, 'Itaúna, Minas Gerais': 3133808, 'Japaraíba, Minas Gerais': 3135308, 'Lagoa da Prata, Minas Gerais': 3137205, 'Leandro Ferreira, Minas Gerais': 3138302, 'Luz, Minas Gerais': 3138807, 'Maravilhas, Minas Gerais': 3139706, 'Martinho Campos, Minas Gerais': 3140506, 'Medeiros, Minas Gerais': 3141306, 'Moema, Minas Gerais': 3142403, 'Morada Nova de Minas, Minas Gerais': 3143500, 'Nova Serrana, Minas Gerais': 3145208, 'Oliveira, Minas Gerais': 3145604, 'Onça de Pitangui, Minas Gerais': 3145802, 'Paineiras, Minas Gerais': 3146404, 'Pains, Minas Gerais': 3146503, 'Papagaios, Minas Gerais': 3146909, 'Pará de Minas, Minas Gerais': 3147105, 'Passa Tempo, Minas Gerais': 3147709, 'Pedra do Indaiá, Minas Gerais': 3148905, 'Pequi, Minas Gerais': 3149606, 'Perdigão, Minas Gerais': 3149705, 'Piedade dos Gerais, Minas Gerais': 3150406, 'Pimenta, Minas Gerais': 3150505, 'Piracema, Minas Gerais': 3150604, 'Pitangui, Minas Gerais': 3151404, 'Pompéu, Minas Gerais': 3152006, 'Quartel Geral, Minas Gerais': 3153707, 'Rio Manso, Minas Gerais': 3155306, 'Santo Antônio do Monte, Minas Gerais': 3160405, 'São Francisco de Paula, Minas Gerais': 3161205, 'São Gonçalo do Pará, Minas Gerais': 3161809, 'São José da Varginha, Minas Gerais': 3163102, 'São Sebastião do Oeste, Minas Gerais': 3164605, 'Serra da Saudade, Minas Gerais': 3166600, 'Tapiraí, Minas Gerais': 3168200, 'Arujá, São Paulo': 3503901, 'Barueri, São Paulo': 3505708, 'Bertioga, São Paulo': 3506359, 'Biritiba-Mirim, São Paulo': 3506607, 'Caieiras, São Paulo': 3509007, 'Cajamar, São Paulo': 3509205, 'Carapicuíba, São Paulo': 3510609, 'Cotia, São Paulo': 3513009, 'Cubatão, São Paulo': 3513504, 'Diadema, São Paulo': 3513801, 'Embu das Artes, São Paulo': 3515004, 'Embu-Guaçu, São Paulo': 3515103, 'Ferraz de Vasconcelos, São Paulo': 3515707, 'Francisco Morato, São Paulo': 3516309, 'Franco da Rocha, São Paulo': 3516408, 'Guararema, São Paulo': 3518305, 'Guarujá, São Paulo': 3518701, 'Guarulhos, São Paulo': 3518800, 'Itanhaém, São Paulo': 3522109, 'Itapecerica da Serra, São Paulo': 3522208, 'Itapevi, São Paulo': 3522505, 'Itaquaquecetuba, São Paulo': 3523107, 'Itariri, São Paulo': 3523305, 'Jandira, São Paulo': 3525003, 'Juquitiba, São Paulo': 3526209, 'Mairiporã, São Paulo': 3528502, 'Mauá, São Paulo': 3529401, 'Mogi das Cruzes, São Paulo': 3530607, 'Mongaguá, São Paulo': 3531100, 'Osasco, São Paulo': 3534401, 'Pedro de Toledo, São Paulo': 3537206, 'Peruíbe, São Paulo': 3537602, 'Pirapora do Bom Jesus, São Paulo': 3539103, 'Poá, São Paulo': 3539806, 'Praia Grande, São Paulo': 3541000, 'Ribeirão Pires, São Paulo': 3543303, 'Rio Grande da Serra, São Paulo': 3544103, 'Salesópolis, São Paulo': 3545001, 'Santa Isabel, São Paulo': 3546801, 'Santana de Parnaíba, São Paulo': 3547304, 'Santo André, São Paulo': 3547809, 'Santos, São Paulo': 3548500, 'São Bernardo do Campo, São Paulo': 3548708, 'São Caetano do Sul, São Paulo': 3548807, 'São Lourenço da Serra, São Paulo': 3549953, 'São Paulo, São Paulo': 3550308, 'São Vicente, São Paulo': 3551009, 'Suzano, São Paulo': 3552502, 'Taboão da Serra, São Paulo': 3552809, 'Vargem Grande Paulista, São Paulo': 3556453, 'Águas de Santa Bárbara, São Paulo': 3500550, 'Alambari, São Paulo': 3500758, 'Alumínio, São Paulo': 3501152, 'Angatuba, São Paulo': 3502200, 'Apiaí, São Paulo': 3502705, 'Araçariguama, São Paulo': 3502754, 'Araçoiaba da Serra, São Paulo': 3502903, 'Arandu, São Paulo': 3503109, 'Avaré, São Paulo': 3504503, 'Barão de Antonina, São Paulo': 3505005, 'Barra do Chapéu, São Paulo': 3505351, 'Barra do Turvo, São Paulo': 3505401, 'Boituva, São Paulo': 3507001, 'Bom Sucesso de Itararé, São Paulo': 3507159, 'Buri, São Paulo': 3508009, 'Cajati, São Paulo': 3509254, 'Campina do Monte Alegre, São Paulo': 3509452, 'Cananéia, São Paulo': 3509908, 'Capão Bonito, São Paulo': 3510203, 'Capela do Alto, São Paulo': 3510302, 'Cerqueira César, São Paulo': 3511409, 'Cerquilho, São Paulo': 3511508, 'Cesário Lange, São Paulo': 3511607, 'Coronel Macedo, São Paulo': 3512605, 'Eldorado, São Paulo': 3514809, 'Guapiara, São Paulo': 3517604, 'Guareí, São Paulo': 3518503, 'Iaras, São Paulo': 3519253, 'Ibiúna, São Paulo': 3519709, 'Iguape, São Paulo': 3520301, 'Ilha Comprida, São Paulo': 3520426, 'Iperó, São Paulo': 3521002, 'Iporanga, São Paulo': 3521200, 'Itaberá, São Paulo': 3521705, 'Itaí, São Paulo': 3521804, 'Itaóca, São Paulo': 3522158, 'Itapetininga, São Paulo': 3522307, 'Itapeva, São Paulo': 3522406, 'Itapirapuã Paulista, São Paulo': 3522653, 'Itaporanga, São Paulo': 3522802, 'Itararé, São Paulo': 3523206, 'Itu, São Paulo': 3523909, 'Jacupiranga, São Paulo': 3524600, 'Jumirim, São Paulo': 3525854, 'Juquiá, São Paulo': 3526100, 'Mairinque, São Paulo': 3528403, 'Manduri, São Paulo': 3528601, 'Miracatu, São Paulo': 3529906, 'Nova Campina, São Paulo': 3532827, 'Óleo, São Paulo': 3533809, 'Paranapanema, São Paulo': 3535804, 'Pariquera-Açu, São Paulo': 3536208, 'Pereiras, São Paulo': 3537503, 'Piedade, São Paulo': 3537800, 'Pilar do Sul, São Paulo': 3537909, 'Porangaba, São Paulo': 3540507, 'Porto Feliz, São Paulo': 3540606, 'Quadra, São Paulo': 3541653, 'Registro, São Paulo': 3542602, 'Ribeira, São Paulo': 3542800, 'Ribeirão Branco, São Paulo': 3543006, 'Ribeirão Grande, São Paulo': 3543253, 'Riversul, São Paulo': 3543501, 'Salto, São Paulo': 3545209, 'Salto de Pirapora, São Paulo': 3545308, 'São Miguel Arcanjo, São Paulo': 3550209, 'São Roque, São Paulo': 3550605, 'Sarapuí, São Paulo': 3551108, 'Sete Barras, São Paulo': 3551801, 'Sorocaba, São Paulo': 3552205, 'Taguaí, São Paulo': 3553005, 'Tapiraí, São Paulo': 3553500, 'Taquarituba, São Paulo': 3553807, 'Taquarivaí, São Paulo': 3553856, 'Tatuí, São Paulo': 3554003, 'Tietê, São Paulo': 3554508, 'Torre de Pedra, São Paulo': 3554656, 'Votorantim, São Paulo': 3557006, 'Agudos, São Paulo': 3500709, 'Anhembi, São Paulo': 3502309, 'Arealva, São Paulo': 3503406, 'Areiópolis, São Paulo': 3503604, 'Avaí, São Paulo': 3504305, 'Balbinos, São Paulo': 3504701, 'Bariri, São Paulo': 3505203, 'Barra Bonita, São Paulo': 3505302, 'Bauru, São Paulo': 3506003, 'Bocaina, São Paulo': 3506805, 'Bofete, São Paulo': 3506904, 'Boracéia, São Paulo': 3507308, 'Borebi, São Paulo': 3507456, 'Botucatu, São Paulo': 3507506, 'Brotas, São Paulo': 3507902, 'Cabrália Paulista, São Paulo': 3508306, 'Cafelândia, São Paulo': 3508801, 'Conchas, São Paulo': 3512308, 'Dois Córregos, São Paulo': 3514106, 'Duartina, São Paulo': 3514502, 'Guaiçara, São Paulo': 3517208, 'Guarantã, São Paulo': 3518107, 'Iacanga, São Paulo': 3519105, 'Igaraçu do Tietê, São Paulo': 3520004, 'Itaju, São Paulo': 3522000, 'Itapuí, São Paulo': 3522901, 'Itatinga, São Paulo': 3523503, 'Jaú, São Paulo': 3525300, 'Lençóis Paulista, São Paulo': 3526803, 'Lins, São Paulo': 3527108, 'Lucianópolis, São Paulo': 3527504, 'Macatuba, São Paulo': 3528007, 'Mineiros do Tietê, São Paulo': 3529807, 'Pardinho, São Paulo': 3536109, 'Paulistânia, São Paulo': 3536570, 'Pederneiras, São Paulo': 3536703, 'Pirajuí, São Paulo': 3538907, 'Piratininga, São Paulo': 3539400, 'Pongaí, São Paulo': 3540101, 'Pratânia, São Paulo': 3541059, 'Presidente Alves, São Paulo': 3541109, 'Promissão, São Paulo': 3541604, 'Reginópolis, São Paulo': 3542503, 'Sabino, São Paulo': 3544608, 'São Manuel, São Paulo': 3550100, 'Torrinha, São Paulo': 3554706, 'Ubirajara, São Paulo': 3555505, 'Uru, São Paulo': 3555901, 'Álvaro de Carvalho, São Paulo': 3501400, 'Alvinlândia, São Paulo': 3501509, 'Arco-Íris, São Paulo': 3503356, 'Assis, São Paulo': 3504008, 'Bastos, São Paulo': 3505807, 'Bernardino de Campos, São Paulo': 3506300, 'Borá, São Paulo': 3507209, 'Campos Novos Paulista, São Paulo': 3509809, 'Cândido Mota, São Paulo': 3510005, 'Canitar, São Paulo': 3510153, 'Cruzália, São Paulo': 3513306, 'Echaporã, São Paulo': 3514700, 'Espírito Santo do Turvo, São Paulo': 3515194, 'Fartura, São Paulo': 3515400, 'Fernão, São Paulo': 3515657, 'Florínia, São Paulo': 3516101, 'Gália, São Paulo': 3516606, 'Garça, São Paulo': 3516705, 'Getulina, São Paulo': 3517000, 'Guaimbê, São Paulo': 3517307, 'Herculândia, São Paulo': 3519006, 'Iacri, São Paulo': 3519204, 'Ibirarema, São Paulo': 3519501, 'Ipaussu, São Paulo': 3520905, 'Júlio Mesquita, São Paulo': 3525805, 'Lupércio, São Paulo': 3527801, 'Lutécia, São Paulo': 3527900, 'Maracaí, São Paulo': 3528809, 'Marília, São Paulo': 3529005, 'Ocauçu, São Paulo': 3533700, 'Oriente, São Paulo': 3534104, 'Oscar Bressane, São Paulo': 3534500, 'Ourinhos, São Paulo': 3534708, 'Palmital, São Paulo': 3535309, 'Paraguaçu Paulista, São Paulo': 3535507, 'Parapuã, São Paulo': 3536000, 'Pedrinhas Paulista, São Paulo': 3537156, 'Piraju, São Paulo': 3538808, 'Platina, São Paulo': 3539707, 'Pompéia, São Paulo': 3540002, 'Queiroz, São Paulo': 3541802, 'Quintana, São Paulo': 3542008, 'Ribeirão do Sul, São Paulo': 3543204, 'Rinópolis, São Paulo': 3543808, 'Salto Grande, São Paulo': 3545407, 'Santa Cruz do Rio Pardo, São Paulo': 3546405, 'São Pedro do Turvo, São Paulo': 3550506, 'Sarutaiá, São Paulo': 3551207, 'Tarumã, São Paulo': 3553955, 'Tejupá, São Paulo': 3554201, 'Timburi, São Paulo': 3554607, 'Tupã, São Paulo': 3555000, 'Vera Cruz, São Paulo': 3556602, 'Chavantes, São Paulo': 3557204, 'Adamantina, São Paulo': 3500105, 'Alfredo Marcondes, São Paulo': 3500808, 'Álvares Machado, São Paulo': 3501301, 'Anhumas, São Paulo': 3502408, 'Caiabu, São Paulo': 3508900, 'Caiuá, São Paulo': 3509106, 'Dracena, São Paulo': 3514403, 'Emilianópolis, São Paulo': 3515129, 'Estrela do Norte, São Paulo': 3515301, 'Euclides da Cunha Paulista, São Paulo': 3515350, 'Flora Rica, São Paulo': 3515806, 'Flórida Paulista, São Paulo': 3516002, 'Iepê, São Paulo': 3519907, 'Indiana, São Paulo': 3520608, 'Inúbia Paulista, São Paulo': 3520806, 'Irapuru, São Paulo': 3521606, 'João Ramalho, São Paulo': 3525607, 'Junqueirópolis, São Paulo': 3526001, 'Lucélia, São Paulo': 3527405, 'Marabá Paulista, São Paulo': 3528700, 'Mariápolis, São Paulo': 3528908, 'Martinópolis, São Paulo': 3529203, 'Mirante do Paranapanema, São Paulo': 3530201, 'Monte Castelo, São Paulo': 3531605, 'Nantes, São Paulo': 3532157, 'Narandiba, São Paulo': 3532207, 'Nova Guataporanga, São Paulo': 3533106, 'Osvaldo Cruz, São Paulo': 3534609, 'Ouro Verde, São Paulo': 3534807, 'Pacaembu, São Paulo': 3534906, 'Panorama, São Paulo': 3535408, 'Paulicéia, São Paulo': 3536406, 'Piquerobi, São Paulo': 3538303, 'Pirapozinho, São Paulo': 3539202, 'Pracinha, São Paulo': 3540853, 'Presidente Bernardes, São Paulo': 3541208, 'Presidente Epitácio, São Paulo': 3541307, 'Presidente Prudente, São Paulo': 3541406, 'Presidente Venceslau, São Paulo': 3541505, 'Quatá, São Paulo': 3541703, 'Rancharia, São Paulo': 3542206, 'Regente Feijó, São Paulo': 3542404, 'Ribeirão dos Índios, São Paulo': 3543238, 'Rosana, São Paulo': 3544251, 'Sagres, São Paulo': 3544707, 'Salmourão, São Paulo': 3545100, 'Sandovalina, São Paulo': 3545506, 'Santa Mercedes, São Paulo': 3547106, 'Santo Anastácio, São Paulo': 3547700, 'Santo Expedito, São Paulo': 3548302, "São João do Pau d'Alho, São Paulo": 3549300, 'Taciba, São Paulo': 3552908, 'Tarabai, São Paulo': 3553906, 'Teodoro Sampaio, São Paulo': 3554300, 'Tupi Paulista, São Paulo': 3555109, 'Alto Alegre, São Paulo': 3501103, 'Andradina, São Paulo': 3502101, 'Araçatuba, São Paulo': 3502804, 'Auriflama, São Paulo': 3504206, 'Avanhandava, São Paulo': 3504404, 'Barbosa, São Paulo': 3505104, 'Bento de Abreu, São Paulo': 3506201, 'Bilac, São Paulo': 3506409, 'Birigui, São Paulo': 3506508, 'Braúna, São Paulo': 3507704, 'Brejo Alegre, São Paulo': 3507753, 'Buritama, São Paulo': 3508108, 'Castilho, São Paulo': 3511003, 'Clementina, São Paulo': 3511904, 'Coroados, São Paulo': 3512506, 'Gabriel Monteiro, São Paulo': 3516507, 'Gastão Vidigal, São Paulo': 3516804, 'General Salgado, São Paulo': 3516903, 'Glicério, São Paulo': 3517109, 'Guaraçaí, São Paulo': 3517802, 'Guararapes, São Paulo': 3518206, 'Guzolândia, São Paulo': 3518909, 'Ilha Solteira, São Paulo': 3520442, 'Itapura, São Paulo': 3523008, 'Lavínia, São Paulo': 3526506, 'Lourdes, São Paulo': 3527256, 'Luiziânia, São Paulo': 3527702, 'Magda, São Paulo': 3528304, 'Mirandópolis, São Paulo': 3530102, 'Monções, São Paulo': 3531001, 'Murutinga do Sul, São Paulo': 3532108, 'Nova Castilho, São Paulo': 3532868, 'Nova Independência, São Paulo': 3533205, 'Nova Luzitânia, São Paulo': 3533304, 'Penápolis, São Paulo': 3537305, 'Pereira Barreto, São Paulo': 3537404, 'Piacatu, São Paulo': 3537701, 'Rubiácea, São Paulo': 3544400, 'Santo Antônio do Aracanguá, São Paulo': 3548054, 'Santópolis do Aguapeí, São Paulo': 3548401, 'Sud Mennucci, São Paulo': 3552304, 'Turiúba, São Paulo': 3555208, 'Valparaíso, São Paulo': 3556305, 'Zacarias, São Paulo': 3557154, 'Adolfo, São Paulo': 3500204, 'Altair, São Paulo': 3500907, 'Álvares Florence, São Paulo': 3501202, 'Américo de Campos, São Paulo': 3501806, "Aparecida d'Oeste, São Paulo": 3502606, 'Ariranha, São Paulo': 3503703, 'Aspásia, São Paulo': 3503950, 'Bady Bassitt, São Paulo': 3504602, 'Bálsamo, São Paulo': 3504800, 'Cardoso, São Paulo': 3510708, 'Catanduva, São Paulo': 3511102, 'Catiguá, São Paulo': 3511201, 'Cedral, São Paulo': 3511300, 'Cosmorama, São Paulo': 3512902, 'Dirce Reis, São Paulo': 3513850, 'Dolcinópolis, São Paulo': 3514205, 'Elisiário, São Paulo': 3514924, 'Embaúba, São Paulo': 3514957, "Estrela d'Oeste, São Paulo": 3515202, 'Fernandópolis, São Paulo': 3515509, 'Fernando Prestes, São Paulo': 3515608, 'Floreal, São Paulo': 3515905, 'Guapiaçu, São Paulo': 3517505, "Guarani d'Oeste, São Paulo": 3518008, 'Ibirá, São Paulo': 3519402, 'Icém, São Paulo': 3519808, 'Indiaporã, São Paulo': 3520707, 'Ipiguá, São Paulo': 3521150, 'Irapuã, São Paulo': 3521507, 'Itajobi, São Paulo': 3521903, 'Jaci, São Paulo': 3524501, 'Jales, São Paulo': 3524808, 'José Bonifácio, São Paulo': 3525706, 'Macaubal, São Paulo': 3528106, 'Macedônia, São Paulo': 3528205, 'Marapoama, São Paulo': 3528858, 'Marinópolis, São Paulo': 3529104, 'Mendonça, São Paulo': 3529500, 'Meridiano, São Paulo': 3529609, 'Mesópolis, São Paulo': 3529658, 'Mira Estrela, São Paulo': 3530003, 'Mirassol, São Paulo': 3530300, 'Mirassolândia, São Paulo': 3530409, 'Monte Aprazível, São Paulo': 3531407, 'Neves Paulista, São Paulo': 3532504, 'Nhandeara, São Paulo': 3532603, 'Nipoã, São Paulo': 3532702, 'Nova Aliança, São Paulo': 3532801, 'Nova Canaã Paulista, São Paulo': 3532843, 'Nova Granada, São Paulo': 3533007, 'Novais, São Paulo': 3533254, 'Novo Horizonte, São Paulo': 3533502, 'Onda Verde, São Paulo': 3534005, 'Orindiúva, São Paulo': 3534203, 'Ouroeste, São Paulo': 3534757, 'Palestina, São Paulo': 3535002, 'Palmares Paulista, São Paulo': 3535101, "Palmeira d'Oeste, São Paulo": 3535200, 'Paraíso, São Paulo': 3535705, 'Paranapuã, São Paulo': 3535903, 'Parisi, São Paulo': 3536257, 'Paulo de Faria, São Paulo': 3536604, 'Pedranópolis, São Paulo': 3536901, 'Pindorama, São Paulo': 3538105, 'Pirangi, São Paulo': 3539004, 'Planalto, São Paulo': 3539608, 'Poloni, São Paulo': 3539905, 'Pontalinda, São Paulo': 3540259, 'Pontes Gestal, São Paulo': 3540309, 'Populina, São Paulo': 3540408, 'Potirendaba, São Paulo': 3540804, 'Riolândia, São Paulo': 3544202, 'Rubinéia, São Paulo': 3544509, 'Sales, São Paulo': 3544806, 'Santa Adélia, São Paulo': 3545605, 'Santa Albertina, São Paulo': 3545704, "Santa Clara d'Oeste, São Paulo": 3546108, 'Santa Fé do Sul, São Paulo': 3546603, 'Santana da Ponte Pensa, São Paulo': 3547205, "Santa Rita d'Oeste, São Paulo": 3547403, 'Santa Salete, São Paulo': 3547650, 'São Francisco, São Paulo': 3549003, 'São João das Duas Pontes, São Paulo': 3549201, 'São João de Iracema, São Paulo': 3549250, 'São José do Rio Preto, São Paulo': 3549805, 'Sebastianópolis do Sul, São Paulo': 3551306, 'Suzanápolis, São Paulo': 3552551, 'Tabapuã, São Paulo': 3552601, 'Tanabi, São Paulo': 3553401, 'Três Fronteiras, São Paulo': 3554904, 'Turmalina, São Paulo': 3555307, 'Ubarana, São Paulo': 3555356, 'Uchoa, São Paulo': 3555604, 'União Paulista, São Paulo': 3555703, 'Urânia, São Paulo': 3555802, 'Urupês, São Paulo': 3556008, 'Valentim Gentil, São Paulo': 3556107, 'Vista Alegre do Alto, São Paulo': 3556909, 'Vitória Brasil, São Paulo': 3556958, 'Votuporanga, São Paulo': 3557105, 'Altinópolis, São Paulo': 3501004, 'Aramina, São Paulo': 3503000, 'Barretos, São Paulo': 3505500, 'Barrinha, São Paulo': 3505609, 'Batatais, São Paulo': 3505906, 'Bebedouro, São Paulo': 3506102, 'Brodowski, São Paulo': 3507803, 'Buritizal, São Paulo': 3508207, 'Cajobi, São Paulo': 3509304, 'Cajuru, São Paulo': 3509403, 'Cássia dos Coqueiros, São Paulo': 3510906, 'Colina, São Paulo': 3512001, 'Colômbia, São Paulo': 3512100, 'Cravinhos, São Paulo': 3513108, 'Cristais Paulista, São Paulo': 3513207, 'Dumont, São Paulo': 3514601, 'Franca, São Paulo': 3516200, 'Guaíra, São Paulo': 3517406, 'Guará, São Paulo': 3517703, 'Guaraci, São Paulo': 3517901, 'Guariba, São Paulo': 3518602, 'Guatapará, São Paulo': 3518859, 'Igarapava, São Paulo': 3520103, 'Ipuã, São Paulo': 3521309, 'Itirapuã, São Paulo': 3523701, 'Ituverava, São Paulo': 3524105, 'Jaborandi, São Paulo': 3524204, 'Jaboticabal, São Paulo': 3524303, 'Jardinópolis, São Paulo': 3525102, 'Jeriquara, São Paulo': 3525409, 'Luís Antônio, São Paulo': 3527603, 'Miguelópolis, São Paulo': 3529708, 'Monte Alto, São Paulo': 3531308, 'Monte Azul Paulista, São Paulo': 3531506, 'Morro Agudo, São Paulo': 3531902, 'Nuporanga, São Paulo': 3533601, 'Olímpia, São Paulo': 3533908, 'Orlândia, São Paulo': 3534302, 'Patrocínio Paulista, São Paulo': 3536307, 'Pedregulho, São Paulo': 3537008, 'Pitangueiras, São Paulo': 3539509, 'Pontal, São Paulo': 3540200, 'Pradópolis, São Paulo': 3540903, 'Restinga, São Paulo': 3542701, 'Ribeirão Corrente, São Paulo': 3543105, 'Ribeirão Preto, São Paulo': 3543402, 'Rifaina, São Paulo': 3543600, 'Sales Oliveira, São Paulo': 3544905, 'Santa Cruz da Esperança, São Paulo': 3546256, 'Santa Ernestina, São Paulo': 3546504, 'Santa Rosa de Viterbo, São Paulo': 3547601, 'Santo Antônio da Alegria, São Paulo': 3547908, 'São Joaquim da Barra, São Paulo': 3549409, 'São José da Bela Vista, São Paulo': 3549508, 'São Simão, São Paulo': 3550902, 'Serra Azul, São Paulo': 3551405, 'Serrana, São Paulo': 3551504, 'Sertãozinho, São Paulo': 3551702, 'Severínia, São Paulo': 3551900, 'Taiaçu, São Paulo': 3553104, 'Taiúva, São Paulo': 3553203, 'Taquaral, São Paulo': 3553658, 'Terra Roxa, São Paulo': 3554409, 'Viradouro, São Paulo': 3556800, 'Aguaí, São Paulo': 3500303, 'Águas da Prata, São Paulo': 3500402, 'Águas de Lindóia, São Paulo': 3500501, 'Águas de São Pedro, São Paulo': 3500600, 'Americana, São Paulo': 3501608, 'Amparo, São Paulo': 3501905, 'Analândia, São Paulo': 3502002, 'Araras, São Paulo': 3503307, 'Artur Nogueira, São Paulo': 3503802, 'Atibaia, São Paulo': 3504107, 'Bom Jesus dos Perdões, São Paulo': 3507100, 'Bragança Paulista, São Paulo': 3507605, 'Cabreúva, São Paulo': 3508405, 'Caconde, São Paulo': 3508702, 'Campinas, São Paulo': 3509502, 'Campo Limpo Paulista, São Paulo': 3509601, 'Capivari, São Paulo': 3510401, 'Casa Branca, São Paulo': 3510807, 'Charqueada, São Paulo': 3511706, 'Conchal, São Paulo': 3512209, 'Cordeirópolis, São Paulo': 3512407, 'Corumbataí, São Paulo': 3512704, 'Cosmópolis, São Paulo': 3512803, 'Divinolândia, São Paulo': 3513900, 'Elias Fausto, São Paulo': 3514908, 'Engenheiro Coelho, São Paulo': 3515152, 'Espírito Santo do Pinhal, São Paulo': 3515186, 'Holambra, São Paulo': 3519055, 'Hortolândia, São Paulo': 3519071, 'Indaiatuba, São Paulo': 3520509, 'Ipeúna, São Paulo': 3521101, 'Iracemápolis, São Paulo': 3521408, 'Itapira, São Paulo': 3522604, 'Itatiba, São Paulo': 3523404, 'Itobi, São Paulo': 3523800, 'Itupeva, São Paulo': 3524006, 'Jaguariúna, São Paulo': 3524709, 'Jarinu, São Paulo': 3525201, 'Joanópolis, São Paulo': 3525508, 'Jundiaí, São Paulo': 3525904, 'Laranjal Paulista, São Paulo': 3526407, 'Leme, São Paulo': 3526704, 'Limeira, São Paulo': 3526902, 'Lindóia, São Paulo': 3527009, 'Louveira, São Paulo': 3527306, 'Mococa, São Paulo': 3530508, 'Mogi Guaçu, São Paulo': 3530706, 'Mogi Mirim, São Paulo': 3530805, 'Mombuca, São Paulo': 3530904, 'Monte Alegre do Sul, São Paulo': 3531209, 'Monte Mor, São Paulo': 3531803, 'Morungaba, São Paulo': 3532009, 'Nazaré Paulista, São Paulo': 3532405, 'Nova Odessa, São Paulo': 3533403, 'Paulínia, São Paulo': 3536505, 'Pedra Bela, São Paulo': 3536802, 'Pedreira, São Paulo': 3537107, 'Pinhalzinho, São Paulo': 3538204, 'Piracaia, São Paulo': 3538600, 'Piracicaba, São Paulo': 3538709, 'Rafard, São Paulo': 3542107, 'Rio Claro, São Paulo': 3543907, 'Rio das Pedras, São Paulo': 3544004, 'Saltinho, São Paulo': 3545159, "Santa Bárbara d'Oeste, São Paulo": 3545803, 'Santa Cruz da Conceição, São Paulo': 3546207, 'Santa Cruz das Palmeiras, São Paulo': 3546306, 'Santa Gertrudes, São Paulo': 3546702, 'Santa Maria da Serra, São Paulo': 3547007, 'Santo Antônio de Posse, São Paulo': 3548005, 'Santo Antônio do Jardim, São Paulo': 3548104, 'São João da Boa Vista, São Paulo': 3549102, 'São José do Rio Pardo, São Paulo': 3549706, 'São Pedro, São Paulo': 3550407, 'São Sebastião da Grama, São Paulo': 3550803, 'Serra Negra, São Paulo': 3551603, 'Socorro, São Paulo': 3552106, 'Sumaré, São Paulo': 3552403, 'Tambaú, São Paulo': 3553302, 'Tapiratiba, São Paulo': 3553609, 'Tuiuti, São Paulo': 3554953, 'Valinhos, São Paulo': 3556206, 'Vargem, São Paulo': 3556354, 'Vargem Grande do Sul, São Paulo': 3556404, 'Várzea Paulista, São Paulo': 3556503, 'Vinhedo, São Paulo': 3556701, 'Estiva Gerbi, São Paulo': 3557303, 'Aparecida, São Paulo': 3502507, 'Arapeí, São Paulo': 3503158, 'Areias, São Paulo': 3503505, 'Bananal, São Paulo': 3504909, 'Caçapava, São Paulo': 3508504, 'Cachoeira Paulista, São Paulo': 3508603, 'Campos do Jordão, São Paulo': 3509700, 'Canas, São Paulo': 3509957, 'Caraguatatuba, São Paulo': 3510500, 'Cruzeiro, São Paulo': 3513405, 'Cunha, São Paulo': 3513603, 'Guaratinguetá, São Paulo': 3518404, 'Igaratá, São Paulo': 3520202, 'Ilhabela, São Paulo': 3520400, 'Jacareí, São Paulo': 3524402, 'Jambeiro, São Paulo': 3524907, 'Lagoinha, São Paulo': 3526308, 'Lavrinhas, São Paulo': 3526605, 'Lorena, São Paulo': 3527207, 'Monteiro Lobato, São Paulo': 3531704, 'Natividade da Serra, São Paulo': 3532306, 'Paraibuna, São Paulo': 3535606, 'Pindamonhangaba, São Paulo': 3538006, 'Piquete, São Paulo': 3538501, 'Potim, São Paulo': 3540754, 'Queluz, São Paulo': 3541901, 'Redenção da Serra, São Paulo': 3542305, 'Roseira, São Paulo': 3544301, 'Santa Branca, São Paulo': 3546009, 'Santo Antônio do Pinhal, São Paulo': 3548203, 'São Bento do Sapucaí, São Paulo': 3548609, 'São José do Barreiro, São Paulo': 3549607, 'São José dos Campos, São Paulo': 3549904, 'São Luís do Paraitinga, São Paulo': 3550001, 'São Sebastião, São Paulo': 3550704, 'Silveiras, São Paulo': 3552007, 'Taubaté, São Paulo': 3554102, 'Tremembé, São Paulo': 3554805, 'Ubatuba, São Paulo': 3555406, 'Adrianópolis, Paraná': 4100202, 'Agudos do Sul, Paraná': 4100301, 'Almirante Tamandaré, Paraná': 4100400, 'Antonina, Paraná': 4101200, 'Antônio Olinto, Paraná': 4101309, 'Araucária, Paraná': 4101804, 'Balsa Nova, Paraná': 4102307, 'Bituruna, Paraná': 4102901, 'Bocaiúva do Sul, Paraná': 4103107, 'Campina Grande do Sul, Paraná': 4104006, 'Campo do Tenente, Paraná': 4104105, 'Campo Largo, Paraná': 4104204, 'Campo Magro, Paraná': 4104253, 'Cerro Azul, Paraná': 4105201, 'Colombo, Paraná': 4105805, 'Contenda, Paraná': 4106209, 'Cruz Machado, Paraná': 4106803, 'Curitiba, Paraná': 4106902, 'Fazenda Rio Grande, Paraná': 4107652, 'General Carneiro, Paraná': 4108502, 'Guaraqueçaba, Paraná': 4109500, 'Guaratuba, Paraná': 4109609, 'Itaperuçu, Paraná': 4111258, 'Lapa, Paraná': 4113205, 'Mandirituba, Paraná': 4114302, 'Matinhos, Paraná': 4115705, 'Morretes, Paraná': 4116208, 'Paranaguá, Paraná': 4118204, 'Paula Freitas, Paraná': 4118600, 'Paulo Frontin, Paraná': 4118709, 'Piên, Paraná': 4119103, 'Pinhais, Paraná': 4119152, 'Piraquara, Paraná': 4119509, 'Pontal do Paraná, Paraná': 4119954, 'Porto Vitória, Paraná': 4120309, 'Quatro Barras, Paraná': 4120804, 'Quitandinha, Paraná': 4121208, 'Rio Branco do Sul, Paraná': 4122206, 'Rio Negro, Paraná': 4122305, 'São José dos Pinhais, Paraná': 4125506, 'São Mateus do Sul, Paraná': 4125605, 'Tijucas do Sul, Paraná': 4127601, 'Tunas do Paraná, Paraná': 4127882, 'União da Vitória, Paraná': 4128203, 'Doutor Ulysses, Paraná': 4128633, 'Ampére, Paraná': 4101002, 'Anahy, Paraná': 4101051, 'Assis Chateaubriand, Paraná': 4102000, 'Barracão, Paraná': 4102604, 'Bela Vista da Caroba, Paraná': 4102752, 'Boa Esperança do Iguaçu, Paraná': 4103024, 'Boa Vista da Aparecida, Paraná': 4103057, 'Bom Jesus do Sul, Paraná': 4103156, 'Bom Sucesso do Sul, Paraná': 4103222, 'Braganey, Paraná': 4103354, 'Cafelândia, Paraná': 4103453, 'Campo Bonito, Paraná': 4104055, 'Capanema, Paraná': 4104501, 'Capitão Leônidas Marques, Paraná': 4104600, 'Cascavel, Paraná': 4104808, 'Catanduvas, Paraná': 4105003, 'Céu Azul, Paraná': 4105300, 'Chopinzinho, Paraná': 4105409, 'Clevelândia, Paraná': 4105706, 'Corbélia, Paraná': 4106308, 'Coronel Domingos Soares, Paraná': 4106456, 'Coronel Vivida, Paraná': 4106506, 'Cruzeiro do Iguaçu, Paraná': 4106571, 'Diamante do Sul, Paraná': 4107124, "Diamante D'Oeste, Paraná": 4107157, 'Dois Vizinhos, Paraná': 4107207, 'Enéas Marques, Paraná': 4107405, 'Entre Rios do Oeste, Paraná': 4107538, 'Espigão Alto do Iguaçu, Paraná': 4107546, 'Flor da Serra do Sul, Paraná': 4107850, 'Formosa do Oeste, Paraná': 4108205, 'Foz do Iguaçu, Paraná': 4108304, 'Francisco Beltrão, Paraná': 4108403, 'Guaíra, Paraná': 4108809, 'Guaraniaçu, Paraná': 4109302, 'Honório Serpa, Paraná': 4109658, 'Ibema, Paraná': 4109757, 'Iguatu, Paraná': 4110052, 'Iracema do Oeste, Paraná': 4110656, 'Itaipulândia, Paraná': 4110953, "Itapejara d'Oeste, Paraná": 4111209, 'Jesuítas, Paraná': 4112751, 'Laranjeiras do Sul, Paraná': 4113304, 'Lindoeste, Paraná': 4113452, 'Manfrinópolis, Paraná': 4114351, 'Mangueirinha, Paraná': 4114401, 'Marechal Cândido Rondon, Paraná': 4114609, 'Mariópolis, Paraná': 4115309, 'Maripá, Paraná': 4115358, 'Marmeleiro, Paraná': 4115408, 'Marquinho, Paraná': 4115457, 'Matelândia, Paraná': 4115606, 'Medianeira, Paraná': 4115804, 'Mercedes, Paraná': 4115853, 'Missal, Paraná': 4116059, 'Nova Aurora, Paraná': 4116703, 'Nova Esperança do Sudoeste, Paraná': 4116950, 'Nova Laranjeiras, Paraná': 4117057, 'Nova Santa Rosa, Paraná': 4117222, 'Nova Prata do Iguaçu, Paraná': 4117255, 'Ouro Verde do Oeste, Paraná': 4117453, 'Palmas, Paraná': 4117602, 'Palotina, Paraná': 4117909, 'Pato Bragado, Paraná': 4118451, 'Pato Branco, Paraná': 4118501, "Pérola d'Oeste, Paraná": 4119004, 'Pinhal de São Bento, Paraná': 4119251, 'Planalto, Paraná': 4119806, 'Porto Barreiro, Paraná': 4120150, 'Pranchita, Paraná': 4120358, 'Quatro Pontes, Paraná': 4120853, 'Quedas do Iguaçu, Paraná': 4120903, 'Ramilândia, Paraná': 4121257, 'Realeza, Paraná': 4121406, 'Renascença, Paraná': 4121604, 'Rio Bonito do Iguaçu, Paraná': 4122156, 'Salgado Filho, Paraná': 4122800, 'Salto do Lontra, Paraná': 4123006, 'Santa Helena, Paraná': 4123501, 'Santa Izabel do Oeste, Paraná': 4123808, 'Santa Lúcia, Paraná': 4123824, 'Santa Tereza do Oeste, Paraná': 4124020, 'Santa Terezinha de Itaipu, Paraná': 4124053, 'Santo Antônio do Sudoeste, Paraná': 4124400, 'São João, Paraná': 4124806, "São Jorge d'Oeste, Paraná": 4125209, 'São José das Palmeiras, Paraná': 4125456, 'São Miguel do Iguaçu, Paraná': 4125704, 'São Pedro do Iguaçu, Paraná': 4125753, 'Saudade do Iguaçu, Paraná': 4126272, 'Serranópolis do Iguaçu, Paraná': 4126355, 'Sulina, Paraná': 4126652, 'Terra Roxa, Paraná': 4127403, 'Toledo, Paraná': 4127700, 'Três Barras do Paraná, Paraná': 4127858, 'Tupãssi, Paraná': 4127957, 'Vera Cruz do Oeste, Paraná': 4128559, 'Verê, Paraná': 4128609, 'Virmond, Paraná': 4128658, 'Vitorino, Paraná': 4128708, 'Altamira do Paraná, Paraná': 4100459, 'Altônia, Paraná': 4100509, 'Alto Paraná, Paraná': 4100608, 'Alto Piquiri, Paraná': 4100707, 'Amaporã, Paraná': 4100905, 'Ângulo, Paraná': 4101150, 'Araruna, Paraná': 4101705, 'Astorga, Paraná': 4102109, 'Atalaia, Paraná': 4102208, 'Barbosa Ferraz, Paraná': 4102505, 'Boa Esperança, Paraná': 4103008, 'Brasilândia do Sul, Paraná': 4103370, 'Cafezal do Sul, Paraná': 4103479, 'Campina da Lagoa, Paraná': 4103909, 'Campo Mourão, Paraná': 4104303, 'Cianorte, Paraná': 4105508, 'Cidade Gaúcha, Paraná': 4105607, 'Colorado, Paraná': 4105904, 'Corumbataí do Sul, Paraná': 4106555, 'Cruzeiro do Oeste, Paraná': 4106605, 'Cruzeiro do Sul, Paraná': 4106704, 'Diamante do Norte, Paraná': 4107108, 'Douradina, Paraná': 4107256, 'Doutor Camargo, Paraná': 4107306, 'Engenheiro Beltrão, Paraná': 4107504, 'Esperança Nova, Paraná': 4107520, 'Farol, Paraná': 4107553, 'Fênix, Paraná': 4107702, 'Floraí, Paraná': 4107801, 'Floresta, Paraná': 4107900, 'Flórida, Paraná': 4108106, 'Francisco Alves, Paraná': 4108320, 'Goioerê, Paraná': 4108601, 'Guairaçá, Paraná': 4108908, 'Guaporema, Paraná': 4109104, 'Icaraíma, Paraná': 4109906, 'Iguaraçu, Paraná': 4110003, 'Inajá, Paraná': 4110300, 'Indianópolis, Paraná': 4110409, 'Iporã, Paraná': 4110607, 'Iretama, Paraná': 4110805, 'Itaguajé, Paraná': 4110904, 'Itambé, Paraná': 4111100, 'Itaúna do Sul, Paraná': 4111308, 'Ivaté, Paraná': 4111555, 'Ivatuba, Paraná': 4111605, 'Janiópolis, Paraná': 4112207, 'Japurá, Paraná': 4112405, 'Jardim Olinda, Paraná': 4112603, 'Juranda, Paraná': 4112959, 'Jussara, Paraná': 4113007, 'Loanda, Paraná': 4113502, 'Lobato, Paraná': 4113601, 'Luiziana, Paraná': 4113734, 'Mamborê, Paraná': 4114005, 'Mandaguaçu, Paraná': 4114104, 'Mandaguari, Paraná': 4114203, 'Maria Helena, Paraná': 4114708, 'Marialva, Paraná': 4114807, 'Marilena, Paraná': 4115002, 'Mariluz, Paraná': 4115101, 'Maringá, Paraná': 4115200, 'Mirador, Paraná': 4115903, 'Moreira Sales, Paraná': 4116109, 'Munhoz de Melo, Paraná': 4116307, 'Nossa Senhora das Graças, Paraná': 4116406, 'Nova Aliança do Ivaí, Paraná': 4116505, 'Nova Cantu, Paraná': 4116802, 'Nova Esperança, Paraná': 4116901, 'Nova Londrina, Paraná': 4117107, 'Nova Olímpia, Paraná': 4117206, 'Ourizona, Paraná': 4117404, 'Paiçandu, Paraná': 4117503, 'Paraíso do Norte, Paraná': 4118006, 'Paranacity, Paraná': 4118105, 'Paranapoema, Paraná': 4118303, 'Paranavaí, Paraná': 4118402, 'Peabiru, Paraná': 4118808, 'Perobal, Paraná': 4118857, 'Pérola, Paraná': 4118907, 'Planaltina do Paraná, Paraná': 4119707, 'Porto Rico, Paraná': 4120200, 'Presidente Castelo Branco, Paraná': 4120408, 'Quarto Centenário, Paraná': 4120655, 'Querência do Norte, Paraná': 4121000, 'Quinta do Sol, Paraná': 4121109, "Rancho Alegre D'Oeste, Paraná": 4121356, 'Roncador, Paraná': 4122503, 'Rondon, Paraná': 4122602, 'Santa Cruz de Monte Castelo, Paraná': 4123303, 'Santa Fé, Paraná': 4123402, 'Santa Inês, Paraná': 4123600, 'Santa Isabel do Ivaí, Paraná': 4123709, 'Santa Mônica, Paraná': 4123956, 'Santo Antônio do Caiuá, Paraná': 4124202, 'Santo Inácio, Paraná': 4124509, 'São Carlos do Ivaí, Paraná': 4124608, 'São João do Caiuá, Paraná': 4124905, 'São Jorge do Ivaí, Paraná': 4125308, 'São Jorge do Patrocínio, Paraná': 4125357, 'São Manoel do Paraná, Paraná': 4125555, 'São Pedro do Paraná, Paraná': 4125902, 'São Tomé, Paraná': 4126108, 'Sarandi, Paraná': 4126256, 'Tamboara, Paraná': 4126702, 'Tapejara, Paraná': 4126801, 'Tapira, Paraná': 4126900, 'Terra Boa, Paraná': 4127205, 'Terra Rica, Paraná': 4127304, 'Tuneiras do Oeste, Paraná': 4127908, 'Ubiratã, Paraná': 4128005, 'Umuarama, Paraná': 4128104, 'Uniflor, Paraná': 4128302, 'Alto Paraíso, Paraná': 4128625, 'Xambrê, Paraná': 4128807, 'Abatiá, Paraná': 4100103, 'Alvorada do Sul, Paraná': 4100806, 'Andirá, Paraná': 4101101, 'Apucarana, Paraná': 4101408, 'Arapongas, Paraná': 4101507, 'Arapuã, Paraná': 4101655, 'Ariranha do Ivaí, Paraná': 4101853, 'Assaí, Paraná': 4101903, 'Bandeirantes, Paraná': 4102406, 'Barra do Jacaré, Paraná': 4102703, 'Bela Vista do Paraíso, Paraná': 4102802, 'Bom Sucesso, Paraná': 4103206, 'Borrazópolis, Paraná': 4103305, 'Cafeara, Paraná': 4103404, 'Califórnia, Paraná': 4103503, 'Cambará, Paraná': 4103602, 'Cambé, Paraná': 4103701, 'Cambira, Paraná': 4103800, 'Cândido de Abreu, Paraná': 4104402, 'Carlópolis, Paraná': 4104709, 'Centenário do Sul, Paraná': 4105102, 'Congonhinhas, Paraná': 4106001, 'Conselheiro Mairinck, Paraná': 4106100, 'Cornélio Procópio, Paraná': 4106407, 'Cruzmaltina, Paraná': 4106852, 'Faxinal, Paraná': 4107603, 'Figueira, Paraná': 4107751, 'Florestópolis, Paraná': 4108007, 'Godoy Moreira, Paraná': 4108551, 'Grandes Rios, Paraná': 4108700, 'Guapirama, Paraná': 4109005, 'Guaraci, Paraná': 4109203, 'Ibaiti, Paraná': 4109708, 'Ibiporã, Paraná': 4109807, 'Itambaracá, Paraná': 4111001, 'Ivaiporã, Paraná': 4111506, 'Jaboti, Paraná': 4111704, 'Jacarezinho, Paraná': 4111803, 'Jaguapitã, Paraná': 4111902, 'Jandaia do Sul, Paraná': 4112108, 'Japira, Paraná': 4112306, 'Jardim Alegre, Paraná': 4112504, 'Jataizinho, Paraná': 4112702, 'Joaquim Távora, Paraná': 4112801, 'Jundiaí do Sul, Paraná': 4112900, 'Kaloré, Paraná': 4113106, 'Leópolis, Paraná': 4113403, 'Lidianópolis, Paraná': 4113429, 'Londrina, Paraná': 4113700, 'Lunardelli, Paraná': 4113759, 'Lupionópolis, Paraná': 4113809, 'Manoel Ribas, Paraná': 4114500, 'Marilândia do Sul, Paraná': 4114906, 'Marumbi, Paraná': 4115507, 'Mauá da Serra, Paraná': 4115754, 'Miraselva, Paraná': 4116000, 'Nova América da Colina, Paraná': 4116604, 'Nova Fátima, Paraná': 4117008, 'Nova Santa Bárbara, Paraná': 4117214, 'Novo Itacolomi, Paraná': 4117297, 'Pinhalão, Paraná': 4119202, 'Pitangueiras, Paraná': 4119657, 'Porecatu, Paraná': 4120002, 'Prado Ferreira, Paraná': 4120333, 'Primeiro de Maio, Paraná': 4120507, 'Quatiguá, Paraná': 4120705, 'Rancho Alegre, Paraná': 4121307, 'Ribeirão Claro, Paraná': 4121802, 'Ribeirão do Pinhal, Paraná': 4121901, 'Rio Bom, Paraná': 4122107, 'Rio Branco do Ivaí, Paraná': 4122172, 'Rolândia, Paraná': 4122404, 'Rosário do Ivaí, Paraná': 4122651, 'Sabáudia, Paraná': 4122701, 'Salto do Itararé, Paraná': 4122909, 'Santa Amélia, Paraná': 4123105, 'Santa Cecília do Pavão, Paraná': 4123204, 'Santa Mariana, Paraná': 4123907, 'Santana do Itararé, Paraná': 4124004, 'Santo Antônio da Platina, Paraná': 4124103, 'Santo Antônio do Paraíso, Paraná': 4124301, 'São Jerônimo da Serra, Paraná': 4124707, 'São João do Ivaí, Paraná': 4125001, 'São José da Boa Vista, Paraná': 4125407, 'São Pedro do Ivaí, Paraná': 4125803, 'São Sebastião da Amoreira, Paraná': 4126009, 'Sapopema, Paraná': 4126207, 'Sertaneja, Paraná': 4126405, 'Sertanópolis, Paraná': 4126504, 'Siqueira Campos, Paraná': 4126603, 'Tamarana, Paraná': 4126678, 'Tomazina, Paraná': 4127809, 'Uraí, Paraná': 4128401, 'Wenceslau Braz, Paraná': 4128500, 'Araranguá, Santa Catarina': 4201406, 'Armazém, Santa Catarina': 4201505, 'Balneário Arroio do Silva, Santa Catarina': 4201950, 'Balneário Gaivota, Santa Catarina': 4202073, 'Braço do Norte, Santa Catarina': 4202800, 'Capivari de Baixo, Santa Catarina': 4203956, 'Cocal do Sul, Santa Catarina': 4204251, 'Criciúma, Santa Catarina': 4204608, 'Ermo, Santa Catarina': 4205191, 'Forquilhinha, Santa Catarina': 4205456, 'Grão Pará, Santa Catarina': 4206108, 'Gravatal, Santa Catarina': 4206207, 'Içara, Santa Catarina': 4207007, 'Imaruí, Santa Catarina': 4207205, 'Jacinto Machado, Santa Catarina': 4208708, 'Jaguaruna, Santa Catarina': 4208807, 'Laguna, Santa Catarina': 4209409, 'Lauro Muller, Santa Catarina': 4209607, 'Maracajá, Santa Catarina': 4210407, 'Meleiro, Santa Catarina': 4210803, 'Morro da Fumaça, Santa Catarina': 4211207, 'Morro Grande, Santa Catarina': 4211256, 'Nova Veneza, Santa Catarina': 4211603, 'Orleans, Santa Catarina': 4211702, 'Passo de Torres, Santa Catarina': 4212254, 'Pedras Grandes, Santa Catarina': 4212403, 'Pescaria Brava, Santa Catarina': 4212650, 'Praia Grande, Santa Catarina': 4213807, 'Rio Fortuna, Santa Catarina': 4214904, 'Sangão, Santa Catarina': 4215455, 'Santa Rosa de Lima, Santa Catarina': 4215604, 'Santa Rosa do Sul, Santa Catarina': 4215653, 'São João do Sul, Santa Catarina': 4216404, 'São Ludgero, Santa Catarina': 4217006, 'São Martinho, Santa Catarina': 4217105, 'Siderópolis, Santa Catarina': 4217600, 'Sombrio, Santa Catarina': 4217709, 'Timbé do Sul, Santa Catarina': 4218103, 'Treviso, Santa Catarina': 4218350, 'Treze de Maio, Santa Catarina': 4218400, 'Tubarão, Santa Catarina': 4218707, 'Turvo, Santa Catarina': 4218806, 'Urussanga, Santa Catarina': 4219002, 'Balneário Rincão, Santa Catarina': 4220000, 'Abdon Batista, Santa Catarina': 4200051, 'Abelardo Luz, Santa Catarina': 4200101, 'Água Doce, Santa Catarina': 4200408, 'Águas de Chapecó, Santa Catarina': 4200507, 'Águas Frias, Santa Catarina': 4200556, 'Alto Bela Vista, Santa Catarina': 4200754, 'Anchieta, Santa Catarina': 4200804, 'Arabutã, Santa Catarina': 4201273, 'Arvoredo, Santa Catarina': 4201653, 'Bandeirante, Santa Catarina': 4202081, 'Barra Bonita, Santa Catarina': 4202099, 'Belmonte, Santa Catarina': 4202156, 'Bom Jesus, Santa Catarina': 4202537, 'Bom Jesus do Oeste, Santa Catarina': 4202578, 'Caibi, Santa Catarina': 4203105, 'Campo Erê, Santa Catarina': 4203501, 'Campos Novos, Santa Catarina': 4203600, 'Capinzal, Santa Catarina': 4203907, 'Catanduvas, Santa Catarina': 4204004, 'Caxambu do Sul, Santa Catarina': 4204103, 'Celso Ramos, Santa Catarina': 4204152, 'Chapecó, Santa Catarina': 4204202, 'Concórdia, Santa Catarina': 4204301, 'Cordilheira Alta, Santa Catarina': 4204350, 'Coronel Freitas, Santa Catarina': 4204400, 'Coronel Martins, Santa Catarina': 4204459, 'Cunha Porã, Santa Catarina': 4204707, 'Cunhataí, Santa Catarina': 4204756, 'Descanso, Santa Catarina': 4204905, 'Dionísio Cerqueira, Santa Catarina': 4205001, 'Entre Rios, Santa Catarina': 4205175, 'Erval Velho, Santa Catarina': 4205209, 'Faxinal dos Guedes, Santa Catarina': 4205308, 'Flor do Sertão, Santa Catarina': 4205357, 'Formosa do Sul, Santa Catarina': 4205431, 'Galvão, Santa Catarina': 4205605, 'Guaraciaba, Santa Catarina': 4206405, 'Guarujá do Sul, Santa Catarina': 4206603, 'Guatambú, Santa Catarina': 4206652, "Herval d'Oeste, Santa Catarina": 4206702, 'Ibicaré, Santa Catarina': 4206801, 'Ipira, Santa Catarina': 4207601, 'Iporã do Oeste, Santa Catarina': 4207650, 'Ipuaçu, Santa Catarina': 4207684, 'Ipumirim, Santa Catarina': 4207700, 'Iraceminha, Santa Catarina': 4207759, 'Irani, Santa Catarina': 4207809, 'Irati, Santa Catarina': 4207858, 'Itá, Santa Catarina': 4208005, 'Itapiranga, Santa Catarina': 4208401, 'Jaborá, Santa Catarina': 4208609, 'Jardinópolis, Santa Catarina': 4208955, 'Joaçaba, Santa Catarina': 4209003, 'Jupiá, Santa Catarina': 4209177, 'Lacerdópolis, Santa Catarina': 4209201, 'Lajeado Grande, Santa Catarina': 4209458, 'Lindóia do Sul, Santa Catarina': 4209854, 'Luzerna, Santa Catarina': 4210035, 'Maravilha, Santa Catarina': 4210506, 'Marema, Santa Catarina': 4210555, 'Modelo, Santa Catarina': 4210902, 'Mondaí, Santa Catarina': 4211009, 'Nova Erechim, Santa Catarina': 4211405, 'Nova Itaberaba, Santa Catarina': 4211454, 'Novo Horizonte, Santa Catarina': 4211652, 'Ouro, Santa Catarina': 4211801, 'Ouro Verde, Santa Catarina': 4211850, 'Paial, Santa Catarina': 4211876, 'Palma Sola, Santa Catarina': 4212007, 'Palmitos, Santa Catarina': 4212106, 'Paraíso, Santa Catarina': 4212239, 'Passos Maia, Santa Catarina': 4212270, 'Peritiba, Santa Catarina': 4212601, 'Pinhalzinho, Santa Catarina': 4212908, 'Piratuba, Santa Catarina': 4213104, 'Planalto Alegre, Santa Catarina': 4213153, 'Ponte Serrada, Santa Catarina': 4213401, 'Presidente Castello Branco, Santa Catarina': 4213906, 'Princesa, Santa Catarina': 4214151, 'Quilombo, Santa Catarina': 4214201, 'Riqueza, Santa Catarina': 4215075, 'Romelândia, Santa Catarina': 4215208, 'Saltinho, Santa Catarina': 4215356, 'Santa Helena, Santa Catarina': 4215554, 'Santa Terezinha do Progresso, Santa Catarina': 4215687, 'Santiago do Sul, Santa Catarina': 4215695, 'São Bernardino, Santa Catarina': 4215752, 'São Carlos, Santa Catarina': 4216008, 'São Domingos, Santa Catarina': 4216107, 'São João do Oeste, Santa Catarina': 4216255, 'São José do Cedro, Santa Catarina': 4216701, 'São Lourenço do Oeste, Santa Catarina': 4216909, 'São Miguel da Boa Vista, Santa Catarina': 4217154, 'São Miguel do Oeste, Santa Catarina': 4217204, 'Saudades, Santa Catarina': 4217303, 'Seara, Santa Catarina': 4217501, 'Serra Alta, Santa Catarina': 4217550, 'Sul Brasil, Santa Catarina': 4217758, 'Tigrinhos, Santa Catarina': 4217956, 'Treze Tílias, Santa Catarina': 4218509, 'Tunápolis, Santa Catarina': 4218756, 'União do Oeste, Santa Catarina': 4218855, 'Vargeão, Santa Catarina': 4219101, 'Vargem, Santa Catarina': 4219150, 'Vargem Bonita, Santa Catarina': 4219176, 'Xanxerê, Santa Catarina': 4219507, 'Xavantina, Santa Catarina': 4219606, 'Xaxim, Santa Catarina': 4219705, 'Zortéa, Santa Catarina': 4219853, 'Agrolândia, Santa Catarina': 4200200, 'Agronômica, Santa Catarina': 4200309, 'Apiúna, Santa Catarina': 4201257, 'Ascurra, Santa Catarina': 4201703, 'Atalanta, Santa Catarina': 4201802, 'Aurora, Santa Catarina': 4201901, 'Balneário Camboriú, Santa Catarina': 4202008, 'Barra Velha, Santa Catarina': 4202107, 'Benedito Novo, Santa Catarina': 4202206, 'Blumenau, Santa Catarina': 4202404, 'Bombinhas, Santa Catarina': 4202453, 'Botuverá, Santa Catarina': 4202701, 'Braço do Trombudo, Santa Catarina': 4202859, 'Brusque, Santa Catarina': 4202909, 'Camboriú, Santa Catarina': 4203204, 'Canelinha, Santa Catarina': 4203709, 'Chapadão do Lageado, Santa Catarina': 4204194, 'Dona Emma, Santa Catarina': 4205100, 'Doutor Pedrinho, Santa Catarina': 4205159, 'Gaspar, Santa Catarina': 4205902, 'Guabiruba, Santa Catarina': 4206306, 'Ibirama, Santa Catarina': 4206900, 'Ilhota, Santa Catarina': 4207106, 'Imbuia, Santa Catarina': 4207403, 'Indaial, Santa Catarina': 4207502, 'Itajaí, Santa Catarina': 4208203, 'Itapema, Santa Catarina': 4208302, 'Ituporanga, Santa Catarina': 4208500, 'José Boiteux, Santa Catarina': 4209151, 'Laurentino, Santa Catarina': 4209508, 'Leoberto Leal, Santa Catarina': 4209805, 'Lontras, Santa Catarina': 4209904, 'Luiz Alves, Santa Catarina': 4210001, 'Major Gercino, Santa Catarina': 4210209, 'Mirim Doce, Santa Catarina': 4210852, 'Navegantes, Santa Catarina': 4211306, 'Nova Trento, Santa Catarina': 4211504, 'Penha, Santa Catarina': 4212502, 'Petrolândia, Santa Catarina': 4212700, 'Balneário Piçarras, Santa Catarina': 4212809, 'Pomerode, Santa Catarina': 4213203, 'Porto Belo, Santa Catarina': 4213500, 'Pouso Redondo, Santa Catarina': 4213708, 'Presidente Getúlio, Santa Catarina': 4214003, 'Presidente Nereu, Santa Catarina': 4214102, 'Rio do Campo, Santa Catarina': 4214508, 'Rio do Oeste, Santa Catarina': 4214607, 'Rio dos Cedros, Santa Catarina': 4214706, 'Rio do Sul, Santa Catarina': 4214805, 'Rodeio, Santa Catarina': 4215109, 'Salete, Santa Catarina': 4215307, 'Santa Terezinha, Santa Catarina': 4215679, 'São João Batista, Santa Catarina': 4216305, 'Taió, Santa Catarina': 4217808, 'Tijucas, Santa Catarina': 4218004, 'Timbó, Santa Catarina': 4218202, 'Trombudo Central, Santa Catarina': 4218608, 'Vidal Ramos, Santa Catarina': 4219200, 'Vitor Meireles, Santa Catarina': 4219358, 'Witmarsum, Santa Catarina': 4219408, 'Alvorada, Rio Grande do Sul': 4300604, 'Amaral Ferrador, Rio Grande do Sul': 4300638, 'Arambaré, Rio Grande do Sul': 4300851, 'Araricá, Rio Grande do Sul': 4300877, 'Arroio do Sal, Rio Grande do Sul': 4301057, 'Arroio dos Ratos, Rio Grande do Sul': 4301107, 'Balneário Pinhal, Rio Grande do Sul': 4301636, 'Barão do Triunfo, Rio Grande do Sul': 4301750, 'Barra do Ribeiro, Rio Grande do Sul': 4301909, 'Bom Princípio, Rio Grande do Sul': 4302352, 'Brochier, Rio Grande do Sul': 4302659, 'Butiá, Rio Grande do Sul': 4302709, 'Cachoeirinha, Rio Grande do Sul': 4303103, 'Camaquã, Rio Grande do Sul': 4303509, 'Campo Bom, Rio Grande do Sul': 4303905, 'Canoas, Rio Grande do Sul': 4304606, 'Capão da Canoa, Rio Grande do Sul': 4304630, 'Capivari do Sul, Rio Grande do Sul': 4304671, 'Capela de Santana, Rio Grande do Sul': 4304689, 'Caraá, Rio Grande do Sul': 4304713, 'Cerro Grande do Sul, Rio Grande do Sul': 4305173, 'Charqueadas, Rio Grande do Sul': 4305355, 'Chuvisca, Rio Grande do Sul': 4305447, 'Cidreira, Rio Grande do Sul': 4305454, 'Cristal, Rio Grande do Sul': 4306056, 'Dois Irmãos, Rio Grande do Sul': 4306403, 'Dom Feliciano, Rio Grande do Sul': 4306502, 'Dom Pedro de Alcântara, Rio Grande do Sul': 4306551, 'Eldorado do Sul, Rio Grande do Sul': 4306767, 'Estância Velha, Rio Grande do Sul': 4307609, 'Esteio, Rio Grande do Sul': 4307708, 'General Câmara, Rio Grande do Sul': 4308805, 'Glorinha, Rio Grande do Sul': 4309050, 'Gravataí, Rio Grande do Sul': 4309209, 'Guaíba, Rio Grande do Sul': 4309308, 'Harmonia, Rio Grande do Sul': 4309555, 'Igrejinha, Rio Grande do Sul': 4310108, 'Imbé, Rio Grande do Sul': 4310330, 'Itati, Rio Grande do Sul': 4310652, 'Ivoti, Rio Grande do Sul': 4310801, 'Lindolfo Collor, Rio Grande do Sul': 4311627, 'Linha Nova, Rio Grande do Sul': 4311643, 'Mampituba, Rio Grande do Sul': 4311734, 'Maquiné, Rio Grande do Sul': 4311775, 'Maratá, Rio Grande do Sul': 4311791, 'Mariana Pimentel, Rio Grande do Sul': 4311981, 'Minas do Leão, Rio Grande do Sul': 4312252, 'Montenegro, Rio Grande do Sul': 4312401, 'Morrinhos do Sul, Rio Grande do Sul': 4312443, 'Morro Reuter, Rio Grande do Sul': 4312476, 'Mostardas, Rio Grande do Sul': 4312500, 'Nova Hartz, Rio Grande do Sul': 4313060, 'Nova Santa Rita, Rio Grande do Sul': 4313375, 'Novo Hamburgo, Rio Grande do Sul': 4313409, 'Osório, Rio Grande do Sul': 4313508, 'Palmares do Sul, Rio Grande do Sul': 4313656, 'Pareci Novo, Rio Grande do Sul': 4314035, 'Parobé, Rio Grande do Sul': 4314050, 'Portão, Rio Grande do Sul': 4314803, 'Porto Alegre, Rio Grande do Sul': 4314902, 'Presidente Lucena, Rio Grande do Sul': 4315149, 'Riozinho, Rio Grande do Sul': 4315750, 'Rolante, Rio Grande do Sul': 4316006, 'Salvador do Sul, Rio Grande do Sul': 4316501, 'Santa Maria do Herval, Rio Grande do Sul': 4316956, 'Santo Antônio da Patrulha, Rio Grande do Sul': 4317608, 'São Jerônimo, Rio Grande do Sul': 4318408, 'São José do Hortêncio, Rio Grande do Sul': 4318481, 'São José do Sul, Rio Grande do Sul': 4318614, 'São Leopoldo, Rio Grande do Sul': 4318705, 'São Pedro da Serra, Rio Grande do Sul': 4319356, 'São Sebastião do Caí, Rio Grande do Sul': 4319505, 'São Vendelino, Rio Grande do Sul': 4319752, 'Sapiranga, Rio Grande do Sul': 4319901, 'Sapucaia do Sul, Rio Grande do Sul': 4320008, 'Sentinela do Sul, Rio Grande do Sul': 4320354, 'Sertão Santana, Rio Grande do Sul': 4320552, 'Tapes, Rio Grande do Sul': 4321105, 'Taquara, Rio Grande do Sul': 4321204, 'Tavares, Rio Grande do Sul': 4321352, 'Terra de Areia, Rio Grande do Sul': 4321436, 'Torres, Rio Grande do Sul': 4321501, 'Tramandaí, Rio Grande do Sul': 4321600, 'Três Cachoeiras, Rio Grande do Sul': 4321667, 'Três Coroas, Rio Grande do Sul': 4321709, 'Três Forquilhas, Rio Grande do Sul': 4321832, 'Triunfo, Rio Grande do Sul': 4322004, 'Tupandi, Rio Grande do Sul': 4322251, 'Viamão, Rio Grande do Sul': 4323002, 'Xangri-lá, Rio Grande do Sul': 4323804, 'Agudo, Rio Grande do Sul': 4300109, 'Caçapava do Sul, Rio Grande do Sul': 4302808, 'Cacequi, Rio Grande do Sul': 4302907, 'Cachoeira do Sul, Rio Grande do Sul': 4303004, 'Capão do Cipó, Rio Grande do Sul': 4304655, 'Cerro Branco, Rio Grande do Sul': 4305132, 'Dilermando de Aguiar, Rio Grande do Sul': 4306379, 'Dona Francisca, Rio Grande do Sul': 4306700, 'Faxinal do Soturno, Rio Grande do Sul': 4308003, 'Formigueiro, Rio Grande do Sul': 4308409, 'Itaara, Rio Grande do Sul': 4310538, 'Itacurubi, Rio Grande do Sul': 4310553, 'Ivorá, Rio Grande do Sul': 4310751, 'Jaguari, Rio Grande do Sul': 4311106, 'Jari, Rio Grande do Sul': 4311130, 'Júlio de Castilhos, Rio Grande do Sul': 4311205, 'Lavras do Sul, Rio Grande do Sul': 4311502, 'Mata, Rio Grande do Sul': 4312104, 'Nova Esperança do Sul, Rio Grande do Sul': 4313037, 'Nova Palma, Rio Grande do Sul': 4313102, 'Novo Cabrais, Rio Grande do Sul': 4313391, 'Paraíso do Sul, Rio Grande do Sul': 4314027, 'Pinhal Grande, Rio Grande do Sul': 4314472, 'Quevedos, Rio Grande do Sul': 4315321, 'Restinga Seca, Rio Grande do Sul': 4315503, 'Santa Maria, Rio Grande do Sul': 4316907, 'Santa Margarida do Sul, Rio Grande do Sul': 4316972, 'Santana da Boa Vista, Rio Grande do Sul': 4317004, 'Santiago, Rio Grande do Sul': 4317400, 'São Francisco de Assis, Rio Grande do Sul': 4318101, 'São Gabriel, Rio Grande do Sul': 4318309, 'São João do Polêsine, Rio Grande do Sul': 4318432, 'São Martinho da Serra, Rio Grande do Sul': 4319125, 'São Pedro do Sul, Rio Grande do Sul': 4319406, 'São Sepé, Rio Grande do Sul': 4319604, 'São Vicente do Sul, Rio Grande do Sul': 4319802, 'Silveira Martins, Rio Grande do Sul': 4320651, 'Toropi, Rio Grande do Sul': 4321493, 'Unistalda, Rio Grande do Sul': 4322376, 'Vila Nova do Sul, Rio Grande do Sul': 4323457, 'Ajuricaba, Rio Grande do Sul': 4300208, 'Alecrim, Rio Grande do Sul': 4300307, 'Alegria, Rio Grande do Sul': 4300455, 'Augusto Pestana, Rio Grande do Sul': 4301503, 'Barra do Guarita, Rio Grande do Sul': 4301859, 'Boa Vista do Buricá, Rio Grande do Sul': 4302204, 'Bom Progresso, Rio Grande do Sul': 4302378, 'Bossoroca, Rio Grande do Sul': 4302501, 'Bozano, Rio Grande do Sul': 4302584, 'Braga, Rio Grande do Sul': 4302600, 'Caibaté, Rio Grande do Sul': 4303301, 'Campina das Missões, Rio Grande do Sul': 4303707, 'Campo Novo, Rio Grande do Sul': 4304002, 'Cândido Godói, Rio Grande do Sul': 4304309, 'Catuípe, Rio Grande do Sul': 4305009, 'Cerro Largo, Rio Grande do Sul': 4305207, 'Chiapetta, Rio Grande do Sul': 4305405, 'Condor, Rio Grande do Sul': 4305702, 'Coronel Barros, Rio Grande do Sul': 4305871, 'Coronel Bicaco, Rio Grande do Sul': 4305900, 'Crissiumal, Rio Grande do Sul': 4306007, 'Derrubadas, Rio Grande do Sul': 4306320, 'Dezesseis de Novembro, Rio Grande do Sul': 4306353, 'Doutor Maurício Cardoso, Rio Grande do Sul': 4306734, 'Entre-Ijuís, Rio Grande do Sul': 4306932, 'Esperança do Sul, Rio Grande do Sul': 4307450, 'Eugênio de Castro, Rio Grande do Sul': 4307831, 'Garruchos, Rio Grande do Sul': 4308656, 'Giruá, Rio Grande do Sul': 4309001, 'Guarani das Missões, Rio Grande do Sul': 4309506, 'Horizontina, Rio Grande do Sul': 4309605, 'Humaitá, Rio Grande do Sul': 4309704, 'Ijuí, Rio Grande do Sul': 4310207, 'Independência, Rio Grande do Sul': 4310405, 'Inhacorá, Rio Grande do Sul': 4310413, 'Jóia, Rio Grande do Sul': 4311155, 'Mato Queimado, Rio Grande do Sul': 4312179, 'Miraguaí, Rio Grande do Sul': 4312302, 'Nova Candelária, Rio Grande do Sul': 4313011, 'Nova Ramada, Rio Grande do Sul': 4313334, 'Novo Machado, Rio Grande do Sul': 4313425, 'Panambi, Rio Grande do Sul': 4313904, 'Pejuçara, Rio Grande do Sul': 4314308, 'Pirapó, Rio Grande do Sul': 4314555, 'Porto Lucena, Rio Grande do Sul': 4315008, 'Porto Mauá, Rio Grande do Sul': 4315057, 'Porto Vera Cruz, Rio Grande do Sul': 4315073, 'Porto Xavier, Rio Grande do Sul': 4315107, 'Redentora, Rio Grande do Sul': 4315404, 'Rolador, Rio Grande do Sul': 4315958, 'Roque Gonzales, Rio Grande do Sul': 4316303, 'Salvador das Missões, Rio Grande do Sul': 4316477, 'Santa Rosa, Rio Grande do Sul': 4317202, 'Santo Ângelo, Rio Grande do Sul': 4317509, 'Santo Antônio das Missões, Rio Grande do Sul': 4317707, 'Santo Augusto, Rio Grande do Sul': 4317806, 'Santo Cristo, Rio Grande do Sul': 4317905, 'São José do Inhacorá, Rio Grande do Sul': 4318499, 'São Luiz Gonzaga, Rio Grande do Sul': 4318903, 'São Martinho, Rio Grande do Sul': 4319109, 'São Miguel das Missões, Rio Grande do Sul': 4319158, 'São Nicolau, Rio Grande do Sul': 4319208, 'São Paulo das Missões, Rio Grande do Sul': 4319307, 'São Pedro do Butiá, Rio Grande do Sul': 4319372, 'São Valério do Sul, Rio Grande do Sul': 4319737, 'Sede Nova, Rio Grande do Sul': 4320230, 'Senador Salgado Filho, Rio Grande do Sul': 4320321, 'Sete de Setembro, Rio Grande do Sul': 4320578, 'Tenente Portela, Rio Grande do Sul': 4321402, 'Tiradentes do Sul, Rio Grande do Sul': 4321477, 'Três de Maio, Rio Grande do Sul': 4321808, 'Três Passos, Rio Grande do Sul': 4321907, 'Tucunduva, Rio Grande do Sul': 4322103, 'Tuparendi, Rio Grande do Sul': 4322301, 'Ubiretama, Rio Grande do Sul': 4322343, 'Vista Gaúcha, Rio Grande do Sul': 4323705, 'Vitória das Missões, Rio Grande do Sul': 4323754, 'Água Santa, Rio Grande do Sul': 4300059, 'Almirante Tamandaré do Sul, Rio Grande do Sul': 4300471, 'Alpestre, Rio Grande do Sul': 4300505, 'Alto Alegre, Rio Grande do Sul': 4300554, 'Ametista do Sul, Rio Grande do Sul': 4300646, 'Aratiba, Rio Grande do Sul': 4300901, 'Arvorezinha, Rio Grande do Sul': 4301404, 'Áurea, Rio Grande do Sul': 4301552, 'Barão de Cotegipe, Rio Grande do Sul': 4301701, 'Barracão, Rio Grande do Sul': 4301800, 'Barra do Rio Azul, Rio Grande do Sul': 4301925, 'Barra Funda, Rio Grande do Sul': 4301958, 'Barros Cassal, Rio Grande do Sul': 4302006, 'Benjamin Constant do Sul, Rio Grande do Sul': 4302055, 'Boa Vista das Missões, Rio Grande do Sul': 4302154, 'Boa Vista do Cadeado, Rio Grande do Sul': 4302220, 'Boa Vista do Incra, Rio Grande do Sul': 4302238, 'Cacique Doble, Rio Grande do Sul': 4303202, 'Caiçara, Rio Grande do Sul': 4303400, 'Camargo, Rio Grande do Sul': 4303558, 'Campinas do Sul, Rio Grande do Sul': 4303806, 'Campos Borges, Rio Grande do Sul': 4304101, 'Capão Bonito do Sul, Rio Grande do Sul': 4304622, 'Carazinho, Rio Grande do Sul': 4304705, 'Carlos Gomes, Rio Grande do Sul': 4304853, 'Casca, Rio Grande do Sul': 4304903, 'Caseiros, Rio Grande do Sul': 4304952, 'Centenário, Rio Grande do Sul': 4305116, 'Cerro Grande, Rio Grande do Sul': 4305157, 'Chapada, Rio Grande do Sul': 4305306, 'Charrua, Rio Grande do Sul': 4305371, 'Ciríaco, Rio Grande do Sul': 4305504, 'Colorado, Rio Grande do Sul': 4305603, 'Constantina, Rio Grande do Sul': 4305801, 'Coqueiros do Sul, Rio Grande do Sul': 4305850, 'Coxilha, Rio Grande do Sul': 4305975, 'Cristal do Sul, Rio Grande do Sul': 4306072, 'Cruz Alta, Rio Grande do Sul': 4306106, 'Cruzaltense, Rio Grande do Sul': 4306130, 'David Canabarro, Rio Grande do Sul': 4306304, 'Dois Irmãos das Missões, Rio Grande do Sul': 4306429, 'Engenho Velho, Rio Grande do Sul': 4306924, 'Entre Rios do Sul, Rio Grande do Sul': 4306957, 'Erebango, Rio Grande do Sul': 4306973, 'Erechim, Rio Grande do Sul': 4307005, 'Ernestina, Rio Grande do Sul': 4307054, 'Erval Grande, Rio Grande do Sul': 4307203, 'Erval Seco, Rio Grande do Sul': 4307302, 'Espumoso, Rio Grande do Sul': 4307500, 'Estação, Rio Grande do Sul': 4307559, 'Faxinalzinho, Rio Grande do Sul': 4308052, 'Floriano Peixoto, Rio Grande do Sul': 4308250, 'Fontoura Xavier, Rio Grande do Sul': 4308300, 'Fortaleza dos Valos, Rio Grande do Sul': 4308458, 'Frederico Westphalen, Rio Grande do Sul': 4308508, 'Gaurama, Rio Grande do Sul': 4308706, 'Gentil, Rio Grande do Sul': 4308854, 'Getúlio Vargas, Rio Grande do Sul': 4308904, 'Gramado dos Loureiros, Rio Grande do Sul': 4309126, 'Ibiaçá, Rio Grande do Sul': 4309803, 'Ibiraiaras, Rio Grande do Sul': 4309902, 'Ibirapuitã, Rio Grande do Sul': 4309951, 'Ibirubá, Rio Grande do Sul': 4310009, 'Ipiranga do Sul, Rio Grande do Sul': 4310462, 'Iraí, Rio Grande do Sul': 4310504, 'Itapuca, Rio Grande do Sul': 4310579, 'Itatiba do Sul, Rio Grande do Sul': 4310702, 'Jaboticaba, Rio Grande do Sul': 4310850, 'Jacuizinho, Rio Grande do Sul': 4310876, 'Jacutinga, Rio Grande do Sul': 4310900, 'Lagoa dos Três Cantos, Rio Grande do Sul': 4311270, 'Lagoa Vermelha, Rio Grande do Sul': 4311304, 'Lajeado do Bugre, Rio Grande do Sul': 4311429, 'Liberato Salzano, Rio Grande do Sul': 4311601, 'Machadinho, Rio Grande do Sul': 4311700, 'Marau, Rio Grande do Sul': 4311809, 'Marcelino Ramos, Rio Grande do Sul': 4311908, 'Mariano Moro, Rio Grande do Sul': 4312005, 'Mato Castelhano, Rio Grande do Sul': 4312138, 'Maximiliano de Almeida, Rio Grande do Sul': 4312203, 'Mormaço, Rio Grande do Sul': 4312427, 'Muliterno, Rio Grande do Sul': 4312625, 'Não-Me-Toque, Rio Grande do Sul': 4312658, 'Nicolau Vergueiro, Rio Grande do Sul': 4312674, 'Nonoai, Rio Grande do Sul': 4312708, 'Nova Alvorada, Rio Grande do Sul': 4312757, 'Nova Boa Vista, Rio Grande do Sul': 4312955, 'Novo Tiradentes, Rio Grande do Sul': 4313441, 'Novo Xingu, Rio Grande do Sul': 4313466, 'Novo Barreiro, Rio Grande do Sul': 4313490, 'Paim Filho, Rio Grande do Sul': 4313607, 'Palmeira das Missões, Rio Grande do Sul': 4313706, 'Palmitinho, Rio Grande do Sul': 4313805, 'Passo Fundo, Rio Grande do Sul': 4314100, 'Paulo Bento, Rio Grande do Sul': 4314134, 'Pinhal, Rio Grande do Sul': 4314456, 'Pinheirinho do Vale, Rio Grande do Sul': 4314498, 'Planalto, Rio Grande do Sul': 4314704, 'Pontão, Rio Grande do Sul': 4314779, 'Ponte Preta, Rio Grande do Sul': 4314787, 'Quatro Irmãos, Rio Grande do Sul': 4315313, 'Quinze de Novembro, Rio Grande do Sul': 4315354, 'Rio dos Índios, Rio Grande do Sul': 4315552, 'Rodeio Bonito, Rio Grande do Sul': 4315909, 'Ronda Alta, Rio Grande do Sul': 4316105, 'Rondinha, Rio Grande do Sul': 4316204, 'Sagrada Família, Rio Grande do Sul': 4316428, 'Saldanha Marinho, Rio Grande do Sul': 4316436, 'Salto do Jacuí, Rio Grande do Sul': 4316451, 'Sananduva, Rio Grande do Sul': 4316600, 'Santa Bárbara do Sul, Rio Grande do Sul': 4316709, 'Santa Cecília do Sul, Rio Grande do Sul': 4316733, 'Santo Antônio do Palma, Rio Grande do Sul': 4317558, 'Santo Antônio do Planalto, Rio Grande do Sul': 4317756, 'Santo Expedito do Sul, Rio Grande do Sul': 4317954, 'São Domingos do Sul, Rio Grande do Sul': 4318051, 'São João da Urtiga, Rio Grande do Sul': 4318424, 'São José das Missões, Rio Grande do Sul': 4318457, 'São José do Herval, Rio Grande do Sul': 4318465, 'São José do Ouro, Rio Grande do Sul': 4318606, 'São Pedro das Missões, Rio Grande do Sul': 4319364, 'São Valentim, Rio Grande do Sul': 4319703, 'Sarandi, Rio Grande do Sul': 4320107, 'Seberi, Rio Grande do Sul': 4320206, 'Selbach, Rio Grande do Sul': 4320305, 'Sertão, Rio Grande do Sul': 4320503, 'Severiano de Almeida, Rio Grande do Sul': 4320602, 'Soledade, Rio Grande do Sul': 4320800, 'Tapejara, Rio Grande do Sul': 4320909, 'Tapera, Rio Grande do Sul': 4321006, 'Taquaruçu do Sul, Rio Grande do Sul': 4321329, 'Tio Hugo, Rio Grande do Sul': 4321469, 'Três Arroios, Rio Grande do Sul': 4321634, 'Três Palmeiras, Rio Grande do Sul': 4321857, 'Trindade do Sul, Rio Grande do Sul': 4321956, 'Tupanci do Sul, Rio Grande do Sul': 4322186, 'Tupanciretã, Rio Grande do Sul': 4322202, 'Vanini, Rio Grande do Sul': 4322558, 'Viadutos, Rio Grande do Sul': 4322905, 'Vicente Dutra, Rio Grande do Sul': 4323101, 'Victor Graeff, Rio Grande do Sul': 4323200, 'Vila Lângaro, Rio Grande do Sul': 4323358, 'Vila Maria, Rio Grande do Sul': 4323408, 'Vista Alegre, Rio Grande do Sul': 4323507, 'Alto Feliz, Rio Grande do Sul': 4300570, 'André da Rocha, Rio Grande do Sul': 4300661, 'Antônio Prado, Rio Grande do Sul': 4300802, 'Barão, Rio Grande do Sul': 4301651, 'Bento Gonçalves, Rio Grande do Sul': 4302105, 'Boa Vista do Sul, Rio Grande do Sul': 4302253, 'Bom Jesus, Rio Grande do Sul': 4302303, 'Cambará do Sul, Rio Grande do Sul': 4303608, 'Campestre da Serra, Rio Grande do Sul': 4303673, 'Canela, Rio Grande do Sul': 4304408, 'Carlos Barbosa, Rio Grande do Sul': 4304804, 'Caxias do Sul, Rio Grande do Sul': 4305108, 'Coronel Pilar, Rio Grande do Sul': 4305934, 'Cotiporã, Rio Grande do Sul': 4305959, 'Dois Lajeados, Rio Grande do Sul': 4306452, 'Esmeralda, Rio Grande do Sul': 4307401, 'Fagundes Varela, Rio Grande do Sul': 4307864, 'Farroupilha, Rio Grande do Sul': 4307906, 'Feliz, Rio Grande do Sul': 4308102, 'Flores da Cunha, Rio Grande do Sul': 4308201, 'Garibaldi, Rio Grande do Sul': 4308607, 'Gramado, Rio Grande do Sul': 4309100, 'Guabiju, Rio Grande do Sul': 4309258, 'Guaporé, Rio Grande do Sul': 4309407, 'Ipê, Rio Grande do Sul': 4310439, 'Jaquirana, Rio Grande do Sul': 4311122, 'Montauri, Rio Grande do Sul': 4312351, 'Monte Alegre dos Campos, Rio Grande do Sul': 4312377, 'Monte Belo do Sul, Rio Grande do Sul': 4312385, 'Muitos Capões, Rio Grande do Sul': 4312617, 'Nova Araçá, Rio Grande do Sul': 4312807, 'Nova Bassano, Rio Grande do Sul': 4312906, 'Nova Pádua, Rio Grande do Sul': 4313086, 'Nova Petrópolis, Rio Grande do Sul': 4313201, 'Nova Prata, Rio Grande do Sul': 4313300, 'Nova Roma do Sul, Rio Grande do Sul': 4313359, 'Paraí, Rio Grande do Sul': 4314001, 'Picada Café, Rio Grande do Sul': 4314423, 'Pinhal da Serra, Rio Grande do Sul': 4314464, 'Pinto Bandeira, Rio Grande do Sul': 4314548, 'Protásio Alves, Rio Grande do Sul': 4315172, 'Santa Tereza, Rio Grande do Sul': 4317251, 'São Francisco de Paula, Rio Grande do Sul': 4318200, 'São Jorge, Rio Grande do Sul': 4318440, 'São José dos Ausentes, Rio Grande do Sul': 4318622, 'São Marcos, Rio Grande do Sul': 4319000, 'São Valentim do Sul, Rio Grande do Sul': 4319711, 'Serafina Corrêa, Rio Grande do Sul': 4320404, 'União da Serra, Rio Grande do Sul': 4322350, 'Vacaria, Rio Grande do Sul': 4322509, 'Vale Real, Rio Grande do Sul': 4322541, 'Veranópolis, Rio Grande do Sul': 4322806, 'Vila Flores, Rio Grande do Sul': 4323309, 'Vista Alegre do Prata, Rio Grande do Sul': 4323606, 'Anta Gorda, Rio Grande do Sul': 4300703, 'Arroio do Meio, Rio Grande do Sul': 4301008, 'Arroio do Tigre, Rio Grande do Sul': 4301206, 'Bom Retiro do Sul, Rio Grande do Sul': 4302402, 'Boqueirão do Leão, Rio Grande do Sul': 4302451, 'Candelária, Rio Grande do Sul': 4304200, 'Canudos do Vale, Rio Grande do Sul': 4304614, 'Capitão, Rio Grande do Sul': 4304697, 'Colinas, Rio Grande do Sul': 4305587, 'Coqueiro Baixo, Rio Grande do Sul': 4305835, 'Cruzeiro do Sul, Rio Grande do Sul': 4306205, 'Doutor Ricardo, Rio Grande do Sul': 4306759, 'Encantado, Rio Grande do Sul': 4306809, 'Encruzilhada do Sul, Rio Grande do Sul': 4306908, 'Estrela, Rio Grande do Sul': 4307807, 'Estrela Velha, Rio Grande do Sul': 4307815, 'Fazenda Vilanova, Rio Grande do Sul': 4308078, 'Forquetinha, Rio Grande do Sul': 4308433, 'Gramado Xavier, Rio Grande do Sul': 4309159, 'Herveiras, Rio Grande do Sul': 4309571, 'Ibarama, Rio Grande do Sul': 4309753, 'Ilópolis, Rio Grande do Sul': 4310306, 'Imigrante, Rio Grande do Sul': 4310363, 'Lagoa Bonita do Sul, Rio Grande do Sul': 4311239, 'Lagoão, Rio Grande do Sul': 4311254, 'Lajeado, Rio Grande do Sul': 4311403, 'Marques de Souza, Rio Grande do Sul': 4312054, 'Mato Leitão, Rio Grande do Sul': 4312153, 'Muçum, Rio Grande do Sul': 4312609, 'Nova Bréscia, Rio Grande do Sul': 4313003, 'Pantano Grande, Rio Grande do Sul': 4313953, 'Passa Sete, Rio Grande do Sul': 4314068, 'Passo do Sobrado, Rio Grande do Sul': 4314076, 'Paverama, Rio Grande do Sul': 4314159, 'Poço das Antas, Rio Grande do Sul': 4314753, 'Pouso Novo, Rio Grande do Sul': 4315131, 'Progresso, Rio Grande do Sul': 4315156, 'Putinga, Rio Grande do Sul': 4315206, 'Relvado, Rio Grande do Sul': 4315453, 'Rio Pardo, Rio Grande do Sul': 4315701, 'Roca Sales, Rio Grande do Sul': 4315800, 'Santa Clara do Sul, Rio Grande do Sul': 4316758, 'Santa Cruz do Sul, Rio Grande do Sul': 4316808, 'Segredo, Rio Grande do Sul': 4320263, 'Sério, Rio Grande do Sul': 4320453, 'Sinimbu, Rio Grande do Sul': 4320677, 'Sobradinho, Rio Grande do Sul': 4320701, 'Tabaí, Rio Grande do Sul': 4320859, 'Taquari, Rio Grande do Sul': 4321303, 'Teutônia, Rio Grande do Sul': 4321451, 'Travesseiro, Rio Grande do Sul': 4321626, 'Tunas, Rio Grande do Sul': 4322152, 'Vale Verde, Rio Grande do Sul': 4322525, 'Vale do Sol, Rio Grande do Sul': 4322533, 'Venâncio Aires, Rio Grande do Sul': 4322608, 'Vera Cruz, Rio Grande do Sul': 4322707, 'Vespasiano Correa, Rio Grande do Sul': 4322855, 'Westfalia, Rio Grande do Sul': 4323770, 'Água Clara, Mato Grosso do Sul': 5000203, 'Alcinópolis, Mato Grosso do Sul': 5000252, 'Aparecida do Taboado, Mato Grosso do Sul': 5001003, 'Bandeirantes, Mato Grosso do Sul': 5001508, 'Bataguassu, Mato Grosso do Sul': 5001904, 'Brasilândia, Mato Grosso do Sul': 5002308, 'Camapuã, Mato Grosso do Sul': 5002605, 'Campo Grande, Mato Grosso do Sul': 5002704, 'Cassilândia, Mato Grosso do Sul': 5002902, 'Chapadão do Sul, Mato Grosso do Sul': 5002951, 'Corguinho, Mato Grosso do Sul': 5003108, 'Costa Rica, Mato Grosso do Sul': 5003256, 'Coxim, Mato Grosso do Sul': 5003306, 'Dois Irmãos do Buriti, Mato Grosso do Sul': 5003488, 'Figueirão, Mato Grosso do Sul': 5003900, 'Inocência, Mato Grosso do Sul': 5004403, 'Jaraguari, Mato Grosso do Sul': 5004908, 'Nova Alvorada do Sul, Mato Grosso do Sul': 5006002, 'Paraíso das Águas, Mato Grosso do Sul': 5006275, 'Paranaíba, Mato Grosso do Sul': 5006309, 'Pedro Gomes, Mato Grosso do Sul': 5006408, 'Ribas do Rio Pardo, Mato Grosso do Sul': 5007109, 'Rio Negro, Mato Grosso do Sul': 5007307, 'Rio Verde de Mato Grosso, Mato Grosso do Sul': 5007406, 'Rochedo, Mato Grosso do Sul': 5007505, 'Santa Rita do Pardo, Mato Grosso do Sul': 5007554, 'São Gabriel do Oeste, Mato Grosso do Sul': 5007695, 'Selvíria, Mato Grosso do Sul': 5007802, 'Sidrolândia, Mato Grosso do Sul': 5007901, 'Sonora, Mato Grosso do Sul': 5007935, 'Terenos, Mato Grosso do Sul': 5008008, 'Três Lagoas, Mato Grosso do Sul': 5008305, 'Amambai, Mato Grosso do Sul': 5000609, 'Anaurilândia, Mato Grosso do Sul': 5000807, 'Angélica, Mato Grosso do Sul': 5000856, 'Antônio João, Mato Grosso do Sul': 5000906, 'Aral Moreira, Mato Grosso do Sul': 5001243, 'Batayporã, Mato Grosso do Sul': 5002001, 'Caarapó, Mato Grosso do Sul': 5002407, 'Coronel Sapucaia, Mato Grosso do Sul': 5003157, 'Deodápolis, Mato Grosso do Sul': 5003454, 'Douradina, Mato Grosso do Sul': 5003504, 'Dourados, Mato Grosso do Sul': 5003702, 'Eldorado, Mato Grosso do Sul': 5003751, 'Fátima do Sul, Mato Grosso do Sul': 5003801, 'Glória de Dourados, Mato Grosso do Sul': 5004007, 'Iguatemi, Mato Grosso do Sul': 5004304, 'Itaporã, Mato Grosso do Sul': 5004502, 'Itaquiraí, Mato Grosso do Sul': 5004601, 'Ivinhema, Mato Grosso do Sul': 5004700, 'Japorã, Mato Grosso do Sul': 5004809, 'Jateí, Mato Grosso do Sul': 5005103, 'Juti, Mato Grosso do Sul': 5005152, 'Laguna Carapã, Mato Grosso do Sul': 5005251, 'Maracaju, Mato Grosso do Sul': 5005400, 'Mundo Novo, Mato Grosso do Sul': 5005681, 'Naviraí, Mato Grosso do Sul': 5005707, 'Nova Andradina, Mato Grosso do Sul': 5006200, 'Novo Horizonte do Sul, Mato Grosso do Sul': 5006259, 'Paranhos, Mato Grosso do Sul': 5006358, 'Ponta Porã, Mato Grosso do Sul': 5006606, 'Rio Brilhante, Mato Grosso do Sul': 5007208, 'Sete Quedas, Mato Grosso do Sul': 5007703, 'Tacuru, Mato Grosso do Sul': 5007950, 'Taquarussu, Mato Grosso do Sul': 5007976, 'Vicentina, Mato Grosso do Sul': 5008404, 'Acorizal, Mato Grosso': 5100102, 'Alto Paraguai, Mato Grosso': 5100508, 'Arenápolis, Mato Grosso': 5101308, 'Barão de Melgaço, Mato Grosso': 5101605, 'Barra do Bugres, Mato Grosso': 5101704, 'Brasnorte, Mato Grosso': 5101902, 'Campo Novo do Parecis, Mato Grosso': 5102637, 'Campo Verde, Mato Grosso': 5102678, 'Chapada dos Guimarães, Mato Grosso': 5103007, 'Cuiabá, Mato Grosso': 5103403, 'Denise, Mato Grosso': 5103452, 'Diamantino, Mato Grosso': 5103502, 'Jangada, Mato Grosso': 5104906, 'Nobres, Mato Grosso': 5105903, 'Nortelândia, Mato Grosso': 5106000, 'Nossa Senhora do Livramento, Mato Grosso': 5106109, 'Nova Brasilândia, Mato Grosso': 5106208, 'Nova Olímpia, Mato Grosso': 5106232, 'Planalto da Serra, Mato Grosso': 5106455, 'Poconé, Mato Grosso': 5106505, 'Porto Estrela, Mato Grosso': 5106851, 'Santo Afonso, Mato Grosso': 5107263, 'São José do Rio Claro, Mato Grosso': 5107305, 'Rosário Oeste, Mato Grosso': 5107701, 'Santo Antônio do Leverger, Mato Grosso': 5107800, 'Sapezal, Mato Grosso': 5107875, 'Tangará da Serra, Mato Grosso': 5107958, 'Várzea Grande, Mato Grosso': 5108402, 'Nova Marilândia, Mato Grosso': 5108857, 'Nova Maringá, Mato Grosso': 5108907, 'Alta Floresta, Mato Grosso': 5100250, 'Apiacás, Mato Grosso': 5100805, 'Aripuanã, Mato Grosso': 5101407, 'Carlinda, Mato Grosso': 5102793, 'Castanheira, Mato Grosso': 5102850, 'Cláudia, Mato Grosso': 5103056, 'Colíder, Mato Grosso': 5103205, 'Colniza, Mato Grosso': 5103254, 'Cotriguaçu, Mato Grosso': 5103379, 'Feliz Natal, Mato Grosso': 5103700, 'Guarantã do Norte, Mato Grosso': 5104104, 'Ipiranga do Norte, Mato Grosso': 5104526, 'Itanhangá, Mato Grosso': 5104542, 'Itaúba, Mato Grosso': 5104559, 'Juara, Mato Grosso': 5105101, 'Juína, Mato Grosso': 5105150, 'Juruena, Mato Grosso': 5105176, 'Lucas do Rio Verde, Mato Grosso': 5105259, 'Marcelândia, Mato Grosso': 5105580, 'Matupá, Mato Grosso': 5105606, 'Nova Bandeirantes, Mato Grosso': 5106158, 'Nova Santa Helena, Mato Grosso': 5106190, 'Nova Canaã do Norte, Mato Grosso': 5106216, 'Nova Mutum, Mato Grosso': 5106224, 'Nova Ubiratã, Mato Grosso': 5106240, 'Novo Mundo, Mato Grosso': 5106265, 'Novo Horizonte do Norte, Mato Grosso': 5106273, 'Paranaíta, Mato Grosso': 5106299, 'Peixoto de Azevedo, Mato Grosso': 5106422, 'Porto dos Gaúchos, Mato Grosso': 5106802, 'Santa Carmem, Mato Grosso': 5107248, 'Rondolândia, Mato Grosso': 5107578, 'Santa Rita do Trivelato, Mato Grosso': 5107768, 'Sinop, Mato Grosso': 5107909, 'Sorriso, Mato Grosso': 5107925, 'Tabaporã, Mato Grosso': 5107941, 'Tapurah, Mato Grosso': 5108006, 'Terra Nova do Norte, Mato Grosso': 5108055, 'União do Sul, Mato Grosso': 5108303, 'Vera, Mato Grosso': 5108501, 'Nova Guarita, Mato Grosso': 5108808, 'Nova Monte Verde, Mato Grosso': 5108956, 'Água Boa, Mato Grosso': 5100201, 'Alto Boa Vista, Mato Grosso': 5100359, 'Araguaiana, Mato Grosso': 5101001, 'Barra do Garças, Mato Grosso': 5101803, 'Bom Jesus do Araguaia, Mato Grosso': 5101852, 'Campinápolis, Mato Grosso': 5102603, 'Canabrava do Norte, Mato Grosso': 5102694, 'Canarana, Mato Grosso': 5102702, 'Cocalinho, Mato Grosso': 5103106, 'Confresa, Mato Grosso': 5103353, 'Gaúcha do Norte, Mato Grosso': 5103858, 'General Carneiro, Mato Grosso': 5103908, 'Luciara, Mato Grosso': 5105309, 'Nova Nazaré, Mato Grosso': 5106174, 'Nova Xavantina, Mato Grosso': 5106257, 'Novo São Joaquim, Mato Grosso': 5106281, 'Novo Santo Antônio, Mato Grosso': 5106315, 'Pontal do Araguaia, Mato Grosso': 5106653, 'Ponte Branca, Mato Grosso': 5106703, 'Porto Alegre do Norte, Mato Grosso': 5106778, 'Querência, Mato Grosso': 5107065, 'Ribeirão Cascalheira, Mato Grosso': 5107180, 'Ribeirãozinho, Mato Grosso': 5107198, 'São José do Xingu, Mato Grosso': 5107354, 'Santa Cruz do Xingu, Mato Grosso': 5107743, 'Santa Terezinha, Mato Grosso': 5107776, 'São Félix do Araguaia, Mato Grosso': 5107859, 'Serra Nova Dourada, Mato Grosso': 5107883, 'Torixoréu, Mato Grosso': 5108204, 'Vila Rica, Mato Grosso': 5108600, 'Abadia de Goiás, Goiás': 5200050, 'Abadiânia, Goiás': 5200100, 'Adelândia, Goiás': 5200159, 'Alexânia, Goiás': 5200308, 'Americano do Brasil, Goiás': 5200852, 'Anápolis, Goiás': 5201108, 'Anhanguera, Goiás': 5201207, 'Anicuns, Goiás': 5201306, 'Aparecida de Goiânia, Goiás': 5201405, 'Araçu, Goiás': 5201603, 'Aragoiânia, Goiás': 5201801, 'Araguapaz, Goiás': 5202155, 'Aruanã, Goiás': 5202502, 'Avelinópolis, Goiás': 5202809, 'Bela Vista de Goiás, Goiás': 5203302, 'Bonfinópolis, Goiás': 5203559, 'Brazabrantes, Goiás': 5203609, 'Britânia, Goiás': 5203807, 'Caldazinha, Goiás': 5204557, 'Campo Alegre de Goiás, Goiás': 5204805, 'Campo Limpo de Goiás, Goiás': 5204854, 'Catalão, Goiás': 5205109, 'Caturaí, Goiás': 5205208, 'Corumbá de Goiás, Goiás': 5205802, 'Cumari, Goiás': 5206602, 'Damolândia, Goiás': 5206800, 'Davinópolis, Goiás': 5206909, 'Faina, Goiás': 5207535, 'Gameleira de Goiás, Goiás': 5208152, 'Goianápolis, Goiás': 5208400, 'Goiandira, Goiás': 5208509, 'Goiânia, Goiás': 5208707, 'Goianira, Goiás': 5208806, 'Goiás, Goiás': 5208905, 'Guapó, Goiás': 5209200, 'Guaraíta, Goiás': 5209291, 'Heitoraí, Goiás': 5209606, 'Hidrolândia, Goiás': 5209705, 'Inhumas, Goiás': 5210000, 'Ipameri, Goiás': 5210109, 'Itaberaí, Goiás': 5210406, 'Itaguari, Goiás': 5210562, 'Itaguaru, Goiás': 5210604, 'Itapirapuã, Goiás': 5211008, 'Itapuranga, Goiás': 5211206, 'Itauçu, Goiás': 5211404, 'Jaraguá, Goiás': 5211800, 'Jesúpolis, Goiás': 5212055, 'Jussara, Goiás': 5212204, 'Leopoldo de Bulhões, Goiás': 5212303, 'Matrinchã, Goiás': 5212956, 'Mossâmedes, Goiás': 5213905, 'Mozarlândia, Goiás': 5214002, 'Nerópolis, Goiás': 5214507, 'Nova Aurora, Goiás': 5214804, 'Nova Crixás, Goiás': 5214838, 'Nova Veneza, Goiás': 5215009, 'Novo Brasil, Goiás': 5215207, 'Orizona, Goiás': 5215306, 'Ouro Verde de Goiás, Goiás': 5215405, 'Ouvidor, Goiás': 5215504, 'Palmelo, Goiás': 5215801, 'Petrolina de Goiás, Goiás': 5216809, 'Pirenópolis, Goiás': 5217302, 'Pires do Rio, Goiás': 5217401, 'Santa Cruz de Goiás, Goiás': 5219209, 'Santa Fé de Goiás, Goiás': 5219258, 'Santa Rosa de Goiás, Goiás': 5219506, 'Santo Antônio de Goiás, Goiás': 5219738, 'São Francisco de Goiás, Goiás': 5219902, 'São Miguel do Passa Quatro, Goiás': 5220264, 'Senador Canedo, Goiás': 5220454, 'Silvânia, Goiás': 5220603, 'Taquaral de Goiás, Goiás': 5221007, 'Terezópolis de Goiás, Goiás': 5221197, 'Três Ranchos, Goiás': 5221304, 'Trindade, Goiás': 5221403, 'Urutaí, Goiás': 5221809, 'Varjão, Goiás': 5221908, 'Vianópolis, Goiás': 5222005, 'Aparecida do Rio Doce, Goiás': 5201454, 'Aporé, Goiás': 5201504, 'Cachoeira Alta, Goiás': 5204102, 'Caçu, Goiás': 5204300, 'Caiapônia, Goiás': 5204409, 'Castelândia, Goiás': 5205059, 'Chapadão do Céu, Goiás': 5205471, 'Doverlândia, Goiás': 5207253, 'Gouvelândia, Goiás': 5209150, 'Inaciolândia, Goiás': 5209937, 'Itajá, Goiás': 5210802, 'Itarumã, Goiás': 5211305, 'Jataí, Goiás': 5211909, 'Lagoa Santa, Goiás': 5212253, 'Maurilândia, Goiás': 5213004, 'Mineiros, Goiás': 5213103, 'Montividiu, Goiás': 5213756, 'Paranaiguara, Goiás': 5216304, 'Perolândia, Goiás': 5216452, 'Porteirão, Goiás': 5218052, 'Portelândia, Goiás': 5218102, 'Quirinópolis, Goiás': 5218508, 'Rio Verde, Goiás': 5218805, 'Santa Helena de Goiás, Goiás': 5219308, 'Santa Rita do Araguaia, Goiás': 5219407, 'Santo Antônio da Barra, Goiás': 5219712, 'São Simão, Goiás': 5220405, 'Serranópolis, Goiás': 5220504, 'Turvelândia, Goiás': 5221551, 'Acreúna, Goiás': 5200134, 'Amorinópolis, Goiás': 5200902, 'Aragarças, Goiás': 5201702, 'Arenópolis, Goiás': 5202353, 'Aurilândia, Goiás': 5202601, 'Baliza, Goiás': 5203104, 'Bom Jardim de Goiás, Goiás': 5203401, 'Buriti de Goiás, Goiás': 5203939, 'Cachoeira de Goiás, Goiás': 5204201, 'Campestre de Goiás, Goiás': 5204607, 'Cezarina, Goiás': 5205455, 'Córrego do Ouro, Goiás': 5205703, 'Diorama, Goiás': 5207105, 'Edéia, Goiás': 5207402, 'Fazenda Nova, Goiás': 5207600, 'Firminópolis, Goiás': 5207808, 'Indiara, Goiás': 5209952, 'Iporá, Goiás': 5210208, 'Israelândia, Goiás': 5210307, 'Ivolândia, Goiás': 5211602, 'Jandaia, Goiás': 5211701, 'Jaupaci, Goiás': 5212006, 'Moiporá, Goiás': 5213400, 'Montes Claros de Goiás, Goiás': 5213707, 'Nazário, Goiás': 5214408, 'Palestina de Goiás, Goiás': 5215652, 'Palmeiras de Goiás, Goiás': 5215702, 'Palminópolis, Goiás': 5215900, 'Paraúna, Goiás': 5216403, 'Piranhas, Goiás': 5217203, 'Sanclerlândia, Goiás': 5219001, 'Santa Bárbara de Goiás, Goiás': 5219100, 'São João da Paraúna, Goiás': 5220058, 'São Luís de Montes Belos, Goiás': 5220108, 'Turvânia, Goiás': 5221502, 'Alto Horizonte, Goiás': 5200555, 'Amaralina, Goiás': 5200829, 'Barro Alto, Goiás': 5203203, 'Bonópolis, Goiás': 5203575, 'Campinaçu, Goiás': 5204656, 'Campinorte, Goiás': 5204706, 'Campos Verdes, Goiás': 5204953, 'Carmo do Rio Verde, Goiás': 5205000, 'Ceres, Goiás': 5205406, 'Colinas do Sul, Goiás': 5205521, 'Crixás, Goiás': 5206404, 'Estrela do Norte, Goiás': 5207501, 'Formoso, Goiás': 5208103, 'Goianésia, Goiás': 5208608, 'Guarinos, Goiás': 5209457, 'Hidrolina, Goiás': 5209804, 'Ipiranga de Goiás, Goiás': 5210158, 'Itapaci, Goiás': 5210901, 'Mara Rosa, Goiás': 5212808, 'Minaçu, Goiás': 5213087, 'Montividiu do Norte, Goiás': 5213772, 'Morro Agudo de Goiás, Goiás': 5213855, 'Mundo Novo, Goiás': 5214051, 'Mutunópolis, Goiás': 5214101, 'Niquelândia, Goiás': 5214606, 'Nova América, Goiás': 5214705, 'Nova Glória, Goiás': 5214861, 'Nova Iguaçu de Goiás, Goiás': 5214879, 'Novo Planalto, Goiás': 5215256, 'Pilar de Goiás, Goiás': 5216908, 'Porangatu, Goiás': 5218003, 'Rialma, Goiás': 5218607, 'Rianápolis, Goiás': 5218706, 'Rubiataba, Goiás': 5218904, 'Santa Isabel, Goiás': 5219357, 'Santa Rita do Novo Destino, Goiás': 5219456, 'Santa Tereza de Goiás, Goiás': 5219605, 'Santa Terezinha de Goiás, Goiás': 5219704, 'São Luíz do Norte, Goiás': 5220157, 'São Miguel do Araguaia, Goiás': 5220207, 'São Patrício, Goiás': 5220280, 'Trombas, Goiás': 5221452, 'Uirapuru, Goiás': 5221577, 'Uruaçu, Goiás': 5221601, 'Uruana, Goiás': 5221700, 'Vila Propício, Goiás': 5222302, 'Água Fria de Goiás, Goiás': 5200175, 'Águas Lindas de Goiás, Goiás': 5200258, 'Alto Paraíso de Goiás, Goiás': 5200605, 'Alvorada do Norte, Goiás': 5200803, 'Buritinópolis, Goiás': 5203962, 'Cabeceiras, Goiás': 5204003, 'Campos Belos, Goiás': 5204904, 'Cavalcante, Goiás': 5205307, 'Cidade Ocidental, Goiás': 5205497, 'Cocalzinho de Goiás, Goiás': 5205513, 'Cristalina, Goiás': 5206206, 'Damianópolis, Goiás': 5206701, 'Flores de Goiás, Goiás': 5207907, 'Formosa, Goiás': 5208004, 'Divinópolis de Goiás, Goiás': 5208301, 'Guarani de Goiás, Goiás': 5209408, 'Iaciara, Goiás': 5209903, 'Luziânia, Goiás': 5212501, 'Mambaí, Goiás': 5212709, 'Mimoso de Goiás, Goiás': 5213053, 'Monte Alegre de Goiás, Goiás': 5213509, 'Nova Roma, Goiás': 5214903, 'Novo Gama, Goiás': 5215231, 'Padre Bernardo, Goiás': 5215603, 'Planaltina, Goiás': 5217609, 'Posse, Goiás': 5218300, 'Santo Antônio do Descoberto, Goiás': 5219753, 'São Domingos, Goiás': 5219803, "São João d'Aliança, Goiás": 5220009, 'Simolândia, Goiás': 5220686, "Sítio d'Abadia, Goiás": 5220702, 'Teresina de Goiás, Goiás': 5221080, 'Valparaíso de Goiás, Goiás': 5221858, 'Vila Boa, Goiás': 5222203} + MAP_MUNICIPIO_TO_ID = { + "Ariquemes, Rondônia": 1100023, + "Guajará-Mirim, Rondônia": 1100106, + "Jaru, Rondônia": 1100114, + "Machadinho D'Oeste, Rondônia": 1100130, + "Porto Velho, Rondônia": 1100205, + "Rio Crespo, Rondônia": 1100262, + "Nova Mamoré, Rondônia": 1100338, + "Alto Paraíso, Rondônia": 1100403, + "Buritis, Rondônia": 1100452, + "Cacaulândia, Rondônia": 1100601, + "Campo Novo de Rondônia, Rondônia": 1100700, + "Candeias do Jamari, Rondônia": 1100809, + "Cujubim, Rondônia": 1100940, + "Governador Jorge Teixeira, Rondônia": 1101005, + "Itapuã do Oeste, Rondônia": 1101104, + "Monte Negro, Rondônia": 1101401, + "Theobroma, Rondônia": 1101609, + "Vale do Anari, Rondônia": 1101757, + "Acrelândia, Acre": 1200013, + "Assis Brasil, Acre": 1200054, + "Brasiléia, Acre": 1200104, + "Bujari, Acre": 1200138, + "Capixaba, Acre": 1200179, + "Cruzeiro do Sul, Acre": 1200203, + "Epitaciolândia, Acre": 1200252, + "Feijó, Acre": 1200302, + "Jordão, Acre": 1200328, + "Mâncio Lima, Acre": 1200336, + "Manoel Urbano, Acre": 1200344, + "Marechal Thaumaturgo, Acre": 1200351, + "Plácido de Castro, Acre": 1200385, + "Porto Walter, Acre": 1200393, + "Rio Branco, Acre": 1200401, + "Rodrigues Alves, Acre": 1200427, + "Santa Rosa do Purus, Acre": 1200435, + "Senador Guiomard, Acre": 1200450, + "Sena Madureira, Acre": 1200500, + "Tarauacá, Acre": 1200609, + "Xapuri, Acre": 1200708, + "Porto Acre, Acre": 1200807, + "Alvarães, Amazonas": 1300029, + "Amaturá, Amazonas": 1300060, + "Anamã, Amazonas": 1300086, + "Anori, Amazonas": 1300102, + "Apuí, Amazonas": 1300144, + "Atalaia do Norte, Amazonas": 1300201, + "Autazes, Amazonas": 1300300, + "Barcelos, Amazonas": 1300409, + "Barreirinha, Amazonas": 1300508, + "Benjamin Constant, Amazonas": 1300607, + "Beruri, Amazonas": 1300631, + "Boa Vista do Ramos, Amazonas": 1300680, + "Boca do Acre, Amazonas": 1300706, + "Borba, Amazonas": 1300805, + "Caapiranga, Amazonas": 1300839, + "Canutama, Amazonas": 1300904, + "Carauari, Amazonas": 1301001, + "Careiro, Amazonas": 1301100, + "Careiro da Várzea, Amazonas": 1301159, + "Coari, Amazonas": 1301209, + "Codajás, Amazonas": 1301308, + "Eirunepé, Amazonas": 1301407, + "Envira, Amazonas": 1301506, + "Fonte Boa, Amazonas": 1301605, + "Guajará, Amazonas": 1301654, + "Humaitá, Amazonas": 1301704, + "Ipixuna, Amazonas": 1301803, + "Iranduba, Amazonas": 1301852, + "Itacoatiara, Amazonas": 1301902, + "Itamarati, Amazonas": 1301951, + "Itapiranga, Amazonas": 1302009, + "Japurá, Amazonas": 1302108, + "Juruá, Amazonas": 1302207, + "Jutaí, Amazonas": 1302306, + "Lábrea, Amazonas": 1302405, + "Manacapuru, Amazonas": 1302504, + "Manaquiri, Amazonas": 1302553, + "Manaus, Amazonas": 1302603, + "Manicoré, Amazonas": 1302702, + "Maraã, Amazonas": 1302801, + "Maués, Amazonas": 1302900, + "Nhamundá, Amazonas": 1303007, + "Nova Olinda do Norte, Amazonas": 1303106, + "Novo Airão, Amazonas": 1303205, + "Novo Aripuanã, Amazonas": 1303304, + "Parintins, Amazonas": 1303403, + "Pauini, Amazonas": 1303502, + "Presidente Figueiredo, Amazonas": 1303536, + "Rio Preto da Eva, Amazonas": 1303569, + "Santa Isabel do Rio Negro, Amazonas": 1303601, + "Santo Antônio do Içá, Amazonas": 1303700, + "São Gabriel da Cachoeira, Amazonas": 1303809, + "São Paulo de Olivença, Amazonas": 1303908, + "São Sebastião do Uatumã, Amazonas": 1303957, + "Silves, Amazonas": 1304005, + "Tabatinga, Amazonas": 1304062, + "Tapauá, Amazonas": 1304104, + "Tefé, Amazonas": 1304203, + "Tonantins, Amazonas": 1304237, + "Uarini, Amazonas": 1304260, + "Urucará, Amazonas": 1304302, + "Urucurituba, Amazonas": 1304401, + "Amajari, Roraima": 1400027, + "Alto Alegre, Roraima": 1400050, + "Boa Vista, Roraima": 1400100, + "Bonfim, Roraima": 1400159, + "Cantá, Roraima": 1400175, + "Caracaraí, Roraima": 1400209, + "Caroebe, Roraima": 1400233, + "Iracema, Roraima": 1400282, + "Mucajaí, Roraima": 1400308, + "Normandia, Roraima": 1400407, + "Pacaraima, Roraima": 1400456, + "Rorainópolis, Roraima": 1400472, + "São João da Baliza, Roraima": 1400506, + "São Luiz, Roraima": 1400605, + "Uiramutã, Roraima": 1400704, + "Abaetetuba, Pará": 1500107, + "Abel Figueiredo, Pará": 1500131, + "Acará, Pará": 1500206, + "Afuá, Pará": 1500305, + "Água Azul do Norte, Pará": 1500347, + "Alenquer, Pará": 1500404, + "Almeirim, Pará": 1500503, + "Altamira, Pará": 1500602, + "Anajás, Pará": 1500701, + "Ananindeua, Pará": 1500800, + "Anapu, Pará": 1500859, + "Aveiro, Pará": 1501006, + "Bagre, Pará": 1501105, + "Baião, Pará": 1501204, + "Bannach, Pará": 1501253, + "Barcarena, Pará": 1501303, + "Belém, Pará": 1501402, + "Belterra, Pará": 1501451, + "Benevides, Pará": 1501501, + "Bom Jesus do Tocantins, Pará": 1501576, + "Brasil Novo, Pará": 1501725, + "Brejo Grande do Araguaia, Pará": 1501758, + "Breu Branco, Pará": 1501782, + "Breves, Pará": 1501808, + "Bujaru, Pará": 1501907, + "Cachoeira do Arari, Pará": 1502004, + "Cametá, Pará": 1502103, + "Canaã dos Carajás, Pará": 1502152, + "Chaves, Pará": 1502509, + "Colares, Pará": 1502608, + "Conceição do Araguaia, Pará": 1502707, + "Concórdia do Pará, Pará": 1502756, + "Cumaru do Norte, Pará": 1502764, + "Curionópolis, Pará": 1502772, + "Curralinho, Pará": 1502806, + "Curuá, Pará": 1502855, + "Eldorado do Carajás, Pará": 1502954, + "Faro, Pará": 1503002, + "Floresta do Araguaia, Pará": 1503044, + "Goianésia do Pará, Pará": 1503093, + "Gurupá, Pará": 1503101, + "Igarapé-Miri, Pará": 1503309, + "Itaituba, Pará": 1503606, + "Itupiranga, Pará": 1503705, + "Jacareacanga, Pará": 1503754, + "Jacundá, Pará": 1503804, + "Juruti, Pará": 1503903, + "Limoeiro do Ajuru, Pará": 1504000, + "Marabá, Pará": 1504208, + "Marituba, Pará": 1504422, + "Medicilândia, Pará": 1504455, + "Melgaço, Pará": 1504505, + "Mocajuba, Pará": 1504604, + "Moju, Pará": 1504703, + "Mojuí dos Campos, Pará": 1504752, + "Monte Alegre, Pará": 1504802, + "Muaná, Pará": 1504901, + "Nova Ipixuna, Pará": 1504976, + "Novo Progresso, Pará": 1505031, + "Novo Repartimento, Pará": 1505064, + "Óbidos, Pará": 1505106, + "Oeiras do Pará, Pará": 1505205, + "Oriximiná, Pará": 1505304, + "Ourilândia do Norte, Pará": 1505437, + "Pacajá, Pará": 1505486, + "Palestina do Pará, Pará": 1505494, + "Parauapebas, Pará": 1505536, + "Pau D'Arco, Pará": 1505551, + "Piçarra, Pará": 1505635, + "Placas, Pará": 1505650, + "Ponta de Pedras, Pará": 1505700, + "Portel, Pará": 1505809, + "Porto de Moz, Pará": 1505908, + "Prainha, Pará": 1506005, + "Redenção, Pará": 1506138, + "Rio Maria, Pará": 1506161, + "Rondon do Pará, Pará": 1506187, + "Rurópolis, Pará": 1506195, + "Salvaterra, Pará": 1506302, + "Santa Bárbara do Pará, Pará": 1506351, + "Santa Cruz do Arari, Pará": 1506401, + "Santa Isabel do Pará, Pará": 1506500, + "Santa Maria das Barreiras, Pará": 1506583, + "Santana do Araguaia, Pará": 1506708, + "Santarém, Pará": 1506807, + "Santo Antônio do Tauá, Pará": 1507003, + "São Caetano de Odivelas, Pará": 1507102, + "São Domingos do Araguaia, Pará": 1507151, + "São Félix do Xingu, Pará": 1507300, + "São Geraldo do Araguaia, Pará": 1507458, + "São João do Araguaia, Pará": 1507508, + "São Sebastião da Boa Vista, Pará": 1507706, + "Sapucaia, Pará": 1507755, + "Senador José Porfírio, Pará": 1507805, + "Soure, Pará": 1507904, + "Tailândia, Pará": 1507953, + "Terra Santa, Pará": 1507979, + "Tomé-Açu, Pará": 1508001, + "Trairão, Pará": 1508050, + "Tucumã, Pará": 1508084, + "Tucuruí, Pará": 1508100, + "Uruará, Pará": 1508159, + "Vigia, Pará": 1508209, + "Vitória do Xingu, Pará": 1508357, + "Xinguara, Pará": 1508407, + "Serra do Navio, Amapá": 1600055, + "Amapá, Amapá": 1600105, + "Pedra Branca do Amapari, Amapá": 1600154, + "Calçoene, Amapá": 1600204, + "Cutias, Amapá": 1600212, + "Ferreira Gomes, Amapá": 1600238, + "Itaubal, Amapá": 1600253, + "Laranjal do Jari, Amapá": 1600279, + "Macapá, Amapá": 1600303, + "Mazagão, Amapá": 1600402, + "Oiapoque, Amapá": 1600501, + "Porto Grande, Amapá": 1600535, + "Pracuúba, Amapá": 1600550, + "Santana, Amapá": 1600600, + "Tartarugalzinho, Amapá": 1600709, + "Vitória do Jari, Amapá": 1600808, + "Afonso Cunha, Maranhão": 2100105, + "Aldeias Altas, Maranhão": 2100303, + "Buriti Bravo, Maranhão": 2102309, + "Caxias, Maranhão": 2103000, + "Codó, Maranhão": 2103307, + "Coelho Neto, Maranhão": 2103406, + "Coroatá, Maranhão": 2103604, + "Duque Bacelar, Maranhão": 2103901, + "Matões, Maranhão": 2106607, + "Parnarama, Maranhão": 2107803, + "Peritoró, Maranhão": 2108454, + "São João do Soter, Maranhão": 2111078, + "Timbiras, Maranhão": 2112100, + "Timon, Maranhão": 2112209, + "Alvorada do Gurguéia, Piauí": 2200459, + "Anísio de Abreu, Piauí": 2200707, + "Avelino Lopes, Piauí": 2201101, + "Barreiras do Piauí, Piauí": 2201309, + "Bom Jesus, Piauí": 2201903, + "Bonfim do Piauí, Piauí": 2201929, + "Campo Alegre do Fidalgo, Piauí": 2202117, + "Capitão Gervásio Oliveira, Piauí": 2202455, + "Caracol, Piauí": 2202505, + "Colônia do Gurguéia, Piauí": 2202752, + "Coronel José Dias, Piauí": 2202851, + "Corrente, Piauí": 2202901, + "Cristalândia do Piauí, Piauí": 2203008, + "Cristino Castro, Piauí": 2203107, + "Curimatá, Piauí": 2203206, + "Currais, Piauí": 2203230, + "Dirceu Arcoverde, Piauí": 2203354, + "Dom Inocêncio, Piauí": 2203453, + "Fartura do Piauí, Piauí": 2203750, + "Gilbués, Piauí": 2204402, + "Guaribas, Piauí": 2204550, + "João Costa, Piauí": 2205359, + "Júlio Borges, Piauí": 2205524, + "Jurema, Piauí": 2205532, + "Lagoa do Barro do Piauí, Piauí": 2205565, + "Monte Alegre do Piauí, Piauí": 2206605, + "Morro Cabeça no Tempo, Piauí": 2206654, + "Palmeira do Piauí, Piauí": 2207405, + "Parnaguá, Piauí": 2207603, + "Pedro Laurentino, Piauí": 2207934, + "Nova Santa Rita, Piauí": 2207959, + "Redenção do Gurguéia, Piauí": 2208700, + "Riacho Frio, Piauí": 2208858, + "Ribeira do Piauí, Piauí": 2208874, + "Santa Filomena, Piauí": 2209203, + "Santa Luz, Piauí": 2209302, + "São Braz do Piauí, Piauí": 2209559, + "São Gonçalo do Gurguéia, Piauí": 2209757, + "São João do Piauí, Piauí": 2210003, + "São Lourenço do Piauí, Piauí": 2210359, + "São Raimundo Nonato, Piauí": 2210607, + "Sebastião Barros, Piauí": 2210623, + "Várzea Branca, Piauí": 2211357, + "Acopiara, Ceará": 2300309, + "Ararendá, Ceará": 2301257, + "Arneiroz, Ceará": 2301505, + "Baixio, Ceará": 2301802, + "Cariús, Ceará": 2303303, + "Catarina, Ceará": 2303600, + "Cedro, Ceará": 2303808, + "Crateús, Ceará": 2304103, + "Icó, Ceará": 2305407, + "Iguatu, Ceará": 2305506, + "Independência, Ceará": 2305605, + "Ipaporanga, Ceará": 2305654, + "Ipaumirim, Ceará": 2305704, + "Jucás, Ceará": 2307403, + "Mombaça, Ceará": 2308500, + "Monsenhor Tabosa, Ceará": 2308609, + "Nova Russas, Ceará": 2309300, + "Novo Oriente, Ceará": 2309409, + "Orós, Ceará": 2309508, + "Parambu, Ceará": 2310308, + "Piquet Carneiro, Ceará": 2310902, + "Poranga, Ceará": 2311009, + "Quiterianópolis, Ceará": 2311264, + "Quixelô, Ceará": 2311355, + "Saboeiro, Ceará": 2311900, + "Tamboril, Ceará": 2313203, + "Tauá, Ceará": 2313302, + "Umari, Ceará": 2313708, + "Acari, Rio Grande do Norte": 2400109, + "Bodó, Rio Grande do Norte": 2401651, + "Caicó, Rio Grande do Norte": 2402006, + "Carnaúba dos Dantas, Rio Grande do Norte": 2402402, + "Cerro Corá, Rio Grande do Norte": 2402709, + "Cruzeta, Rio Grande do Norte": 2403004, + "Currais Novos, Rio Grande do Norte": 2403103, + "Equador, Rio Grande do Norte": 2403400, + "Florânia, Rio Grande do Norte": 2403806, + "Ipueira, Rio Grande do Norte": 2404804, + "Jardim de Piranhas, Rio Grande do Norte": 2405603, + "Jardim do Seridó, Rio Grande do Norte": 2405702, + "Jucurutu, Rio Grande do Norte": 2406106, + "Lagoa Nova, Rio Grande do Norte": 2406502, + "Ouro Branco, Rio Grande do Norte": 2408508, + "Parelhas, Rio Grande do Norte": 2408904, + "Santana do Seridó, Rio Grande do Norte": 2411429, + "São Fernando, Rio Grande do Norte": 2411809, + "São João do Sabugi, Rio Grande do Norte": 2412104, + "São José do Seridó, Rio Grande do Norte": 2412401, + "São Vicente, Rio Grande do Norte": 2413003, + "Serra Negra do Norte, Rio Grande do Norte": 2413409, + "Tenente Laurentino Cruz, Rio Grande do Norte": 2414159, + "Timbaúba dos Batistas, Rio Grande do Norte": 2414308, + "São João do Rio do Peixe, Paraíba": 2500700, + "Aparecida, Paraíba": 2500775, + "Bernardino Batista, Paraíba": 2502052, + "Bom Jesus, Paraíba": 2502201, + "Bonito de Santa Fé, Paraíba": 2502409, + "Cachoeira dos Índios, Paraíba": 2503308, + "Cajazeiras, Paraíba": 2503704, + "Carrapateira, Paraíba": 2504108, + "Lastro, Paraíba": 2508406, + "Marizópolis, Paraíba": 2509156, + "Monte Horebe, Paraíba": 2509602, + "Nazarezinho, Paraíba": 2510006, + "Poço Dantas, Paraíba": 2512036, + "Poço de José de Moura, Paraíba": 2512077, + "Santa Cruz, Paraíba": 2513208, + "Santa Helena, Paraíba": 2513307, + "Joca Claudino, Paraíba": 2513653, + "São Francisco, Paraíba": 2513984, + "São José da Lagoa Tapada, Paraíba": 2514206, + "São José de Piranhas, Paraíba": 2514503, + "Serra Grande, Paraíba": 2515708, + "Sousa, Paraíba": 2516201, + "Triunfo, Paraíba": 2516805, + "Uiraúna, Paraíba": 2516904, + "Vieirópolis, Paraíba": 2517209, + "Afogados da Ingazeira, Pernambuco": 2600104, + "Afrânio, Pernambuco": 2600203, + "Araripina, Pernambuco": 2601102, + "Belém do São Francisco, Pernambuco": 2601607, + "Betânia, Pernambuco": 2601805, + "Bodocó, Pernambuco": 2602001, + "Brejinho, Pernambuco": 2602506, + "Cabrobó, Pernambuco": 2603009, + "Calumbi, Pernambuco": 2603405, + "Carnaíba, Pernambuco": 2603900, + "Carnaubeira da Penha, Pernambuco": 2603926, + "Cedro, Pernambuco": 2604304, + "Dormentes, Pernambuco": 2605152, + "Exu, Pernambuco": 2605301, + "Flores, Pernambuco": 2605608, + "Floresta, Pernambuco": 2605707, + "Granito, Pernambuco": 2606309, + "Iguaraci, Pernambuco": 2606903, + "Ingazeira, Pernambuco": 2607109, + "Ipubi, Pernambuco": 2607307, + "Itacuruba, Pernambuco": 2607406, + "Itapetim, Pernambuco": 2607703, + "Jatobá, Pernambuco": 2608057, + "Lagoa Grande, Pernambuco": 2608750, + "Mirandiba, Pernambuco": 2609303, + "Orocó, Pernambuco": 2609808, + "Ouricuri, Pernambuco": 2609907, + "Parnamirim, Pernambuco": 2610400, + "Petrolândia, Pernambuco": 2611002, + "Petrolina, Pernambuco": 2611101, + "Quixaba, Pernambuco": 2611533, + "Salgueiro, Pernambuco": 2612208, + "Santa Cruz, Pernambuco": 2612455, + "Santa Cruz da Baixa Verde, Pernambuco": 2612471, + "Santa Filomena, Pernambuco": 2612554, + "Santa Maria da Boa Vista, Pernambuco": 2612604, + "Santa Terezinha, Pernambuco": 2612802, + "São José do Belmonte, Pernambuco": 2613503, + "São José do Egito, Pernambuco": 2613602, + "Serra Talhada, Pernambuco": 2613909, + "Serrita, Pernambuco": 2614006, + "Moreilândia, Pernambuco": 2614303, + "Solidão, Pernambuco": 2614402, + "Tabira, Pernambuco": 2614600, + "Tacaratu, Pernambuco": 2614808, + "Terra Nova, Pernambuco": 2615201, + "Trindade, Pernambuco": 2615607, + "Triunfo, Pernambuco": 2615706, + "Tuparetama, Pernambuco": 2615904, + "Verdejante, Pernambuco": 2616100, + "Andorinha, Bahia": 2901353, + "Angical, Bahia": 2901403, + "Antônio Gonçalves, Bahia": 2901809, + "Baianópolis, Bahia": 2902500, + "Barreiras, Bahia": 2903201, + "Brejolândia, Bahia": 2904407, + "Campo Alegre de Lourdes, Bahia": 2905909, + "Campo Formoso, Bahia": 2906006, + "Canápolis, Bahia": 2906105, + "Casa Nova, Bahia": 2907202, + "Catolândia, Bahia": 2907400, + "Cocos, Bahia": 2908101, + "Coribe, Bahia": 2909109, + "Correntina, Bahia": 2909307, + "Cotegipe, Bahia": 2909406, + "Cristópolis, Bahia": 2909703, + "Curaçá, Bahia": 2909901, + "Filadélfia, Bahia": 2910859, + "Formosa do Rio Preto, Bahia": 2911105, + "Itiúba, Bahia": 2917003, + "Jaborandi, Bahia": 2917359, + "Jaguarari, Bahia": 2917706, + "Juazeiro, Bahia": 2918407, + "Luís Eduardo Magalhães, Bahia": 2919553, + "Mansidão, Bahia": 2920452, + "Pilão Arcado, Bahia": 2924405, + "Pindobaçu, Bahia": 2924603, + "Ponto Novo, Bahia": 2925253, + "Remanso, Bahia": 2926004, + "Riachão das Neves, Bahia": 2926202, + "Santa Maria da Vitória, Bahia": 2928109, + "Santana, Bahia": 2928208, + "Santa Rita de Cássia, Bahia": 2928406, + "São Desidério, Bahia": 2928901, + "São Félix do Coribe, Bahia": 2929057, + "Senhor do Bonfim, Bahia": 2930105, + "Sento Sé, Bahia": 2930204, + "Serra Dourada, Bahia": 2930303, + "Sobradinho, Bahia": 2930774, + "Tabocas do Brejo Velho, Bahia": 2930907, + "Uauá, Bahia": 2932002, + "Wanderley, Bahia": 2933455, + "Abadia dos Dourados, Minas Gerais": 3100104, + "Araguari, Minas Gerais": 3103504, + "Araporã, Minas Gerais": 3103751, + "Cachoeira Dourada, Minas Gerais": 3109808, + "Campina Verde, Minas Gerais": 3111101, + "Canápolis, Minas Gerais": 3111804, + "Capinópolis, Minas Gerais": 3112604, + "Cascalho Rico, Minas Gerais": 3115003, + "Centralina, Minas Gerais": 3115805, + "Douradoquara, Minas Gerais": 3123502, + "Estrela do Sul, Minas Gerais": 3124807, + "Grupiara, Minas Gerais": 3127909, + "Gurinhatã, Minas Gerais": 3129103, + "Indianópolis, Minas Gerais": 3130705, + "Ipiaçu, Minas Gerais": 3131406, + "Iraí de Minas, Minas Gerais": 3131604, + "Ituiutaba, Minas Gerais": 3134202, + "Monte Alegre de Minas, Minas Gerais": 3142809, + "Monte Carmelo, Minas Gerais": 3143104, + "Prata, Minas Gerais": 3152808, + "Romaria, Minas Gerais": 3156403, + "Santa Vitória, Minas Gerais": 3159803, + "Tupaciguara, Minas Gerais": 3169604, + "Uberlândia, Minas Gerais": 3170206, + "Afonso Cláudio, Espírito Santo": 3200102, + "Águia Branca, Espírito Santo": 3200136, + "Água Doce do Norte, Espírito Santo": 3200169, + "Alegre, Espírito Santo": 3200201, + "Alfredo Chaves, Espírito Santo": 3200300, + "Alto Rio Novo, Espírito Santo": 3200359, + "Anchieta, Espírito Santo": 3200409, + "Apiacá, Espírito Santo": 3200508, + "Aracruz, Espírito Santo": 3200607, + "Atilio Vivacqua, Espírito Santo": 3200706, + "Baixo Guandu, Espírito Santo": 3200805, + "Barra de São Francisco, Espírito Santo": 3200904, + "Boa Esperança, Espírito Santo": 3201001, + "Bom Jesus do Norte, Espírito Santo": 3201100, + "Brejetuba, Espírito Santo": 3201159, + "Cachoeiro de Itapemirim, Espírito Santo": 3201209, + "Cariacica, Espírito Santo": 3201308, + "Castelo, Espírito Santo": 3201407, + "Colatina, Espírito Santo": 3201506, + "Conceição da Barra, Espírito Santo": 3201605, + "Conceição do Castelo, Espírito Santo": 3201704, + "Divino de São Lourenço, Espírito Santo": 3201803, + "Domingos Martins, Espírito Santo": 3201902, + "Dores do Rio Preto, Espírito Santo": 3202009, + "Ecoporanga, Espírito Santo": 3202108, + "Fundão, Espírito Santo": 3202207, + "Governador Lindenberg, Espírito Santo": 3202256, + "Guaçuí, Espírito Santo": 3202306, + "Guarapari, Espírito Santo": 3202405, + "Ibatiba, Espírito Santo": 3202454, + "Ibiraçu, Espírito Santo": 3202504, + "Ibitirama, Espírito Santo": 3202553, + "Iconha, Espírito Santo": 3202603, + "Irupi, Espírito Santo": 3202652, + "Itaguaçu, Espírito Santo": 3202702, + "Itapemirim, Espírito Santo": 3202801, + "Itarana, Espírito Santo": 3202900, + "Iúna, Espírito Santo": 3203007, + "Jaguaré, Espírito Santo": 3203056, + "Jerônimo Monteiro, Espírito Santo": 3203106, + "João Neiva, Espírito Santo": 3203130, + "Laranja da Terra, Espírito Santo": 3203163, + "Linhares, Espírito Santo": 3203205, + "Mantenópolis, Espírito Santo": 3203304, + "Marataízes, Espírito Santo": 3203320, + "Marechal Floriano, Espírito Santo": 3203346, + "Marilândia, Espírito Santo": 3203353, + "Mimoso do Sul, Espírito Santo": 3203403, + "Montanha, Espírito Santo": 3203502, + "Mucurici, Espírito Santo": 3203601, + "Muniz Freire, Espírito Santo": 3203700, + "Muqui, Espírito Santo": 3203809, + "Nova Venécia, Espírito Santo": 3203908, + "Pancas, Espírito Santo": 3204005, + "Pedro Canário, Espírito Santo": 3204054, + "Pinheiros, Espírito Santo": 3204104, + "Piúma, Espírito Santo": 3204203, + "Ponto Belo, Espírito Santo": 3204252, + "Presidente Kennedy, Espírito Santo": 3204302, + "Rio Bananal, Espírito Santo": 3204351, + "Rio Novo do Sul, Espírito Santo": 3204401, + "Santa Leopoldina, Espírito Santo": 3204500, + "Santa Maria de Jetibá, Espírito Santo": 3204559, + "Santa Teresa, Espírito Santo": 3204609, + "São Domingos do Norte, Espírito Santo": 3204658, + "São Gabriel da Palha, Espírito Santo": 3204708, + "São José do Calçado, Espírito Santo": 3204807, + "São Mateus, Espírito Santo": 3204906, + "São Roque do Canaã, Espírito Santo": 3204955, + "Serra, Espírito Santo": 3205002, + "Sooretama, Espírito Santo": 3205010, + "Vargem Alta, Espírito Santo": 3205036, + "Venda Nova do Imigrante, Espírito Santo": 3205069, + "Viana, Espírito Santo": 3205101, + "Vila Pavão, Espírito Santo": 3205150, + "Vila Valério, Espírito Santo": 3205176, + "Vila Velha, Espírito Santo": 3205200, + "Vitória, Espírito Santo": 3205309, + "Angra dos Reis, Rio de Janeiro": 3300100, + "Aperibé, Rio de Janeiro": 3300159, + "Araruama, Rio de Janeiro": 3300209, + "Areal, Rio de Janeiro": 3300225, + "Armação dos Búzios, Rio de Janeiro": 3300233, + "Arraial do Cabo, Rio de Janeiro": 3300258, + "Barra do Piraí, Rio de Janeiro": 3300308, + "Barra Mansa, Rio de Janeiro": 3300407, + "Belford Roxo, Rio de Janeiro": 3300456, + "Bom Jardim, Rio de Janeiro": 3300506, + "Bom Jesus do Itabapoana, Rio de Janeiro": 3300605, + "Cabo Frio, Rio de Janeiro": 3300704, + "Cachoeiras de Macacu, Rio de Janeiro": 3300803, + "Cambuci, Rio de Janeiro": 3300902, + "Carapebus, Rio de Janeiro": 3300936, + "Comendador Levy Gasparian, Rio de Janeiro": 3300951, + "Campos dos Goytacazes, Rio de Janeiro": 3301009, + "Cantagalo, Rio de Janeiro": 3301108, + "Cardoso Moreira, Rio de Janeiro": 3301157, + "Carmo, Rio de Janeiro": 3301207, + "Casimiro de Abreu, Rio de Janeiro": 3301306, + "Conceição de Macabu, Rio de Janeiro": 3301405, + "Cordeiro, Rio de Janeiro": 3301504, + "Duas Barras, Rio de Janeiro": 3301603, + "Duque de Caxias, Rio de Janeiro": 3301702, + "Engenheiro Paulo de Frontin, Rio de Janeiro": 3301801, + "Guapimirim, Rio de Janeiro": 3301850, + "Iguaba Grande, Rio de Janeiro": 3301876, + "Itaboraí, Rio de Janeiro": 3301900, + "Itaguaí, Rio de Janeiro": 3302007, + "Italva, Rio de Janeiro": 3302056, + "Itaocara, Rio de Janeiro": 3302106, + "Itaperuna, Rio de Janeiro": 3302205, + "Itatiaia, Rio de Janeiro": 3302254, + "Japeri, Rio de Janeiro": 3302270, + "Laje do Muriaé, Rio de Janeiro": 3302304, + "Macaé, Rio de Janeiro": 3302403, + "Macuco, Rio de Janeiro": 3302452, + "Magé, Rio de Janeiro": 3302502, + "Mangaratiba, Rio de Janeiro": 3302601, + "Maricá, Rio de Janeiro": 3302700, + "Mendes, Rio de Janeiro": 3302809, + "Mesquita, Rio de Janeiro": 3302858, + "Miguel Pereira, Rio de Janeiro": 3302908, + "Miracema, Rio de Janeiro": 3303005, + "Natividade, Rio de Janeiro": 3303104, + "Nilópolis, Rio de Janeiro": 3303203, + "Niterói, Rio de Janeiro": 3303302, + "Nova Friburgo, Rio de Janeiro": 3303401, + "Nova Iguaçu, Rio de Janeiro": 3303500, + "Paracambi, Rio de Janeiro": 3303609, + "Paraíba do Sul, Rio de Janeiro": 3303708, + "Paraty, Rio de Janeiro": 3303807, + "Paty do Alferes, Rio de Janeiro": 3303856, + "Petrópolis, Rio de Janeiro": 3303906, + "Pinheiral, Rio de Janeiro": 3303955, + "Piraí, Rio de Janeiro": 3304003, + "Porciúncula, Rio de Janeiro": 3304102, + "Porto Real, Rio de Janeiro": 3304110, + "Quatis, Rio de Janeiro": 3304128, + "Queimados, Rio de Janeiro": 3304144, + "Quissamã, Rio de Janeiro": 3304151, + "Resende, Rio de Janeiro": 3304201, + "Rio Bonito, Rio de Janeiro": 3304300, + "Rio Claro, Rio de Janeiro": 3304409, + "Rio das Flores, Rio de Janeiro": 3304508, + "Rio das Ostras, Rio de Janeiro": 3304524, + "Rio de Janeiro, Rio de Janeiro": 3304557, + "Santa Maria Madalena, Rio de Janeiro": 3304607, + "Santo Antônio de Pádua, Rio de Janeiro": 3304706, + "São Francisco de Itabapoana, Rio de Janeiro": 3304755, + "São Fidélis, Rio de Janeiro": 3304805, + "São Gonçalo, Rio de Janeiro": 3304904, + "São João da Barra, Rio de Janeiro": 3305000, + "São João de Meriti, Rio de Janeiro": 3305109, + "São José de Ubá, Rio de Janeiro": 3305133, + "São José do Vale do Rio Preto, Rio de Janeiro": 3305158, + "São Pedro da Aldeia, Rio de Janeiro": 3305208, + "São Sebastião do Alto, Rio de Janeiro": 3305307, + "Sapucaia, Rio de Janeiro": 3305406, + "Saquarema, Rio de Janeiro": 3305505, + "Seropédica, Rio de Janeiro": 3305554, + "Silva Jardim, Rio de Janeiro": 3305604, + "Sumidouro, Rio de Janeiro": 3305703, + "Tanguá, Rio de Janeiro": 3305752, + "Teresópolis, Rio de Janeiro": 3305802, + "Trajano de Moraes, Rio de Janeiro": 3305901, + "Três Rios, Rio de Janeiro": 3306008, + "Valença, Rio de Janeiro": 3306107, + "Varre-Sai, Rio de Janeiro": 3306156, + "Vassouras, Rio de Janeiro": 3306206, + "Volta Redonda, Rio de Janeiro": 3306305, + "Américo Brasiliense, São Paulo": 3501707, + "Araraquara, São Paulo": 3503208, + "Boa Esperança do Sul, São Paulo": 3506706, + "Borborema, São Paulo": 3507407, + "Cândido Rodrigues, São Paulo": 3510104, + "Descalvado, São Paulo": 3513702, + "Dobrada, São Paulo": 3514007, + "Dourado, São Paulo": 3514304, + "Gavião Peixoto, São Paulo": 3516853, + "Ibaté, São Paulo": 3519303, + "Ibitinga, São Paulo": 3519600, + "Itápolis, São Paulo": 3522703, + "Itirapina, São Paulo": 3523602, + "Matão, São Paulo": 3529302, + "Motuca, São Paulo": 3532058, + "Nova Europa, São Paulo": 3532900, + "Pirassununga, São Paulo": 3539301, + "Porto Ferreira, São Paulo": 3540705, + "Ribeirão Bonito, São Paulo": 3542909, + "Rincão, São Paulo": 3543709, + "Santa Lúcia, São Paulo": 3546900, + "Santa Rita do Passa Quatro, São Paulo": 3547502, + "São Carlos, São Paulo": 3548906, + "Tabatinga, São Paulo": 3552700, + "Taquaritinga, São Paulo": 3553708, + "Trabiju, São Paulo": 3554755, + "Arapoti, Paraná": 4101606, + "Boa Ventura de São Roque, Paraná": 4103040, + "Campina do Simão, Paraná": 4103958, + "Candói, Paraná": 4104428, + "Cantagalo, Paraná": 4104451, + "Carambeí, Paraná": 4104659, + "Castro, Paraná": 4104907, + "Curiúva, Paraná": 4107009, + "Fernandes Pinheiro, Paraná": 4107736, + "Foz do Jordão, Paraná": 4108452, + "Goioxim, Paraná": 4108650, + "Guamiranga, Paraná": 4108957, + "Guarapuava, Paraná": 4109401, + "Imbaú, Paraná": 4110078, + "Imbituva, Paraná": 4110102, + "Inácio Martins, Paraná": 4110201, + "Ipiranga, Paraná": 4110508, + "Irati, Paraná": 4110706, + "Ivaí, Paraná": 4111407, + "Jaguariaíva, Paraná": 4112009, + "Laranjal, Paraná": 4113254, + "Mallet, Paraná": 4113908, + "Mato Rico, Paraná": 4115739, + "Nova Tebas, Paraná": 4117271, + "Ortigueira, Paraná": 4117305, + "Palmeira, Paraná": 4117701, + "Palmital, Paraná": 4117800, + "Pinhão, Paraná": 4119301, + "Piraí do Sul, Paraná": 4119400, + "Pitanga, Paraná": 4119608, + "Ponta Grossa, Paraná": 4119905, + "Porto Amazonas, Paraná": 4120101, + "Prudentópolis, Paraná": 4120606, + "Rebouças, Paraná": 4121505, + "Reserva, Paraná": 4121703, + "Reserva do Iguaçu, Paraná": 4121752, + "Rio Azul, Paraná": 4122008, + "Santa Maria do Oeste, Paraná": 4123857, + "São João do Triunfo, Paraná": 4125100, + "Sengés, Paraná": 4126306, + "Teixeira Soares, Paraná": 4127007, + "Telêmaco Borba, Paraná": 4127106, + "Tibagi, Paraná": 4127502, + "Turvo, Paraná": 4127965, + "Ventania, Paraná": 4128534, + "Águas Mornas, Santa Catarina": 4200606, + "Alfredo Wagner, Santa Catarina": 4200705, + "Angelina, Santa Catarina": 4200903, + "Anita Garibaldi, Santa Catarina": 4201000, + "Anitápolis, Santa Catarina": 4201109, + "Antônio Carlos, Santa Catarina": 4201208, + "Araquari, Santa Catarina": 4201307, + "Arroio Trinta, Santa Catarina": 4201604, + "Balneário Barra do Sul, Santa Catarina": 4202057, + "Bela Vista do Toldo, Santa Catarina": 4202131, + "Biguaçu, Santa Catarina": 4202305, + "Bocaina do Sul, Santa Catarina": 4202438, + "Bom Jardim da Serra, Santa Catarina": 4202503, + "Bom Retiro, Santa Catarina": 4202602, + "Brunópolis, Santa Catarina": 4202875, + "Caçador, Santa Catarina": 4203006, + "Calmon, Santa Catarina": 4203154, + "Capão Alto, Santa Catarina": 4203253, + "Campo Alegre, Santa Catarina": 4203303, + "Campo Belo do Sul, Santa Catarina": 4203402, + "Canoinhas, Santa Catarina": 4203808, + "Cerro Negro, Santa Catarina": 4204178, + "Corupá, Santa Catarina": 4204509, + "Correia Pinto, Santa Catarina": 4204558, + "Curitibanos, Santa Catarina": 4204806, + "Florianópolis, Santa Catarina": 4205407, + "Fraiburgo, Santa Catarina": 4205506, + "Frei Rogério, Santa Catarina": 4205555, + "Garopaba, Santa Catarina": 4205704, + "Garuva, Santa Catarina": 4205803, + "Governador Celso Ramos, Santa Catarina": 4206009, + "Guaramirim, Santa Catarina": 4206504, + "Ibiam, Santa Catarina": 4206751, + "Imbituba, Santa Catarina": 4207304, + "Iomerê, Santa Catarina": 4207577, + "Irineópolis, Santa Catarina": 4207908, + "Itaiópolis, Santa Catarina": 4208104, + "Itapoá, Santa Catarina": 4208450, + "Jaraguá do Sul, Santa Catarina": 4208906, + "Joinville, Santa Catarina": 4209102, + "Lages, Santa Catarina": 4209300, + "Lebon Régis, Santa Catarina": 4209706, + "Macieira, Santa Catarina": 4210050, + "Mafra, Santa Catarina": 4210100, + "Major Vieira, Santa Catarina": 4210308, + "Massaranduba, Santa Catarina": 4210605, + "Matos Costa, Santa Catarina": 4210704, + "Monte Carlo, Santa Catarina": 4211058, + "Monte Castelo, Santa Catarina": 4211108, + "Otacílio Costa, Santa Catarina": 4211751, + "Painel, Santa Catarina": 4211892, + "Palhoça, Santa Catarina": 4211900, + "Palmeira, Santa Catarina": 4212056, + "Papanduva, Santa Catarina": 4212205, + "Paulo Lopes, Santa Catarina": 4212304, + "Pinheiro Preto, Santa Catarina": 4213005, + "Ponte Alta, Santa Catarina": 4213302, + "Ponte Alta do Norte, Santa Catarina": 4213351, + "Porto União, Santa Catarina": 4213609, + "Rancho Queimado, Santa Catarina": 4214300, + "Rio das Antas, Santa Catarina": 4214409, + "Rio Negrinho, Santa Catarina": 4215000, + "Rio Rufino, Santa Catarina": 4215059, + "Salto Veloso, Santa Catarina": 4215406, + "Santa Cecília, Santa Catarina": 4215505, + "Santo Amaro da Imperatriz, Santa Catarina": 4215703, + "São Bento do Sul, Santa Catarina": 4215802, + "São Bonifácio, Santa Catarina": 4215901, + "São Cristovão do Sul, Santa Catarina": 4216057, + "São Francisco do Sul, Santa Catarina": 4216206, + "São João do Itaperiú, Santa Catarina": 4216354, + "São Joaquim, Santa Catarina": 4216503, + "São José, Santa Catarina": 4216602, + "São José do Cerrito, Santa Catarina": 4216800, + "São Pedro de Alcântara, Santa Catarina": 4217253, + "Schroeder, Santa Catarina": 4217402, + "Tangará, Santa Catarina": 4217907, + "Timbó Grande, Santa Catarina": 4218251, + "Três Barras, Santa Catarina": 4218301, + "Urubici, Santa Catarina": 4218905, + "Urupema, Santa Catarina": 4218954, + "Videira, Santa Catarina": 4219309, + "Aceguá, Rio Grande do Sul": 4300034, + "Alegrete, Rio Grande do Sul": 4300406, + "Arroio do Padre, Rio Grande do Sul": 4301073, + "Arroio Grande, Rio Grande do Sul": 4301305, + "Bagé, Rio Grande do Sul": 4301602, + "Barra do Quaraí, Rio Grande do Sul": 4301875, + "Candiota, Rio Grande do Sul": 4304358, + "Canguçu, Rio Grande do Sul": 4304507, + "Capão do Leão, Rio Grande do Sul": 4304663, + "Cerrito, Rio Grande do Sul": 4305124, + "Chuí, Rio Grande do Sul": 4305439, + "Dom Pedrito, Rio Grande do Sul": 4306601, + "Herval, Rio Grande do Sul": 4307104, + "Hulha Negra, Rio Grande do Sul": 4309654, + "Itaqui, Rio Grande do Sul": 4310603, + "Jaguarão, Rio Grande do Sul": 4311007, + "Maçambará, Rio Grande do Sul": 4311718, + "Manoel Viana, Rio Grande do Sul": 4311759, + "Morro Redondo, Rio Grande do Sul": 4312450, + "Pedras Altas, Rio Grande do Sul": 4314175, + "Pedro Osório, Rio Grande do Sul": 4314209, + "Pelotas, Rio Grande do Sul": 4314407, + "Pinheiro Machado, Rio Grande do Sul": 4314506, + "Piratini, Rio Grande do Sul": 4314605, + "Quaraí, Rio Grande do Sul": 4315305, + "Rio Grande, Rio Grande do Sul": 4315602, + "Rosário do Sul, Rio Grande do Sul": 4316402, + "Sant'Ana do Livramento, Rio Grande do Sul": 4317103, + "Santa Vitória do Palmar, Rio Grande do Sul": 4317301, + "São Borja, Rio Grande do Sul": 4318002, + "São José do Norte, Rio Grande do Sul": 4318507, + "São Lourenço do Sul, Rio Grande do Sul": 4318804, + "Turuçu, Rio Grande do Sul": 4322327, + "Uruguaiana, Rio Grande do Sul": 4322400, + "Anastácio, Mato Grosso do Sul": 5000708, + "Aquidauana, Mato Grosso do Sul": 5001102, + "Bela Vista, Mato Grosso do Sul": 5002100, + "Bodoquena, Mato Grosso do Sul": 5002159, + "Bonito, Mato Grosso do Sul": 5002209, + "Caracol, Mato Grosso do Sul": 5002803, + "Corumbá, Mato Grosso do Sul": 5003207, + "Guia Lopes da Laguna, Mato Grosso do Sul": 5004106, + "Jardim, Mato Grosso do Sul": 5005004, + "Ladário, Mato Grosso do Sul": 5005202, + "Miranda, Mato Grosso do Sul": 5005608, + "Nioaque, Mato Grosso do Sul": 5005806, + "Porto Murtinho, Mato Grosso do Sul": 5006903, + "Alto Araguaia, Mato Grosso": 5100300, + "Alto Garças, Mato Grosso": 5100409, + "Alto Taquari, Mato Grosso": 5100607, + "Araguainha, Mato Grosso": 5101209, + "Araputanga, Mato Grosso": 5101258, + "Cáceres, Mato Grosso": 5102504, + "Campos de Júlio, Mato Grosso": 5102686, + "Comodoro, Mato Grosso": 5103304, + "Conquista D'Oeste, Mato Grosso": 5103361, + "Curvelândia, Mato Grosso": 5103437, + "Dom Aquino, Mato Grosso": 5103601, + "Figueirópolis D'Oeste, Mato Grosso": 5103809, + "Glória D'Oeste, Mato Grosso": 5103957, + "Guiratinga, Mato Grosso": 5104203, + "Indiavaí, Mato Grosso": 5104500, + "Itiquira, Mato Grosso": 5104609, + "Jaciara, Mato Grosso": 5104807, + "Jauru, Mato Grosso": 5105002, + "Juscimeira, Mato Grosso": 5105200, + "Lambari D'Oeste, Mato Grosso": 5105234, + "Vila Bela da Santíssima Trindade, Mato Grosso": 5105507, + "Mirassol d'Oeste, Mato Grosso": 5105622, + "Nova Lacerda, Mato Grosso": 5106182, + "Paranatinga, Mato Grosso": 5106307, + "Pedra Preta, Mato Grosso": 5106372, + "Pontes e Lacerda, Mato Grosso": 5106752, + "Porto Esperidião, Mato Grosso": 5106828, + "Poxoréo, Mato Grosso": 5107008, + "Primavera do Leste, Mato Grosso": 5107040, + "São José dos Quatro Marcos, Mato Grosso": 5107107, + "Reserva do Cabaçal, Mato Grosso": 5107156, + "Rio Branco, Mato Grosso": 5107206, + "São José do Povo, Mato Grosso": 5107297, + "São Pedro da Cipa, Mato Grosso": 5107404, + "Rondonópolis, Mato Grosso": 5107602, + "Salto do Céu, Mato Grosso": 5107750, + "Santo Antônio do Leste, Mato Grosso": 5107792, + "Tesouro, Mato Grosso": 5108105, + "Vale de São Domingos, Mato Grosso": 5108352, + "Água Limpa, Goiás": 5200209, + "Aloândia, Goiás": 5200506, + "Bom Jesus de Goiás, Goiás": 5203500, + "Buriti Alegre, Goiás": 5203906, + "Cachoeira Dourada, Goiás": 5204250, + "Caldas Novas, Goiás": 5204508, + "Corumbaíba, Goiás": 5205901, + "Cristianópolis, Goiás": 5206305, + "Cromínia, Goiás": 5206503, + "Edealina, Goiás": 5207352, + "Goiatuba, Goiás": 5209101, + "Itumbiara, Goiás": 5211503, + "Joviânia, Goiás": 5212105, + "Mairipotaba, Goiás": 5212600, + "Marzagão, Goiás": 5212907, + "Morrinhos, Goiás": 5213806, + "Panamá, Goiás": 5216007, + "Piracanjuba, Goiás": 5217104, + "Pontalina, Goiás": 5217708, + "Professor Jamil, Goiás": 5218391, + "Rio Quente, Goiás": 5218789, + "Vicentinópolis, Goiás": 5222054, + "Brasília, Distrito Federal": 5300108, + "Alta Floresta D'Oeste, Rondônia": 1100015, + "Cabixi, Rondônia": 1100031, + "Cacoal, Rondônia": 1100049, + "Cerejeiras, Rondônia": 1100056, + "Colorado do Oeste, Rondônia": 1100064, + "Corumbiara, Rondônia": 1100072, + "Costa Marques, Rondônia": 1100080, + "Espigão D'Oeste, Rondônia": 1100098, + "Ji-Paraná, Rondônia": 1100122, + "Nova Brasilândia D'Oeste, Rondônia": 1100148, + "Ouro Preto do Oeste, Rondônia": 1100155, + "Pimenta Bueno, Rondônia": 1100189, + "Presidente Médici, Rondônia": 1100254, + "Rolim de Moura, Rondônia": 1100288, + "Santa Luzia D'Oeste, Rondônia": 1100296, + "Vilhena, Rondônia": 1100304, + "São Miguel do Guaporé, Rondônia": 1100320, + "Alvorada D'Oeste, Rondônia": 1100346, + "Alto Alegre dos Parecis, Rondônia": 1100379, + "Novo Horizonte do Oeste, Rondônia": 1100502, + "Castanheiras, Rondônia": 1100908, + "Chupinguaia, Rondônia": 1100924, + "Ministro Andreazza, Rondônia": 1101203, + "Mirante da Serra, Rondônia": 1101302, + "Nova União, Rondônia": 1101435, + "Parecis, Rondônia": 1101450, + "Pimenteiras do Oeste, Rondônia": 1101468, + "Primavera de Rondônia, Rondônia": 1101476, + "São Felipe D'Oeste, Rondônia": 1101484, + "São Francisco do Guaporé, Rondônia": 1101492, + "Seringueiras, Rondônia": 1101500, + "Teixeirópolis, Rondônia": 1101559, + "Urupá, Rondônia": 1101708, + "Vale do Paraíso, Rondônia": 1101807, + "Augusto Corrêa, Pará": 1500909, + "Aurora do Pará, Pará": 1500958, + "Bonito, Pará": 1501600, + "Bragança, Pará": 1501709, + "Cachoeira do Piriá, Pará": 1501956, + "Capanema, Pará": 1502202, + "Capitão Poço, Pará": 1502301, + "Castanhal, Pará": 1502400, + "Curuçá, Pará": 1502905, + "Dom Eliseu, Pará": 1502939, + "Garrafão do Norte, Pará": 1503077, + "Igarapé-Açu, Pará": 1503200, + "Inhangapi, Pará": 1503408, + "Ipixuna do Pará, Pará": 1503457, + "Irituia, Pará": 1503507, + "Mãe do Rio, Pará": 1504059, + "Magalhães Barata, Pará": 1504109, + "Maracanã, Pará": 1504307, + "Marapanim, Pará": 1504406, + "Nova Esperança do Piriá, Pará": 1504950, + "Nova Timboteua, Pará": 1505007, + "Ourém, Pará": 1505403, + "Paragominas, Pará": 1505502, + "Peixe-Boi, Pará": 1505601, + "Primavera, Pará": 1506104, + "Quatipuru, Pará": 1506112, + "Salinópolis, Pará": 1506203, + "Santa Luzia do Pará, Pará": 1506559, + "Santa Maria do Pará, Pará": 1506609, + "Santarém Novo, Pará": 1506906, + "São Domingos do Capim, Pará": 1507201, + "São Francisco do Pará, Pará": 1507409, + "São João da Ponta, Pará": 1507466, + "São João de Pirabas, Pará": 1507474, + "São Miguel do Guamá, Pará": 1507607, + "Terra Alta, Pará": 1507961, + "Tracuateua, Pará": 1508035, + "Ulianópolis, Pará": 1508126, + "Viseu, Pará": 1508308, + "Abreulândia, Tocantins": 1700251, + "Aparecida do Rio Negro, Tocantins": 1701101, + "Araguacema, Tocantins": 1701903, + "Barrolândia, Tocantins": 1703107, + "Brejinho de Nazaré, Tocantins": 1703701, + "Caseara, Tocantins": 1703909, + "Chapada de Areia, Tocantins": 1704600, + "Chapada da Natividade, Tocantins": 1705102, + "Cristalândia, Tocantins": 1706100, + "Divinópolis do Tocantins, Tocantins": 1707108, + "Dois Irmãos do Tocantins, Tocantins": 1707207, + "Fátima, Tocantins": 1707553, + "Ipueiras, Tocantins": 1709807, + "Lagoa da Confusão, Tocantins": 1711902, + "Lagoa do Tocantins, Tocantins": 1711951, + "Lajeado, Tocantins": 1712009, + "Lizarda, Tocantins": 1712405, + "Marianópolis do Tocantins, Tocantins": 1712504, + "Mateiros, Tocantins": 1712702, + "Miracema do Tocantins, Tocantins": 1713205, + "Miranorte, Tocantins": 1713304, + "Monte do Carmo, Tocantins": 1713601, + "Monte Santo do Tocantins, Tocantins": 1713700, + "Natividade, Tocantins": 1714203, + "Nova Rosalândia, Tocantins": 1715002, + "Novo Acordo, Tocantins": 1715101, + "Oliveira de Fátima, Tocantins": 1715507, + "Paraíso do Tocantins, Tocantins": 1716109, + "Pindorama do Tocantins, Tocantins": 1717008, + "Pium, Tocantins": 1717503, + "Ponte Alta do Tocantins, Tocantins": 1717909, + "Porto Nacional, Tocantins": 1718204, + "Pugmil, Tocantins": 1718451, + "Rio dos Bois, Tocantins": 1718709, + "Rio Sono, Tocantins": 1718758, + "Santa Rita do Tocantins, Tocantins": 1718899, + "Santa Rosa do Tocantins, Tocantins": 1718907, + "Santa Tereza do Tocantins, Tocantins": 1719004, + "São Félix do Tocantins, Tocantins": 1720150, + "Silvanópolis, Tocantins": 1720655, + "Palmas, Tocantins": 1721000, + "Tocantínia, Tocantins": 1721109, + "Aguiarnópolis, Tocantins": 1700301, + "Ananás, Tocantins": 1701002, + "Angico, Tocantins": 1701051, + "Aragominas, Tocantins": 1701309, + "Araguaína, Tocantins": 1702109, + "Araguanã, Tocantins": 1702158, + "Araguatins, Tocantins": 1702208, + "Arapoema, Tocantins": 1702307, + "Augustinópolis, Tocantins": 1702554, + "Axixá do Tocantins, Tocantins": 1702901, + "Babaçulândia, Tocantins": 1703008, + "Bandeirantes do Tocantins, Tocantins": 1703057, + "Barra do Ouro, Tocantins": 1703073, + "Bernardo Sayão, Tocantins": 1703206, + "Bom Jesus do Tocantins, Tocantins": 1703305, + "Brasilândia do Tocantins, Tocantins": 1703602, + "Buriti do Tocantins, Tocantins": 1703800, + "Cachoeirinha, Tocantins": 1703826, + "Campos Lindos, Tocantins": 1703842, + "Carmolândia, Tocantins": 1703883, + "Carrasco Bonito, Tocantins": 1703891, + "Centenário, Tocantins": 1704105, + "Colinas do Tocantins, Tocantins": 1705508, + "Couto Magalhães, Tocantins": 1706001, + "Darcinópolis, Tocantins": 1706506, + "Esperantina, Tocantins": 1707405, + "Filadélfia, Tocantins": 1707702, + "Fortaleza do Tabocão, Tocantins": 1708254, + "Goianorte, Tocantins": 1708304, + "Goiatins, Tocantins": 1709005, + "Guaraí, Tocantins": 1709302, + "Itacajá, Tocantins": 1710508, + "Itaguatins, Tocantins": 1710706, + "Itapiratins, Tocantins": 1710904, + "Itaporã do Tocantins, Tocantins": 1711100, + "Juarina, Tocantins": 1711803, + "Luzinópolis, Tocantins": 1712454, + "Maurilândia do Tocantins, Tocantins": 1712801, + "Palmeiras do Tocantins, Tocantins": 1713809, + "Muricilândia, Tocantins": 1713957, + "Nazaré, Tocantins": 1714302, + "Nova Olinda, Tocantins": 1714880, + "Palmeirante, Tocantins": 1715705, + "Pau D'Arco, Tocantins": 1716307, + "Pedro Afonso, Tocantins": 1716505, + "Pequizeiro, Tocantins": 1716653, + "Colméia, Tocantins": 1716703, + "Piraquê, Tocantins": 1717206, + "Praia Norte, Tocantins": 1718303, + "Presidente Kennedy, Tocantins": 1718402, + "Recursolândia, Tocantins": 1718501, + "Riachinho, Tocantins": 1718550, + "Sampaio, Tocantins": 1718808, + "Santa Fé do Araguaia, Tocantins": 1718865, + "Santa Maria do Tocantins, Tocantins": 1718881, + "Santa Terezinha do Tocantins, Tocantins": 1720002, + "São Bento do Tocantins, Tocantins": 1720101, + "São Miguel do Tocantins, Tocantins": 1720200, + "São Sebastião do Tocantins, Tocantins": 1720309, + "Sítio Novo do Tocantins, Tocantins": 1720804, + "Tocantinópolis, Tocantins": 1721208, + "Tupirama, Tocantins": 1721257, + "Tupiratins, Tocantins": 1721307, + "Wanderlândia, Tocantins": 1722081, + "Xambioá, Tocantins": 1722107, + "Aliança do Tocantins, Tocantins": 1700350, + "Almas, Tocantins": 1700400, + "Alvorada, Tocantins": 1700707, + "Araguaçu, Tocantins": 1702000, + "Arraias, Tocantins": 1702406, + "Aurora do Tocantins, Tocantins": 1702703, + "Cariri do Tocantins, Tocantins": 1703867, + "Combinado, Tocantins": 1705557, + "Conceição do Tocantins, Tocantins": 1705607, + "Crixás do Tocantins, Tocantins": 1706258, + "Dianópolis, Tocantins": 1707009, + "Dueré, Tocantins": 1707306, + "Figueirópolis, Tocantins": 1707652, + "Formoso do Araguaia, Tocantins": 1708205, + "Gurupi, Tocantins": 1709500, + "Jaú do Tocantins, Tocantins": 1711506, + "Lavandeira, Tocantins": 1712157, + "Novo Alegre, Tocantins": 1715150, + "Novo Jardim, Tocantins": 1715259, + "Palmeirópolis, Tocantins": 1715754, + "Paranã, Tocantins": 1716208, + "Peixe, Tocantins": 1716604, + "Ponte Alta do Bom Jesus, Tocantins": 1717800, + "Porto Alegre do Tocantins, Tocantins": 1718006, + "Rio da Conceição, Tocantins": 1718659, + "Sandolândia, Tocantins": 1718840, + "São Salvador do Tocantins, Tocantins": 1720259, + "São Valério, Tocantins": 1720499, + "Sucupira, Tocantins": 1720853, + "Taguatinga, Tocantins": 1720903, + "Taipas do Tocantins, Tocantins": 1720937, + "Talismã, Tocantins": 1720978, + "Água Doce do Maranhão, Maranhão": 2100154, + "Alcântara, Maranhão": 2100204, + "Anajatuba, Maranhão": 2100709, + "Anapurus, Maranhão": 2100808, + "Apicum-Açu, Maranhão": 2100832, + "Araioses, Maranhão": 2100907, + "Arari, Maranhão": 2101004, + "Axixá, Maranhão": 2101103, + "Bacabeira, Maranhão": 2101251, + "Bacuri, Maranhão": 2101301, + "Bacurituba, Maranhão": 2101350, + "Barreirinhas, Maranhão": 2101707, + "Belágua, Maranhão": 2101731, + "Bequimão, Maranhão": 2101905, + "Brejo, Maranhão": 2102101, + "Buriti, Maranhão": 2102200, + "Cachoeira Grande, Maranhão": 2102374, + "Cajapió, Maranhão": 2102408, + "Cajari, Maranhão": 2102507, + "Cantanhede, Maranhão": 2102705, + "Cedral, Maranhão": 2103109, + "Central do Maranhão, Maranhão": 2103125, + "Chapadinha, Maranhão": 2103208, + "Cururupu, Maranhão": 2103703, + "Guimarães, Maranhão": 2104909, + "Humberto de Campos, Maranhão": 2105005, + "Icatu, Maranhão": 2105104, + "Itapecuru Mirim, Maranhão": 2105401, + "Magalhães de Almeida, Maranhão": 2106300, + "Mata Roma, Maranhão": 2106409, + "Matinha, Maranhão": 2106508, + "Matões do Norte, Maranhão": 2106631, + "Milagres do Maranhão, Maranhão": 2106672, + "Miranda do Norte, Maranhão": 2106755, + "Mirinzal, Maranhão": 2106805, + "Morros, Maranhão": 2107100, + "Nina Rodrigues, Maranhão": 2107209, + "Olinda Nova do Maranhão, Maranhão": 2107456, + "Paço do Lumiar, Maranhão": 2107506, + "Palmeirândia, Maranhão": 2107605, + "Paulino Neves, Maranhão": 2108058, + "Pedro do Rosário, Maranhão": 2108256, + "Penalva, Maranhão": 2108306, + "Peri Mirim, Maranhão": 2108405, + "Pinheiro, Maranhão": 2108603, + "Pirapemas, Maranhão": 2108801, + "Porto Rico do Maranhão, Maranhão": 2109056, + "Presidente Juscelino, Maranhão": 2109205, + "Presidente Sarney, Maranhão": 2109270, + "Presidente Vargas, Maranhão": 2109304, + "Primeira Cruz, Maranhão": 2109403, + "Raposa, Maranhão": 2109452, + "Rosário, Maranhão": 2109601, + "Santa Helena, Maranhão": 2109809, + "Santa Quitéria do Maranhão, Maranhão": 2110104, + "Santa Rita, Maranhão": 2110203, + "Santana do Maranhão, Maranhão": 2110237, + "Santo Amaro do Maranhão, Maranhão": 2110278, + "São Benedito do Rio Preto, Maranhão": 2110401, + "São Bento, Maranhão": 2110500, + "São Bernardo, Maranhão": 2110609, + "São João Batista, Maranhão": 2111003, + "São José de Ribamar, Maranhão": 2111201, + "São Luís, Maranhão": 2111300, + "São Vicente Ferrer, Maranhão": 2111706, + "Serrano do Maranhão, Maranhão": 2111789, + "Turiaçu, Maranhão": 2112407, + "Turilândia, Maranhão": 2112456, + "Tutóia, Maranhão": 2112506, + "Urbano Santos, Maranhão": 2112605, + "Vargem Grande, Maranhão": 2112704, + "Viana, Maranhão": 2112803, + "Vitória do Mearim, Maranhão": 2112902, + "Altamira do Maranhão, Maranhão": 2100402, + "Alto Alegre do Maranhão, Maranhão": 2100436, + "Alto Alegre do Pindaré, Maranhão": 2100477, + "Amapá do Maranhão, Maranhão": 2100550, + "Araguanã, Maranhão": 2100873, + "Bacabal, Maranhão": 2101202, + "Bela Vista do Maranhão, Maranhão": 2101772, + "Bernardo do Mearim, Maranhão": 2101939, + "Boa Vista do Gurupi, Maranhão": 2101970, + "Bom Jardim, Maranhão": 2102002, + "Bom Lugar, Maranhão": 2102077, + "Brejo de Areia, Maranhão": 2102150, + "Cândido Mendes, Maranhão": 2102606, + "Capinzal do Norte, Maranhão": 2102754, + "Carutapera, Maranhão": 2102903, + "Centro do Guilherme, Maranhão": 2103158, + "Centro Novo do Maranhão, Maranhão": 2103174, + "Conceição do Lago-Açu, Maranhão": 2103554, + "Esperantinópolis, Maranhão": 2104008, + "Godofredo Viana, Maranhão": 2104305, + "Governador Newton Bello, Maranhão": 2104651, + "Governador Nunes Freire, Maranhão": 2104677, + "Igarapé do Meio, Maranhão": 2105153, + "Igarapé Grande, Maranhão": 2105203, + "Joselândia, Maranhão": 2105609, + "Junco do Maranhão, Maranhão": 2105658, + "Lago da Pedra, Maranhão": 2105708, + "Lago do Junco, Maranhão": 2105807, + "Lago Verde, Maranhão": 2105906, + "Lago dos Rodrigues, Maranhão": 2105948, + "Lagoa Grande do Maranhão, Maranhão": 2105963, + "Lima Campos, Maranhão": 2106003, + "Luís Domingues, Maranhão": 2106201, + "Maracaçumé, Maranhão": 2106326, + "Marajá do Sena, Maranhão": 2106359, + "Maranhãozinho, Maranhão": 2106375, + "Monção, Maranhão": 2106904, + "Nova Olinda do Maranhão, Maranhão": 2107357, + "Olho d'Água das Cunhãs, Maranhão": 2107407, + "Paulo Ramos, Maranhão": 2108108, + "Pedreiras, Maranhão": 2108207, + "Pindaré-Mirim, Maranhão": 2108504, + "Pio XII, Maranhão": 2108702, + "Poção de Pedras, Maranhão": 2108900, + "Presidente Médici, Maranhão": 2109239, + "Santa Inês, Maranhão": 2109908, + "Santa Luzia, Maranhão": 2110005, + "Santa Luzia do Paruá, Maranhão": 2110039, + "Santo Antônio dos Lopes, Maranhão": 2110302, + "São João do Carú, Maranhão": 2111029, + "São Luís Gonzaga do Maranhão, Maranhão": 2111409, + "São Mateus do Maranhão, Maranhão": 2111508, + "São Raimundo do Doca Bezerra, Maranhão": 2111631, + "São Roberto, Maranhão": 2111672, + "Satubinha, Maranhão": 2111722, + "Trizidela do Vale, Maranhão": 2112233, + "Tufilândia, Maranhão": 2112274, + "Vitorino Freire, Maranhão": 2113009, + "Zé Doca, Maranhão": 2114007, + "Barão de Grajaú, Maranhão": 2101509, + "Benedito Leite, Maranhão": 2101806, + "Colinas, Maranhão": 2103505, + "Dom Pedro, Maranhão": 2103802, + "Fortuna, Maranhão": 2104206, + "Gonçalves Dias, Maranhão": 2104404, + "Governador Archer, Maranhão": 2104503, + "Governador Eugênio Barros, Maranhão": 2104602, + "Governador Luiz Rocha, Maranhão": 2104628, + "Graça Aranha, Maranhão": 2104701, + "Jatobá, Maranhão": 2105450, + "Lagoa do Mato, Maranhão": 2105922, + "Mirador, Maranhão": 2106706, + "Nova Iorque, Maranhão": 2107308, + "Paraibano, Maranhão": 2107704, + "Passagem Franca, Maranhão": 2107902, + "Pastos Bons, Maranhão": 2108009, + "Presidente Dutra, Maranhão": 2109106, + "Santa Filomena do Maranhão, Maranhão": 2109759, + "São Domingos do Azeitão, Maranhão": 2110658, + "São Domingos do Maranhão, Maranhão": 2110708, + "São Francisco do Maranhão, Maranhão": 2110906, + "São João dos Patos, Maranhão": 2111102, + "São José dos Basílios, Maranhão": 2111250, + "Senador Alexandre Costa, Maranhão": 2111748, + "Sucupira do Norte, Maranhão": 2111904, + "Sucupira do Riachão, Maranhão": 2111953, + "Tuntum, Maranhão": 2112308, + "Açailândia, Maranhão": 2100055, + "Alto Parnaíba, Maranhão": 2100501, + "Amarante do Maranhão, Maranhão": 2100600, + "Arame, Maranhão": 2100956, + "Balsas, Maranhão": 2101400, + "Barra do Corda, Maranhão": 2101608, + "Bom Jesus das Selvas, Maranhão": 2102036, + "Buriticupu, Maranhão": 2102325, + "Buritirana, Maranhão": 2102358, + "Campestre do Maranhão, Maranhão": 2102556, + "Carolina, Maranhão": 2102804, + "Cidelândia, Maranhão": 2103257, + "Davinópolis, Maranhão": 2103752, + "Estreito, Maranhão": 2104057, + "Feira Nova do Maranhão, Maranhão": 2104073, + "Fernando Falcão, Maranhão": 2104081, + "Formosa da Serra Negra, Maranhão": 2104099, + "Fortaleza dos Nogueiras, Maranhão": 2104107, + "Governador Edison Lobão, Maranhão": 2104552, + "Grajaú, Maranhão": 2104800, + "Imperatriz, Maranhão": 2105302, + "Itaipava do Grajaú, Maranhão": 2105351, + "Itinga do Maranhão, Maranhão": 2105427, + "Jenipapo dos Vieiras, Maranhão": 2105476, + "João Lisboa, Maranhão": 2105500, + "Lajeado Novo, Maranhão": 2105989, + "Loreto, Maranhão": 2106102, + "Montes Altos, Maranhão": 2107001, + "Nova Colinas, Maranhão": 2107258, + "Porto Franco, Maranhão": 2109007, + "Riachão, Maranhão": 2109502, + "Ribamar Fiquene, Maranhão": 2109551, + "Sambaíba, Maranhão": 2109700, + "São Félix de Balsas, Maranhão": 2110807, + "São Francisco do Brejão, Maranhão": 2110856, + "São João do Paraíso, Maranhão": 2111052, + "São Pedro da Água Branca, Maranhão": 2111532, + "São Pedro dos Crentes, Maranhão": 2111573, + "São Raimundo das Mangabeiras, Maranhão": 2111607, + "Senador La Rocque, Maranhão": 2111763, + "Sítio Novo, Maranhão": 2111805, + "Tasso Fragoso, Maranhão": 2112001, + "Vila Nova dos Martírios, Maranhão": 2112852, + "Agricolândia, Piauí": 2200103, + "Água Branca, Piauí": 2200202, + "Alto Longá, Piauí": 2200301, + "Altos, Piauí": 2200400, + "Amarante, Piauí": 2200509, + "Angical do Piauí, Piauí": 2200608, + "Aroazes, Piauí": 2200905, + "Assunção do Piauí, Piauí": 2201051, + "Barra D'Alcântara, Piauí": 2201176, + "Barras, Piauí": 2201200, + "Barro Duro, Piauí": 2201408, + "Beneditinos, Piauí": 2201606, + "Boa Hora, Piauí": 2201770, + "Boqueirão do Piauí, Piauí": 2201945, + "Buriti dos Montes, Piauí": 2202026, + "Cabeceiras do Piauí, Piauí": 2202059, + "Campo Largo do Piauí, Piauí": 2202174, + "Campo Maior, Piauí": 2202208, + "Castelo do Piauí, Piauí": 2202604, + "Cocal de Telha, Piauí": 2202711, + "Coivaras, Piauí": 2202737, + "Curralinhos, Piauí": 2203255, + "Demerval Lobão, Piauí": 2203305, + "Elesbão Veloso, Piauí": 2203503, + "Francinópolis, Piauí": 2204006, + "Hugo Napoleão, Piauí": 2204600, + "Inhuma, Piauí": 2204709, + "Ipiranga do Piauí, Piauí": 2204808, + "Jardim do Mulato, Piauí": 2205250, + "Jatobá do Piauí, Piauí": 2205276, + "José de Freitas, Piauí": 2205508, + "Juazeiro do Piauí, Piauí": 2205516, + "Lagoinha do Piauí, Piauí": 2205540, + "Lagoa Alegre, Piauí": 2205557, + "Lagoa do Piauí, Piauí": 2205581, + "Lagoa do Sítio, Piauí": 2205599, + "Miguel Alves, Piauí": 2206209, + "Miguel Leão, Piauí": 2206308, + "Monsenhor Gil, Piauí": 2206407, + "Nazária, Piauí": 2206720, + "Nossa Senhora de Nazaré, Piauí": 2206753, + "Nossa Senhora dos Remédios, Piauí": 2206803, + "Novo Oriente do Piauí, Piauí": 2206902, + "Novo Santo Antônio, Piauí": 2206951, + "Olho D'Água do Piauí, Piauí": 2207108, + "Palmeirais, Piauí": 2207504, + "Passagem Franca do Piauí, Piauí": 2207751, + "Pau D'Arco do Piauí, Piauí": 2207793, + "Pimenteiras, Piauí": 2208106, + "Porto, Piauí": 2208502, + "Prata do Piauí, Piauí": 2208601, + "Regeneração, Piauí": 2208809, + "Santa Cruz dos Milagres, Piauí": 2209153, + "Santo Antônio dos Milagres, Piauí": 2209450, + "São Félix do Piauí, Piauí": 2209609, + "São Gonçalo do Piauí, Piauí": 2209807, + "São João da Serra, Piauí": 2209906, + "São Miguel da Baixa Grande, Piauí": 2210383, + "São Miguel do Tapuio, Piauí": 2210409, + "São Pedro do Piauí, Piauí": 2210508, + "Sigefredo Pacheco, Piauí": 2210656, + "Teresina, Piauí": 2211001, + "União, Piauí": 2211100, + "Valença do Piauí, Piauí": 2211308, + "Várzea Grande, Piauí": 2211407, + "Batalha, Piauí": 2201507, + "Bom Princípio do Piauí, Piauí": 2201919, + "Brasileira, Piauí": 2201960, + "Buriti dos Lopes, Piauí": 2202000, + "Cajueiro da Praia, Piauí": 2202083, + "Capitão de Campos, Piauí": 2202406, + "Caraúbas do Piauí, Piauí": 2202539, + "Caxingó, Piauí": 2202653, + "Cocal, Piauí": 2202703, + "Cocal dos Alves, Piauí": 2202729, + "Domingos Mourão, Piauí": 2203420, + "Esperantina, Piauí": 2203701, + "Ilha Grande, Piauí": 2204659, + "Joaquim Pires, Piauí": 2205409, + "Joca Marques, Piauí": 2205458, + "Lagoa de São Francisco, Piauí": 2205573, + "Luís Correia, Piauí": 2205706, + "Luzilândia, Piauí": 2205805, + "Madeiro, Piauí": 2205854, + "Matias Olímpio, Piauí": 2206100, + "Milton Brandão, Piauí": 2206357, + "Morro do Chapéu do Piauí, Piauí": 2206670, + "Murici dos Portelas, Piauí": 2206696, + "Parnaíba, Piauí": 2207702, + "Pedro II, Piauí": 2207900, + "Piracuruca, Piauí": 2208304, + "Piripiri, Piauí": 2208403, + "São João da Fronteira, Piauí": 2209872, + "São João do Arraial, Piauí": 2209971, + "São José do Divino, Piauí": 2210052, + "Acauã, Piauí": 2200053, + "Alagoinha do Piauí, Piauí": 2200251, + "Alegrete do Piauí, Piauí": 2200277, + "Aroeiras do Itaim, Piauí": 2200954, + "Bela Vista do Piauí, Piauí": 2201556, + "Belém do Piauí, Piauí": 2201572, + "Betânia do Piauí, Piauí": 2201739, + "Bocaina, Piauí": 2201804, + "Cajazeiras do Piauí, Piauí": 2202075, + "Caldeirão Grande do Piauí, Piauí": 2202091, + "Campinas do Piauí, Piauí": 2202109, + "Campo Grande do Piauí, Piauí": 2202133, + "Caridade do Piauí, Piauí": 2202554, + "Colônia do Piauí, Piauí": 2202778, + "Conceição do Canindé, Piauí": 2202802, + "Curral Novo do Piauí, Piauí": 2203271, + "Dom Expedito Lopes, Piauí": 2203404, + "Floresta do Piauí, Piauí": 2203859, + "Francisco Macedo, Piauí": 2204154, + "Francisco Santos, Piauí": 2204204, + "Fronteiras, Piauí": 2204303, + "Geminiano, Piauí": 2204352, + "Isaías Coelho, Piauí": 2204907, + "Itainópolis, Piauí": 2205003, + "Jacobina do Piauí, Piauí": 2205151, + "Jaicós, Piauí": 2205201, + "Marcolândia, Piauí": 2205953, + "Massapê do Piauí, Piauí": 2206050, + "Monsenhor Hipólito, Piauí": 2206506, + "Oeiras, Piauí": 2207009, + "Padre Marcos, Piauí": 2207207, + "Paes Landim, Piauí": 2207306, + "Paquetá, Piauí": 2207553, + "Patos do Piauí, Piauí": 2207777, + "Paulistana, Piauí": 2207801, + "Picos, Piauí": 2208007, + "Pio IX, Piauí": 2208205, + "Queimada Nova, Piauí": 2208650, + "Santa Cruz do Piauí, Piauí": 2209104, + "Santana do Piauí, Piauí": 2209351, + "Santa Rosa do Piauí, Piauí": 2209377, + "Santo Antônio de Lisboa, Piauí": 2209401, + "Santo Inácio do Piauí, Piauí": 2209500, + "São Francisco de Assis do Piauí, Piauí": 2209658, + "São João da Canabrava, Piauí": 2209856, + "São João da Varjota, Piauí": 2209955, + "São José do Piauí, Piauí": 2210201, + "São Julião, Piauí": 2210300, + "São Luis do Piauí, Piauí": 2210375, + "São Miguel do Fidalgo, Piauí": 2210391, + "Simões, Piauí": 2210706, + "Simplício Mendes, Piauí": 2210805, + "Socorro do Piauí, Piauí": 2210904, + "Sussuapara, Piauí": 2210938, + "Tanque do Piauí, Piauí": 2210979, + "Vera Mendes, Piauí": 2211506, + "Vila Nova do Piauí, Piauí": 2211605, + "Wall Ferraz, Piauí": 2211704, + "Antônio Almeida, Piauí": 2200806, + "Arraial, Piauí": 2201002, + "Baixa Grande do Ribeiro, Piauí": 2201150, + "Bertolínia, Piauí": 2201705, + "Brejo do Piauí, Piauí": 2201988, + "Canavieira, Piauí": 2202251, + "Canto do Buriti, Piauí": 2202307, + "Eliseu Martins, Piauí": 2203602, + "Flores do Piauí, Piauí": 2203800, + "Floriano, Piauí": 2203909, + "Francisco Ayres, Piauí": 2204105, + "Guadalupe, Piauí": 2204501, + "Itaueira, Piauí": 2205102, + "Jerumenha, Piauí": 2205300, + "Landri Sales, Piauí": 2205607, + "Manoel Emídio, Piauí": 2205904, + "Marcos Parente, Piauí": 2206001, + "Nazaré do Piauí, Piauí": 2206704, + "Pajeú do Piauí, Piauí": 2207355, + "Pavussu, Piauí": 2207850, + "Porto Alegre do Piauí, Piauí": 2208551, + "Ribeiro Gonçalves, Piauí": 2208908, + "Rio Grande do Piauí, Piauí": 2209005, + "São Francisco do Piauí, Piauí": 2209708, + "São José do Peixe, Piauí": 2210102, + "Sebastião Leal, Piauí": 2210631, + "Tamboril do Piauí, Piauí": 2210953, + "Uruçuí, Piauí": 2211209, + "Acarape, Ceará": 2300150, + "Amontada, Ceará": 2300754, + "Apuiarés, Ceará": 2300903, + "Aquiraz, Ceará": 2301000, + "Aracoiaba, Ceará": 2301208, + "Aratuba, Ceará": 2301406, + "Barreira, Ceará": 2301950, + "Baturité, Ceará": 2302107, + "Beberibe, Ceará": 2302206, + "Boa Viagem, Ceará": 2302404, + "Canindé, Ceará": 2302800, + "Capistrano, Ceará": 2302909, + "Caridade, Ceará": 2303006, + "Cascavel, Ceará": 2303501, + "Caucaia, Ceará": 2303709, + "Chorozinho, Ceará": 2303956, + "Eusébio, Ceará": 2304285, + "Fortaleza, Ceará": 2304400, + "General Sampaio, Ceará": 2304608, + "Guaiúba, Ceará": 2304954, + "Guaramiranga, Ceará": 2305100, + "Horizonte, Ceará": 2305233, + "Irauçuba, Ceará": 2306108, + "Itaitinga, Ceará": 2306256, + "Itapagé, Ceará": 2306306, + "Itapipoca, Ceará": 2306405, + "Itapiúna, Ceará": 2306504, + "Itatira, Ceará": 2306603, + "Madalena, Ceará": 2307635, + "Maracanaú, Ceará": 2307650, + "Maranguape, Ceará": 2307700, + "Miraíma, Ceará": 2308377, + "Mulungu, Ceará": 2309102, + "Ocara, Ceará": 2309458, + "Pacajus, Ceará": 2309607, + "Pacatuba, Ceará": 2309706, + "Pacoti, Ceará": 2309805, + "Palmácia, Ceará": 2310100, + "Paracuru, Ceará": 2310209, + "Paraipaba, Ceará": 2310258, + "Paramoti, Ceará": 2310407, + "Pentecoste, Ceará": 2310704, + "Pindoretama, Ceará": 2310852, + "Redenção, Ceará": 2311603, + "São Gonçalo do Amarante, Ceará": 2312403, + "São Luís do Curu, Ceará": 2312601, + "Tejuçuoca, Ceará": 2313351, + "Trairi, Ceará": 2313500, + "Tururu, Ceará": 2313559, + "Umirim, Ceará": 2313757, + "Uruburetama, Ceará": 2313807, + "Alto Santo, Ceará": 2300705, + "Aracati, Ceará": 2301109, + "Banabuiú, Ceará": 2301851, + "Choró, Ceará": 2303931, + "Deputado Irapuan Pinheiro, Ceará": 2304269, + "Ererê, Ceará": 2304277, + "Fortim, Ceará": 2304459, + "Ibaretama, Ceará": 2305266, + "Ibicuitinga, Ceará": 2305332, + "Icapuí, Ceará": 2305357, + "Iracema, Ceará": 2306009, + "Itaiçaba, Ceará": 2306207, + "Jaguaretama, Ceará": 2306702, + "Jaguaribara, Ceará": 2306801, + "Jaguaribe, Ceará": 2306900, + "Jaguaruana, Ceará": 2307007, + "Limoeiro do Norte, Ceará": 2307601, + "Milhã, Ceará": 2308351, + "Morada Nova, Ceará": 2308708, + "Palhano, Ceará": 2310001, + "Pedra Branca, Ceará": 2310506, + "Pereiro, Ceará": 2310803, + "Potiretama, Ceará": 2311231, + "Quixadá, Ceará": 2311306, + "Quixeramobim, Ceará": 2311405, + "Quixeré, Ceará": 2311504, + "Russas, Ceará": 2311801, + "São João do Jaguaribe, Ceará": 2312502, + "Senador Pompeu, Ceará": 2312700, + "Solonópole, Ceará": 2313005, + "Tabuleiro do Norte, Ceará": 2313104, + "Abaiara, Ceará": 2300101, + "Aiuaba, Ceará": 2300408, + "Altaneira, Ceará": 2300606, + "Antonina do Norte, Ceará": 2300804, + "Araripe, Ceará": 2301307, + "Assaré, Ceará": 2301604, + "Aurora, Ceará": 2301703, + "Barbalha, Ceará": 2301901, + "Barro, Ceará": 2302008, + "Brejo Santo, Ceará": 2302503, + "Campos Sales, Ceará": 2302701, + "Caririaçu, Ceará": 2303204, + "Crato, Ceará": 2304202, + "Farias Brito, Ceará": 2304301, + "Granjeiro, Ceará": 2304806, + "Jardim, Ceará": 2307106, + "Jati, Ceará": 2307205, + "Juazeiro do Norte, Ceará": 2307304, + "Lavras da Mangabeira, Ceará": 2307502, + "Mauriti, Ceará": 2308104, + "Milagres, Ceará": 2308302, + "Missão Velha, Ceará": 2308401, + "Nova Olinda, Ceará": 2309201, + "Penaforte, Ceará": 2310605, + "Porteiras, Ceará": 2311108, + "Potengi, Ceará": 2311207, + "Salitre, Ceará": 2311959, + "Santana do Cariri, Ceará": 2312106, + "Tarrafas, Ceará": 2313252, + "Várzea Alegre, Ceará": 2314003, + "Acaraú, Ceará": 2300200, + "Alcântaras, Ceará": 2300507, + "Barroquinha, Ceará": 2302057, + "Bela Cruz, Ceará": 2302305, + "Camocim, Ceará": 2302602, + "Cariré, Ceará": 2303105, + "Carnaubal, Ceará": 2303402, + "Catunda, Ceará": 2303659, + "Chaval, Ceará": 2303907, + "Coreaú, Ceará": 2304004, + "Croatá, Ceará": 2304236, + "Cruz, Ceará": 2304251, + "Forquilha, Ceará": 2304350, + "Frecheirinha, Ceará": 2304509, + "Graça, Ceará": 2304657, + "Granja, Ceará": 2304707, + "Groaíras, Ceará": 2304905, + "Guaraciaba do Norte, Ceará": 2305001, + "Hidrolândia, Ceará": 2305209, + "Ibiapina, Ceará": 2305308, + "Ipu, Ceará": 2305803, + "Ipueiras, Ceará": 2305902, + "Itarema, Ceará": 2306553, + "Jijoca de Jericoacoara, Ceará": 2307254, + "Marco, Ceará": 2307809, + "Martinópole, Ceará": 2307908, + "Massapê, Ceará": 2308005, + "Meruoca, Ceará": 2308203, + "Moraújo, Ceará": 2308807, + "Morrinhos, Ceará": 2308906, + "Mucambo, Ceará": 2309003, + "Pacujá, Ceará": 2309904, + "Pires Ferreira, Ceará": 2310951, + "Reriutaba, Ceará": 2311702, + "Santana do Acaraú, Ceará": 2312007, + "Santa Quitéria, Ceará": 2312205, + "São Benedito, Ceará": 2312304, + "Senador Sá, Ceará": 2312809, + "Sobral, Ceará": 2312908, + "Tianguá, Ceará": 2313401, + "Ubajara, Ceará": 2313609, + "Uruoca, Ceará": 2313906, + "Varjota, Ceará": 2313955, + "Viçosa do Ceará, Ceará": 2314102, + "Arês, Rio Grande do Norte": 2401206, + "Baía Formosa, Rio Grande do Norte": 2401404, + "Barcelona, Rio Grande do Norte": 2401503, + "Bento Fernandes, Rio Grande do Norte": 2401602, + "Bom Jesus, Rio Grande do Norte": 2401701, + "Brejinho, Rio Grande do Norte": 2401800, + "Caiçara do Norte, Rio Grande do Norte": 2401859, + "Caiçara do Rio do Vento, Rio Grande do Norte": 2401909, + "Campo Redondo, Rio Grande do Norte": 2402105, + "Canguaretama, Rio Grande do Norte": 2402204, + "Ceará-Mirim, Rio Grande do Norte": 2402600, + "Coronel Ezequiel, Rio Grande do Norte": 2402808, + "Parnamirim, Rio Grande do Norte": 2403251, + "Espírito Santo, Rio Grande do Norte": 2403509, + "Extremoz, Rio Grande do Norte": 2403608, + "Galinhos, Rio Grande do Norte": 2404101, + "Goianinha, Rio Grande do Norte": 2404200, + "Ielmo Marinho, Rio Grande do Norte": 2404606, + "Jaçanã, Rio Grande do Norte": 2405009, + "Jandaíra, Rio Grande do Norte": 2405108, + "Boa Saúde, Rio Grande do Norte": 2405306, + "Japi, Rio Grande do Norte": 2405405, + "Jardim de Angicos, Rio Grande do Norte": 2405504, + "João Câmara, Rio Grande do Norte": 2405801, + "Jundiá, Rio Grande do Norte": 2406155, + "Lagoa d'Anta, Rio Grande do Norte": 2406205, + "Lagoa de Pedras, Rio Grande do Norte": 2406304, + "Lagoa de Velhos, Rio Grande do Norte": 2406403, + "Lagoa Salgada, Rio Grande do Norte": 2406601, + "Lajes Pintadas, Rio Grande do Norte": 2406809, + "Macaíba, Rio Grande do Norte": 2407104, + "Maxaranguape, Rio Grande do Norte": 2407500, + "Montanhas, Rio Grande do Norte": 2407708, + "Monte Alegre, Rio Grande do Norte": 2407807, + "Monte das Gameleiras, Rio Grande do Norte": 2407906, + "Natal, Rio Grande do Norte": 2408102, + "Nísia Floresta, Rio Grande do Norte": 2408201, + "Nova Cruz, Rio Grande do Norte": 2408300, + "Parazinho, Rio Grande do Norte": 2408805, + "Rio do Fogo, Rio Grande do Norte": 2408953, + "Passa e Fica, Rio Grande do Norte": 2409100, + "Passagem, Rio Grande do Norte": 2409209, + "Santa Maria, Rio Grande do Norte": 2409332, + "Pedra Grande, Rio Grande do Norte": 2409506, + "Pedra Preta, Rio Grande do Norte": 2409605, + "Pedro Avelino, Rio Grande do Norte": 2409704, + "Pedro Velho, Rio Grande do Norte": 2409803, + "Poço Branco, Rio Grande do Norte": 2410108, + "Serra Caiada, Rio Grande do Norte": 2410306, + "Pureza, Rio Grande do Norte": 2410405, + "Riachuelo, Rio Grande do Norte": 2410900, + "Ruy Barbosa, Rio Grande do Norte": 2411106, + "Santa Cruz, Rio Grande do Norte": 2411205, + "Santo Antônio, Rio Grande do Norte": 2411502, + "São Bento do Norte, Rio Grande do Norte": 2411601, + "São Bento do Trairí, Rio Grande do Norte": 2411700, + "São Gonçalo do Amarante, Rio Grande do Norte": 2412005, + "São José de Mipibu, Rio Grande do Norte": 2412203, + "São José do Campestre, Rio Grande do Norte": 2412302, + "São Miguel do Gostoso, Rio Grande do Norte": 2412559, + "São Paulo do Potengi, Rio Grande do Norte": 2412609, + "São Pedro, Rio Grande do Norte": 2412708, + "São Tomé, Rio Grande do Norte": 2412906, + "Senador Elói de Souza, Rio Grande do Norte": 2413102, + "Senador Georgino Avelino, Rio Grande do Norte": 2413201, + "Serra de São Bento, Rio Grande do Norte": 2413300, + "Serrinha, Rio Grande do Norte": 2413508, + "Sítio Novo, Rio Grande do Norte": 2413706, + "Taipu, Rio Grande do Norte": 2413904, + "Tangará, Rio Grande do Norte": 2414001, + "Tibau do Sul, Rio Grande do Norte": 2414209, + "Touros, Rio Grande do Norte": 2414407, + "Várzea, Rio Grande do Norte": 2414704, + "Vera Cruz, Rio Grande do Norte": 2414803, + "Vila Flor, Rio Grande do Norte": 2415008, + "Açu, Rio Grande do Norte": 2400208, + "Afonso Bezerra, Rio Grande do Norte": 2400307, + "Água Nova, Rio Grande do Norte": 2400406, + "Alexandria, Rio Grande do Norte": 2400505, + "Almino Afonso, Rio Grande do Norte": 2400604, + "Alto do Rodrigues, Rio Grande do Norte": 2400703, + "Angicos, Rio Grande do Norte": 2400802, + "Antônio Martins, Rio Grande do Norte": 2400901, + "Apodi, Rio Grande do Norte": 2401008, + "Areia Branca, Rio Grande do Norte": 2401107, + "Campo Grande, Rio Grande do Norte": 2401305, + "Baraúna, Rio Grande do Norte": 2401453, + "Caraúbas, Rio Grande do Norte": 2402303, + "Carnaubais, Rio Grande do Norte": 2402501, + "Coronel João Pessoa, Rio Grande do Norte": 2402907, + "Doutor Severiano, Rio Grande do Norte": 2403202, + "Encanto, Rio Grande do Norte": 2403301, + "Felipe Guerra, Rio Grande do Norte": 2403707, + "Fernando Pedroza, Rio Grande do Norte": 2403756, + "Francisco Dantas, Rio Grande do Norte": 2403905, + "Frutuoso Gomes, Rio Grande do Norte": 2404002, + "Governador Dix-Sept Rosado, Rio Grande do Norte": 2404309, + "Grossos, Rio Grande do Norte": 2404408, + "Guamaré, Rio Grande do Norte": 2404507, + "Ipanguaçu, Rio Grande do Norte": 2404705, + "Itajá, Rio Grande do Norte": 2404853, + "Itaú, Rio Grande do Norte": 2404903, + "Janduís, Rio Grande do Norte": 2405207, + "João Dias, Rio Grande do Norte": 2405900, + "José da Penha, Rio Grande do Norte": 2406007, + "Lajes, Rio Grande do Norte": 2406700, + "Lucrécia, Rio Grande do Norte": 2406908, + "Luís Gomes, Rio Grande do Norte": 2407005, + "Macau, Rio Grande do Norte": 2407203, + "Major Sales, Rio Grande do Norte": 2407252, + "Marcelino Vieira, Rio Grande do Norte": 2407302, + "Martins, Rio Grande do Norte": 2407401, + "Messias Targino, Rio Grande do Norte": 2407609, + "Mossoró, Rio Grande do Norte": 2408003, + "Olho-d'Água do Borges, Rio Grande do Norte": 2408409, + "Paraná, Rio Grande do Norte": 2408607, + "Paraú, Rio Grande do Norte": 2408706, + "Patu, Rio Grande do Norte": 2409308, + "Pau dos Ferros, Rio Grande do Norte": 2409407, + "Pendências, Rio Grande do Norte": 2409902, + "Pilões, Rio Grande do Norte": 2410009, + "Portalegre, Rio Grande do Norte": 2410207, + "Porto do Mangue, Rio Grande do Norte": 2410256, + "Rafael Fernandes, Rio Grande do Norte": 2410504, + "Rafael Godeiro, Rio Grande do Norte": 2410603, + "Riacho da Cruz, Rio Grande do Norte": 2410702, + "Riacho de Santana, Rio Grande do Norte": 2410801, + "Rodolfo Fernandes, Rio Grande do Norte": 2411007, + "Tibau, Rio Grande do Norte": 2411056, + "Santana do Matos, Rio Grande do Norte": 2411403, + "São Francisco do Oeste, Rio Grande do Norte": 2411908, + "São Miguel, Rio Grande do Norte": 2412500, + "São Rafael, Rio Grande do Norte": 2412807, + "Serra do Mel, Rio Grande do Norte": 2413359, + "Serrinha dos Pintos, Rio Grande do Norte": 2413557, + "Severiano Melo, Rio Grande do Norte": 2413607, + "Taboleiro Grande, Rio Grande do Norte": 2413805, + "Tenente Ananias, Rio Grande do Norte": 2414100, + "Triunfo Potiguar, Rio Grande do Norte": 2414456, + "Umarizal, Rio Grande do Norte": 2414506, + "Upanema, Rio Grande do Norte": 2414605, + "Venha-Ver, Rio Grande do Norte": 2414753, + "Viçosa, Rio Grande do Norte": 2414902, + "Alagoinha, Paraíba": 2500502, + "Alhandra, Paraíba": 2500601, + "Araçagi, Paraíba": 2500809, + "Arara, Paraíba": 2500908, + "Araruna, Paraíba": 2501005, + "Baía da Traição, Paraíba": 2501401, + "Bananeiras, Paraíba": 2501500, + "Bayeux, Paraíba": 2501807, + "Belém, Paraíba": 2501906, + "Borborema, Paraíba": 2502706, + "Caaporã, Paraíba": 2503001, + "Cabedelo, Paraíba": 2503209, + "Cacimba de Dentro, Paraíba": 2503506, + "Caiçara, Paraíba": 2503605, + "Caldas Brandão, Paraíba": 2503803, + "Capim, Paraíba": 2504033, + "Casserengue, Paraíba": 2504157, + "Conde, Paraíba": 2504603, + "Cruz do Espírito Santo, Paraíba": 2504900, + "Cuitegi, Paraíba": 2505204, + "Cuité de Mamanguape, Paraíba": 2505238, + "Curral de Cima, Paraíba": 2505279, + "Dona Inês, Paraíba": 2505709, + "Duas Estradas, Paraíba": 2505808, + "Guarabira, Paraíba": 2506301, + "Gurinhém, Paraíba": 2506400, + "Itabaiana, Paraíba": 2506905, + "Itapororoca, Paraíba": 2507101, + "Jacaraú, Paraíba": 2507309, + "João Pessoa, Paraíba": 2507507, + "Juarez Távora, Paraíba": 2507606, + "Juripiranga, Paraíba": 2507903, + "Lagoa de Dentro, Paraíba": 2508208, + "Logradouro, Paraíba": 2508554, + "Lucena, Paraíba": 2508604, + "Mamanguape, Paraíba": 2508901, + "Marcação, Paraíba": 2509057, + "Mari, Paraíba": 2509107, + "Mataraca, Paraíba": 2509305, + "Mogeiro, Paraíba": 2509404, + "Mulungu, Paraíba": 2509800, + "Natuba, Paraíba": 2509909, + "Pedras de Fogo, Paraíba": 2511202, + "Pilar, Paraíba": 2511509, + "Pilões, Paraíba": 2511608, + "Pilõezinhos, Paraíba": 2511707, + "Pirpirituba, Paraíba": 2511806, + "Pitimbu, Paraíba": 2511905, + "Pedro Régis, Paraíba": 2512721, + "Riachão, Paraíba": 2512747, + "Riachão do Poço, Paraíba": 2512762, + "Rio Tinto, Paraíba": 2512903, + "Salgado de São Félix, Paraíba": 2513109, + "Santa Rita, Paraíba": 2513703, + "São José dos Ramos, Paraíba": 2514453, + "São Miguel de Taipu, Paraíba": 2515005, + "Sapé, Paraíba": 2515302, + "Serra da Raiz, Paraíba": 2515609, + "Serraria, Paraíba": 2515906, + "Sertãozinho, Paraíba": 2515930, + "Sobrado, Paraíba": 2515971, + "Solânea, Paraíba": 2516003, + "Tacima, Paraíba": 2516409, + "Alagoa Grande, Paraíba": 2500304, + "Alagoa Nova, Paraíba": 2500403, + "Alcantil, Paraíba": 2500536, + "Algodão de Jandaíra, Paraíba": 2500577, + "Amparo, Paraíba": 2500734, + "Areia, Paraíba": 2501104, + "Areial, Paraíba": 2501203, + "Aroeiras, Paraíba": 2501302, + "Assunção, Paraíba": 2501351, + "Baraúna, Paraíba": 2501534, + "Barra de Santana, Paraíba": 2501575, + "Barra de Santa Rosa, Paraíba": 2501609, + "Barra de São Miguel, Paraíba": 2501708, + "Boa Vista, Paraíba": 2502151, + "Boqueirão, Paraíba": 2502508, + "Cabaceiras, Paraíba": 2503100, + "Camalaú, Paraíba": 2503902, + "Campina Grande, Paraíba": 2504009, + "Caraúbas, Paraíba": 2504074, + "Caturité, Paraíba": 2504355, + "Congo, Paraíba": 2504702, + "Coxixola, Paraíba": 2504850, + "Cubati, Paraíba": 2505006, + "Cuité, Paraíba": 2505105, + "Damião, Paraíba": 2505352, + "Esperança, Paraíba": 2506004, + "Fagundes, Paraíba": 2506103, + "Frei Martinho, Paraíba": 2506202, + "Gado Bravo, Paraíba": 2506251, + "Gurjão, Paraíba": 2506509, + "Ingá, Paraíba": 2506806, + "Itatuba, Paraíba": 2507200, + "Juazeirinho, Paraíba": 2507705, + "Junco do Seridó, Paraíba": 2507804, + "Lagoa Seca, Paraíba": 2508307, + "Livramento, Paraíba": 2508505, + "Massaranduba, Paraíba": 2509206, + "Matinhas, Paraíba": 2509339, + "Montadas, Paraíba": 2509503, + "Monteiro, Paraíba": 2509701, + "Nova Floresta, Paraíba": 2510105, + "Nova Palmeira, Paraíba": 2510303, + "Olivedos, Paraíba": 2510501, + "Ouro Velho, Paraíba": 2510600, + "Parari, Paraíba": 2510659, + "Pedra Lavrada, Paraíba": 2511103, + "Picuí, Paraíba": 2511400, + "Pocinhos, Paraíba": 2512002, + "Prata, Paraíba": 2512200, + "Puxinanã, Paraíba": 2512408, + "Queimadas, Paraíba": 2512507, + "Remígio, Paraíba": 2512705, + "Riachão do Bacamarte, Paraíba": 2512754, + "Riacho de Santo Antônio, Paraíba": 2512788, + "Santa Cecília, Paraíba": 2513158, + "Santo André, Paraíba": 2513851, + "São Domingos do Cariri, Paraíba": 2513943, + "São João do Cariri, Paraíba": 2514008, + "São João do Tigre, Paraíba": 2514107, + "São José dos Cordeiros, Paraíba": 2514800, + "São Sebastião de Lagoa de Roça, Paraíba": 2515104, + "São Sebastião do Umbuzeiro, Paraíba": 2515203, + "São Vicente do Seridó, Paraíba": 2515401, + "Serra Branca, Paraíba": 2515500, + "Serra Redonda, Paraíba": 2515807, + "Soledade, Paraíba": 2516102, + "Sossêgo, Paraíba": 2516151, + "Sumé, Paraíba": 2516300, + "Taperoá, Paraíba": 2516508, + "Tenório, Paraíba": 2516755, + "Umbuzeiro, Paraíba": 2517001, + "Zabelê, Paraíba": 2517407, + "Água Branca, Paraíba": 2500106, + "Aguiar, Paraíba": 2500205, + "Areia de Baraúnas, Paraíba": 2501153, + "Belém do Brejo do Cruz, Paraíba": 2502003, + "Boa Ventura, Paraíba": 2502102, + "Bom Sucesso, Paraíba": 2502300, + "Igaracy, Paraíba": 2502607, + "Brejo do Cruz, Paraíba": 2502805, + "Brejo dos Santos, Paraíba": 2502904, + "Cacimba de Areia, Paraíba": 2503407, + "Cacimbas, Paraíba": 2503555, + "Cajazeirinhas, Paraíba": 2503753, + "Catingueira, Paraíba": 2504207, + "Catolé do Rocha, Paraíba": 2504306, + "Conceição, Paraíba": 2504405, + "Condado, Paraíba": 2504504, + "Coremas, Paraíba": 2504801, + "Curral Velho, Paraíba": 2505303, + "Desterro, Paraíba": 2505402, + "Vista Serrana, Paraíba": 2505501, + "Diamante, Paraíba": 2505600, + "Emas, Paraíba": 2505907, + "Ibiara, Paraíba": 2506608, + "Imaculada, Paraíba": 2506707, + "Itaporanga, Paraíba": 2507002, + "Jericó, Paraíba": 2507408, + "Juru, Paraíba": 2508000, + "Lagoa, Paraíba": 2508109, + "Mãe d'Água, Paraíba": 2508703, + "Malta, Paraíba": 2508802, + "Manaíra, Paraíba": 2509008, + "Mato Grosso, Paraíba": 2509370, + "Maturéia, Paraíba": 2509396, + "Nova Olinda, Paraíba": 2510204, + "Olho d'Água, Paraíba": 2510402, + "Passagem, Paraíba": 2510709, + "Patos, Paraíba": 2510808, + "Paulista, Paraíba": 2510907, + "Pedra Branca, Paraíba": 2511004, + "Piancó, Paraíba": 2511301, + "Pombal, Paraíba": 2512101, + "Princesa Isabel, Paraíba": 2512309, + "Quixabá, Paraíba": 2512606, + "Riacho dos Cavalos, Paraíba": 2512804, + "Salgadinho, Paraíba": 2513000, + "Santa Inês, Paraíba": 2513356, + "Santa Luzia, Paraíba": 2513406, + "Santana de Mangueira, Paraíba": 2513505, + "Santana dos Garrotes, Paraíba": 2513604, + "Santa Teresinha, Paraíba": 2513802, + "São Bento, Paraíba": 2513901, + "São Bentinho, Paraíba": 2513927, + "São Domingos, Paraíba": 2513968, + "São José de Caiana, Paraíba": 2514305, + "São José de Espinharas, Paraíba": 2514404, + "São José de Princesa, Paraíba": 2514552, + "São José do Bonfim, Paraíba": 2514602, + "São José do Brejo do Cruz, Paraíba": 2514651, + "São José do Sabugi, Paraíba": 2514701, + "São Mamede, Paraíba": 2514909, + "Tavares, Paraíba": 2516607, + "Teixeira, Paraíba": 2516706, + "Várzea, Paraíba": 2517100, + "Abreu e Lima, Pernambuco": 2600054, + "Água Preta, Pernambuco": 2600401, + "Aliança, Pernambuco": 2600708, + "Amaraji, Pernambuco": 2600906, + "Araçoiaba, Pernambuco": 2601052, + "Barreiros, Pernambuco": 2601409, + "Belém de Maria, Pernambuco": 2601508, + "Bom Jardim, Pernambuco": 2602209, + "Buenos Aires, Pernambuco": 2602704, + "Cabo de Santo Agostinho, Pernambuco": 2602902, + "Camaragibe, Pernambuco": 2603454, + "Camutanga, Pernambuco": 2603603, + "Carpina, Pernambuco": 2604007, + "Casinhas, Pernambuco": 2604155, + "Catende, Pernambuco": 2604205, + "Chã de Alegria, Pernambuco": 2604403, + "Condado, Pernambuco": 2604601, + "Cortês, Pernambuco": 2604809, + "Escada, Pernambuco": 2605202, + "Feira Nova, Pernambuco": 2605400, + "Fernando de Noronha, Pernambuco": 2605459, + "Ferreiros, Pernambuco": 2605509, + "Frei Miguelinho, Pernambuco": 2605806, + "Gameleira, Pernambuco": 2605905, + "Glória do Goitá, Pernambuco": 2606101, + "Goiana, Pernambuco": 2606200, + "Igarassu, Pernambuco": 2606804, + "Ipojuca, Pernambuco": 2607208, + "Ilha de Itamaracá, Pernambuco": 2607604, + "Itambé, Pernambuco": 2607653, + "Itapissuma, Pernambuco": 2607752, + "Itaquitinga, Pernambuco": 2607802, + "Jaboatão dos Guararapes, Pernambuco": 2607901, + "Jaqueira, Pernambuco": 2607950, + "João Alfredo, Pernambuco": 2608107, + "Joaquim Nabuco, Pernambuco": 2608206, + "Lagoa do Carro, Pernambuco": 2608453, + "Lagoa de Itaenga, Pernambuco": 2608503, + "Limoeiro, Pernambuco": 2608909, + "Macaparana, Pernambuco": 2609006, + "Machados, Pernambuco": 2609105, + "Maraial, Pernambuco": 2609204, + "Moreno, Pernambuco": 2609402, + "Nazaré da Mata, Pernambuco": 2609501, + "Olinda, Pernambuco": 2609600, + "Orobó, Pernambuco": 2609709, + "Palmares, Pernambuco": 2610004, + "Passira, Pernambuco": 2610509, + "Paudalho, Pernambuco": 2610608, + "Paulista, Pernambuco": 2610707, + "Pombos, Pernambuco": 2611309, + "Primavera, Pernambuco": 2611408, + "Recife, Pernambuco": 2611606, + "Ribeirão, Pernambuco": 2611804, + "Rio Formoso, Pernambuco": 2611903, + "Salgadinho, Pernambuco": 2612109, + "Santa Maria do Cambucá, Pernambuco": 2612703, + "São Benedito do Sul, Pernambuco": 2612901, + "São José da Coroa Grande, Pernambuco": 2613404, + "São Lourenço da Mata, Pernambuco": 2613701, + "São Vicente Ferrer, Pernambuco": 2613800, + "Sirinhaém, Pernambuco": 2614204, + "Surubim, Pernambuco": 2614501, + "Tamandaré, Pernambuco": 2614857, + "Timbaúba, Pernambuco": 2615300, + "Tracunhaém, Pernambuco": 2615508, + "Vertente do Lério, Pernambuco": 2616183, + "Vertentes, Pernambuco": 2616209, + "Vicência, Pernambuco": 2616308, + "Vitória de Santo Antão, Pernambuco": 2616407, + "Xexéu, Pernambuco": 2616506, + "Agrestina, Pernambuco": 2600302, + "Águas Belas, Pernambuco": 2600500, + "Alagoinha, Pernambuco": 2600609, + "Altinho, Pernambuco": 2600807, + "Angelim, Pernambuco": 2601003, + "Arcoverde, Pernambuco": 2601201, + "Barra de Guabiraba, Pernambuco": 2601300, + "Belo Jardim, Pernambuco": 2601706, + "Bezerros, Pernambuco": 2601904, + "Bom Conselho, Pernambuco": 2602100, + "Bonito, Pernambuco": 2602308, + "Brejão, Pernambuco": 2602407, + "Brejo da Madre de Deus, Pernambuco": 2602605, + "Buíque, Pernambuco": 2602803, + "Cachoeirinha, Pernambuco": 2603108, + "Caetés, Pernambuco": 2603207, + "Calçado, Pernambuco": 2603306, + "Camocim de São Félix, Pernambuco": 2603504, + "Canhotinho, Pernambuco": 2603702, + "Capoeiras, Pernambuco": 2603801, + "Caruaru, Pernambuco": 2604106, + "Chã Grande, Pernambuco": 2604502, + "Correntes, Pernambuco": 2604700, + "Cumaru, Pernambuco": 2604908, + "Cupira, Pernambuco": 2605004, + "Custódia, Pernambuco": 2605103, + "Garanhuns, Pernambuco": 2606002, + "Gravatá, Pernambuco": 2606408, + "Iati, Pernambuco": 2606507, + "Ibimirim, Pernambuco": 2606606, + "Ibirajuba, Pernambuco": 2606705, + "Inajá, Pernambuco": 2607000, + "Itaíba, Pernambuco": 2607505, + "Jataúba, Pernambuco": 2608008, + "Jucati, Pernambuco": 2608255, + "Jupi, Pernambuco": 2608305, + "Jurema, Pernambuco": 2608404, + "Lagoa do Ouro, Pernambuco": 2608602, + "Lagoa dos Gatos, Pernambuco": 2608701, + "Lajedo, Pernambuco": 2608800, + "Manari, Pernambuco": 2609154, + "Palmeirina, Pernambuco": 2610103, + "Panelas, Pernambuco": 2610202, + "Paranatama, Pernambuco": 2610301, + "Pedra, Pernambuco": 2610806, + "Pesqueira, Pernambuco": 2610905, + "Poção, Pernambuco": 2611200, + "Quipapá, Pernambuco": 2611507, + "Riacho das Almas, Pernambuco": 2611705, + "Sairé, Pernambuco": 2612000, + "Saloá, Pernambuco": 2612307, + "Sanharó, Pernambuco": 2612406, + "Santa Cruz do Capibaribe, Pernambuco": 2612505, + "São Bento do Una, Pernambuco": 2613008, + "São Caitano, Pernambuco": 2613107, + "São João, Pernambuco": 2613206, + "São Joaquim do Monte, Pernambuco": 2613305, + "Sertânia, Pernambuco": 2614105, + "Tacaimbó, Pernambuco": 2614709, + "Taquaritinga do Norte, Pernambuco": 2615003, + "Terezinha, Pernambuco": 2615102, + "Toritama, Pernambuco": 2615409, + "Tupanatinga, Pernambuco": 2615805, + "Venturosa, Pernambuco": 2616001, + "Anadia, Alagoas": 2700201, + "Atalaia, Alagoas": 2700409, + "Barra de Santo Antônio, Alagoas": 2700508, + "Barra de São Miguel, Alagoas": 2700607, + "Boca da Mata, Alagoas": 2701001, + "Branquinha, Alagoas": 2701100, + "Cajueiro, Alagoas": 2701308, + "Campestre, Alagoas": 2701357, + "Campo Alegre, Alagoas": 2701407, + "Capela, Alagoas": 2701704, + "Chã Preta, Alagoas": 2701902, + "Colônia Leopoldina, Alagoas": 2702108, + "Coqueiro Seco, Alagoas": 2702207, + "Coruripe, Alagoas": 2702306, + "Feliz Deserto, Alagoas": 2702702, + "Flexeiras, Alagoas": 2702801, + "Ibateguara, Alagoas": 2703007, + "Igreja Nova, Alagoas": 2703205, + "Jacuípe, Alagoas": 2703502, + "Japaratinga, Alagoas": 2703601, + "Jequiá da Praia, Alagoas": 2703759, + "Joaquim Gomes, Alagoas": 2703809, + "Jundiá, Alagoas": 2703908, + "Maceió, Alagoas": 2704302, + "Maragogi, Alagoas": 2704500, + "Marechal Deodoro, Alagoas": 2704708, + "Mar Vermelho, Alagoas": 2704906, + "Matriz de Camaragibe, Alagoas": 2705101, + "Messias, Alagoas": 2705200, + "Murici, Alagoas": 2705507, + "Novo Lino, Alagoas": 2705606, + "Paripueira, Alagoas": 2706448, + "Passo de Camaragibe, Alagoas": 2706505, + "Penedo, Alagoas": 2706703, + "Piaçabuçu, Alagoas": 2706802, + "Pilar, Alagoas": 2706901, + "Pindoba, Alagoas": 2707008, + "Porto Calvo, Alagoas": 2707305, + "Porto de Pedras, Alagoas": 2707404, + "Porto Real do Colégio, Alagoas": 2707503, + "Rio Largo, Alagoas": 2707701, + "Roteiro, Alagoas": 2707800, + "Santa Luzia do Norte, Alagoas": 2707909, + "Santana do Mundaú, Alagoas": 2708105, + "São Brás, Alagoas": 2708204, + "São José da Laje, Alagoas": 2708303, + "São Luís do Quitunde, Alagoas": 2708501, + "São Miguel dos Campos, Alagoas": 2708600, + "São Miguel dos Milagres, Alagoas": 2708709, + "Satuba, Alagoas": 2708907, + "União dos Palmares, Alagoas": 2709301, + "Viçosa, Alagoas": 2709400, + "Água Branca, Alagoas": 2700102, + "Arapiraca, Alagoas": 2700300, + "Batalha, Alagoas": 2700706, + "Belém, Alagoas": 2700805, + "Belo Monte, Alagoas": 2700904, + "Cacimbinhas, Alagoas": 2701209, + "Campo Grande, Alagoas": 2701506, + "Canapi, Alagoas": 2701605, + "Carneiros, Alagoas": 2701803, + "Coité do Nóia, Alagoas": 2702009, + "Craíbas, Alagoas": 2702355, + "Delmiro Gouveia, Alagoas": 2702405, + "Dois Riachos, Alagoas": 2702504, + "Estrela de Alagoas, Alagoas": 2702553, + "Feira Grande, Alagoas": 2702603, + "Girau do Ponciano, Alagoas": 2702900, + "Igaci, Alagoas": 2703106, + "Inhapi, Alagoas": 2703304, + "Jacaré dos Homens, Alagoas": 2703403, + "Jaramataia, Alagoas": 2703700, + "Junqueiro, Alagoas": 2704005, + "Lagoa da Canoa, Alagoas": 2704104, + "Limoeiro de Anadia, Alagoas": 2704203, + "Major Isidoro, Alagoas": 2704401, + "Maravilha, Alagoas": 2704609, + "Maribondo, Alagoas": 2704807, + "Mata Grande, Alagoas": 2705002, + "Minador do Negrão, Alagoas": 2705309, + "Monteirópolis, Alagoas": 2705408, + "Olho d'Água das Flores, Alagoas": 2705705, + "Olho d'Água do Casado, Alagoas": 2705804, + "Olho d'Água Grande, Alagoas": 2705903, + "Olivença, Alagoas": 2706000, + "Ouro Branco, Alagoas": 2706109, + "Palestina, Alagoas": 2706208, + "Palmeira dos Índios, Alagoas": 2706307, + "Pão de Açúcar, Alagoas": 2706406, + "Pariconha, Alagoas": 2706422, + "Paulo Jacinto, Alagoas": 2706604, + "Piranhas, Alagoas": 2707107, + "Poço das Trincheiras, Alagoas": 2707206, + "Quebrangulo, Alagoas": 2707602, + "Santana do Ipanema, Alagoas": 2708006, + "São José da Tapera, Alagoas": 2708402, + "São Sebastião, Alagoas": 2708808, + "Senador Rui Palmeira, Alagoas": 2708956, + "Tanque d'Arca, Alagoas": 2709004, + "Taquarana, Alagoas": 2709103, + "Teotônio Vilela, Alagoas": 2709152, + "Traipu, Alagoas": 2709202, + "Amparo de São Francisco, Sergipe": 2800100, + "Aquidabã, Sergipe": 2800209, + "Aracaju, Sergipe": 2800308, + "Arauá, Sergipe": 2800407, + "Barra dos Coqueiros, Sergipe": 2800605, + "Boquim, Sergipe": 2800670, + "Brejo Grande, Sergipe": 2800704, + "Canhoba, Sergipe": 2801108, + "Capela, Sergipe": 2801306, + "Carmópolis, Sergipe": 2801504, + "Cedro de São João, Sergipe": 2801603, + "Cristinápolis, Sergipe": 2801702, + "Cumbe, Sergipe": 2801900, + "Divina Pastora, Sergipe": 2802007, + "Estância, Sergipe": 2802106, + "General Maynard, Sergipe": 2802502, + "Ilha das Flores, Sergipe": 2802700, + "Indiaroba, Sergipe": 2802809, + "Itabaianinha, Sergipe": 2803005, + "Itaporanga d'Ajuda, Sergipe": 2803203, + "Japaratuba, Sergipe": 2803302, + "Japoatã, Sergipe": 2803401, + "Laranjeiras, Sergipe": 2803609, + "Malhada dos Bois, Sergipe": 2803807, + "Maruim, Sergipe": 2804003, + "Muribeca, Sergipe": 2804300, + "Neópolis, Sergipe": 2804409, + "Nossa Senhora das Dores, Sergipe": 2804607, + "Nossa Senhora de Lourdes, Sergipe": 2804706, + "Nossa Senhora do Socorro, Sergipe": 2804805, + "Pacatuba, Sergipe": 2804904, + "Pedrinhas, Sergipe": 2805109, + "Pirambu, Sergipe": 2805307, + "Propriá, Sergipe": 2805703, + "Riachuelo, Sergipe": 2805901, + "Rosário do Catete, Sergipe": 2806107, + "Santa Luzia do Itanhy, Sergipe": 2806305, + "Santana do São Francisco, Sergipe": 2806404, + "Santa Rosa de Lima, Sergipe": 2806503, + "Santo Amaro das Brotas, Sergipe": 2806602, + "São Cristóvão, Sergipe": 2806701, + "São Francisco, Sergipe": 2806909, + "Siriri, Sergipe": 2807204, + "Telha, Sergipe": 2807303, + "Tomar do Geru, Sergipe": 2807501, + "Umbaúba, Sergipe": 2807600, + "Areia Branca, Sergipe": 2800506, + "Campo do Brito, Sergipe": 2801009, + "Canindé de São Francisco, Sergipe": 2801207, + "Carira, Sergipe": 2801405, + "Feira Nova, Sergipe": 2802205, + "Frei Paulo, Sergipe": 2802304, + "Gararu, Sergipe": 2802403, + "Gracho Cardoso, Sergipe": 2802601, + "Itabaiana, Sergipe": 2802908, + "Itabi, Sergipe": 2803104, + "Lagarto, Sergipe": 2803500, + "Macambira, Sergipe": 2803708, + "Malhador, Sergipe": 2803906, + "Moita Bonita, Sergipe": 2804102, + "Monte Alegre de Sergipe, Sergipe": 2804201, + "Nossa Senhora Aparecida, Sergipe": 2804458, + "Nossa Senhora da Glória, Sergipe": 2804508, + "Pedra Mole, Sergipe": 2805000, + "Pinhão, Sergipe": 2805208, + "Poço Redondo, Sergipe": 2805406, + "Poço Verde, Sergipe": 2805505, + "Porto da Folha, Sergipe": 2805604, + "Riachão do Dantas, Sergipe": 2805802, + "Ribeirópolis, Sergipe": 2806008, + "Salgado, Sergipe": 2806206, + "São Domingos, Sergipe": 2806800, + "São Miguel do Aleixo, Sergipe": 2807006, + "Simão Dias, Sergipe": 2807105, + "Tobias Barreto, Sergipe": 2807402, + "Acajutiba, Bahia": 2900306, + "Alagoinhas, Bahia": 2900702, + "Aporá, Bahia": 2901908, + "Araças, Bahia": 2902054, + "Aramari, Bahia": 2902203, + "Camaçari, Bahia": 2905701, + "Candeias, Bahia": 2906501, + "Cardeal da Silva, Bahia": 2907004, + "Catu, Bahia": 2907509, + "Conde, Bahia": 2908606, + "Crisópolis, Bahia": 2909604, + "Dias d'Ávila, Bahia": 2910057, + "Entre Rios, Bahia": 2910503, + "Esplanada, Bahia": 2910602, + "Inhambupe, Bahia": 2913705, + "Itanagra, Bahia": 2915908, + "Itapicuru, Bahia": 2916500, + "Jandaíra, Bahia": 2917904, + "Lauro de Freitas, Bahia": 2919207, + "Madre de Deus, Bahia": 2919926, + "Mata de São João, Bahia": 2921005, + "Pedrão, Bahia": 2924108, + "Pojuca, Bahia": 2925204, + "Rio Real, Bahia": 2927002, + "Salvador, Bahia": 2927408, + "Santo Amaro, Bahia": 2928604, + "São Francisco do Conde, Bahia": 2929206, + "São Sebastião do Passé, Bahia": 2929503, + "Sátiro Dias, Bahia": 2929701, + "Saubara, Bahia": 2929750, + "Simões Filho, Bahia": 2930709, + "Teodoro Sampaio, Bahia": 2931400, + "Terra Nova, Bahia": 2931707, + "Amargosa, Bahia": 2901007, + "Aratuípe, Bahia": 2902302, + "Brejões, Bahia": 2904308, + "Cabaceiras do Paraguaçu, Bahia": 2904852, + "Cachoeira, Bahia": 2904902, + "Cairu, Bahia": 2905404, + "Camamu, Bahia": 2905800, + "Castro Alves, Bahia": 2907301, + "Conceição do Almeida, Bahia": 2908309, + "Cruz das Almas, Bahia": 2909802, + "Dom Macedo Costa, Bahia": 2910206, + "Elísio Medrado, Bahia": 2910305, + "Governador Mangabeira, Bahia": 2911600, + "Igrapiúna, Bahia": 2913457, + "Itaparica, Bahia": 2916104, + "Itatim, Bahia": 2916856, + "Ituberá, Bahia": 2917300, + "Jaguaripe, Bahia": 2917805, + "Jiquiriçá, Bahia": 2918209, + "Laje, Bahia": 2918803, + "Maragogipe, Bahia": 2920601, + "Milagres, Bahia": 2921302, + "Muniz Ferreira, Bahia": 2922201, + "Muritiba, Bahia": 2922300, + "Mutuípe, Bahia": 2922409, + "Nazaré, Bahia": 2922508, + "Nilo Peçanha, Bahia": 2922607, + "Nova Itarana, Bahia": 2922805, + "Presidente Tancredo Neves, Bahia": 2925758, + "Salinas da Margarida, Bahia": 2927309, + "Santa Teresinha, Bahia": 2928505, + "Santo Antônio de Jesus, Bahia": 2928703, + "São Félix, Bahia": 2929008, + "São Felipe, Bahia": 2929107, + "São Miguel das Matas, Bahia": 2929404, + "Sapeaçu, Bahia": 2929602, + "Taperoá, Bahia": 2931202, + "Ubaíra, Bahia": 2932101, + "Valença, Bahia": 2932903, + "Varzedo, Bahia": 2933174, + "Vera Cruz, Bahia": 2933208, + "Alcobaça, Bahia": 2900801, + "Almadina, Bahia": 2900900, + "Arataca, Bahia": 2902252, + "Aurelino Leal, Bahia": 2902401, + "Barro Preto, Bahia": 2903300, + "Belmonte, Bahia": 2903409, + "Buerarema, Bahia": 2904704, + "Camacan, Bahia": 2905602, + "Canavieiras, Bahia": 2906303, + "Caravelas, Bahia": 2906907, + "Coaraci, Bahia": 2908002, + "Eunápolis, Bahia": 2910727, + "Firmino Alves, Bahia": 2910909, + "Floresta Azul, Bahia": 2911006, + "Guaratinga, Bahia": 2911808, + "Ibicaraí, Bahia": 2912103, + "Ibicuí, Bahia": 2912301, + "Ibirapitanga, Bahia": 2912707, + "Ibirapuã, Bahia": 2912806, + "Ilhéus, Bahia": 2913606, + "Itabela, Bahia": 2914653, + "Itabuna, Bahia": 2914802, + "Itacaré, Bahia": 2914901, + "Itagimirim, Bahia": 2915304, + "Itaju do Colônia, Bahia": 2915403, + "Itajuípe, Bahia": 2915502, + "Itamaraju, Bahia": 2915601, + "Itanhém, Bahia": 2916005, + "Itapé, Bahia": 2916203, + "Itapebi, Bahia": 2916302, + "Itapitanga, Bahia": 2916609, + "Jucuruçu, Bahia": 2918456, + "Jussari, Bahia": 2918555, + "Lajedão, Bahia": 2918902, + "Maraú, Bahia": 2920700, + "Mascote, Bahia": 2920908, + "Medeiros Neto, Bahia": 2921104, + "Mucuri, Bahia": 2922003, + "Nova Viçosa, Bahia": 2923001, + "Pau Brasil, Bahia": 2923902, + "Porto Seguro, Bahia": 2925303, + "Prado, Bahia": 2925501, + "Santa Cruz Cabrália, Bahia": 2927705, + "Santa Cruz da Vitória, Bahia": 2927804, + "Santa Luzia, Bahia": 2928059, + "São José da Vitória, Bahia": 2929354, + "Teixeira de Freitas, Bahia": 2931350, + "Ubaitaba, Bahia": 2932200, + "Una, Bahia": 2932507, + "Uruçuca, Bahia": 2932705, + "Vereda, Bahia": 2933257, + "Abaíra, Bahia": 2900108, + "Érico Cardoso, Bahia": 2900504, + "Aiquara, Bahia": 2900603, + "Anagé, Bahia": 2901205, + "Apuarema, Bahia": 2901957, + "Aracatu, Bahia": 2902005, + "Barra da Estiva, Bahia": 2902807, + "Barra do Choça, Bahia": 2902906, + "Barra do Rocha, Bahia": 2903102, + "Belo Campo, Bahia": 2903508, + "Boa Nova, Bahia": 2903706, + "Bom Jesus da Serra, Bahia": 2903953, + "Brumado, Bahia": 2904605, + "Caatiba, Bahia": 2904803, + "Caetanos, Bahia": 2905156, + "Cândido Sales, Bahia": 2906709, + "Caraíbas, Bahia": 2906899, + "Caturama, Bahia": 2907558, + "Condeúba, Bahia": 2908705, + "Contendas do Sincorá, Bahia": 2908804, + "Cordeiros, Bahia": 2909000, + "Cravolândia, Bahia": 2909505, + "Dário Meira, Bahia": 2910008, + "Dom Basílio, Bahia": 2910107, + "Encruzilhada, Bahia": 2910404, + "Gandu, Bahia": 2911204, + "Gongogi, Bahia": 2911501, + "Ibicoara, Bahia": 2912202, + "Ibirataia, Bahia": 2912905, + "Iguaí, Bahia": 2913507, + "Ipiaú, Bahia": 2913903, + "Irajuba, Bahia": 2914208, + "Iramaia, Bahia": 2914307, + "Itagi, Bahia": 2915106, + "Itagibá, Bahia": 2915205, + "Itamari, Bahia": 2915700, + "Itambé, Bahia": 2915809, + "Itapetinga, Bahia": 2916401, + "Itaquara, Bahia": 2916708, + "Itarantim, Bahia": 2916807, + "Itiruçu, Bahia": 2916906, + "Itororó, Bahia": 2917102, + "Ituaçu, Bahia": 2917201, + "Jaguaquara, Bahia": 2917607, + "Jequié, Bahia": 2918001, + "Jitaúna, Bahia": 2918308, + "Jussiape, Bahia": 2918605, + "Lafaiete Coutinho, Bahia": 2918704, + "Lajedo do Tabocal, Bahia": 2919058, + "Livramento de Nossa Senhora, Bahia": 2919504, + "Macarani, Bahia": 2919702, + "Maetinga, Bahia": 2919959, + "Maiquinique, Bahia": 2920007, + "Malhada de Pedras, Bahia": 2920304, + "Manoel Vitorino, Bahia": 2920403, + "Maracás, Bahia": 2920502, + "Mirante, Bahia": 2921450, + "Nova Canaã, Bahia": 2922706, + "Nova Ibiá, Bahia": 2922755, + "Paramirim, Bahia": 2923605, + "Piraí do Norte, Bahia": 2924678, + "Piripá, Bahia": 2924702, + "Planaltino, Bahia": 2924900, + "Planalto, Bahia": 2925006, + "Poções, Bahia": 2925105, + "Potiraguá, Bahia": 2925402, + "Presidente Jânio Quadros, Bahia": 2925709, + "Ribeirão do Largo, Bahia": 2926657, + "Rio de Contas, Bahia": 2926707, + "Rio do Pires, Bahia": 2926905, + "Santa Inês, Bahia": 2927903, + "Tanhaçu, Bahia": 2931004, + "Teolândia, Bahia": 2931608, + "Tremedal, Bahia": 2931806, + "Ubatã, Bahia": 2932309, + "Vitória da Conquista, Bahia": 2933307, + "Wenceslau Guimarães, Bahia": 2933505, + "Bom Jesus da Lapa, Bahia": 2903904, + "Boquira, Bahia": 2904100, + "Botuporã, Bahia": 2904209, + "Caculé, Bahia": 2905008, + "Caetité, Bahia": 2905206, + "Candiba, Bahia": 2906600, + "Carinhanha, Bahia": 2907103, + "Feira da Mata, Bahia": 2910776, + "Guajeru, Bahia": 2911659, + "Guanambi, Bahia": 2911709, + "Ibiassucê, Bahia": 2912004, + "Ibipitanga, Bahia": 2912509, + "Igaporã, Bahia": 2913408, + "Iuiú, Bahia": 2917334, + "Jacaraci, Bahia": 2917409, + "Lagoa Real, Bahia": 2918753, + "Licínio de Almeida, Bahia": 2919405, + "Macaúbas, Bahia": 2919801, + "Malhada, Bahia": 2920205, + "Matina, Bahia": 2921054, + "Mortugaba, Bahia": 2921807, + "Palmas de Monte Alto, Bahia": 2923407, + "Paratinga, Bahia": 2923704, + "Pindaí, Bahia": 2924504, + "Riacho de Santana, Bahia": 2926400, + "Rio do Antônio, Bahia": 2926806, + "Sebastião Laranjeiras, Bahia": 2930006, + "Serra do Ramalho, Bahia": 2930154, + "Sítio do Mato, Bahia": 2930758, + "Tanque Novo, Bahia": 2931053, + "Urandi, Bahia": 2932606, + "América Dourada, Bahia": 2901155, + "Barra, Bahia": 2902708, + "Barra do Mendes, Bahia": 2903003, + "Barro Alto, Bahia": 2903235, + "Bonito, Bahia": 2904050, + "Brotas de Macaúbas, Bahia": 2904506, + "Buritirama, Bahia": 2904753, + "Cafarnaum, Bahia": 2905305, + "Canarana, Bahia": 2906204, + "Central, Bahia": 2907608, + "Gentio do Ouro, Bahia": 2911303, + "Ibipeba, Bahia": 2912400, + "Ibititá, Bahia": 2913101, + "Ibotirama, Bahia": 2913200, + "Ipupiara, Bahia": 2914109, + "Irecê, Bahia": 2914604, + "Itaguaçu da Bahia, Bahia": 2915353, + "João Dourado, Bahia": 2918357, + "Jussara, Bahia": 2918506, + "Lapão, Bahia": 2919157, + "Morpará, Bahia": 2921609, + "Morro do Chapéu, Bahia": 2921708, + "Mulungu do Morro, Bahia": 2922052, + "Muquém de São Francisco, Bahia": 2922250, + "Oliveira dos Brejinhos, Bahia": 2923209, + "Presidente Dutra, Bahia": 2925600, + "São Gabriel, Bahia": 2929255, + "Uibaí, Bahia": 2932408, + "Xique-Xique, Bahia": 2933604, + "Abaré, Bahia": 2900207, + "Adustina, Bahia": 2900355, + "Antas, Bahia": 2901601, + "Banzaê, Bahia": 2902658, + "Cansanção, Bahia": 2906808, + "Canudos, Bahia": 2906824, + "Chorrochó, Bahia": 2907707, + "Cícero Dantas, Bahia": 2907806, + "Cipó, Bahia": 2907905, + "Coronel João Sá, Bahia": 2909208, + "Euclides da Cunha, Bahia": 2910701, + "Fátima, Bahia": 2910750, + "Glória, Bahia": 2911402, + "Heliópolis, Bahia": 2911857, + "Jeremoabo, Bahia": 2918100, + "Macururé, Bahia": 2919900, + "Monte Santo, Bahia": 2921500, + "Nova Soure, Bahia": 2922904, + "Novo Triunfo, Bahia": 2923050, + "Olindina, Bahia": 2923100, + "Paripiranga, Bahia": 2923803, + "Paulo Afonso, Bahia": 2924009, + "Pedro Alexandre, Bahia": 2924207, + "Quijingue, Bahia": 2925907, + "Ribeira do Amparo, Bahia": 2926509, + "Ribeira do Pombal, Bahia": 2926608, + "Rodelas, Bahia": 2927101, + "Santa Brígida, Bahia": 2927606, + "Sítio do Quinto, Bahia": 2930766, + "Tucano, Bahia": 2931905, + "Água Fria, Bahia": 2900405, + "Amélia Rodrigues, Bahia": 2901106, + "Andaraí, Bahia": 2901304, + "Anguera, Bahia": 2901502, + "Antônio Cardoso, Bahia": 2901700, + "Araci, Bahia": 2902104, + "Baixa Grande, Bahia": 2902609, + "Barrocas, Bahia": 2903276, + "Biritinga, Bahia": 2903607, + "Boa Vista do Tupim, Bahia": 2903805, + "Boninal, Bahia": 2904001, + "Caém, Bahia": 2905107, + "Caldeirão Grande, Bahia": 2905503, + "Candeal, Bahia": 2906402, + "Capela do Alto Alegre, Bahia": 2906857, + "Capim Grosso, Bahia": 2906873, + "Conceição da Feira, Bahia": 2908200, + "Conceição do Coité, Bahia": 2908408, + "Conceição do Jacuípe, Bahia": 2908507, + "Coração de Maria, Bahia": 2908903, + "Feira de Santana, Bahia": 2910800, + "Gavião, Bahia": 2911253, + "Iaçu, Bahia": 2911907, + "Ibiquera, Bahia": 2912608, + "Ibitiara, Bahia": 2913002, + "Ichu, Bahia": 2913309, + "Ipecaetá, Bahia": 2913804, + "Ipirá, Bahia": 2914000, + "Iraquara, Bahia": 2914406, + "Irará, Bahia": 2914505, + "Itaberaba, Bahia": 2914703, + "Itaeté, Bahia": 2915007, + "Jacobina, Bahia": 2917508, + "Lajedinho, Bahia": 2919009, + "Lamarão, Bahia": 2919108, + "Lençóis, Bahia": 2919306, + "Macajuba, Bahia": 2919603, + "Mairi, Bahia": 2920106, + "Marcionílio Souza, Bahia": 2920809, + "Miguel Calmon, Bahia": 2921203, + "Mirangaba, Bahia": 2921401, + "Mucugê, Bahia": 2921906, + "Mundo Novo, Bahia": 2922102, + "Nordestina, Bahia": 2922656, + "Nova Fátima, Bahia": 2922730, + "Nova Redenção, Bahia": 2922854, + "Novo Horizonte, Bahia": 2923035, + "Ouriçangas, Bahia": 2923308, + "Ourolândia, Bahia": 2923357, + "Palmeiras, Bahia": 2923506, + "Pé de Serra, Bahia": 2924058, + "Piatã, Bahia": 2924306, + "Pintadas, Bahia": 2924652, + "Piritiba, Bahia": 2924801, + "Queimadas, Bahia": 2925808, + "Quixabeira, Bahia": 2925931, + "Rafael Jambeiro, Bahia": 2925956, + "Retirolândia, Bahia": 2926103, + "Riachão do Jacuípe, Bahia": 2926301, + "Ruy Barbosa, Bahia": 2927200, + "Santa Bárbara, Bahia": 2927507, + "Santaluz, Bahia": 2928000, + "Santanópolis, Bahia": 2928307, + "Santo Estêvão, Bahia": 2928802, + "São Domingos, Bahia": 2928950, + "São Gonçalo dos Campos, Bahia": 2929305, + "São José do Jacuípe, Bahia": 2929370, + "Saúde, Bahia": 2929800, + "Seabra, Bahia": 2929909, + "Serra Preta, Bahia": 2930402, + "Serrinha, Bahia": 2930501, + "Serrolândia, Bahia": 2930600, + "Souto Soares, Bahia": 2930808, + "Tanquinho, Bahia": 2931103, + "Tapiramutá, Bahia": 2931301, + "Teofilândia, Bahia": 2931509, + "Umburanas, Bahia": 2932457, + "Utinga, Bahia": 2932804, + "Valente, Bahia": 2933000, + "Várzea da Roça, Bahia": 2933059, + "Várzea do Poço, Bahia": 2933109, + "Várzea Nova, Bahia": 2933158, + "Wagner, Bahia": 2933406, + "Araçaí, Minas Gerais": 3103207, + "Augusto de Lima, Minas Gerais": 3104809, + "Baldim, Minas Gerais": 3105004, + "Barão de Cocais, Minas Gerais": 3105400, + "Belo Horizonte, Minas Gerais": 3106200, + "Betim, Minas Gerais": 3106705, + "Bom Jesus do Amparo, Minas Gerais": 3107703, + "Brumadinho, Minas Gerais": 3109006, + "Buenópolis, Minas Gerais": 3109204, + "Cachoeira da Prata, Minas Gerais": 3109600, + "Caetanópolis, Minas Gerais": 3109907, + "Caeté, Minas Gerais": 3110004, + "Capim Branco, Minas Gerais": 3112505, + "Carmésia, Minas Gerais": 3113800, + "Catas Altas, Minas Gerais": 3115359, + "Conceição do Mato Dentro, Minas Gerais": 3117504, + "Confins, Minas Gerais": 3117876, + "Congonhas do Norte, Minas Gerais": 3118106, + "Contagem, Minas Gerais": 3118601, + "Cordisburgo, Minas Gerais": 3118908, + "Corinto, Minas Gerais": 3119104, + "Curvelo, Minas Gerais": 3120904, + "Esmeraldas, Minas Gerais": 3124104, + "Felixlândia, Minas Gerais": 3125705, + "Ferros, Minas Gerais": 3125903, + "Florestal, Minas Gerais": 3126000, + "Fortuna de Minas, Minas Gerais": 3126406, + "Funilândia, Minas Gerais": 3127206, + "Ibirité, Minas Gerais": 3129806, + "Igarapé, Minas Gerais": 3130101, + "Inhaúma, Minas Gerais": 3131000, + "Inimutaba, Minas Gerais": 3131109, + "Itabira, Minas Gerais": 3131703, + "Itabirito, Minas Gerais": 3131901, + "Itambé do Mato Dentro, Minas Gerais": 3132800, + "Jaboticatubas, Minas Gerais": 3134608, + "Jequitibá, Minas Gerais": 3135704, + "Nova União, Minas Gerais": 3136603, + "Juatuba, Minas Gerais": 3136652, + "Lagoa Santa, Minas Gerais": 3137601, + "Mariana, Minas Gerais": 3140001, + "Mário Campos, Minas Gerais": 3140159, + "Mateus Leme, Minas Gerais": 3140704, + "Matozinhos, Minas Gerais": 3141108, + "Moeda, Minas Gerais": 3142304, + "Monjolos, Minas Gerais": 3142502, + "Morro da Garça, Minas Gerais": 3143609, + "Morro do Pilar, Minas Gerais": 3143708, + "Nova Lima, Minas Gerais": 3144805, + "Ouro Preto, Minas Gerais": 3146107, + "Paraopeba, Minas Gerais": 3147402, + "Passabém, Minas Gerais": 3147501, + "Pedro Leopoldo, Minas Gerais": 3149309, + "Presidente Juscelino, Minas Gerais": 3153202, + "Prudente de Morais, Minas Gerais": 3153608, + "Raposos, Minas Gerais": 3153905, + "Ribeirão das Neves, Minas Gerais": 3154606, + "Rio Acima, Minas Gerais": 3154804, + "Sabará, Minas Gerais": 3156700, + "Santa Bárbara, Minas Gerais": 3157203, + "Santa Luzia, Minas Gerais": 3157807, + "Santa Maria de Itabira, Minas Gerais": 3158003, + "Santana de Pirapama, Minas Gerais": 3158508, + "Santana do Riacho, Minas Gerais": 3159001, + "Santo Antônio do Rio Abaixo, Minas Gerais": 3160504, + "Santo Hipólito, Minas Gerais": 3160603, + "São Joaquim de Bicas, Minas Gerais": 3162922, + "São José da Lapa, Minas Gerais": 3162955, + "São Sebastião do Rio Preto, Minas Gerais": 3164803, + "Sarzedo, Minas Gerais": 3165537, + "Sete Lagoas, Minas Gerais": 3167202, + "Taquaraçu de Minas, Minas Gerais": 3168309, + "Três Marias, Minas Gerais": 3169356, + "Vespasiano, Minas Gerais": 3171204, + "Berizal, Minas Gerais": 3106655, + "Bocaiúva, Minas Gerais": 3107307, + "Bonito de Minas, Minas Gerais": 3108255, + "Botumirim, Minas Gerais": 3108503, + "Brasília de Minas, Minas Gerais": 3108602, + "Buritizeiro, Minas Gerais": 3109402, + "Campo Azul, Minas Gerais": 3111150, + "Capitão Enéas, Minas Gerais": 3112703, + "Catuti, Minas Gerais": 3115474, + "Chapada Gaúcha, Minas Gerais": 3116159, + "Claro dos Poções, Minas Gerais": 3116506, + "Cônego Marinho, Minas Gerais": 3117836, + "Coração de Jesus, Minas Gerais": 3118809, + "Cristália, Minas Gerais": 3120300, + "Curral de Dentro, Minas Gerais": 3120870, + "Engenheiro Navarro, Minas Gerais": 3123809, + "Espinosa, Minas Gerais": 3124302, + "Francisco Dumont, Minas Gerais": 3126604, + "Francisco Sá, Minas Gerais": 3126703, + "Fruta de Leite, Minas Gerais": 3127073, + "Gameleiras, Minas Gerais": 3127339, + "Glaucilândia, Minas Gerais": 3127354, + "Grão Mogol, Minas Gerais": 3127800, + "Guaraciama, Minas Gerais": 3128253, + "Ibiaí, Minas Gerais": 3129608, + "Ibiracatu, Minas Gerais": 3129657, + "Icaraí de Minas, Minas Gerais": 3130051, + "Indaiabira, Minas Gerais": 3130655, + "Itacambira, Minas Gerais": 3132008, + "Itacarambi, Minas Gerais": 3132107, + "Jaíba, Minas Gerais": 3135050, + "Janaúba, Minas Gerais": 3135100, + "Januária, Minas Gerais": 3135209, + "Japonvar, Minas Gerais": 3135357, + "Jequitaí, Minas Gerais": 3135605, + "Joaquim Felício, Minas Gerais": 3136405, + "Josenópolis, Minas Gerais": 3136579, + "Juramento, Minas Gerais": 3136801, + "Juvenília, Minas Gerais": 3136959, + "Lagoa dos Patos, Minas Gerais": 3137304, + "Lassance, Minas Gerais": 3138104, + "Lontra, Minas Gerais": 3138658, + "Luislândia, Minas Gerais": 3138682, + "Mamonas, Minas Gerais": 3139250, + "Manga, Minas Gerais": 3139300, + "Matias Cardoso, Minas Gerais": 3140852, + "Mato Verde, Minas Gerais": 3141009, + "Mirabela, Minas Gerais": 3142007, + "Miravânia, Minas Gerais": 3142254, + "Montalvânia, Minas Gerais": 3142700, + "Monte Azul, Minas Gerais": 3142908, + "Montes Claros, Minas Gerais": 3143302, + "Montezuma, Minas Gerais": 3143450, + "Ninheira, Minas Gerais": 3144656, + "Nova Porteirinha, Minas Gerais": 3145059, + "Novorizonte, Minas Gerais": 3145372, + "Olhos-d'Água, Minas Gerais": 3145455, + "Padre Carvalho, Minas Gerais": 3146255, + "Pai Pedro, Minas Gerais": 3146552, + "Patis, Minas Gerais": 3147956, + "Pedras de Maria da Cruz, Minas Gerais": 3149150, + "Pintópolis, Minas Gerais": 3150570, + "Pirapora, Minas Gerais": 3151206, + "Ponto Chique, Minas Gerais": 3152131, + "Porteirinha, Minas Gerais": 3152204, + "Riacho dos Machados, Minas Gerais": 3154507, + "Rio Pardo de Minas, Minas Gerais": 3155603, + "Rubelita, Minas Gerais": 3156502, + "Salinas, Minas Gerais": 3157005, + "Santa Cruz de Salinas, Minas Gerais": 3157377, + "Santa Fé de Minas, Minas Gerais": 3157609, + "Santo Antônio do Retiro, Minas Gerais": 3160454, + "São Francisco, Minas Gerais": 3161106, + "São João da Lagoa, Minas Gerais": 3162252, + "São João da Ponte, Minas Gerais": 3162401, + "São João das Missões, Minas Gerais": 3162450, + "São João do Pacuí, Minas Gerais": 3162658, + "São João do Paraíso, Minas Gerais": 3162708, + "São Romão, Minas Gerais": 3164209, + "Serranópolis de Minas, Minas Gerais": 3166956, + "Taiobeiras, Minas Gerais": 3168002, + "Ubaí, Minas Gerais": 3170008, + "Vargem Grande do Rio Pardo, Minas Gerais": 3170651, + "Várzea da Palma, Minas Gerais": 3170800, + "Varzelândia, Minas Gerais": 3170909, + "Verdelândia, Minas Gerais": 3171030, + "Água Boa, Minas Gerais": 3100609, + "Águas Formosas, Minas Gerais": 3100906, + "Águas Vermelhas, Minas Gerais": 3101003, + "Almenara, Minas Gerais": 3101706, + "Alvorada de Minas, Minas Gerais": 3102407, + "Cachoeira de Pajeú, Minas Gerais": 3102704, + "Angelândia, Minas Gerais": 3102852, + "Araçuaí, Minas Gerais": 3103405, + "Aricanduva, Minas Gerais": 3104452, + "Ataléia, Minas Gerais": 3104700, + "Bandeira, Minas Gerais": 3105202, + "Berilo, Minas Gerais": 3106507, + "Bertópolis, Minas Gerais": 3106606, + "Campanário, Minas Gerais": 3110806, + "Capelinha, Minas Gerais": 3112307, + "Caraí, Minas Gerais": 3113008, + "Carbonita, Minas Gerais": 3113503, + "Carlos Chagas, Minas Gerais": 3113701, + "Catuji, Minas Gerais": 3115458, + "Chapada do Norte, Minas Gerais": 3116100, + "Comercinho, Minas Gerais": 3117009, + "Coronel Murta, Minas Gerais": 3119500, + "Couto de Magalhães de Minas, Minas Gerais": 3120102, + "Crisólita, Minas Gerais": 3120151, + "Datas, Minas Gerais": 3121001, + "Diamantina, Minas Gerais": 3121605, + "Divisa Alegre, Minas Gerais": 3122355, + "Divisópolis, Minas Gerais": 3122454, + "Felício dos Santos, Minas Gerais": 3125408, + "São Gonçalo do Rio Preto, Minas Gerais": 3125507, + "Felisburgo, Minas Gerais": 3125606, + "Francisco Badaró, Minas Gerais": 3126505, + "Franciscópolis, Minas Gerais": 3126752, + "Frei Gaspar, Minas Gerais": 3126802, + "Fronteira dos Vales, Minas Gerais": 3127057, + "Gouveia, Minas Gerais": 3127602, + "Itaipé, Minas Gerais": 3132305, + "Itamarandiba, Minas Gerais": 3132503, + "Itambacuri, Minas Gerais": 3132701, + "Itaobim, Minas Gerais": 3133303, + "Itinga, Minas Gerais": 3134004, + "Jacinto, Minas Gerais": 3134707, + "Jenipapo de Minas, Minas Gerais": 3135456, + "Jequitinhonha, Minas Gerais": 3135803, + "Joaíma, Minas Gerais": 3136009, + "Jordânia, Minas Gerais": 3136504, + "José Gonçalves de Minas, Minas Gerais": 3136520, + "Ladainha, Minas Gerais": 3137007, + "Leme do Prado, Minas Gerais": 3138351, + "Machacalis, Minas Gerais": 3138906, + "Malacacheta, Minas Gerais": 3139201, + "Mata Verde, Minas Gerais": 3140555, + "Medina, Minas Gerais": 3141405, + "Minas Novas, Minas Gerais": 3141801, + "Monte Formoso, Minas Gerais": 3143153, + "Nanuque, Minas Gerais": 3144300, + "Nova Módica, Minas Gerais": 3144904, + "Novo Cruzeiro, Minas Gerais": 3145307, + "Novo Oriente de Minas, Minas Gerais": 3145356, + "Ouro Verde de Minas, Minas Gerais": 3146206, + "Padre Paraíso, Minas Gerais": 3146305, + "Palmópolis, Minas Gerais": 3146750, + "Pavão, Minas Gerais": 3148509, + "Pedra Azul, Minas Gerais": 3148707, + "Pescador, Minas Gerais": 3150000, + "Ponto dos Volantes, Minas Gerais": 3152170, + "Poté, Minas Gerais": 3152402, + "Presidente Kubitschek, Minas Gerais": 3153301, + "Rio do Prado, Minas Gerais": 3155108, + "Rubim, Minas Gerais": 3156601, + "Salto da Divisa, Minas Gerais": 3157104, + "Santa Helena de Minas, Minas Gerais": 3157658, + "Santa Maria do Salto, Minas Gerais": 3158102, + "Santo Antônio do Itambé, Minas Gerais": 3160207, + "Santo Antônio do Jacinto, Minas Gerais": 3160306, + "São José do Divino, Minas Gerais": 3163300, + "Setubinha, Minas Gerais": 3165552, + "Senador Modestino Gonçalves, Minas Gerais": 3165909, + "Serra Azul de Minas, Minas Gerais": 3166501, + "Serra dos Aimorés, Minas Gerais": 3166709, + "Serro, Minas Gerais": 3167103, + "Teófilo Otoni, Minas Gerais": 3168606, + "Turmalina, Minas Gerais": 3169703, + "Umburatiba, Minas Gerais": 3170305, + "Veredinha, Minas Gerais": 3171071, + "Virgem da Lapa, Minas Gerais": 3171600, + "Aimorés, Minas Gerais": 3101102, + "Alpercata, Minas Gerais": 3101805, + "Cantagalo, Minas Gerais": 3112059, + "Capitão Andrade, Minas Gerais": 3112653, + "Central de Minas, Minas Gerais": 3115706, + "Coluna, Minas Gerais": 3116803, + "Conselheiro Pena, Minas Gerais": 3118403, + "Coroaci, Minas Gerais": 3119203, + "Cuparaque, Minas Gerais": 3120839, + "Divino das Laranjeiras, Minas Gerais": 3122108, + "Divinolândia de Minas, Minas Gerais": 3122207, + "Dom Joaquim, Minas Gerais": 3122603, + "Dores de Guanhães, Minas Gerais": 3123106, + "Engenheiro Caldas, Minas Gerais": 3123700, + "Fernandes Tourinho, Minas Gerais": 3125804, + "Frei Inocêncio, Minas Gerais": 3126901, + "Frei Lagonegro, Minas Gerais": 3126950, + "Galiléia, Minas Gerais": 3127305, + "Goiabeira, Minas Gerais": 3127370, + "Gonzaga, Minas Gerais": 3127503, + "Governador Valadares, Minas Gerais": 3127701, + "Guanhães, Minas Gerais": 3128006, + "Itabirinha, Minas Gerais": 3131802, + "Itanhomi, Minas Gerais": 3133204, + "Itueta, Minas Gerais": 3134103, + "Jampruca, Minas Gerais": 3135076, + "José Raydan, Minas Gerais": 3136553, + "Mantena, Minas Gerais": 3139607, + "Marilac, Minas Gerais": 3140100, + "Materlândia, Minas Gerais": 3140605, + "Mendes Pimentel, Minas Gerais": 3141504, + "Nacip Raydan, Minas Gerais": 3144201, + "Nova Belém, Minas Gerais": 3144672, + "Paulistas, Minas Gerais": 3148400, + "Peçanha, Minas Gerais": 3148608, + "Resplendor, Minas Gerais": 3154309, + "Rio Vermelho, Minas Gerais": 3156007, + "Sabinópolis, Minas Gerais": 3156809, + "Santa Efigênia de Minas, Minas Gerais": 3157500, + "Santa Maria do Suaçuí, Minas Gerais": 3158201, + "Santa Rita do Itueto, Minas Gerais": 3159506, + "São Félix de Minas, Minas Gerais": 3161056, + "São Geraldo da Piedade, Minas Gerais": 3161601, + "São Geraldo do Baixio, Minas Gerais": 3161650, + "São João do Manteninha, Minas Gerais": 3162575, + "São João Evangelista, Minas Gerais": 3162807, + "São José da Safira, Minas Gerais": 3163003, + "São José do Jacuri, Minas Gerais": 3163508, + "São Pedro do Suaçuí, Minas Gerais": 3164100, + "São Sebastião do Maranhão, Minas Gerais": 3164506, + "Sardoá, Minas Gerais": 3165503, + "Senhora do Porto, Minas Gerais": 3166105, + "Sobrália, Minas Gerais": 3167707, + "Tarumirim, Minas Gerais": 3168408, + "Tumiritinga, Minas Gerais": 3169505, + "Mathias Lobato, Minas Gerais": 3171501, + "Virginópolis, Minas Gerais": 3171808, + "Virgolândia, Minas Gerais": 3171907, + "Açucena, Minas Gerais": 3100500, + "Alvarenga, Minas Gerais": 3102209, + "Antônio Dias, Minas Gerais": 3103009, + "Bela Vista de Minas, Minas Gerais": 3106002, + "Belo Oriente, Minas Gerais": 3106309, + "Bom Jesus do Galho, Minas Gerais": 3107802, + "Braúnas, Minas Gerais": 3108800, + "Bugre, Minas Gerais": 3109253, + "Caratinga, Minas Gerais": 3113404, + "Coronel Fabriciano, Minas Gerais": 3119401, + "Córrego Novo, Minas Gerais": 3120003, + "Dionísio, Minas Gerais": 3121803, + "Dom Cavati, Minas Gerais": 3122504, + "Entre Folhas, Minas Gerais": 3123858, + "Iapu, Minas Gerais": 3129301, + "Imbé de Minas, Minas Gerais": 3130556, + "Inhapim, Minas Gerais": 3130903, + "Ipaba, Minas Gerais": 3131158, + "Ipatinga, Minas Gerais": 3131307, + "Jaguaraçu, Minas Gerais": 3135001, + "Joanésia, Minas Gerais": 3136108, + "João Monlevade, Minas Gerais": 3136207, + "Marliéria, Minas Gerais": 3140308, + "Mesquita, Minas Gerais": 3141702, + "Naque, Minas Gerais": 3144359, + "Nova Era, Minas Gerais": 3144706, + "Periquito, Minas Gerais": 3149952, + "Piedade de Caratinga, Minas Gerais": 3150158, + "Pingo-d'Água, Minas Gerais": 3150539, + "Raul Soares, Minas Gerais": 3154002, + "Rio Piracicaba, Minas Gerais": 3155702, + "Santa Bárbara do Leste, Minas Gerais": 3157252, + "Santana do Paraíso, Minas Gerais": 3158953, + "Santa Rita de Minas, Minas Gerais": 3159357, + "São Domingos das Dores, Minas Gerais": 3160959, + "São Domingos do Prata, Minas Gerais": 3161007, + "São Gonçalo do Rio Abaixo, Minas Gerais": 3161908, + "São João do Oriente, Minas Gerais": 3162609, + "São José do Goiabal, Minas Gerais": 3163409, + "São Sebastião do Anta, Minas Gerais": 3164472, + "Timóteo, Minas Gerais": 3168705, + "Ubaporanga, Minas Gerais": 3170057, + "Vargem Alegre, Minas Gerais": 3170578, + "Vermelho Novo, Minas Gerais": 3171154, + "Abre Campo, Minas Gerais": 3100302, + "Acaiaca, Minas Gerais": 3100401, + "Além Paraíba, Minas Gerais": 3101508, + "Alto Caparaó, Minas Gerais": 3102050, + "Alvinópolis, Minas Gerais": 3102308, + "Amparo do Serra, Minas Gerais": 3102506, + "Andrelândia, Minas Gerais": 3102803, + "Antônio Prado de Minas, Minas Gerais": 3103108, + "Aracitaba, Minas Gerais": 3103306, + "Arantina, Minas Gerais": 3103603, + "Araponga, Minas Gerais": 3103702, + "Argirita, Minas Gerais": 3104403, + "Astolfo Dutra, Minas Gerais": 3104601, + "Barão de Monte Alto, Minas Gerais": 3105509, + "Barra Longa, Minas Gerais": 3105707, + "Belmiro Braga, Minas Gerais": 3106101, + "Bias Fortes, Minas Gerais": 3106804, + "Bicas, Minas Gerais": 3106903, + "Bocaina de Minas, Minas Gerais": 3107208, + "Bom Jardim de Minas, Minas Gerais": 3107505, + "Brás Pires, Minas Gerais": 3108701, + "Caiana, Minas Gerais": 3110103, + "Cajuri, Minas Gerais": 3110202, + "Canaã, Minas Gerais": 3111705, + "Caparaó, Minas Gerais": 3112109, + "Caputira, Minas Gerais": 3112901, + "Carangola, Minas Gerais": 3113305, + "Cataguases, Minas Gerais": 3115300, + "Chácara, Minas Gerais": 3115904, + "Chalé, Minas Gerais": 3116001, + "Chiador, Minas Gerais": 3116209, + "Coimbra, Minas Gerais": 3116704, + "Conceição de Ipanema, Minas Gerais": 3117405, + "Coronel Pacheco, Minas Gerais": 3119609, + "Descoberto, Minas Gerais": 3121308, + "Diogo de Vasconcelos, Minas Gerais": 3121704, + "Divinésia, Minas Gerais": 3121902, + "Divino, Minas Gerais": 3122009, + "Dom Silvério, Minas Gerais": 3122702, + "Dona Eusébia, Minas Gerais": 3122900, + "Dores do Turvo, Minas Gerais": 3123304, + "Durandé, Minas Gerais": 3123528, + "Ervália, Minas Gerais": 3124005, + "Espera Feliz, Minas Gerais": 3124203, + "Estrela Dalva, Minas Gerais": 3124609, + "Eugenópolis, Minas Gerais": 3124906, + "Ewbank da Câmara, Minas Gerais": 3125002, + "Faria Lemos, Minas Gerais": 3125309, + "Fervedouro, Minas Gerais": 3125952, + "Goianá, Minas Gerais": 3127388, + "Guaraciaba, Minas Gerais": 3128204, + "Guarani, Minas Gerais": 3128402, + "Guarará, Minas Gerais": 3128501, + "Guidoval, Minas Gerais": 3128808, + "Guiricema, Minas Gerais": 3129004, + "Ipanema, Minas Gerais": 3131208, + "Itamarati de Minas, Minas Gerais": 3132602, + "Jequeri, Minas Gerais": 3135506, + "Juiz de Fora, Minas Gerais": 3136702, + "Lajinha, Minas Gerais": 3137700, + "Laranjal, Minas Gerais": 3138005, + "Leopoldina, Minas Gerais": 3138401, + "Liberdade, Minas Gerais": 3138500, + "Lima Duarte, Minas Gerais": 3138609, + "Luisburgo, Minas Gerais": 3138674, + "Manhuaçu, Minas Gerais": 3139409, + "Manhumirim, Minas Gerais": 3139508, + "Mar de Espanha, Minas Gerais": 3139805, + "Maripá de Minas, Minas Gerais": 3140209, + "Martins Soares, Minas Gerais": 3140530, + "Matias Barbosa, Minas Gerais": 3140803, + "Matipó, Minas Gerais": 3140902, + "Mercês, Minas Gerais": 3141603, + "Miradouro, Minas Gerais": 3142106, + "Miraí, Minas Gerais": 3142205, + "Muriaé, Minas Gerais": 3143906, + "Mutum, Minas Gerais": 3144003, + "Olaria, Minas Gerais": 3145406, + "Oliveira Fortes, Minas Gerais": 3145703, + "Oratórios, Minas Gerais": 3145851, + "Orizânia, Minas Gerais": 3145877, + "Paiva, Minas Gerais": 3146602, + "Palma, Minas Gerais": 3146701, + "Passa-Vinte, Minas Gerais": 3147808, + "Patrocínio do Muriaé, Minas Gerais": 3148202, + "Paula Cândido, Minas Gerais": 3148301, + "Pedra Bonita, Minas Gerais": 3148756, + "Pedra do Anta, Minas Gerais": 3148806, + "Pedra Dourada, Minas Gerais": 3149002, + "Pedro Teixeira, Minas Gerais": 3149408, + "Pequeri, Minas Gerais": 3149507, + "Piau, Minas Gerais": 3150109, + "Piedade de Ponte Nova, Minas Gerais": 3150208, + "Pirapetinga, Minas Gerais": 3151107, + "Piraúba, Minas Gerais": 3151305, + "Pocrane, Minas Gerais": 3151909, + "Ponte Nova, Minas Gerais": 3152105, + "Porto Firme, Minas Gerais": 3152303, + "Presidente Bernardes, Minas Gerais": 3153103, + "Alto Jequitibá, Minas Gerais": 3153509, + "Recreio, Minas Gerais": 3154101, + "Reduto, Minas Gerais": 3154150, + "Rio Casca, Minas Gerais": 3154903, + "Rio Doce, Minas Gerais": 3155009, + "Rio Novo, Minas Gerais": 3155405, + "Rio Pomba, Minas Gerais": 3155801, + "Rio Preto, Minas Gerais": 3155900, + "Rochedo de Minas, Minas Gerais": 3156205, + "Rodeiro, Minas Gerais": 3156304, + "Rosário da Limeira, Minas Gerais": 3156452, + "Santa Bárbara do Monte Verde, Minas Gerais": 3157278, + "Santa Cruz do Escalvado, Minas Gerais": 3157401, + "Santa Margarida, Minas Gerais": 3157906, + "Santana de Cataguases, Minas Gerais": 3158409, + "Santana do Deserto, Minas Gerais": 3158607, + "Santana do Manhuaçu, Minas Gerais": 3158904, + "Santa Rita de Jacutinga, Minas Gerais": 3159308, + "Santo Antônio do Aventureiro, Minas Gerais": 3160009, + "Santo Antônio do Grama, Minas Gerais": 3160108, + "Santos Dumont, Minas Gerais": 3160702, + "São Francisco do Glória, Minas Gerais": 3161403, + "São Geraldo, Minas Gerais": 3161502, + "São João do Manhuaçu, Minas Gerais": 3162559, + "São João Nepomuceno, Minas Gerais": 3162906, + "São José do Mantimento, Minas Gerais": 3163607, + "São Miguel do Anta, Minas Gerais": 3163805, + "São Pedro dos Ferros, Minas Gerais": 3164001, + "São Sebastião da Vargem Alegre, Minas Gerais": 3164431, + "Sem-Peixe, Minas Gerais": 3165560, + "Senador Cortes, Minas Gerais": 3165602, + "Senador Firmino, Minas Gerais": 3165701, + "Sericita, Minas Gerais": 3166303, + "Silveirânia, Minas Gerais": 3167301, + "Simão Pereira, Minas Gerais": 3167509, + "Simonésia, Minas Gerais": 3167608, + "Tabuleiro, Minas Gerais": 3167905, + "Taparuba, Minas Gerais": 3168051, + "Teixeiras, Minas Gerais": 3168507, + "Tocantins, Minas Gerais": 3169000, + "Tombos, Minas Gerais": 3169208, + "Ubá, Minas Gerais": 3169901, + "Urucânia, Minas Gerais": 3170503, + "Viçosa, Minas Gerais": 3171303, + "Vieiras, Minas Gerais": 3171402, + "Visconde do Rio Branco, Minas Gerais": 3172004, + "Volta Grande, Minas Gerais": 3172103, + "Alfredo Vasconcelos, Minas Gerais": 3101631, + "Alto Rio Doce, Minas Gerais": 3102100, + "Antônio Carlos, Minas Gerais": 3102902, + "Barbacena, Minas Gerais": 3105608, + "Barroso, Minas Gerais": 3105905, + "Belo Vale, Minas Gerais": 3106408, + "Capela Nova, Minas Gerais": 3112208, + "Caranaíba, Minas Gerais": 3113107, + "Carandaí, Minas Gerais": 3113206, + "Casa Grande, Minas Gerais": 3114907, + "Conceição da Barra de Minas, Minas Gerais": 3115201, + "Catas Altas da Noruega, Minas Gerais": 3115409, + "Cipotânea, Minas Gerais": 3116308, + "Congonhas, Minas Gerais": 3118007, + "Conselheiro Lafaiete, Minas Gerais": 3118304, + "Coronel Xavier Chaves, Minas Gerais": 3119708, + "Cristiano Otoni, Minas Gerais": 3120409, + "Desterro de Entre Rios, Minas Gerais": 3121407, + "Desterro do Melo, Minas Gerais": 3121506, + "Dores de Campos, Minas Gerais": 3123007, + "Entre Rios de Minas, Minas Gerais": 3123908, + "Ibertioga, Minas Gerais": 3129400, + "Itaverava, Minas Gerais": 3133907, + "Jeceaba, Minas Gerais": 3135407, + "Lagoa Dourada, Minas Gerais": 3137403, + "Lamim, Minas Gerais": 3137908, + "Madre de Deus de Minas, Minas Gerais": 3139102, + "Nazareno, Minas Gerais": 3144508, + "Ouro Branco, Minas Gerais": 3145901, + "Piedade do Rio Grande, Minas Gerais": 3150307, + "Piranga, Minas Gerais": 3150802, + "Prados, Minas Gerais": 3152709, + "Queluzito, Minas Gerais": 3153806, + "Resende Costa, Minas Gerais": 3154200, + "Ressaquinha, Minas Gerais": 3154408, + "Rio Espera, Minas Gerais": 3155207, + "Ritápolis, Minas Gerais": 3156106, + "Santa Bárbara do Tugúrio, Minas Gerais": 3157302, + "Santa Cruz de Minas, Minas Gerais": 3157336, + "Santana do Garambéu, Minas Gerais": 3158706, + "Santana dos Montes, Minas Gerais": 3159100, + "Santa Rita de Ibitipoca, Minas Gerais": 3159407, + "São Brás do Suaçuí, Minas Gerais": 3160900, + "São João del Rei, Minas Gerais": 3162500, + "São Tiago, Minas Gerais": 3165008, + "São Vicente de Minas, Minas Gerais": 3165305, + "Senhora de Oliveira, Minas Gerais": 3166006, + "Senhora dos Remédios, Minas Gerais": 3166204, + "Tiradentes, Minas Gerais": 3168804, + "Aguanil, Minas Gerais": 3100807, + "Alfenas, Minas Gerais": 3101607, + "Alpinópolis, Minas Gerais": 3101904, + "Alterosa, Minas Gerais": 3102001, + "Arceburgo, Minas Gerais": 3104106, + "Areado, Minas Gerais": 3104304, + "Boa Esperança, Minas Gerais": 3107109, + "Bom Jesus da Penha, Minas Gerais": 3107604, + "Bom Sucesso, Minas Gerais": 3108008, + "Cabo Verde, Minas Gerais": 3109501, + "Cambuquira, Minas Gerais": 3110707, + "Campanha, Minas Gerais": 3110905, + "Campo Belo, Minas Gerais": 3111200, + "Campo do Meio, Minas Gerais": 3111309, + "Campos Gerais, Minas Gerais": 3111606, + "Cana Verde, Minas Gerais": 3111903, + "Candeias, Minas Gerais": 3112000, + "Capetinga, Minas Gerais": 3112406, + "Capitólio, Minas Gerais": 3112802, + "Carmo da Cachoeira, Minas Gerais": 3113909, + "Carmo do Rio Claro, Minas Gerais": 3114402, + "Carrancas, Minas Gerais": 3114600, + "Carvalhópolis, Minas Gerais": 3114709, + "Cássia, Minas Gerais": 3115102, + "Claraval, Minas Gerais": 3116407, + "Conceição da Aparecida, Minas Gerais": 3117108, + "Coqueiral, Minas Gerais": 3118700, + "Cordislândia, Minas Gerais": 3119005, + "Cristais, Minas Gerais": 3120201, + "Delfinópolis, Minas Gerais": 3121209, + "Divisa Nova, Minas Gerais": 3122405, + "Doresópolis, Minas Gerais": 3123403, + "Elói Mendes, Minas Gerais": 3123601, + "Fama, Minas Gerais": 3125200, + "Fortaleza de Minas, Minas Gerais": 3126307, + "Guapé, Minas Gerais": 3128105, + "Guaranésia, Minas Gerais": 3128303, + "Guaxupé, Minas Gerais": 3128709, + "Ibiraci, Minas Gerais": 3129707, + "Ibituruna, Minas Gerais": 3130002, + "Ijaci, Minas Gerais": 3130408, + "Ilicínea, Minas Gerais": 3130507, + "Ingaí, Minas Gerais": 3130804, + "Itamogi, Minas Gerais": 3132909, + "Itaú de Minas, Minas Gerais": 3133758, + "Itumirim, Minas Gerais": 3134301, + "Itutinga, Minas Gerais": 3134509, + "Jacuí, Minas Gerais": 3134806, + "Juruaia, Minas Gerais": 3136900, + "Lavras, Minas Gerais": 3138203, + "Luminárias, Minas Gerais": 3138708, + "Machado, Minas Gerais": 3139003, + "Monsenhor Paulo, Minas Gerais": 3142601, + "Monte Belo, Minas Gerais": 3143005, + "Monte Santo de Minas, Minas Gerais": 3143203, + "Muzambinho, Minas Gerais": 3144102, + "Nepomuceno, Minas Gerais": 3144607, + "Nova Resende, Minas Gerais": 3145109, + "Paraguaçu, Minas Gerais": 3147204, + "Passos, Minas Gerais": 3147907, + "Perdões, Minas Gerais": 3149903, + "Piumhi, Minas Gerais": 3151503, + "Poço Fundo, Minas Gerais": 3151701, + "Pratápolis, Minas Gerais": 3152907, + "Ribeirão Vermelho, Minas Gerais": 3154705, + "Santana da Vargem, Minas Gerais": 3158300, + "Santana do Jacaré, Minas Gerais": 3158805, + "Santo Antônio do Amparo, Minas Gerais": 3159902, + "São Bento Abade, Minas Gerais": 3160801, + "São Gonçalo do Sapucaí, Minas Gerais": 3162005, + "São João Batista do Glória, Minas Gerais": 3162203, + "São José da Barra, Minas Gerais": 3162948, + "São Pedro da União, Minas Gerais": 3163904, + "São Roque de Minas, Minas Gerais": 3164308, + "São Sebastião do Paraíso, Minas Gerais": 3164704, + "São Tomás de Aquino, Minas Gerais": 3165107, + "São Thomé das Letras, Minas Gerais": 3165206, + "Serrania, Minas Gerais": 3166907, + "Três Corações, Minas Gerais": 3169307, + "Três Pontas, Minas Gerais": 3169406, + "Vargem Bonita, Minas Gerais": 3170602, + "Varginha, Minas Gerais": 3170701, + "Aiuruoca, Minas Gerais": 3101201, + "Alagoa, Minas Gerais": 3101300, + "Albertina, Minas Gerais": 3101409, + "Andradas, Minas Gerais": 3102605, + "Baependi, Minas Gerais": 3104908, + "Bandeira do Sul, Minas Gerais": 3105301, + "Bom Repouso, Minas Gerais": 3107901, + "Borda da Mata, Minas Gerais": 3108305, + "Botelhos, Minas Gerais": 3108404, + "Brazópolis, Minas Gerais": 3108909, + "Bueno Brandão, Minas Gerais": 3109105, + "Cachoeira de Minas, Minas Gerais": 3109709, + "Caldas, Minas Gerais": 3110301, + "Camanducaia, Minas Gerais": 3110509, + "Cambuí, Minas Gerais": 3110608, + "Campestre, Minas Gerais": 3111002, + "Careaçu, Minas Gerais": 3113602, + "Carmo de Minas, Minas Gerais": 3114105, + "Carvalhos, Minas Gerais": 3114808, + "Caxambu, Minas Gerais": 3115508, + "Conceição das Pedras, Minas Gerais": 3117207, + "Conceição do Rio Verde, Minas Gerais": 3117702, + "Conceição dos Ouros, Minas Gerais": 3117801, + "Congonhal, Minas Gerais": 3117900, + "Consolação, Minas Gerais": 3118502, + "Córrego do Bom Jesus, Minas Gerais": 3119906, + "Cristina, Minas Gerais": 3120508, + "Cruzília, Minas Gerais": 3120805, + "Delfim Moreira, Minas Gerais": 3121100, + "Dom Viçoso, Minas Gerais": 3122801, + "Espírito Santo do Dourado, Minas Gerais": 3124401, + "Estiva, Minas Gerais": 3124500, + "Extrema, Minas Gerais": 3125101, + "Gonçalves, Minas Gerais": 3127404, + "Heliodora, Minas Gerais": 3129202, + "Ibitiúra de Minas, Minas Gerais": 3129905, + "Inconfidentes, Minas Gerais": 3130606, + "Ipuiúna, Minas Gerais": 3131505, + "Itajubá, Minas Gerais": 3132404, + "Itamonte, Minas Gerais": 3133006, + "Itanhandu, Minas Gerais": 3133105, + "Itapeva, Minas Gerais": 3133600, + "Jacutinga, Minas Gerais": 3134905, + "Jesuânia, Minas Gerais": 3135902, + "Lambari, Minas Gerais": 3137809, + "Maria da Fé, Minas Gerais": 3139904, + "Marmelópolis, Minas Gerais": 3140407, + "Minduri, Minas Gerais": 3141900, + "Monte Sião, Minas Gerais": 3143401, + "Munhoz, Minas Gerais": 3143807, + "Natércia, Minas Gerais": 3144409, + "Olímpio Noronha, Minas Gerais": 3145505, + "Ouro Fino, Minas Gerais": 3146008, + "Paraisópolis, Minas Gerais": 3147303, + "Passa Quatro, Minas Gerais": 3147600, + "Pedralva, Minas Gerais": 3149101, + "Piranguçu, Minas Gerais": 3150901, + "Piranguinho, Minas Gerais": 3151008, + "Poços de Caldas, Minas Gerais": 3151800, + "Pouso Alegre, Minas Gerais": 3152501, + "Pouso Alto, Minas Gerais": 3152600, + "Santa Rita de Caldas, Minas Gerais": 3159209, + "Santa Rita do Sapucaí, Minas Gerais": 3159605, + "São João da Mata, Minas Gerais": 3162302, + "São José do Alegre, Minas Gerais": 3163201, + "São Lourenço, Minas Gerais": 3163706, + "São Sebastião da Bela Vista, Minas Gerais": 3164407, + "São Sebastião do Rio Verde, Minas Gerais": 3164902, + "Sapucaí-Mirim, Minas Gerais": 3165404, + "Senador Amaral, Minas Gerais": 3165578, + "Senador José Bento, Minas Gerais": 3165800, + "Seritinga, Minas Gerais": 3166402, + "Serranos, Minas Gerais": 3167004, + "Silvianópolis, Minas Gerais": 3167400, + "Soledade de Minas, Minas Gerais": 3167806, + "Tocos do Moji, Minas Gerais": 3169059, + "Toledo, Minas Gerais": 3169109, + "Turvolândia, Minas Gerais": 3169802, + "Virgínia, Minas Gerais": 3171709, + "Wenceslau Braz, Minas Gerais": 3172202, + "Água Comprida, Minas Gerais": 3100708, + "Araxá, Minas Gerais": 3104007, + "Campo Florido, Minas Gerais": 3111408, + "Campos Altos, Minas Gerais": 3111507, + "Carneirinho, Minas Gerais": 3114550, + "Comendador Gomes, Minas Gerais": 3116902, + "Conceição das Alagoas, Minas Gerais": 3117306, + "Conquista, Minas Gerais": 3118205, + "Delta, Minas Gerais": 3121258, + "Fronteira, Minas Gerais": 3127008, + "Frutal, Minas Gerais": 3127107, + "Ibiá, Minas Gerais": 3129509, + "Itapagipe, Minas Gerais": 3133402, + "Iturama, Minas Gerais": 3134400, + "Limeira do Oeste, Minas Gerais": 3138625, + "Nova Ponte, Minas Gerais": 3145000, + "Pedrinópolis, Minas Gerais": 3149200, + "Perdizes, Minas Gerais": 3149804, + "Pirajuba, Minas Gerais": 3150703, + "Planura, Minas Gerais": 3151602, + "Pratinha, Minas Gerais": 3153004, + "Sacramento, Minas Gerais": 3156908, + "Santa Juliana, Minas Gerais": 3157708, + "Santa Rosa da Serra, Minas Gerais": 3159704, + "São Francisco de Sales, Minas Gerais": 3161304, + "Tapira, Minas Gerais": 3168101, + "Uberaba, Minas Gerais": 3170107, + "União de Minas, Minas Gerais": 3170438, + "Veríssimo, Minas Gerais": 3171105, + "Arapuá, Minas Gerais": 3103801, + "Arinos, Minas Gerais": 3104502, + "Bonfinópolis de Minas, Minas Gerais": 3108206, + "Brasilândia de Minas, Minas Gerais": 3108552, + "Buritis, Minas Gerais": 3109303, + "Cabeceira Grande, Minas Gerais": 3109451, + "Carmo do Paranaíba, Minas Gerais": 3114303, + "Coromandel, Minas Gerais": 3119302, + "Cruzeiro da Fortaleza, Minas Gerais": 3120706, + "Dom Bosco, Minas Gerais": 3122470, + "Formoso, Minas Gerais": 3126208, + "Guarda-Mor, Minas Gerais": 3128600, + "Guimarânia, Minas Gerais": 3128907, + "João Pinheiro, Minas Gerais": 3136306, + "Lagamar, Minas Gerais": 3137106, + "Lagoa Formosa, Minas Gerais": 3137502, + "Lagoa Grande, Minas Gerais": 3137536, + "Matutina, Minas Gerais": 3141207, + "Natalândia, Minas Gerais": 3144375, + "Paracatu, Minas Gerais": 3147006, + "Patos de Minas, Minas Gerais": 3148004, + "Patrocínio, Minas Gerais": 3148103, + "Presidente Olegário, Minas Gerais": 3153400, + "Riachinho, Minas Gerais": 3154457, + "Rio Paranaíba, Minas Gerais": 3155504, + "São Gonçalo do Abaeté, Minas Gerais": 3161700, + "São Gotardo, Minas Gerais": 3162104, + "Serra do Salitre, Minas Gerais": 3166808, + "Tiros, Minas Gerais": 3168903, + "Unaí, Minas Gerais": 3170404, + "Uruana de Minas, Minas Gerais": 3170479, + "Urucuia, Minas Gerais": 3170529, + "Varjão de Minas, Minas Gerais": 3170750, + "Vazante, Minas Gerais": 3171006, + "Abaeté, Minas Gerais": 3100203, + "Araújos, Minas Gerais": 3103900, + "Arcos, Minas Gerais": 3104205, + "Bambuí, Minas Gerais": 3105103, + "Biquinhas, Minas Gerais": 3107000, + "Bom Despacho, Minas Gerais": 3107406, + "Bonfim, Minas Gerais": 3108107, + "Camacho, Minas Gerais": 3110400, + "Carmo da Mata, Minas Gerais": 3114006, + "Carmo do Cajuru, Minas Gerais": 3114204, + "Carmópolis de Minas, Minas Gerais": 3114501, + "Cedro do Abaeté, Minas Gerais": 3115607, + "Cláudio, Minas Gerais": 3116605, + "Conceição do Pará, Minas Gerais": 3117603, + "Córrego Danta, Minas Gerais": 3119807, + "Córrego Fundo, Minas Gerais": 3119955, + "Crucilândia, Minas Gerais": 3120607, + "Divinópolis, Minas Gerais": 3122306, + "Dores do Indaiá, Minas Gerais": 3123205, + "Estrela do Indaiá, Minas Gerais": 3124708, + "Formiga, Minas Gerais": 3126109, + "Igaratinga, Minas Gerais": 3130200, + "Iguatama, Minas Gerais": 3130309, + "Itaguara, Minas Gerais": 3132206, + "Itapecerica, Minas Gerais": 3133501, + "Itatiaiuçu, Minas Gerais": 3133709, + "Itaúna, Minas Gerais": 3133808, + "Japaraíba, Minas Gerais": 3135308, + "Lagoa da Prata, Minas Gerais": 3137205, + "Leandro Ferreira, Minas Gerais": 3138302, + "Luz, Minas Gerais": 3138807, + "Maravilhas, Minas Gerais": 3139706, + "Martinho Campos, Minas Gerais": 3140506, + "Medeiros, Minas Gerais": 3141306, + "Moema, Minas Gerais": 3142403, + "Morada Nova de Minas, Minas Gerais": 3143500, + "Nova Serrana, Minas Gerais": 3145208, + "Oliveira, Minas Gerais": 3145604, + "Onça de Pitangui, Minas Gerais": 3145802, + "Paineiras, Minas Gerais": 3146404, + "Pains, Minas Gerais": 3146503, + "Papagaios, Minas Gerais": 3146909, + "Pará de Minas, Minas Gerais": 3147105, + "Passa Tempo, Minas Gerais": 3147709, + "Pedra do Indaiá, Minas Gerais": 3148905, + "Pequi, Minas Gerais": 3149606, + "Perdigão, Minas Gerais": 3149705, + "Piedade dos Gerais, Minas Gerais": 3150406, + "Pimenta, Minas Gerais": 3150505, + "Piracema, Minas Gerais": 3150604, + "Pitangui, Minas Gerais": 3151404, + "Pompéu, Minas Gerais": 3152006, + "Quartel Geral, Minas Gerais": 3153707, + "Rio Manso, Minas Gerais": 3155306, + "Santo Antônio do Monte, Minas Gerais": 3160405, + "São Francisco de Paula, Minas Gerais": 3161205, + "São Gonçalo do Pará, Minas Gerais": 3161809, + "São José da Varginha, Minas Gerais": 3163102, + "São Sebastião do Oeste, Minas Gerais": 3164605, + "Serra da Saudade, Minas Gerais": 3166600, + "Tapiraí, Minas Gerais": 3168200, + "Arujá, São Paulo": 3503901, + "Barueri, São Paulo": 3505708, + "Bertioga, São Paulo": 3506359, + "Biritiba-Mirim, São Paulo": 3506607, + "Caieiras, São Paulo": 3509007, + "Cajamar, São Paulo": 3509205, + "Carapicuíba, São Paulo": 3510609, + "Cotia, São Paulo": 3513009, + "Cubatão, São Paulo": 3513504, + "Diadema, São Paulo": 3513801, + "Embu das Artes, São Paulo": 3515004, + "Embu-Guaçu, São Paulo": 3515103, + "Ferraz de Vasconcelos, São Paulo": 3515707, + "Francisco Morato, São Paulo": 3516309, + "Franco da Rocha, São Paulo": 3516408, + "Guararema, São Paulo": 3518305, + "Guarujá, São Paulo": 3518701, + "Guarulhos, São Paulo": 3518800, + "Itanhaém, São Paulo": 3522109, + "Itapecerica da Serra, São Paulo": 3522208, + "Itapevi, São Paulo": 3522505, + "Itaquaquecetuba, São Paulo": 3523107, + "Itariri, São Paulo": 3523305, + "Jandira, São Paulo": 3525003, + "Juquitiba, São Paulo": 3526209, + "Mairiporã, São Paulo": 3528502, + "Mauá, São Paulo": 3529401, + "Mogi das Cruzes, São Paulo": 3530607, + "Mongaguá, São Paulo": 3531100, + "Osasco, São Paulo": 3534401, + "Pedro de Toledo, São Paulo": 3537206, + "Peruíbe, São Paulo": 3537602, + "Pirapora do Bom Jesus, São Paulo": 3539103, + "Poá, São Paulo": 3539806, + "Praia Grande, São Paulo": 3541000, + "Ribeirão Pires, São Paulo": 3543303, + "Rio Grande da Serra, São Paulo": 3544103, + "Salesópolis, São Paulo": 3545001, + "Santa Isabel, São Paulo": 3546801, + "Santana de Parnaíba, São Paulo": 3547304, + "Santo André, São Paulo": 3547809, + "Santos, São Paulo": 3548500, + "São Bernardo do Campo, São Paulo": 3548708, + "São Caetano do Sul, São Paulo": 3548807, + "São Lourenço da Serra, São Paulo": 3549953, + "São Paulo, São Paulo": 3550308, + "São Vicente, São Paulo": 3551009, + "Suzano, São Paulo": 3552502, + "Taboão da Serra, São Paulo": 3552809, + "Vargem Grande Paulista, São Paulo": 3556453, + "Águas de Santa Bárbara, São Paulo": 3500550, + "Alambari, São Paulo": 3500758, + "Alumínio, São Paulo": 3501152, + "Angatuba, São Paulo": 3502200, + "Apiaí, São Paulo": 3502705, + "Araçariguama, São Paulo": 3502754, + "Araçoiaba da Serra, São Paulo": 3502903, + "Arandu, São Paulo": 3503109, + "Avaré, São Paulo": 3504503, + "Barão de Antonina, São Paulo": 3505005, + "Barra do Chapéu, São Paulo": 3505351, + "Barra do Turvo, São Paulo": 3505401, + "Boituva, São Paulo": 3507001, + "Bom Sucesso de Itararé, São Paulo": 3507159, + "Buri, São Paulo": 3508009, + "Cajati, São Paulo": 3509254, + "Campina do Monte Alegre, São Paulo": 3509452, + "Cananéia, São Paulo": 3509908, + "Capão Bonito, São Paulo": 3510203, + "Capela do Alto, São Paulo": 3510302, + "Cerqueira César, São Paulo": 3511409, + "Cerquilho, São Paulo": 3511508, + "Cesário Lange, São Paulo": 3511607, + "Coronel Macedo, São Paulo": 3512605, + "Eldorado, São Paulo": 3514809, + "Guapiara, São Paulo": 3517604, + "Guareí, São Paulo": 3518503, + "Iaras, São Paulo": 3519253, + "Ibiúna, São Paulo": 3519709, + "Iguape, São Paulo": 3520301, + "Ilha Comprida, São Paulo": 3520426, + "Iperó, São Paulo": 3521002, + "Iporanga, São Paulo": 3521200, + "Itaberá, São Paulo": 3521705, + "Itaí, São Paulo": 3521804, + "Itaóca, São Paulo": 3522158, + "Itapetininga, São Paulo": 3522307, + "Itapeva, São Paulo": 3522406, + "Itapirapuã Paulista, São Paulo": 3522653, + "Itaporanga, São Paulo": 3522802, + "Itararé, São Paulo": 3523206, + "Itu, São Paulo": 3523909, + "Jacupiranga, São Paulo": 3524600, + "Jumirim, São Paulo": 3525854, + "Juquiá, São Paulo": 3526100, + "Mairinque, São Paulo": 3528403, + "Manduri, São Paulo": 3528601, + "Miracatu, São Paulo": 3529906, + "Nova Campina, São Paulo": 3532827, + "Óleo, São Paulo": 3533809, + "Paranapanema, São Paulo": 3535804, + "Pariquera-Açu, São Paulo": 3536208, + "Pereiras, São Paulo": 3537503, + "Piedade, São Paulo": 3537800, + "Pilar do Sul, São Paulo": 3537909, + "Porangaba, São Paulo": 3540507, + "Porto Feliz, São Paulo": 3540606, + "Quadra, São Paulo": 3541653, + "Registro, São Paulo": 3542602, + "Ribeira, São Paulo": 3542800, + "Ribeirão Branco, São Paulo": 3543006, + "Ribeirão Grande, São Paulo": 3543253, + "Riversul, São Paulo": 3543501, + "Salto, São Paulo": 3545209, + "Salto de Pirapora, São Paulo": 3545308, + "São Miguel Arcanjo, São Paulo": 3550209, + "São Roque, São Paulo": 3550605, + "Sarapuí, São Paulo": 3551108, + "Sete Barras, São Paulo": 3551801, + "Sorocaba, São Paulo": 3552205, + "Taguaí, São Paulo": 3553005, + "Tapiraí, São Paulo": 3553500, + "Taquarituba, São Paulo": 3553807, + "Taquarivaí, São Paulo": 3553856, + "Tatuí, São Paulo": 3554003, + "Tietê, São Paulo": 3554508, + "Torre de Pedra, São Paulo": 3554656, + "Votorantim, São Paulo": 3557006, + "Agudos, São Paulo": 3500709, + "Anhembi, São Paulo": 3502309, + "Arealva, São Paulo": 3503406, + "Areiópolis, São Paulo": 3503604, + "Avaí, São Paulo": 3504305, + "Balbinos, São Paulo": 3504701, + "Bariri, São Paulo": 3505203, + "Barra Bonita, São Paulo": 3505302, + "Bauru, São Paulo": 3506003, + "Bocaina, São Paulo": 3506805, + "Bofete, São Paulo": 3506904, + "Boracéia, São Paulo": 3507308, + "Borebi, São Paulo": 3507456, + "Botucatu, São Paulo": 3507506, + "Brotas, São Paulo": 3507902, + "Cabrália Paulista, São Paulo": 3508306, + "Cafelândia, São Paulo": 3508801, + "Conchas, São Paulo": 3512308, + "Dois Córregos, São Paulo": 3514106, + "Duartina, São Paulo": 3514502, + "Guaiçara, São Paulo": 3517208, + "Guarantã, São Paulo": 3518107, + "Iacanga, São Paulo": 3519105, + "Igaraçu do Tietê, São Paulo": 3520004, + "Itaju, São Paulo": 3522000, + "Itapuí, São Paulo": 3522901, + "Itatinga, São Paulo": 3523503, + "Jaú, São Paulo": 3525300, + "Lençóis Paulista, São Paulo": 3526803, + "Lins, São Paulo": 3527108, + "Lucianópolis, São Paulo": 3527504, + "Macatuba, São Paulo": 3528007, + "Mineiros do Tietê, São Paulo": 3529807, + "Pardinho, São Paulo": 3536109, + "Paulistânia, São Paulo": 3536570, + "Pederneiras, São Paulo": 3536703, + "Pirajuí, São Paulo": 3538907, + "Piratininga, São Paulo": 3539400, + "Pongaí, São Paulo": 3540101, + "Pratânia, São Paulo": 3541059, + "Presidente Alves, São Paulo": 3541109, + "Promissão, São Paulo": 3541604, + "Reginópolis, São Paulo": 3542503, + "Sabino, São Paulo": 3544608, + "São Manuel, São Paulo": 3550100, + "Torrinha, São Paulo": 3554706, + "Ubirajara, São Paulo": 3555505, + "Uru, São Paulo": 3555901, + "Álvaro de Carvalho, São Paulo": 3501400, + "Alvinlândia, São Paulo": 3501509, + "Arco-Íris, São Paulo": 3503356, + "Assis, São Paulo": 3504008, + "Bastos, São Paulo": 3505807, + "Bernardino de Campos, São Paulo": 3506300, + "Borá, São Paulo": 3507209, + "Campos Novos Paulista, São Paulo": 3509809, + "Cândido Mota, São Paulo": 3510005, + "Canitar, São Paulo": 3510153, + "Cruzália, São Paulo": 3513306, + "Echaporã, São Paulo": 3514700, + "Espírito Santo do Turvo, São Paulo": 3515194, + "Fartura, São Paulo": 3515400, + "Fernão, São Paulo": 3515657, + "Florínia, São Paulo": 3516101, + "Gália, São Paulo": 3516606, + "Garça, São Paulo": 3516705, + "Getulina, São Paulo": 3517000, + "Guaimbê, São Paulo": 3517307, + "Herculândia, São Paulo": 3519006, + "Iacri, São Paulo": 3519204, + "Ibirarema, São Paulo": 3519501, + "Ipaussu, São Paulo": 3520905, + "Júlio Mesquita, São Paulo": 3525805, + "Lupércio, São Paulo": 3527801, + "Lutécia, São Paulo": 3527900, + "Maracaí, São Paulo": 3528809, + "Marília, São Paulo": 3529005, + "Ocauçu, São Paulo": 3533700, + "Oriente, São Paulo": 3534104, + "Oscar Bressane, São Paulo": 3534500, + "Ourinhos, São Paulo": 3534708, + "Palmital, São Paulo": 3535309, + "Paraguaçu Paulista, São Paulo": 3535507, + "Parapuã, São Paulo": 3536000, + "Pedrinhas Paulista, São Paulo": 3537156, + "Piraju, São Paulo": 3538808, + "Platina, São Paulo": 3539707, + "Pompéia, São Paulo": 3540002, + "Queiroz, São Paulo": 3541802, + "Quintana, São Paulo": 3542008, + "Ribeirão do Sul, São Paulo": 3543204, + "Rinópolis, São Paulo": 3543808, + "Salto Grande, São Paulo": 3545407, + "Santa Cruz do Rio Pardo, São Paulo": 3546405, + "São Pedro do Turvo, São Paulo": 3550506, + "Sarutaiá, São Paulo": 3551207, + "Tarumã, São Paulo": 3553955, + "Tejupá, São Paulo": 3554201, + "Timburi, São Paulo": 3554607, + "Tupã, São Paulo": 3555000, + "Vera Cruz, São Paulo": 3556602, + "Chavantes, São Paulo": 3557204, + "Adamantina, São Paulo": 3500105, + "Alfredo Marcondes, São Paulo": 3500808, + "Álvares Machado, São Paulo": 3501301, + "Anhumas, São Paulo": 3502408, + "Caiabu, São Paulo": 3508900, + "Caiuá, São Paulo": 3509106, + "Dracena, São Paulo": 3514403, + "Emilianópolis, São Paulo": 3515129, + "Estrela do Norte, São Paulo": 3515301, + "Euclides da Cunha Paulista, São Paulo": 3515350, + "Flora Rica, São Paulo": 3515806, + "Flórida Paulista, São Paulo": 3516002, + "Iepê, São Paulo": 3519907, + "Indiana, São Paulo": 3520608, + "Inúbia Paulista, São Paulo": 3520806, + "Irapuru, São Paulo": 3521606, + "João Ramalho, São Paulo": 3525607, + "Junqueirópolis, São Paulo": 3526001, + "Lucélia, São Paulo": 3527405, + "Marabá Paulista, São Paulo": 3528700, + "Mariápolis, São Paulo": 3528908, + "Martinópolis, São Paulo": 3529203, + "Mirante do Paranapanema, São Paulo": 3530201, + "Monte Castelo, São Paulo": 3531605, + "Nantes, São Paulo": 3532157, + "Narandiba, São Paulo": 3532207, + "Nova Guataporanga, São Paulo": 3533106, + "Osvaldo Cruz, São Paulo": 3534609, + "Ouro Verde, São Paulo": 3534807, + "Pacaembu, São Paulo": 3534906, + "Panorama, São Paulo": 3535408, + "Paulicéia, São Paulo": 3536406, + "Piquerobi, São Paulo": 3538303, + "Pirapozinho, São Paulo": 3539202, + "Pracinha, São Paulo": 3540853, + "Presidente Bernardes, São Paulo": 3541208, + "Presidente Epitácio, São Paulo": 3541307, + "Presidente Prudente, São Paulo": 3541406, + "Presidente Venceslau, São Paulo": 3541505, + "Quatá, São Paulo": 3541703, + "Rancharia, São Paulo": 3542206, + "Regente Feijó, São Paulo": 3542404, + "Ribeirão dos Índios, São Paulo": 3543238, + "Rosana, São Paulo": 3544251, + "Sagres, São Paulo": 3544707, + "Salmourão, São Paulo": 3545100, + "Sandovalina, São Paulo": 3545506, + "Santa Mercedes, São Paulo": 3547106, + "Santo Anastácio, São Paulo": 3547700, + "Santo Expedito, São Paulo": 3548302, + "São João do Pau d'Alho, São Paulo": 3549300, + "Taciba, São Paulo": 3552908, + "Tarabai, São Paulo": 3553906, + "Teodoro Sampaio, São Paulo": 3554300, + "Tupi Paulista, São Paulo": 3555109, + "Alto Alegre, São Paulo": 3501103, + "Andradina, São Paulo": 3502101, + "Araçatuba, São Paulo": 3502804, + "Auriflama, São Paulo": 3504206, + "Avanhandava, São Paulo": 3504404, + "Barbosa, São Paulo": 3505104, + "Bento de Abreu, São Paulo": 3506201, + "Bilac, São Paulo": 3506409, + "Birigui, São Paulo": 3506508, + "Braúna, São Paulo": 3507704, + "Brejo Alegre, São Paulo": 3507753, + "Buritama, São Paulo": 3508108, + "Castilho, São Paulo": 3511003, + "Clementina, São Paulo": 3511904, + "Coroados, São Paulo": 3512506, + "Gabriel Monteiro, São Paulo": 3516507, + "Gastão Vidigal, São Paulo": 3516804, + "General Salgado, São Paulo": 3516903, + "Glicério, São Paulo": 3517109, + "Guaraçaí, São Paulo": 3517802, + "Guararapes, São Paulo": 3518206, + "Guzolândia, São Paulo": 3518909, + "Ilha Solteira, São Paulo": 3520442, + "Itapura, São Paulo": 3523008, + "Lavínia, São Paulo": 3526506, + "Lourdes, São Paulo": 3527256, + "Luiziânia, São Paulo": 3527702, + "Magda, São Paulo": 3528304, + "Mirandópolis, São Paulo": 3530102, + "Monções, São Paulo": 3531001, + "Murutinga do Sul, São Paulo": 3532108, + "Nova Castilho, São Paulo": 3532868, + "Nova Independência, São Paulo": 3533205, + "Nova Luzitânia, São Paulo": 3533304, + "Penápolis, São Paulo": 3537305, + "Pereira Barreto, São Paulo": 3537404, + "Piacatu, São Paulo": 3537701, + "Rubiácea, São Paulo": 3544400, + "Santo Antônio do Aracanguá, São Paulo": 3548054, + "Santópolis do Aguapeí, São Paulo": 3548401, + "Sud Mennucci, São Paulo": 3552304, + "Turiúba, São Paulo": 3555208, + "Valparaíso, São Paulo": 3556305, + "Zacarias, São Paulo": 3557154, + "Adolfo, São Paulo": 3500204, + "Altair, São Paulo": 3500907, + "Álvares Florence, São Paulo": 3501202, + "Américo de Campos, São Paulo": 3501806, + "Aparecida d'Oeste, São Paulo": 3502606, + "Ariranha, São Paulo": 3503703, + "Aspásia, São Paulo": 3503950, + "Bady Bassitt, São Paulo": 3504602, + "Bálsamo, São Paulo": 3504800, + "Cardoso, São Paulo": 3510708, + "Catanduva, São Paulo": 3511102, + "Catiguá, São Paulo": 3511201, + "Cedral, São Paulo": 3511300, + "Cosmorama, São Paulo": 3512902, + "Dirce Reis, São Paulo": 3513850, + "Dolcinópolis, São Paulo": 3514205, + "Elisiário, São Paulo": 3514924, + "Embaúba, São Paulo": 3514957, + "Estrela d'Oeste, São Paulo": 3515202, + "Fernandópolis, São Paulo": 3515509, + "Fernando Prestes, São Paulo": 3515608, + "Floreal, São Paulo": 3515905, + "Guapiaçu, São Paulo": 3517505, + "Guarani d'Oeste, São Paulo": 3518008, + "Ibirá, São Paulo": 3519402, + "Icém, São Paulo": 3519808, + "Indiaporã, São Paulo": 3520707, + "Ipiguá, São Paulo": 3521150, + "Irapuã, São Paulo": 3521507, + "Itajobi, São Paulo": 3521903, + "Jaci, São Paulo": 3524501, + "Jales, São Paulo": 3524808, + "José Bonifácio, São Paulo": 3525706, + "Macaubal, São Paulo": 3528106, + "Macedônia, São Paulo": 3528205, + "Marapoama, São Paulo": 3528858, + "Marinópolis, São Paulo": 3529104, + "Mendonça, São Paulo": 3529500, + "Meridiano, São Paulo": 3529609, + "Mesópolis, São Paulo": 3529658, + "Mira Estrela, São Paulo": 3530003, + "Mirassol, São Paulo": 3530300, + "Mirassolândia, São Paulo": 3530409, + "Monte Aprazível, São Paulo": 3531407, + "Neves Paulista, São Paulo": 3532504, + "Nhandeara, São Paulo": 3532603, + "Nipoã, São Paulo": 3532702, + "Nova Aliança, São Paulo": 3532801, + "Nova Canaã Paulista, São Paulo": 3532843, + "Nova Granada, São Paulo": 3533007, + "Novais, São Paulo": 3533254, + "Novo Horizonte, São Paulo": 3533502, + "Onda Verde, São Paulo": 3534005, + "Orindiúva, São Paulo": 3534203, + "Ouroeste, São Paulo": 3534757, + "Palestina, São Paulo": 3535002, + "Palmares Paulista, São Paulo": 3535101, + "Palmeira d'Oeste, São Paulo": 3535200, + "Paraíso, São Paulo": 3535705, + "Paranapuã, São Paulo": 3535903, + "Parisi, São Paulo": 3536257, + "Paulo de Faria, São Paulo": 3536604, + "Pedranópolis, São Paulo": 3536901, + "Pindorama, São Paulo": 3538105, + "Pirangi, São Paulo": 3539004, + "Planalto, São Paulo": 3539608, + "Poloni, São Paulo": 3539905, + "Pontalinda, São Paulo": 3540259, + "Pontes Gestal, São Paulo": 3540309, + "Populina, São Paulo": 3540408, + "Potirendaba, São Paulo": 3540804, + "Riolândia, São Paulo": 3544202, + "Rubinéia, São Paulo": 3544509, + "Sales, São Paulo": 3544806, + "Santa Adélia, São Paulo": 3545605, + "Santa Albertina, São Paulo": 3545704, + "Santa Clara d'Oeste, São Paulo": 3546108, + "Santa Fé do Sul, São Paulo": 3546603, + "Santana da Ponte Pensa, São Paulo": 3547205, + "Santa Rita d'Oeste, São Paulo": 3547403, + "Santa Salete, São Paulo": 3547650, + "São Francisco, São Paulo": 3549003, + "São João das Duas Pontes, São Paulo": 3549201, + "São João de Iracema, São Paulo": 3549250, + "São José do Rio Preto, São Paulo": 3549805, + "Sebastianópolis do Sul, São Paulo": 3551306, + "Suzanápolis, São Paulo": 3552551, + "Tabapuã, São Paulo": 3552601, + "Tanabi, São Paulo": 3553401, + "Três Fronteiras, São Paulo": 3554904, + "Turmalina, São Paulo": 3555307, + "Ubarana, São Paulo": 3555356, + "Uchoa, São Paulo": 3555604, + "União Paulista, São Paulo": 3555703, + "Urânia, São Paulo": 3555802, + "Urupês, São Paulo": 3556008, + "Valentim Gentil, São Paulo": 3556107, + "Vista Alegre do Alto, São Paulo": 3556909, + "Vitória Brasil, São Paulo": 3556958, + "Votuporanga, São Paulo": 3557105, + "Altinópolis, São Paulo": 3501004, + "Aramina, São Paulo": 3503000, + "Barretos, São Paulo": 3505500, + "Barrinha, São Paulo": 3505609, + "Batatais, São Paulo": 3505906, + "Bebedouro, São Paulo": 3506102, + "Brodowski, São Paulo": 3507803, + "Buritizal, São Paulo": 3508207, + "Cajobi, São Paulo": 3509304, + "Cajuru, São Paulo": 3509403, + "Cássia dos Coqueiros, São Paulo": 3510906, + "Colina, São Paulo": 3512001, + "Colômbia, São Paulo": 3512100, + "Cravinhos, São Paulo": 3513108, + "Cristais Paulista, São Paulo": 3513207, + "Dumont, São Paulo": 3514601, + "Franca, São Paulo": 3516200, + "Guaíra, São Paulo": 3517406, + "Guará, São Paulo": 3517703, + "Guaraci, São Paulo": 3517901, + "Guariba, São Paulo": 3518602, + "Guatapará, São Paulo": 3518859, + "Igarapava, São Paulo": 3520103, + "Ipuã, São Paulo": 3521309, + "Itirapuã, São Paulo": 3523701, + "Ituverava, São Paulo": 3524105, + "Jaborandi, São Paulo": 3524204, + "Jaboticabal, São Paulo": 3524303, + "Jardinópolis, São Paulo": 3525102, + "Jeriquara, São Paulo": 3525409, + "Luís Antônio, São Paulo": 3527603, + "Miguelópolis, São Paulo": 3529708, + "Monte Alto, São Paulo": 3531308, + "Monte Azul Paulista, São Paulo": 3531506, + "Morro Agudo, São Paulo": 3531902, + "Nuporanga, São Paulo": 3533601, + "Olímpia, São Paulo": 3533908, + "Orlândia, São Paulo": 3534302, + "Patrocínio Paulista, São Paulo": 3536307, + "Pedregulho, São Paulo": 3537008, + "Pitangueiras, São Paulo": 3539509, + "Pontal, São Paulo": 3540200, + "Pradópolis, São Paulo": 3540903, + "Restinga, São Paulo": 3542701, + "Ribeirão Corrente, São Paulo": 3543105, + "Ribeirão Preto, São Paulo": 3543402, + "Rifaina, São Paulo": 3543600, + "Sales Oliveira, São Paulo": 3544905, + "Santa Cruz da Esperança, São Paulo": 3546256, + "Santa Ernestina, São Paulo": 3546504, + "Santa Rosa de Viterbo, São Paulo": 3547601, + "Santo Antônio da Alegria, São Paulo": 3547908, + "São Joaquim da Barra, São Paulo": 3549409, + "São José da Bela Vista, São Paulo": 3549508, + "São Simão, São Paulo": 3550902, + "Serra Azul, São Paulo": 3551405, + "Serrana, São Paulo": 3551504, + "Sertãozinho, São Paulo": 3551702, + "Severínia, São Paulo": 3551900, + "Taiaçu, São Paulo": 3553104, + "Taiúva, São Paulo": 3553203, + "Taquaral, São Paulo": 3553658, + "Terra Roxa, São Paulo": 3554409, + "Viradouro, São Paulo": 3556800, + "Aguaí, São Paulo": 3500303, + "Águas da Prata, São Paulo": 3500402, + "Águas de Lindóia, São Paulo": 3500501, + "Águas de São Pedro, São Paulo": 3500600, + "Americana, São Paulo": 3501608, + "Amparo, São Paulo": 3501905, + "Analândia, São Paulo": 3502002, + "Araras, São Paulo": 3503307, + "Artur Nogueira, São Paulo": 3503802, + "Atibaia, São Paulo": 3504107, + "Bom Jesus dos Perdões, São Paulo": 3507100, + "Bragança Paulista, São Paulo": 3507605, + "Cabreúva, São Paulo": 3508405, + "Caconde, São Paulo": 3508702, + "Campinas, São Paulo": 3509502, + "Campo Limpo Paulista, São Paulo": 3509601, + "Capivari, São Paulo": 3510401, + "Casa Branca, São Paulo": 3510807, + "Charqueada, São Paulo": 3511706, + "Conchal, São Paulo": 3512209, + "Cordeirópolis, São Paulo": 3512407, + "Corumbataí, São Paulo": 3512704, + "Cosmópolis, São Paulo": 3512803, + "Divinolândia, São Paulo": 3513900, + "Elias Fausto, São Paulo": 3514908, + "Engenheiro Coelho, São Paulo": 3515152, + "Espírito Santo do Pinhal, São Paulo": 3515186, + "Holambra, São Paulo": 3519055, + "Hortolândia, São Paulo": 3519071, + "Indaiatuba, São Paulo": 3520509, + "Ipeúna, São Paulo": 3521101, + "Iracemápolis, São Paulo": 3521408, + "Itapira, São Paulo": 3522604, + "Itatiba, São Paulo": 3523404, + "Itobi, São Paulo": 3523800, + "Itupeva, São Paulo": 3524006, + "Jaguariúna, São Paulo": 3524709, + "Jarinu, São Paulo": 3525201, + "Joanópolis, São Paulo": 3525508, + "Jundiaí, São Paulo": 3525904, + "Laranjal Paulista, São Paulo": 3526407, + "Leme, São Paulo": 3526704, + "Limeira, São Paulo": 3526902, + "Lindóia, São Paulo": 3527009, + "Louveira, São Paulo": 3527306, + "Mococa, São Paulo": 3530508, + "Mogi Guaçu, São Paulo": 3530706, + "Mogi Mirim, São Paulo": 3530805, + "Mombuca, São Paulo": 3530904, + "Monte Alegre do Sul, São Paulo": 3531209, + "Monte Mor, São Paulo": 3531803, + "Morungaba, São Paulo": 3532009, + "Nazaré Paulista, São Paulo": 3532405, + "Nova Odessa, São Paulo": 3533403, + "Paulínia, São Paulo": 3536505, + "Pedra Bela, São Paulo": 3536802, + "Pedreira, São Paulo": 3537107, + "Pinhalzinho, São Paulo": 3538204, + "Piracaia, São Paulo": 3538600, + "Piracicaba, São Paulo": 3538709, + "Rafard, São Paulo": 3542107, + "Rio Claro, São Paulo": 3543907, + "Rio das Pedras, São Paulo": 3544004, + "Saltinho, São Paulo": 3545159, + "Santa Bárbara d'Oeste, São Paulo": 3545803, + "Santa Cruz da Conceição, São Paulo": 3546207, + "Santa Cruz das Palmeiras, São Paulo": 3546306, + "Santa Gertrudes, São Paulo": 3546702, + "Santa Maria da Serra, São Paulo": 3547007, + "Santo Antônio de Posse, São Paulo": 3548005, + "Santo Antônio do Jardim, São Paulo": 3548104, + "São João da Boa Vista, São Paulo": 3549102, + "São José do Rio Pardo, São Paulo": 3549706, + "São Pedro, São Paulo": 3550407, + "São Sebastião da Grama, São Paulo": 3550803, + "Serra Negra, São Paulo": 3551603, + "Socorro, São Paulo": 3552106, + "Sumaré, São Paulo": 3552403, + "Tambaú, São Paulo": 3553302, + "Tapiratiba, São Paulo": 3553609, + "Tuiuti, São Paulo": 3554953, + "Valinhos, São Paulo": 3556206, + "Vargem, São Paulo": 3556354, + "Vargem Grande do Sul, São Paulo": 3556404, + "Várzea Paulista, São Paulo": 3556503, + "Vinhedo, São Paulo": 3556701, + "Estiva Gerbi, São Paulo": 3557303, + "Aparecida, São Paulo": 3502507, + "Arapeí, São Paulo": 3503158, + "Areias, São Paulo": 3503505, + "Bananal, São Paulo": 3504909, + "Caçapava, São Paulo": 3508504, + "Cachoeira Paulista, São Paulo": 3508603, + "Campos do Jordão, São Paulo": 3509700, + "Canas, São Paulo": 3509957, + "Caraguatatuba, São Paulo": 3510500, + "Cruzeiro, São Paulo": 3513405, + "Cunha, São Paulo": 3513603, + "Guaratinguetá, São Paulo": 3518404, + "Igaratá, São Paulo": 3520202, + "Ilhabela, São Paulo": 3520400, + "Jacareí, São Paulo": 3524402, + "Jambeiro, São Paulo": 3524907, + "Lagoinha, São Paulo": 3526308, + "Lavrinhas, São Paulo": 3526605, + "Lorena, São Paulo": 3527207, + "Monteiro Lobato, São Paulo": 3531704, + "Natividade da Serra, São Paulo": 3532306, + "Paraibuna, São Paulo": 3535606, + "Pindamonhangaba, São Paulo": 3538006, + "Piquete, São Paulo": 3538501, + "Potim, São Paulo": 3540754, + "Queluz, São Paulo": 3541901, + "Redenção da Serra, São Paulo": 3542305, + "Roseira, São Paulo": 3544301, + "Santa Branca, São Paulo": 3546009, + "Santo Antônio do Pinhal, São Paulo": 3548203, + "São Bento do Sapucaí, São Paulo": 3548609, + "São José do Barreiro, São Paulo": 3549607, + "São José dos Campos, São Paulo": 3549904, + "São Luís do Paraitinga, São Paulo": 3550001, + "São Sebastião, São Paulo": 3550704, + "Silveiras, São Paulo": 3552007, + "Taubaté, São Paulo": 3554102, + "Tremembé, São Paulo": 3554805, + "Ubatuba, São Paulo": 3555406, + "Adrianópolis, Paraná": 4100202, + "Agudos do Sul, Paraná": 4100301, + "Almirante Tamandaré, Paraná": 4100400, + "Antonina, Paraná": 4101200, + "Antônio Olinto, Paraná": 4101309, + "Araucária, Paraná": 4101804, + "Balsa Nova, Paraná": 4102307, + "Bituruna, Paraná": 4102901, + "Bocaiúva do Sul, Paraná": 4103107, + "Campina Grande do Sul, Paraná": 4104006, + "Campo do Tenente, Paraná": 4104105, + "Campo Largo, Paraná": 4104204, + "Campo Magro, Paraná": 4104253, + "Cerro Azul, Paraná": 4105201, + "Colombo, Paraná": 4105805, + "Contenda, Paraná": 4106209, + "Cruz Machado, Paraná": 4106803, + "Curitiba, Paraná": 4106902, + "Fazenda Rio Grande, Paraná": 4107652, + "General Carneiro, Paraná": 4108502, + "Guaraqueçaba, Paraná": 4109500, + "Guaratuba, Paraná": 4109609, + "Itaperuçu, Paraná": 4111258, + "Lapa, Paraná": 4113205, + "Mandirituba, Paraná": 4114302, + "Matinhos, Paraná": 4115705, + "Morretes, Paraná": 4116208, + "Paranaguá, Paraná": 4118204, + "Paula Freitas, Paraná": 4118600, + "Paulo Frontin, Paraná": 4118709, + "Piên, Paraná": 4119103, + "Pinhais, Paraná": 4119152, + "Piraquara, Paraná": 4119509, + "Pontal do Paraná, Paraná": 4119954, + "Porto Vitória, Paraná": 4120309, + "Quatro Barras, Paraná": 4120804, + "Quitandinha, Paraná": 4121208, + "Rio Branco do Sul, Paraná": 4122206, + "Rio Negro, Paraná": 4122305, + "São José dos Pinhais, Paraná": 4125506, + "São Mateus do Sul, Paraná": 4125605, + "Tijucas do Sul, Paraná": 4127601, + "Tunas do Paraná, Paraná": 4127882, + "União da Vitória, Paraná": 4128203, + "Doutor Ulysses, Paraná": 4128633, + "Ampére, Paraná": 4101002, + "Anahy, Paraná": 4101051, + "Assis Chateaubriand, Paraná": 4102000, + "Barracão, Paraná": 4102604, + "Bela Vista da Caroba, Paraná": 4102752, + "Boa Esperança do Iguaçu, Paraná": 4103024, + "Boa Vista da Aparecida, Paraná": 4103057, + "Bom Jesus do Sul, Paraná": 4103156, + "Bom Sucesso do Sul, Paraná": 4103222, + "Braganey, Paraná": 4103354, + "Cafelândia, Paraná": 4103453, + "Campo Bonito, Paraná": 4104055, + "Capanema, Paraná": 4104501, + "Capitão Leônidas Marques, Paraná": 4104600, + "Cascavel, Paraná": 4104808, + "Catanduvas, Paraná": 4105003, + "Céu Azul, Paraná": 4105300, + "Chopinzinho, Paraná": 4105409, + "Clevelândia, Paraná": 4105706, + "Corbélia, Paraná": 4106308, + "Coronel Domingos Soares, Paraná": 4106456, + "Coronel Vivida, Paraná": 4106506, + "Cruzeiro do Iguaçu, Paraná": 4106571, + "Diamante do Sul, Paraná": 4107124, + "Diamante D'Oeste, Paraná": 4107157, + "Dois Vizinhos, Paraná": 4107207, + "Enéas Marques, Paraná": 4107405, + "Entre Rios do Oeste, Paraná": 4107538, + "Espigão Alto do Iguaçu, Paraná": 4107546, + "Flor da Serra do Sul, Paraná": 4107850, + "Formosa do Oeste, Paraná": 4108205, + "Foz do Iguaçu, Paraná": 4108304, + "Francisco Beltrão, Paraná": 4108403, + "Guaíra, Paraná": 4108809, + "Guaraniaçu, Paraná": 4109302, + "Honório Serpa, Paraná": 4109658, + "Ibema, Paraná": 4109757, + "Iguatu, Paraná": 4110052, + "Iracema do Oeste, Paraná": 4110656, + "Itaipulândia, Paraná": 4110953, + "Itapejara d'Oeste, Paraná": 4111209, + "Jesuítas, Paraná": 4112751, + "Laranjeiras do Sul, Paraná": 4113304, + "Lindoeste, Paraná": 4113452, + "Manfrinópolis, Paraná": 4114351, + "Mangueirinha, Paraná": 4114401, + "Marechal Cândido Rondon, Paraná": 4114609, + "Mariópolis, Paraná": 4115309, + "Maripá, Paraná": 4115358, + "Marmeleiro, Paraná": 4115408, + "Marquinho, Paraná": 4115457, + "Matelândia, Paraná": 4115606, + "Medianeira, Paraná": 4115804, + "Mercedes, Paraná": 4115853, + "Missal, Paraná": 4116059, + "Nova Aurora, Paraná": 4116703, + "Nova Esperança do Sudoeste, Paraná": 4116950, + "Nova Laranjeiras, Paraná": 4117057, + "Nova Santa Rosa, Paraná": 4117222, + "Nova Prata do Iguaçu, Paraná": 4117255, + "Ouro Verde do Oeste, Paraná": 4117453, + "Palmas, Paraná": 4117602, + "Palotina, Paraná": 4117909, + "Pato Bragado, Paraná": 4118451, + "Pato Branco, Paraná": 4118501, + "Pérola d'Oeste, Paraná": 4119004, + "Pinhal de São Bento, Paraná": 4119251, + "Planalto, Paraná": 4119806, + "Porto Barreiro, Paraná": 4120150, + "Pranchita, Paraná": 4120358, + "Quatro Pontes, Paraná": 4120853, + "Quedas do Iguaçu, Paraná": 4120903, + "Ramilândia, Paraná": 4121257, + "Realeza, Paraná": 4121406, + "Renascença, Paraná": 4121604, + "Rio Bonito do Iguaçu, Paraná": 4122156, + "Salgado Filho, Paraná": 4122800, + "Salto do Lontra, Paraná": 4123006, + "Santa Helena, Paraná": 4123501, + "Santa Izabel do Oeste, Paraná": 4123808, + "Santa Lúcia, Paraná": 4123824, + "Santa Tereza do Oeste, Paraná": 4124020, + "Santa Terezinha de Itaipu, Paraná": 4124053, + "Santo Antônio do Sudoeste, Paraná": 4124400, + "São João, Paraná": 4124806, + "São Jorge d'Oeste, Paraná": 4125209, + "São José das Palmeiras, Paraná": 4125456, + "São Miguel do Iguaçu, Paraná": 4125704, + "São Pedro do Iguaçu, Paraná": 4125753, + "Saudade do Iguaçu, Paraná": 4126272, + "Serranópolis do Iguaçu, Paraná": 4126355, + "Sulina, Paraná": 4126652, + "Terra Roxa, Paraná": 4127403, + "Toledo, Paraná": 4127700, + "Três Barras do Paraná, Paraná": 4127858, + "Tupãssi, Paraná": 4127957, + "Vera Cruz do Oeste, Paraná": 4128559, + "Verê, Paraná": 4128609, + "Virmond, Paraná": 4128658, + "Vitorino, Paraná": 4128708, + "Altamira do Paraná, Paraná": 4100459, + "Altônia, Paraná": 4100509, + "Alto Paraná, Paraná": 4100608, + "Alto Piquiri, Paraná": 4100707, + "Amaporã, Paraná": 4100905, + "Ângulo, Paraná": 4101150, + "Araruna, Paraná": 4101705, + "Astorga, Paraná": 4102109, + "Atalaia, Paraná": 4102208, + "Barbosa Ferraz, Paraná": 4102505, + "Boa Esperança, Paraná": 4103008, + "Brasilândia do Sul, Paraná": 4103370, + "Cafezal do Sul, Paraná": 4103479, + "Campina da Lagoa, Paraná": 4103909, + "Campo Mourão, Paraná": 4104303, + "Cianorte, Paraná": 4105508, + "Cidade Gaúcha, Paraná": 4105607, + "Colorado, Paraná": 4105904, + "Corumbataí do Sul, Paraná": 4106555, + "Cruzeiro do Oeste, Paraná": 4106605, + "Cruzeiro do Sul, Paraná": 4106704, + "Diamante do Norte, Paraná": 4107108, + "Douradina, Paraná": 4107256, + "Doutor Camargo, Paraná": 4107306, + "Engenheiro Beltrão, Paraná": 4107504, + "Esperança Nova, Paraná": 4107520, + "Farol, Paraná": 4107553, + "Fênix, Paraná": 4107702, + "Floraí, Paraná": 4107801, + "Floresta, Paraná": 4107900, + "Flórida, Paraná": 4108106, + "Francisco Alves, Paraná": 4108320, + "Goioerê, Paraná": 4108601, + "Guairaçá, Paraná": 4108908, + "Guaporema, Paraná": 4109104, + "Icaraíma, Paraná": 4109906, + "Iguaraçu, Paraná": 4110003, + "Inajá, Paraná": 4110300, + "Indianópolis, Paraná": 4110409, + "Iporã, Paraná": 4110607, + "Iretama, Paraná": 4110805, + "Itaguajé, Paraná": 4110904, + "Itambé, Paraná": 4111100, + "Itaúna do Sul, Paraná": 4111308, + "Ivaté, Paraná": 4111555, + "Ivatuba, Paraná": 4111605, + "Janiópolis, Paraná": 4112207, + "Japurá, Paraná": 4112405, + "Jardim Olinda, Paraná": 4112603, + "Juranda, Paraná": 4112959, + "Jussara, Paraná": 4113007, + "Loanda, Paraná": 4113502, + "Lobato, Paraná": 4113601, + "Luiziana, Paraná": 4113734, + "Mamborê, Paraná": 4114005, + "Mandaguaçu, Paraná": 4114104, + "Mandaguari, Paraná": 4114203, + "Maria Helena, Paraná": 4114708, + "Marialva, Paraná": 4114807, + "Marilena, Paraná": 4115002, + "Mariluz, Paraná": 4115101, + "Maringá, Paraná": 4115200, + "Mirador, Paraná": 4115903, + "Moreira Sales, Paraná": 4116109, + "Munhoz de Melo, Paraná": 4116307, + "Nossa Senhora das Graças, Paraná": 4116406, + "Nova Aliança do Ivaí, Paraná": 4116505, + "Nova Cantu, Paraná": 4116802, + "Nova Esperança, Paraná": 4116901, + "Nova Londrina, Paraná": 4117107, + "Nova Olímpia, Paraná": 4117206, + "Ourizona, Paraná": 4117404, + "Paiçandu, Paraná": 4117503, + "Paraíso do Norte, Paraná": 4118006, + "Paranacity, Paraná": 4118105, + "Paranapoema, Paraná": 4118303, + "Paranavaí, Paraná": 4118402, + "Peabiru, Paraná": 4118808, + "Perobal, Paraná": 4118857, + "Pérola, Paraná": 4118907, + "Planaltina do Paraná, Paraná": 4119707, + "Porto Rico, Paraná": 4120200, + "Presidente Castelo Branco, Paraná": 4120408, + "Quarto Centenário, Paraná": 4120655, + "Querência do Norte, Paraná": 4121000, + "Quinta do Sol, Paraná": 4121109, + "Rancho Alegre D'Oeste, Paraná": 4121356, + "Roncador, Paraná": 4122503, + "Rondon, Paraná": 4122602, + "Santa Cruz de Monte Castelo, Paraná": 4123303, + "Santa Fé, Paraná": 4123402, + "Santa Inês, Paraná": 4123600, + "Santa Isabel do Ivaí, Paraná": 4123709, + "Santa Mônica, Paraná": 4123956, + "Santo Antônio do Caiuá, Paraná": 4124202, + "Santo Inácio, Paraná": 4124509, + "São Carlos do Ivaí, Paraná": 4124608, + "São João do Caiuá, Paraná": 4124905, + "São Jorge do Ivaí, Paraná": 4125308, + "São Jorge do Patrocínio, Paraná": 4125357, + "São Manoel do Paraná, Paraná": 4125555, + "São Pedro do Paraná, Paraná": 4125902, + "São Tomé, Paraná": 4126108, + "Sarandi, Paraná": 4126256, + "Tamboara, Paraná": 4126702, + "Tapejara, Paraná": 4126801, + "Tapira, Paraná": 4126900, + "Terra Boa, Paraná": 4127205, + "Terra Rica, Paraná": 4127304, + "Tuneiras do Oeste, Paraná": 4127908, + "Ubiratã, Paraná": 4128005, + "Umuarama, Paraná": 4128104, + "Uniflor, Paraná": 4128302, + "Alto Paraíso, Paraná": 4128625, + "Xambrê, Paraná": 4128807, + "Abatiá, Paraná": 4100103, + "Alvorada do Sul, Paraná": 4100806, + "Andirá, Paraná": 4101101, + "Apucarana, Paraná": 4101408, + "Arapongas, Paraná": 4101507, + "Arapuã, Paraná": 4101655, + "Ariranha do Ivaí, Paraná": 4101853, + "Assaí, Paraná": 4101903, + "Bandeirantes, Paraná": 4102406, + "Barra do Jacaré, Paraná": 4102703, + "Bela Vista do Paraíso, Paraná": 4102802, + "Bom Sucesso, Paraná": 4103206, + "Borrazópolis, Paraná": 4103305, + "Cafeara, Paraná": 4103404, + "Califórnia, Paraná": 4103503, + "Cambará, Paraná": 4103602, + "Cambé, Paraná": 4103701, + "Cambira, Paraná": 4103800, + "Cândido de Abreu, Paraná": 4104402, + "Carlópolis, Paraná": 4104709, + "Centenário do Sul, Paraná": 4105102, + "Congonhinhas, Paraná": 4106001, + "Conselheiro Mairinck, Paraná": 4106100, + "Cornélio Procópio, Paraná": 4106407, + "Cruzmaltina, Paraná": 4106852, + "Faxinal, Paraná": 4107603, + "Figueira, Paraná": 4107751, + "Florestópolis, Paraná": 4108007, + "Godoy Moreira, Paraná": 4108551, + "Grandes Rios, Paraná": 4108700, + "Guapirama, Paraná": 4109005, + "Guaraci, Paraná": 4109203, + "Ibaiti, Paraná": 4109708, + "Ibiporã, Paraná": 4109807, + "Itambaracá, Paraná": 4111001, + "Ivaiporã, Paraná": 4111506, + "Jaboti, Paraná": 4111704, + "Jacarezinho, Paraná": 4111803, + "Jaguapitã, Paraná": 4111902, + "Jandaia do Sul, Paraná": 4112108, + "Japira, Paraná": 4112306, + "Jardim Alegre, Paraná": 4112504, + "Jataizinho, Paraná": 4112702, + "Joaquim Távora, Paraná": 4112801, + "Jundiaí do Sul, Paraná": 4112900, + "Kaloré, Paraná": 4113106, + "Leópolis, Paraná": 4113403, + "Lidianópolis, Paraná": 4113429, + "Londrina, Paraná": 4113700, + "Lunardelli, Paraná": 4113759, + "Lupionópolis, Paraná": 4113809, + "Manoel Ribas, Paraná": 4114500, + "Marilândia do Sul, Paraná": 4114906, + "Marumbi, Paraná": 4115507, + "Mauá da Serra, Paraná": 4115754, + "Miraselva, Paraná": 4116000, + "Nova América da Colina, Paraná": 4116604, + "Nova Fátima, Paraná": 4117008, + "Nova Santa Bárbara, Paraná": 4117214, + "Novo Itacolomi, Paraná": 4117297, + "Pinhalão, Paraná": 4119202, + "Pitangueiras, Paraná": 4119657, + "Porecatu, Paraná": 4120002, + "Prado Ferreira, Paraná": 4120333, + "Primeiro de Maio, Paraná": 4120507, + "Quatiguá, Paraná": 4120705, + "Rancho Alegre, Paraná": 4121307, + "Ribeirão Claro, Paraná": 4121802, + "Ribeirão do Pinhal, Paraná": 4121901, + "Rio Bom, Paraná": 4122107, + "Rio Branco do Ivaí, Paraná": 4122172, + "Rolândia, Paraná": 4122404, + "Rosário do Ivaí, Paraná": 4122651, + "Sabáudia, Paraná": 4122701, + "Salto do Itararé, Paraná": 4122909, + "Santa Amélia, Paraná": 4123105, + "Santa Cecília do Pavão, Paraná": 4123204, + "Santa Mariana, Paraná": 4123907, + "Santana do Itararé, Paraná": 4124004, + "Santo Antônio da Platina, Paraná": 4124103, + "Santo Antônio do Paraíso, Paraná": 4124301, + "São Jerônimo da Serra, Paraná": 4124707, + "São João do Ivaí, Paraná": 4125001, + "São José da Boa Vista, Paraná": 4125407, + "São Pedro do Ivaí, Paraná": 4125803, + "São Sebastião da Amoreira, Paraná": 4126009, + "Sapopema, Paraná": 4126207, + "Sertaneja, Paraná": 4126405, + "Sertanópolis, Paraná": 4126504, + "Siqueira Campos, Paraná": 4126603, + "Tamarana, Paraná": 4126678, + "Tomazina, Paraná": 4127809, + "Uraí, Paraná": 4128401, + "Wenceslau Braz, Paraná": 4128500, + "Araranguá, Santa Catarina": 4201406, + "Armazém, Santa Catarina": 4201505, + "Balneário Arroio do Silva, Santa Catarina": 4201950, + "Balneário Gaivota, Santa Catarina": 4202073, + "Braço do Norte, Santa Catarina": 4202800, + "Capivari de Baixo, Santa Catarina": 4203956, + "Cocal do Sul, Santa Catarina": 4204251, + "Criciúma, Santa Catarina": 4204608, + "Ermo, Santa Catarina": 4205191, + "Forquilhinha, Santa Catarina": 4205456, + "Grão Pará, Santa Catarina": 4206108, + "Gravatal, Santa Catarina": 4206207, + "Içara, Santa Catarina": 4207007, + "Imaruí, Santa Catarina": 4207205, + "Jacinto Machado, Santa Catarina": 4208708, + "Jaguaruna, Santa Catarina": 4208807, + "Laguna, Santa Catarina": 4209409, + "Lauro Muller, Santa Catarina": 4209607, + "Maracajá, Santa Catarina": 4210407, + "Meleiro, Santa Catarina": 4210803, + "Morro da Fumaça, Santa Catarina": 4211207, + "Morro Grande, Santa Catarina": 4211256, + "Nova Veneza, Santa Catarina": 4211603, + "Orleans, Santa Catarina": 4211702, + "Passo de Torres, Santa Catarina": 4212254, + "Pedras Grandes, Santa Catarina": 4212403, + "Pescaria Brava, Santa Catarina": 4212650, + "Praia Grande, Santa Catarina": 4213807, + "Rio Fortuna, Santa Catarina": 4214904, + "Sangão, Santa Catarina": 4215455, + "Santa Rosa de Lima, Santa Catarina": 4215604, + "Santa Rosa do Sul, Santa Catarina": 4215653, + "São João do Sul, Santa Catarina": 4216404, + "São Ludgero, Santa Catarina": 4217006, + "São Martinho, Santa Catarina": 4217105, + "Siderópolis, Santa Catarina": 4217600, + "Sombrio, Santa Catarina": 4217709, + "Timbé do Sul, Santa Catarina": 4218103, + "Treviso, Santa Catarina": 4218350, + "Treze de Maio, Santa Catarina": 4218400, + "Tubarão, Santa Catarina": 4218707, + "Turvo, Santa Catarina": 4218806, + "Urussanga, Santa Catarina": 4219002, + "Balneário Rincão, Santa Catarina": 4220000, + "Abdon Batista, Santa Catarina": 4200051, + "Abelardo Luz, Santa Catarina": 4200101, + "Água Doce, Santa Catarina": 4200408, + "Águas de Chapecó, Santa Catarina": 4200507, + "Águas Frias, Santa Catarina": 4200556, + "Alto Bela Vista, Santa Catarina": 4200754, + "Anchieta, Santa Catarina": 4200804, + "Arabutã, Santa Catarina": 4201273, + "Arvoredo, Santa Catarina": 4201653, + "Bandeirante, Santa Catarina": 4202081, + "Barra Bonita, Santa Catarina": 4202099, + "Belmonte, Santa Catarina": 4202156, + "Bom Jesus, Santa Catarina": 4202537, + "Bom Jesus do Oeste, Santa Catarina": 4202578, + "Caibi, Santa Catarina": 4203105, + "Campo Erê, Santa Catarina": 4203501, + "Campos Novos, Santa Catarina": 4203600, + "Capinzal, Santa Catarina": 4203907, + "Catanduvas, Santa Catarina": 4204004, + "Caxambu do Sul, Santa Catarina": 4204103, + "Celso Ramos, Santa Catarina": 4204152, + "Chapecó, Santa Catarina": 4204202, + "Concórdia, Santa Catarina": 4204301, + "Cordilheira Alta, Santa Catarina": 4204350, + "Coronel Freitas, Santa Catarina": 4204400, + "Coronel Martins, Santa Catarina": 4204459, + "Cunha Porã, Santa Catarina": 4204707, + "Cunhataí, Santa Catarina": 4204756, + "Descanso, Santa Catarina": 4204905, + "Dionísio Cerqueira, Santa Catarina": 4205001, + "Entre Rios, Santa Catarina": 4205175, + "Erval Velho, Santa Catarina": 4205209, + "Faxinal dos Guedes, Santa Catarina": 4205308, + "Flor do Sertão, Santa Catarina": 4205357, + "Formosa do Sul, Santa Catarina": 4205431, + "Galvão, Santa Catarina": 4205605, + "Guaraciaba, Santa Catarina": 4206405, + "Guarujá do Sul, Santa Catarina": 4206603, + "Guatambú, Santa Catarina": 4206652, + "Herval d'Oeste, Santa Catarina": 4206702, + "Ibicaré, Santa Catarina": 4206801, + "Ipira, Santa Catarina": 4207601, + "Iporã do Oeste, Santa Catarina": 4207650, + "Ipuaçu, Santa Catarina": 4207684, + "Ipumirim, Santa Catarina": 4207700, + "Iraceminha, Santa Catarina": 4207759, + "Irani, Santa Catarina": 4207809, + "Irati, Santa Catarina": 4207858, + "Itá, Santa Catarina": 4208005, + "Itapiranga, Santa Catarina": 4208401, + "Jaborá, Santa Catarina": 4208609, + "Jardinópolis, Santa Catarina": 4208955, + "Joaçaba, Santa Catarina": 4209003, + "Jupiá, Santa Catarina": 4209177, + "Lacerdópolis, Santa Catarina": 4209201, + "Lajeado Grande, Santa Catarina": 4209458, + "Lindóia do Sul, Santa Catarina": 4209854, + "Luzerna, Santa Catarina": 4210035, + "Maravilha, Santa Catarina": 4210506, + "Marema, Santa Catarina": 4210555, + "Modelo, Santa Catarina": 4210902, + "Mondaí, Santa Catarina": 4211009, + "Nova Erechim, Santa Catarina": 4211405, + "Nova Itaberaba, Santa Catarina": 4211454, + "Novo Horizonte, Santa Catarina": 4211652, + "Ouro, Santa Catarina": 4211801, + "Ouro Verde, Santa Catarina": 4211850, + "Paial, Santa Catarina": 4211876, + "Palma Sola, Santa Catarina": 4212007, + "Palmitos, Santa Catarina": 4212106, + "Paraíso, Santa Catarina": 4212239, + "Passos Maia, Santa Catarina": 4212270, + "Peritiba, Santa Catarina": 4212601, + "Pinhalzinho, Santa Catarina": 4212908, + "Piratuba, Santa Catarina": 4213104, + "Planalto Alegre, Santa Catarina": 4213153, + "Ponte Serrada, Santa Catarina": 4213401, + "Presidente Castello Branco, Santa Catarina": 4213906, + "Princesa, Santa Catarina": 4214151, + "Quilombo, Santa Catarina": 4214201, + "Riqueza, Santa Catarina": 4215075, + "Romelândia, Santa Catarina": 4215208, + "Saltinho, Santa Catarina": 4215356, + "Santa Helena, Santa Catarina": 4215554, + "Santa Terezinha do Progresso, Santa Catarina": 4215687, + "Santiago do Sul, Santa Catarina": 4215695, + "São Bernardino, Santa Catarina": 4215752, + "São Carlos, Santa Catarina": 4216008, + "São Domingos, Santa Catarina": 4216107, + "São João do Oeste, Santa Catarina": 4216255, + "São José do Cedro, Santa Catarina": 4216701, + "São Lourenço do Oeste, Santa Catarina": 4216909, + "São Miguel da Boa Vista, Santa Catarina": 4217154, + "São Miguel do Oeste, Santa Catarina": 4217204, + "Saudades, Santa Catarina": 4217303, + "Seara, Santa Catarina": 4217501, + "Serra Alta, Santa Catarina": 4217550, + "Sul Brasil, Santa Catarina": 4217758, + "Tigrinhos, Santa Catarina": 4217956, + "Treze Tílias, Santa Catarina": 4218509, + "Tunápolis, Santa Catarina": 4218756, + "União do Oeste, Santa Catarina": 4218855, + "Vargeão, Santa Catarina": 4219101, + "Vargem, Santa Catarina": 4219150, + "Vargem Bonita, Santa Catarina": 4219176, + "Xanxerê, Santa Catarina": 4219507, + "Xavantina, Santa Catarina": 4219606, + "Xaxim, Santa Catarina": 4219705, + "Zortéa, Santa Catarina": 4219853, + "Agrolândia, Santa Catarina": 4200200, + "Agronômica, Santa Catarina": 4200309, + "Apiúna, Santa Catarina": 4201257, + "Ascurra, Santa Catarina": 4201703, + "Atalanta, Santa Catarina": 4201802, + "Aurora, Santa Catarina": 4201901, + "Balneário Camboriú, Santa Catarina": 4202008, + "Barra Velha, Santa Catarina": 4202107, + "Benedito Novo, Santa Catarina": 4202206, + "Blumenau, Santa Catarina": 4202404, + "Bombinhas, Santa Catarina": 4202453, + "Botuverá, Santa Catarina": 4202701, + "Braço do Trombudo, Santa Catarina": 4202859, + "Brusque, Santa Catarina": 4202909, + "Camboriú, Santa Catarina": 4203204, + "Canelinha, Santa Catarina": 4203709, + "Chapadão do Lageado, Santa Catarina": 4204194, + "Dona Emma, Santa Catarina": 4205100, + "Doutor Pedrinho, Santa Catarina": 4205159, + "Gaspar, Santa Catarina": 4205902, + "Guabiruba, Santa Catarina": 4206306, + "Ibirama, Santa Catarina": 4206900, + "Ilhota, Santa Catarina": 4207106, + "Imbuia, Santa Catarina": 4207403, + "Indaial, Santa Catarina": 4207502, + "Itajaí, Santa Catarina": 4208203, + "Itapema, Santa Catarina": 4208302, + "Ituporanga, Santa Catarina": 4208500, + "José Boiteux, Santa Catarina": 4209151, + "Laurentino, Santa Catarina": 4209508, + "Leoberto Leal, Santa Catarina": 4209805, + "Lontras, Santa Catarina": 4209904, + "Luiz Alves, Santa Catarina": 4210001, + "Major Gercino, Santa Catarina": 4210209, + "Mirim Doce, Santa Catarina": 4210852, + "Navegantes, Santa Catarina": 4211306, + "Nova Trento, Santa Catarina": 4211504, + "Penha, Santa Catarina": 4212502, + "Petrolândia, Santa Catarina": 4212700, + "Balneário Piçarras, Santa Catarina": 4212809, + "Pomerode, Santa Catarina": 4213203, + "Porto Belo, Santa Catarina": 4213500, + "Pouso Redondo, Santa Catarina": 4213708, + "Presidente Getúlio, Santa Catarina": 4214003, + "Presidente Nereu, Santa Catarina": 4214102, + "Rio do Campo, Santa Catarina": 4214508, + "Rio do Oeste, Santa Catarina": 4214607, + "Rio dos Cedros, Santa Catarina": 4214706, + "Rio do Sul, Santa Catarina": 4214805, + "Rodeio, Santa Catarina": 4215109, + "Salete, Santa Catarina": 4215307, + "Santa Terezinha, Santa Catarina": 4215679, + "São João Batista, Santa Catarina": 4216305, + "Taió, Santa Catarina": 4217808, + "Tijucas, Santa Catarina": 4218004, + "Timbó, Santa Catarina": 4218202, + "Trombudo Central, Santa Catarina": 4218608, + "Vidal Ramos, Santa Catarina": 4219200, + "Vitor Meireles, Santa Catarina": 4219358, + "Witmarsum, Santa Catarina": 4219408, + "Alvorada, Rio Grande do Sul": 4300604, + "Amaral Ferrador, Rio Grande do Sul": 4300638, + "Arambaré, Rio Grande do Sul": 4300851, + "Araricá, Rio Grande do Sul": 4300877, + "Arroio do Sal, Rio Grande do Sul": 4301057, + "Arroio dos Ratos, Rio Grande do Sul": 4301107, + "Balneário Pinhal, Rio Grande do Sul": 4301636, + "Barão do Triunfo, Rio Grande do Sul": 4301750, + "Barra do Ribeiro, Rio Grande do Sul": 4301909, + "Bom Princípio, Rio Grande do Sul": 4302352, + "Brochier, Rio Grande do Sul": 4302659, + "Butiá, Rio Grande do Sul": 4302709, + "Cachoeirinha, Rio Grande do Sul": 4303103, + "Camaquã, Rio Grande do Sul": 4303509, + "Campo Bom, Rio Grande do Sul": 4303905, + "Canoas, Rio Grande do Sul": 4304606, + "Capão da Canoa, Rio Grande do Sul": 4304630, + "Capivari do Sul, Rio Grande do Sul": 4304671, + "Capela de Santana, Rio Grande do Sul": 4304689, + "Caraá, Rio Grande do Sul": 4304713, + "Cerro Grande do Sul, Rio Grande do Sul": 4305173, + "Charqueadas, Rio Grande do Sul": 4305355, + "Chuvisca, Rio Grande do Sul": 4305447, + "Cidreira, Rio Grande do Sul": 4305454, + "Cristal, Rio Grande do Sul": 4306056, + "Dois Irmãos, Rio Grande do Sul": 4306403, + "Dom Feliciano, Rio Grande do Sul": 4306502, + "Dom Pedro de Alcântara, Rio Grande do Sul": 4306551, + "Eldorado do Sul, Rio Grande do Sul": 4306767, + "Estância Velha, Rio Grande do Sul": 4307609, + "Esteio, Rio Grande do Sul": 4307708, + "General Câmara, Rio Grande do Sul": 4308805, + "Glorinha, Rio Grande do Sul": 4309050, + "Gravataí, Rio Grande do Sul": 4309209, + "Guaíba, Rio Grande do Sul": 4309308, + "Harmonia, Rio Grande do Sul": 4309555, + "Igrejinha, Rio Grande do Sul": 4310108, + "Imbé, Rio Grande do Sul": 4310330, + "Itati, Rio Grande do Sul": 4310652, + "Ivoti, Rio Grande do Sul": 4310801, + "Lindolfo Collor, Rio Grande do Sul": 4311627, + "Linha Nova, Rio Grande do Sul": 4311643, + "Mampituba, Rio Grande do Sul": 4311734, + "Maquiné, Rio Grande do Sul": 4311775, + "Maratá, Rio Grande do Sul": 4311791, + "Mariana Pimentel, Rio Grande do Sul": 4311981, + "Minas do Leão, Rio Grande do Sul": 4312252, + "Montenegro, Rio Grande do Sul": 4312401, + "Morrinhos do Sul, Rio Grande do Sul": 4312443, + "Morro Reuter, Rio Grande do Sul": 4312476, + "Mostardas, Rio Grande do Sul": 4312500, + "Nova Hartz, Rio Grande do Sul": 4313060, + "Nova Santa Rita, Rio Grande do Sul": 4313375, + "Novo Hamburgo, Rio Grande do Sul": 4313409, + "Osório, Rio Grande do Sul": 4313508, + "Palmares do Sul, Rio Grande do Sul": 4313656, + "Pareci Novo, Rio Grande do Sul": 4314035, + "Parobé, Rio Grande do Sul": 4314050, + "Portão, Rio Grande do Sul": 4314803, + "Porto Alegre, Rio Grande do Sul": 4314902, + "Presidente Lucena, Rio Grande do Sul": 4315149, + "Riozinho, Rio Grande do Sul": 4315750, + "Rolante, Rio Grande do Sul": 4316006, + "Salvador do Sul, Rio Grande do Sul": 4316501, + "Santa Maria do Herval, Rio Grande do Sul": 4316956, + "Santo Antônio da Patrulha, Rio Grande do Sul": 4317608, + "São Jerônimo, Rio Grande do Sul": 4318408, + "São José do Hortêncio, Rio Grande do Sul": 4318481, + "São José do Sul, Rio Grande do Sul": 4318614, + "São Leopoldo, Rio Grande do Sul": 4318705, + "São Pedro da Serra, Rio Grande do Sul": 4319356, + "São Sebastião do Caí, Rio Grande do Sul": 4319505, + "São Vendelino, Rio Grande do Sul": 4319752, + "Sapiranga, Rio Grande do Sul": 4319901, + "Sapucaia do Sul, Rio Grande do Sul": 4320008, + "Sentinela do Sul, Rio Grande do Sul": 4320354, + "Sertão Santana, Rio Grande do Sul": 4320552, + "Tapes, Rio Grande do Sul": 4321105, + "Taquara, Rio Grande do Sul": 4321204, + "Tavares, Rio Grande do Sul": 4321352, + "Terra de Areia, Rio Grande do Sul": 4321436, + "Torres, Rio Grande do Sul": 4321501, + "Tramandaí, Rio Grande do Sul": 4321600, + "Três Cachoeiras, Rio Grande do Sul": 4321667, + "Três Coroas, Rio Grande do Sul": 4321709, + "Três Forquilhas, Rio Grande do Sul": 4321832, + "Triunfo, Rio Grande do Sul": 4322004, + "Tupandi, Rio Grande do Sul": 4322251, + "Viamão, Rio Grande do Sul": 4323002, + "Xangri-lá, Rio Grande do Sul": 4323804, + "Agudo, Rio Grande do Sul": 4300109, + "Caçapava do Sul, Rio Grande do Sul": 4302808, + "Cacequi, Rio Grande do Sul": 4302907, + "Cachoeira do Sul, Rio Grande do Sul": 4303004, + "Capão do Cipó, Rio Grande do Sul": 4304655, + "Cerro Branco, Rio Grande do Sul": 4305132, + "Dilermando de Aguiar, Rio Grande do Sul": 4306379, + "Dona Francisca, Rio Grande do Sul": 4306700, + "Faxinal do Soturno, Rio Grande do Sul": 4308003, + "Formigueiro, Rio Grande do Sul": 4308409, + "Itaara, Rio Grande do Sul": 4310538, + "Itacurubi, Rio Grande do Sul": 4310553, + "Ivorá, Rio Grande do Sul": 4310751, + "Jaguari, Rio Grande do Sul": 4311106, + "Jari, Rio Grande do Sul": 4311130, + "Júlio de Castilhos, Rio Grande do Sul": 4311205, + "Lavras do Sul, Rio Grande do Sul": 4311502, + "Mata, Rio Grande do Sul": 4312104, + "Nova Esperança do Sul, Rio Grande do Sul": 4313037, + "Nova Palma, Rio Grande do Sul": 4313102, + "Novo Cabrais, Rio Grande do Sul": 4313391, + "Paraíso do Sul, Rio Grande do Sul": 4314027, + "Pinhal Grande, Rio Grande do Sul": 4314472, + "Quevedos, Rio Grande do Sul": 4315321, + "Restinga Seca, Rio Grande do Sul": 4315503, + "Santa Maria, Rio Grande do Sul": 4316907, + "Santa Margarida do Sul, Rio Grande do Sul": 4316972, + "Santana da Boa Vista, Rio Grande do Sul": 4317004, + "Santiago, Rio Grande do Sul": 4317400, + "São Francisco de Assis, Rio Grande do Sul": 4318101, + "São Gabriel, Rio Grande do Sul": 4318309, + "São João do Polêsine, Rio Grande do Sul": 4318432, + "São Martinho da Serra, Rio Grande do Sul": 4319125, + "São Pedro do Sul, Rio Grande do Sul": 4319406, + "São Sepé, Rio Grande do Sul": 4319604, + "São Vicente do Sul, Rio Grande do Sul": 4319802, + "Silveira Martins, Rio Grande do Sul": 4320651, + "Toropi, Rio Grande do Sul": 4321493, + "Unistalda, Rio Grande do Sul": 4322376, + "Vila Nova do Sul, Rio Grande do Sul": 4323457, + "Ajuricaba, Rio Grande do Sul": 4300208, + "Alecrim, Rio Grande do Sul": 4300307, + "Alegria, Rio Grande do Sul": 4300455, + "Augusto Pestana, Rio Grande do Sul": 4301503, + "Barra do Guarita, Rio Grande do Sul": 4301859, + "Boa Vista do Buricá, Rio Grande do Sul": 4302204, + "Bom Progresso, Rio Grande do Sul": 4302378, + "Bossoroca, Rio Grande do Sul": 4302501, + "Bozano, Rio Grande do Sul": 4302584, + "Braga, Rio Grande do Sul": 4302600, + "Caibaté, Rio Grande do Sul": 4303301, + "Campina das Missões, Rio Grande do Sul": 4303707, + "Campo Novo, Rio Grande do Sul": 4304002, + "Cândido Godói, Rio Grande do Sul": 4304309, + "Catuípe, Rio Grande do Sul": 4305009, + "Cerro Largo, Rio Grande do Sul": 4305207, + "Chiapetta, Rio Grande do Sul": 4305405, + "Condor, Rio Grande do Sul": 4305702, + "Coronel Barros, Rio Grande do Sul": 4305871, + "Coronel Bicaco, Rio Grande do Sul": 4305900, + "Crissiumal, Rio Grande do Sul": 4306007, + "Derrubadas, Rio Grande do Sul": 4306320, + "Dezesseis de Novembro, Rio Grande do Sul": 4306353, + "Doutor Maurício Cardoso, Rio Grande do Sul": 4306734, + "Entre-Ijuís, Rio Grande do Sul": 4306932, + "Esperança do Sul, Rio Grande do Sul": 4307450, + "Eugênio de Castro, Rio Grande do Sul": 4307831, + "Garruchos, Rio Grande do Sul": 4308656, + "Giruá, Rio Grande do Sul": 4309001, + "Guarani das Missões, Rio Grande do Sul": 4309506, + "Horizontina, Rio Grande do Sul": 4309605, + "Humaitá, Rio Grande do Sul": 4309704, + "Ijuí, Rio Grande do Sul": 4310207, + "Independência, Rio Grande do Sul": 4310405, + "Inhacorá, Rio Grande do Sul": 4310413, + "Jóia, Rio Grande do Sul": 4311155, + "Mato Queimado, Rio Grande do Sul": 4312179, + "Miraguaí, Rio Grande do Sul": 4312302, + "Nova Candelária, Rio Grande do Sul": 4313011, + "Nova Ramada, Rio Grande do Sul": 4313334, + "Novo Machado, Rio Grande do Sul": 4313425, + "Panambi, Rio Grande do Sul": 4313904, + "Pejuçara, Rio Grande do Sul": 4314308, + "Pirapó, Rio Grande do Sul": 4314555, + "Porto Lucena, Rio Grande do Sul": 4315008, + "Porto Mauá, Rio Grande do Sul": 4315057, + "Porto Vera Cruz, Rio Grande do Sul": 4315073, + "Porto Xavier, Rio Grande do Sul": 4315107, + "Redentora, Rio Grande do Sul": 4315404, + "Rolador, Rio Grande do Sul": 4315958, + "Roque Gonzales, Rio Grande do Sul": 4316303, + "Salvador das Missões, Rio Grande do Sul": 4316477, + "Santa Rosa, Rio Grande do Sul": 4317202, + "Santo Ângelo, Rio Grande do Sul": 4317509, + "Santo Antônio das Missões, Rio Grande do Sul": 4317707, + "Santo Augusto, Rio Grande do Sul": 4317806, + "Santo Cristo, Rio Grande do Sul": 4317905, + "São José do Inhacorá, Rio Grande do Sul": 4318499, + "São Luiz Gonzaga, Rio Grande do Sul": 4318903, + "São Martinho, Rio Grande do Sul": 4319109, + "São Miguel das Missões, Rio Grande do Sul": 4319158, + "São Nicolau, Rio Grande do Sul": 4319208, + "São Paulo das Missões, Rio Grande do Sul": 4319307, + "São Pedro do Butiá, Rio Grande do Sul": 4319372, + "São Valério do Sul, Rio Grande do Sul": 4319737, + "Sede Nova, Rio Grande do Sul": 4320230, + "Senador Salgado Filho, Rio Grande do Sul": 4320321, + "Sete de Setembro, Rio Grande do Sul": 4320578, + "Tenente Portela, Rio Grande do Sul": 4321402, + "Tiradentes do Sul, Rio Grande do Sul": 4321477, + "Três de Maio, Rio Grande do Sul": 4321808, + "Três Passos, Rio Grande do Sul": 4321907, + "Tucunduva, Rio Grande do Sul": 4322103, + "Tuparendi, Rio Grande do Sul": 4322301, + "Ubiretama, Rio Grande do Sul": 4322343, + "Vista Gaúcha, Rio Grande do Sul": 4323705, + "Vitória das Missões, Rio Grande do Sul": 4323754, + "Água Santa, Rio Grande do Sul": 4300059, + "Almirante Tamandaré do Sul, Rio Grande do Sul": 4300471, + "Alpestre, Rio Grande do Sul": 4300505, + "Alto Alegre, Rio Grande do Sul": 4300554, + "Ametista do Sul, Rio Grande do Sul": 4300646, + "Aratiba, Rio Grande do Sul": 4300901, + "Arvorezinha, Rio Grande do Sul": 4301404, + "Áurea, Rio Grande do Sul": 4301552, + "Barão de Cotegipe, Rio Grande do Sul": 4301701, + "Barracão, Rio Grande do Sul": 4301800, + "Barra do Rio Azul, Rio Grande do Sul": 4301925, + "Barra Funda, Rio Grande do Sul": 4301958, + "Barros Cassal, Rio Grande do Sul": 4302006, + "Benjamin Constant do Sul, Rio Grande do Sul": 4302055, + "Boa Vista das Missões, Rio Grande do Sul": 4302154, + "Boa Vista do Cadeado, Rio Grande do Sul": 4302220, + "Boa Vista do Incra, Rio Grande do Sul": 4302238, + "Cacique Doble, Rio Grande do Sul": 4303202, + "Caiçara, Rio Grande do Sul": 4303400, + "Camargo, Rio Grande do Sul": 4303558, + "Campinas do Sul, Rio Grande do Sul": 4303806, + "Campos Borges, Rio Grande do Sul": 4304101, + "Capão Bonito do Sul, Rio Grande do Sul": 4304622, + "Carazinho, Rio Grande do Sul": 4304705, + "Carlos Gomes, Rio Grande do Sul": 4304853, + "Casca, Rio Grande do Sul": 4304903, + "Caseiros, Rio Grande do Sul": 4304952, + "Centenário, Rio Grande do Sul": 4305116, + "Cerro Grande, Rio Grande do Sul": 4305157, + "Chapada, Rio Grande do Sul": 4305306, + "Charrua, Rio Grande do Sul": 4305371, + "Ciríaco, Rio Grande do Sul": 4305504, + "Colorado, Rio Grande do Sul": 4305603, + "Constantina, Rio Grande do Sul": 4305801, + "Coqueiros do Sul, Rio Grande do Sul": 4305850, + "Coxilha, Rio Grande do Sul": 4305975, + "Cristal do Sul, Rio Grande do Sul": 4306072, + "Cruz Alta, Rio Grande do Sul": 4306106, + "Cruzaltense, Rio Grande do Sul": 4306130, + "David Canabarro, Rio Grande do Sul": 4306304, + "Dois Irmãos das Missões, Rio Grande do Sul": 4306429, + "Engenho Velho, Rio Grande do Sul": 4306924, + "Entre Rios do Sul, Rio Grande do Sul": 4306957, + "Erebango, Rio Grande do Sul": 4306973, + "Erechim, Rio Grande do Sul": 4307005, + "Ernestina, Rio Grande do Sul": 4307054, + "Erval Grande, Rio Grande do Sul": 4307203, + "Erval Seco, Rio Grande do Sul": 4307302, + "Espumoso, Rio Grande do Sul": 4307500, + "Estação, Rio Grande do Sul": 4307559, + "Faxinalzinho, Rio Grande do Sul": 4308052, + "Floriano Peixoto, Rio Grande do Sul": 4308250, + "Fontoura Xavier, Rio Grande do Sul": 4308300, + "Fortaleza dos Valos, Rio Grande do Sul": 4308458, + "Frederico Westphalen, Rio Grande do Sul": 4308508, + "Gaurama, Rio Grande do Sul": 4308706, + "Gentil, Rio Grande do Sul": 4308854, + "Getúlio Vargas, Rio Grande do Sul": 4308904, + "Gramado dos Loureiros, Rio Grande do Sul": 4309126, + "Ibiaçá, Rio Grande do Sul": 4309803, + "Ibiraiaras, Rio Grande do Sul": 4309902, + "Ibirapuitã, Rio Grande do Sul": 4309951, + "Ibirubá, Rio Grande do Sul": 4310009, + "Ipiranga do Sul, Rio Grande do Sul": 4310462, + "Iraí, Rio Grande do Sul": 4310504, + "Itapuca, Rio Grande do Sul": 4310579, + "Itatiba do Sul, Rio Grande do Sul": 4310702, + "Jaboticaba, Rio Grande do Sul": 4310850, + "Jacuizinho, Rio Grande do Sul": 4310876, + "Jacutinga, Rio Grande do Sul": 4310900, + "Lagoa dos Três Cantos, Rio Grande do Sul": 4311270, + "Lagoa Vermelha, Rio Grande do Sul": 4311304, + "Lajeado do Bugre, Rio Grande do Sul": 4311429, + "Liberato Salzano, Rio Grande do Sul": 4311601, + "Machadinho, Rio Grande do Sul": 4311700, + "Marau, Rio Grande do Sul": 4311809, + "Marcelino Ramos, Rio Grande do Sul": 4311908, + "Mariano Moro, Rio Grande do Sul": 4312005, + "Mato Castelhano, Rio Grande do Sul": 4312138, + "Maximiliano de Almeida, Rio Grande do Sul": 4312203, + "Mormaço, Rio Grande do Sul": 4312427, + "Muliterno, Rio Grande do Sul": 4312625, + "Não-Me-Toque, Rio Grande do Sul": 4312658, + "Nicolau Vergueiro, Rio Grande do Sul": 4312674, + "Nonoai, Rio Grande do Sul": 4312708, + "Nova Alvorada, Rio Grande do Sul": 4312757, + "Nova Boa Vista, Rio Grande do Sul": 4312955, + "Novo Tiradentes, Rio Grande do Sul": 4313441, + "Novo Xingu, Rio Grande do Sul": 4313466, + "Novo Barreiro, Rio Grande do Sul": 4313490, + "Paim Filho, Rio Grande do Sul": 4313607, + "Palmeira das Missões, Rio Grande do Sul": 4313706, + "Palmitinho, Rio Grande do Sul": 4313805, + "Passo Fundo, Rio Grande do Sul": 4314100, + "Paulo Bento, Rio Grande do Sul": 4314134, + "Pinhal, Rio Grande do Sul": 4314456, + "Pinheirinho do Vale, Rio Grande do Sul": 4314498, + "Planalto, Rio Grande do Sul": 4314704, + "Pontão, Rio Grande do Sul": 4314779, + "Ponte Preta, Rio Grande do Sul": 4314787, + "Quatro Irmãos, Rio Grande do Sul": 4315313, + "Quinze de Novembro, Rio Grande do Sul": 4315354, + "Rio dos Índios, Rio Grande do Sul": 4315552, + "Rodeio Bonito, Rio Grande do Sul": 4315909, + "Ronda Alta, Rio Grande do Sul": 4316105, + "Rondinha, Rio Grande do Sul": 4316204, + "Sagrada Família, Rio Grande do Sul": 4316428, + "Saldanha Marinho, Rio Grande do Sul": 4316436, + "Salto do Jacuí, Rio Grande do Sul": 4316451, + "Sananduva, Rio Grande do Sul": 4316600, + "Santa Bárbara do Sul, Rio Grande do Sul": 4316709, + "Santa Cecília do Sul, Rio Grande do Sul": 4316733, + "Santo Antônio do Palma, Rio Grande do Sul": 4317558, + "Santo Antônio do Planalto, Rio Grande do Sul": 4317756, + "Santo Expedito do Sul, Rio Grande do Sul": 4317954, + "São Domingos do Sul, Rio Grande do Sul": 4318051, + "São João da Urtiga, Rio Grande do Sul": 4318424, + "São José das Missões, Rio Grande do Sul": 4318457, + "São José do Herval, Rio Grande do Sul": 4318465, + "São José do Ouro, Rio Grande do Sul": 4318606, + "São Pedro das Missões, Rio Grande do Sul": 4319364, + "São Valentim, Rio Grande do Sul": 4319703, + "Sarandi, Rio Grande do Sul": 4320107, + "Seberi, Rio Grande do Sul": 4320206, + "Selbach, Rio Grande do Sul": 4320305, + "Sertão, Rio Grande do Sul": 4320503, + "Severiano de Almeida, Rio Grande do Sul": 4320602, + "Soledade, Rio Grande do Sul": 4320800, + "Tapejara, Rio Grande do Sul": 4320909, + "Tapera, Rio Grande do Sul": 4321006, + "Taquaruçu do Sul, Rio Grande do Sul": 4321329, + "Tio Hugo, Rio Grande do Sul": 4321469, + "Três Arroios, Rio Grande do Sul": 4321634, + "Três Palmeiras, Rio Grande do Sul": 4321857, + "Trindade do Sul, Rio Grande do Sul": 4321956, + "Tupanci do Sul, Rio Grande do Sul": 4322186, + "Tupanciretã, Rio Grande do Sul": 4322202, + "Vanini, Rio Grande do Sul": 4322558, + "Viadutos, Rio Grande do Sul": 4322905, + "Vicente Dutra, Rio Grande do Sul": 4323101, + "Victor Graeff, Rio Grande do Sul": 4323200, + "Vila Lângaro, Rio Grande do Sul": 4323358, + "Vila Maria, Rio Grande do Sul": 4323408, + "Vista Alegre, Rio Grande do Sul": 4323507, + "Alto Feliz, Rio Grande do Sul": 4300570, + "André da Rocha, Rio Grande do Sul": 4300661, + "Antônio Prado, Rio Grande do Sul": 4300802, + "Barão, Rio Grande do Sul": 4301651, + "Bento Gonçalves, Rio Grande do Sul": 4302105, + "Boa Vista do Sul, Rio Grande do Sul": 4302253, + "Bom Jesus, Rio Grande do Sul": 4302303, + "Cambará do Sul, Rio Grande do Sul": 4303608, + "Campestre da Serra, Rio Grande do Sul": 4303673, + "Canela, Rio Grande do Sul": 4304408, + "Carlos Barbosa, Rio Grande do Sul": 4304804, + "Caxias do Sul, Rio Grande do Sul": 4305108, + "Coronel Pilar, Rio Grande do Sul": 4305934, + "Cotiporã, Rio Grande do Sul": 4305959, + "Dois Lajeados, Rio Grande do Sul": 4306452, + "Esmeralda, Rio Grande do Sul": 4307401, + "Fagundes Varela, Rio Grande do Sul": 4307864, + "Farroupilha, Rio Grande do Sul": 4307906, + "Feliz, Rio Grande do Sul": 4308102, + "Flores da Cunha, Rio Grande do Sul": 4308201, + "Garibaldi, Rio Grande do Sul": 4308607, + "Gramado, Rio Grande do Sul": 4309100, + "Guabiju, Rio Grande do Sul": 4309258, + "Guaporé, Rio Grande do Sul": 4309407, + "Ipê, Rio Grande do Sul": 4310439, + "Jaquirana, Rio Grande do Sul": 4311122, + "Montauri, Rio Grande do Sul": 4312351, + "Monte Alegre dos Campos, Rio Grande do Sul": 4312377, + "Monte Belo do Sul, Rio Grande do Sul": 4312385, + "Muitos Capões, Rio Grande do Sul": 4312617, + "Nova Araçá, Rio Grande do Sul": 4312807, + "Nova Bassano, Rio Grande do Sul": 4312906, + "Nova Pádua, Rio Grande do Sul": 4313086, + "Nova Petrópolis, Rio Grande do Sul": 4313201, + "Nova Prata, Rio Grande do Sul": 4313300, + "Nova Roma do Sul, Rio Grande do Sul": 4313359, + "Paraí, Rio Grande do Sul": 4314001, + "Picada Café, Rio Grande do Sul": 4314423, + "Pinhal da Serra, Rio Grande do Sul": 4314464, + "Pinto Bandeira, Rio Grande do Sul": 4314548, + "Protásio Alves, Rio Grande do Sul": 4315172, + "Santa Tereza, Rio Grande do Sul": 4317251, + "São Francisco de Paula, Rio Grande do Sul": 4318200, + "São Jorge, Rio Grande do Sul": 4318440, + "São José dos Ausentes, Rio Grande do Sul": 4318622, + "São Marcos, Rio Grande do Sul": 4319000, + "São Valentim do Sul, Rio Grande do Sul": 4319711, + "Serafina Corrêa, Rio Grande do Sul": 4320404, + "União da Serra, Rio Grande do Sul": 4322350, + "Vacaria, Rio Grande do Sul": 4322509, + "Vale Real, Rio Grande do Sul": 4322541, + "Veranópolis, Rio Grande do Sul": 4322806, + "Vila Flores, Rio Grande do Sul": 4323309, + "Vista Alegre do Prata, Rio Grande do Sul": 4323606, + "Anta Gorda, Rio Grande do Sul": 4300703, + "Arroio do Meio, Rio Grande do Sul": 4301008, + "Arroio do Tigre, Rio Grande do Sul": 4301206, + "Bom Retiro do Sul, Rio Grande do Sul": 4302402, + "Boqueirão do Leão, Rio Grande do Sul": 4302451, + "Candelária, Rio Grande do Sul": 4304200, + "Canudos do Vale, Rio Grande do Sul": 4304614, + "Capitão, Rio Grande do Sul": 4304697, + "Colinas, Rio Grande do Sul": 4305587, + "Coqueiro Baixo, Rio Grande do Sul": 4305835, + "Cruzeiro do Sul, Rio Grande do Sul": 4306205, + "Doutor Ricardo, Rio Grande do Sul": 4306759, + "Encantado, Rio Grande do Sul": 4306809, + "Encruzilhada do Sul, Rio Grande do Sul": 4306908, + "Estrela, Rio Grande do Sul": 4307807, + "Estrela Velha, Rio Grande do Sul": 4307815, + "Fazenda Vilanova, Rio Grande do Sul": 4308078, + "Forquetinha, Rio Grande do Sul": 4308433, + "Gramado Xavier, Rio Grande do Sul": 4309159, + "Herveiras, Rio Grande do Sul": 4309571, + "Ibarama, Rio Grande do Sul": 4309753, + "Ilópolis, Rio Grande do Sul": 4310306, + "Imigrante, Rio Grande do Sul": 4310363, + "Lagoa Bonita do Sul, Rio Grande do Sul": 4311239, + "Lagoão, Rio Grande do Sul": 4311254, + "Lajeado, Rio Grande do Sul": 4311403, + "Marques de Souza, Rio Grande do Sul": 4312054, + "Mato Leitão, Rio Grande do Sul": 4312153, + "Muçum, Rio Grande do Sul": 4312609, + "Nova Bréscia, Rio Grande do Sul": 4313003, + "Pantano Grande, Rio Grande do Sul": 4313953, + "Passa Sete, Rio Grande do Sul": 4314068, + "Passo do Sobrado, Rio Grande do Sul": 4314076, + "Paverama, Rio Grande do Sul": 4314159, + "Poço das Antas, Rio Grande do Sul": 4314753, + "Pouso Novo, Rio Grande do Sul": 4315131, + "Progresso, Rio Grande do Sul": 4315156, + "Putinga, Rio Grande do Sul": 4315206, + "Relvado, Rio Grande do Sul": 4315453, + "Rio Pardo, Rio Grande do Sul": 4315701, + "Roca Sales, Rio Grande do Sul": 4315800, + "Santa Clara do Sul, Rio Grande do Sul": 4316758, + "Santa Cruz do Sul, Rio Grande do Sul": 4316808, + "Segredo, Rio Grande do Sul": 4320263, + "Sério, Rio Grande do Sul": 4320453, + "Sinimbu, Rio Grande do Sul": 4320677, + "Sobradinho, Rio Grande do Sul": 4320701, + "Tabaí, Rio Grande do Sul": 4320859, + "Taquari, Rio Grande do Sul": 4321303, + "Teutônia, Rio Grande do Sul": 4321451, + "Travesseiro, Rio Grande do Sul": 4321626, + "Tunas, Rio Grande do Sul": 4322152, + "Vale Verde, Rio Grande do Sul": 4322525, + "Vale do Sol, Rio Grande do Sul": 4322533, + "Venâncio Aires, Rio Grande do Sul": 4322608, + "Vera Cruz, Rio Grande do Sul": 4322707, + "Vespasiano Correa, Rio Grande do Sul": 4322855, + "Westfalia, Rio Grande do Sul": 4323770, + "Água Clara, Mato Grosso do Sul": 5000203, + "Alcinópolis, Mato Grosso do Sul": 5000252, + "Aparecida do Taboado, Mato Grosso do Sul": 5001003, + "Bandeirantes, Mato Grosso do Sul": 5001508, + "Bataguassu, Mato Grosso do Sul": 5001904, + "Brasilândia, Mato Grosso do Sul": 5002308, + "Camapuã, Mato Grosso do Sul": 5002605, + "Campo Grande, Mato Grosso do Sul": 5002704, + "Cassilândia, Mato Grosso do Sul": 5002902, + "Chapadão do Sul, Mato Grosso do Sul": 5002951, + "Corguinho, Mato Grosso do Sul": 5003108, + "Costa Rica, Mato Grosso do Sul": 5003256, + "Coxim, Mato Grosso do Sul": 5003306, + "Dois Irmãos do Buriti, Mato Grosso do Sul": 5003488, + "Figueirão, Mato Grosso do Sul": 5003900, + "Inocência, Mato Grosso do Sul": 5004403, + "Jaraguari, Mato Grosso do Sul": 5004908, + "Nova Alvorada do Sul, Mato Grosso do Sul": 5006002, + "Paraíso das Águas, Mato Grosso do Sul": 5006275, + "Paranaíba, Mato Grosso do Sul": 5006309, + "Pedro Gomes, Mato Grosso do Sul": 5006408, + "Ribas do Rio Pardo, Mato Grosso do Sul": 5007109, + "Rio Negro, Mato Grosso do Sul": 5007307, + "Rio Verde de Mato Grosso, Mato Grosso do Sul": 5007406, + "Rochedo, Mato Grosso do Sul": 5007505, + "Santa Rita do Pardo, Mato Grosso do Sul": 5007554, + "São Gabriel do Oeste, Mato Grosso do Sul": 5007695, + "Selvíria, Mato Grosso do Sul": 5007802, + "Sidrolândia, Mato Grosso do Sul": 5007901, + "Sonora, Mato Grosso do Sul": 5007935, + "Terenos, Mato Grosso do Sul": 5008008, + "Três Lagoas, Mato Grosso do Sul": 5008305, + "Amambai, Mato Grosso do Sul": 5000609, + "Anaurilândia, Mato Grosso do Sul": 5000807, + "Angélica, Mato Grosso do Sul": 5000856, + "Antônio João, Mato Grosso do Sul": 5000906, + "Aral Moreira, Mato Grosso do Sul": 5001243, + "Batayporã, Mato Grosso do Sul": 5002001, + "Caarapó, Mato Grosso do Sul": 5002407, + "Coronel Sapucaia, Mato Grosso do Sul": 5003157, + "Deodápolis, Mato Grosso do Sul": 5003454, + "Douradina, Mato Grosso do Sul": 5003504, + "Dourados, Mato Grosso do Sul": 5003702, + "Eldorado, Mato Grosso do Sul": 5003751, + "Fátima do Sul, Mato Grosso do Sul": 5003801, + "Glória de Dourados, Mato Grosso do Sul": 5004007, + "Iguatemi, Mato Grosso do Sul": 5004304, + "Itaporã, Mato Grosso do Sul": 5004502, + "Itaquiraí, Mato Grosso do Sul": 5004601, + "Ivinhema, Mato Grosso do Sul": 5004700, + "Japorã, Mato Grosso do Sul": 5004809, + "Jateí, Mato Grosso do Sul": 5005103, + "Juti, Mato Grosso do Sul": 5005152, + "Laguna Carapã, Mato Grosso do Sul": 5005251, + "Maracaju, Mato Grosso do Sul": 5005400, + "Mundo Novo, Mato Grosso do Sul": 5005681, + "Naviraí, Mato Grosso do Sul": 5005707, + "Nova Andradina, Mato Grosso do Sul": 5006200, + "Novo Horizonte do Sul, Mato Grosso do Sul": 5006259, + "Paranhos, Mato Grosso do Sul": 5006358, + "Ponta Porã, Mato Grosso do Sul": 5006606, + "Rio Brilhante, Mato Grosso do Sul": 5007208, + "Sete Quedas, Mato Grosso do Sul": 5007703, + "Tacuru, Mato Grosso do Sul": 5007950, + "Taquarussu, Mato Grosso do Sul": 5007976, + "Vicentina, Mato Grosso do Sul": 5008404, + "Acorizal, Mato Grosso": 5100102, + "Alto Paraguai, Mato Grosso": 5100508, + "Arenápolis, Mato Grosso": 5101308, + "Barão de Melgaço, Mato Grosso": 5101605, + "Barra do Bugres, Mato Grosso": 5101704, + "Brasnorte, Mato Grosso": 5101902, + "Campo Novo do Parecis, Mato Grosso": 5102637, + "Campo Verde, Mato Grosso": 5102678, + "Chapada dos Guimarães, Mato Grosso": 5103007, + "Cuiabá, Mato Grosso": 5103403, + "Denise, Mato Grosso": 5103452, + "Diamantino, Mato Grosso": 5103502, + "Jangada, Mato Grosso": 5104906, + "Nobres, Mato Grosso": 5105903, + "Nortelândia, Mato Grosso": 5106000, + "Nossa Senhora do Livramento, Mato Grosso": 5106109, + "Nova Brasilândia, Mato Grosso": 5106208, + "Nova Olímpia, Mato Grosso": 5106232, + "Planalto da Serra, Mato Grosso": 5106455, + "Poconé, Mato Grosso": 5106505, + "Porto Estrela, Mato Grosso": 5106851, + "Santo Afonso, Mato Grosso": 5107263, + "São José do Rio Claro, Mato Grosso": 5107305, + "Rosário Oeste, Mato Grosso": 5107701, + "Santo Antônio do Leverger, Mato Grosso": 5107800, + "Sapezal, Mato Grosso": 5107875, + "Tangará da Serra, Mato Grosso": 5107958, + "Várzea Grande, Mato Grosso": 5108402, + "Nova Marilândia, Mato Grosso": 5108857, + "Nova Maringá, Mato Grosso": 5108907, + "Alta Floresta, Mato Grosso": 5100250, + "Apiacás, Mato Grosso": 5100805, + "Aripuanã, Mato Grosso": 5101407, + "Carlinda, Mato Grosso": 5102793, + "Castanheira, Mato Grosso": 5102850, + "Cláudia, Mato Grosso": 5103056, + "Colíder, Mato Grosso": 5103205, + "Colniza, Mato Grosso": 5103254, + "Cotriguaçu, Mato Grosso": 5103379, + "Feliz Natal, Mato Grosso": 5103700, + "Guarantã do Norte, Mato Grosso": 5104104, + "Ipiranga do Norte, Mato Grosso": 5104526, + "Itanhangá, Mato Grosso": 5104542, + "Itaúba, Mato Grosso": 5104559, + "Juara, Mato Grosso": 5105101, + "Juína, Mato Grosso": 5105150, + "Juruena, Mato Grosso": 5105176, + "Lucas do Rio Verde, Mato Grosso": 5105259, + "Marcelândia, Mato Grosso": 5105580, + "Matupá, Mato Grosso": 5105606, + "Nova Bandeirantes, Mato Grosso": 5106158, + "Nova Santa Helena, Mato Grosso": 5106190, + "Nova Canaã do Norte, Mato Grosso": 5106216, + "Nova Mutum, Mato Grosso": 5106224, + "Nova Ubiratã, Mato Grosso": 5106240, + "Novo Mundo, Mato Grosso": 5106265, + "Novo Horizonte do Norte, Mato Grosso": 5106273, + "Paranaíta, Mato Grosso": 5106299, + "Peixoto de Azevedo, Mato Grosso": 5106422, + "Porto dos Gaúchos, Mato Grosso": 5106802, + "Santa Carmem, Mato Grosso": 5107248, + "Rondolândia, Mato Grosso": 5107578, + "Santa Rita do Trivelato, Mato Grosso": 5107768, + "Sinop, Mato Grosso": 5107909, + "Sorriso, Mato Grosso": 5107925, + "Tabaporã, Mato Grosso": 5107941, + "Tapurah, Mato Grosso": 5108006, + "Terra Nova do Norte, Mato Grosso": 5108055, + "União do Sul, Mato Grosso": 5108303, + "Vera, Mato Grosso": 5108501, + "Nova Guarita, Mato Grosso": 5108808, + "Nova Monte Verde, Mato Grosso": 5108956, + "Água Boa, Mato Grosso": 5100201, + "Alto Boa Vista, Mato Grosso": 5100359, + "Araguaiana, Mato Grosso": 5101001, + "Barra do Garças, Mato Grosso": 5101803, + "Bom Jesus do Araguaia, Mato Grosso": 5101852, + "Campinápolis, Mato Grosso": 5102603, + "Canabrava do Norte, Mato Grosso": 5102694, + "Canarana, Mato Grosso": 5102702, + "Cocalinho, Mato Grosso": 5103106, + "Confresa, Mato Grosso": 5103353, + "Gaúcha do Norte, Mato Grosso": 5103858, + "General Carneiro, Mato Grosso": 5103908, + "Luciara, Mato Grosso": 5105309, + "Nova Nazaré, Mato Grosso": 5106174, + "Nova Xavantina, Mato Grosso": 5106257, + "Novo São Joaquim, Mato Grosso": 5106281, + "Novo Santo Antônio, Mato Grosso": 5106315, + "Pontal do Araguaia, Mato Grosso": 5106653, + "Ponte Branca, Mato Grosso": 5106703, + "Porto Alegre do Norte, Mato Grosso": 5106778, + "Querência, Mato Grosso": 5107065, + "Ribeirão Cascalheira, Mato Grosso": 5107180, + "Ribeirãozinho, Mato Grosso": 5107198, + "São José do Xingu, Mato Grosso": 5107354, + "Santa Cruz do Xingu, Mato Grosso": 5107743, + "Santa Terezinha, Mato Grosso": 5107776, + "São Félix do Araguaia, Mato Grosso": 5107859, + "Serra Nova Dourada, Mato Grosso": 5107883, + "Torixoréu, Mato Grosso": 5108204, + "Vila Rica, Mato Grosso": 5108600, + "Abadia de Goiás, Goiás": 5200050, + "Abadiânia, Goiás": 5200100, + "Adelândia, Goiás": 5200159, + "Alexânia, Goiás": 5200308, + "Americano do Brasil, Goiás": 5200852, + "Anápolis, Goiás": 5201108, + "Anhanguera, Goiás": 5201207, + "Anicuns, Goiás": 5201306, + "Aparecida de Goiânia, Goiás": 5201405, + "Araçu, Goiás": 5201603, + "Aragoiânia, Goiás": 5201801, + "Araguapaz, Goiás": 5202155, + "Aruanã, Goiás": 5202502, + "Avelinópolis, Goiás": 5202809, + "Bela Vista de Goiás, Goiás": 5203302, + "Bonfinópolis, Goiás": 5203559, + "Brazabrantes, Goiás": 5203609, + "Britânia, Goiás": 5203807, + "Caldazinha, Goiás": 5204557, + "Campo Alegre de Goiás, Goiás": 5204805, + "Campo Limpo de Goiás, Goiás": 5204854, + "Catalão, Goiás": 5205109, + "Caturaí, Goiás": 5205208, + "Corumbá de Goiás, Goiás": 5205802, + "Cumari, Goiás": 5206602, + "Damolândia, Goiás": 5206800, + "Davinópolis, Goiás": 5206909, + "Faina, Goiás": 5207535, + "Gameleira de Goiás, Goiás": 5208152, + "Goianápolis, Goiás": 5208400, + "Goiandira, Goiás": 5208509, + "Goiânia, Goiás": 5208707, + "Goianira, Goiás": 5208806, + "Goiás, Goiás": 5208905, + "Guapó, Goiás": 5209200, + "Guaraíta, Goiás": 5209291, + "Heitoraí, Goiás": 5209606, + "Hidrolândia, Goiás": 5209705, + "Inhumas, Goiás": 5210000, + "Ipameri, Goiás": 5210109, + "Itaberaí, Goiás": 5210406, + "Itaguari, Goiás": 5210562, + "Itaguaru, Goiás": 5210604, + "Itapirapuã, Goiás": 5211008, + "Itapuranga, Goiás": 5211206, + "Itauçu, Goiás": 5211404, + "Jaraguá, Goiás": 5211800, + "Jesúpolis, Goiás": 5212055, + "Jussara, Goiás": 5212204, + "Leopoldo de Bulhões, Goiás": 5212303, + "Matrinchã, Goiás": 5212956, + "Mossâmedes, Goiás": 5213905, + "Mozarlândia, Goiás": 5214002, + "Nerópolis, Goiás": 5214507, + "Nova Aurora, Goiás": 5214804, + "Nova Crixás, Goiás": 5214838, + "Nova Veneza, Goiás": 5215009, + "Novo Brasil, Goiás": 5215207, + "Orizona, Goiás": 5215306, + "Ouro Verde de Goiás, Goiás": 5215405, + "Ouvidor, Goiás": 5215504, + "Palmelo, Goiás": 5215801, + "Petrolina de Goiás, Goiás": 5216809, + "Pirenópolis, Goiás": 5217302, + "Pires do Rio, Goiás": 5217401, + "Santa Cruz de Goiás, Goiás": 5219209, + "Santa Fé de Goiás, Goiás": 5219258, + "Santa Rosa de Goiás, Goiás": 5219506, + "Santo Antônio de Goiás, Goiás": 5219738, + "São Francisco de Goiás, Goiás": 5219902, + "São Miguel do Passa Quatro, Goiás": 5220264, + "Senador Canedo, Goiás": 5220454, + "Silvânia, Goiás": 5220603, + "Taquaral de Goiás, Goiás": 5221007, + "Terezópolis de Goiás, Goiás": 5221197, + "Três Ranchos, Goiás": 5221304, + "Trindade, Goiás": 5221403, + "Urutaí, Goiás": 5221809, + "Varjão, Goiás": 5221908, + "Vianópolis, Goiás": 5222005, + "Aparecida do Rio Doce, Goiás": 5201454, + "Aporé, Goiás": 5201504, + "Cachoeira Alta, Goiás": 5204102, + "Caçu, Goiás": 5204300, + "Caiapônia, Goiás": 5204409, + "Castelândia, Goiás": 5205059, + "Chapadão do Céu, Goiás": 5205471, + "Doverlândia, Goiás": 5207253, + "Gouvelândia, Goiás": 5209150, + "Inaciolândia, Goiás": 5209937, + "Itajá, Goiás": 5210802, + "Itarumã, Goiás": 5211305, + "Jataí, Goiás": 5211909, + "Lagoa Santa, Goiás": 5212253, + "Maurilândia, Goiás": 5213004, + "Mineiros, Goiás": 5213103, + "Montividiu, Goiás": 5213756, + "Paranaiguara, Goiás": 5216304, + "Perolândia, Goiás": 5216452, + "Porteirão, Goiás": 5218052, + "Portelândia, Goiás": 5218102, + "Quirinópolis, Goiás": 5218508, + "Rio Verde, Goiás": 5218805, + "Santa Helena de Goiás, Goiás": 5219308, + "Santa Rita do Araguaia, Goiás": 5219407, + "Santo Antônio da Barra, Goiás": 5219712, + "São Simão, Goiás": 5220405, + "Serranópolis, Goiás": 5220504, + "Turvelândia, Goiás": 5221551, + "Acreúna, Goiás": 5200134, + "Amorinópolis, Goiás": 5200902, + "Aragarças, Goiás": 5201702, + "Arenópolis, Goiás": 5202353, + "Aurilândia, Goiás": 5202601, + "Baliza, Goiás": 5203104, + "Bom Jardim de Goiás, Goiás": 5203401, + "Buriti de Goiás, Goiás": 5203939, + "Cachoeira de Goiás, Goiás": 5204201, + "Campestre de Goiás, Goiás": 5204607, + "Cezarina, Goiás": 5205455, + "Córrego do Ouro, Goiás": 5205703, + "Diorama, Goiás": 5207105, + "Edéia, Goiás": 5207402, + "Fazenda Nova, Goiás": 5207600, + "Firminópolis, Goiás": 5207808, + "Indiara, Goiás": 5209952, + "Iporá, Goiás": 5210208, + "Israelândia, Goiás": 5210307, + "Ivolândia, Goiás": 5211602, + "Jandaia, Goiás": 5211701, + "Jaupaci, Goiás": 5212006, + "Moiporá, Goiás": 5213400, + "Montes Claros de Goiás, Goiás": 5213707, + "Nazário, Goiás": 5214408, + "Palestina de Goiás, Goiás": 5215652, + "Palmeiras de Goiás, Goiás": 5215702, + "Palminópolis, Goiás": 5215900, + "Paraúna, Goiás": 5216403, + "Piranhas, Goiás": 5217203, + "Sanclerlândia, Goiás": 5219001, + "Santa Bárbara de Goiás, Goiás": 5219100, + "São João da Paraúna, Goiás": 5220058, + "São Luís de Montes Belos, Goiás": 5220108, + "Turvânia, Goiás": 5221502, + "Alto Horizonte, Goiás": 5200555, + "Amaralina, Goiás": 5200829, + "Barro Alto, Goiás": 5203203, + "Bonópolis, Goiás": 5203575, + "Campinaçu, Goiás": 5204656, + "Campinorte, Goiás": 5204706, + "Campos Verdes, Goiás": 5204953, + "Carmo do Rio Verde, Goiás": 5205000, + "Ceres, Goiás": 5205406, + "Colinas do Sul, Goiás": 5205521, + "Crixás, Goiás": 5206404, + "Estrela do Norte, Goiás": 5207501, + "Formoso, Goiás": 5208103, + "Goianésia, Goiás": 5208608, + "Guarinos, Goiás": 5209457, + "Hidrolina, Goiás": 5209804, + "Ipiranga de Goiás, Goiás": 5210158, + "Itapaci, Goiás": 5210901, + "Mara Rosa, Goiás": 5212808, + "Minaçu, Goiás": 5213087, + "Montividiu do Norte, Goiás": 5213772, + "Morro Agudo de Goiás, Goiás": 5213855, + "Mundo Novo, Goiás": 5214051, + "Mutunópolis, Goiás": 5214101, + "Niquelândia, Goiás": 5214606, + "Nova América, Goiás": 5214705, + "Nova Glória, Goiás": 5214861, + "Nova Iguaçu de Goiás, Goiás": 5214879, + "Novo Planalto, Goiás": 5215256, + "Pilar de Goiás, Goiás": 5216908, + "Porangatu, Goiás": 5218003, + "Rialma, Goiás": 5218607, + "Rianápolis, Goiás": 5218706, + "Rubiataba, Goiás": 5218904, + "Santa Isabel, Goiás": 5219357, + "Santa Rita do Novo Destino, Goiás": 5219456, + "Santa Tereza de Goiás, Goiás": 5219605, + "Santa Terezinha de Goiás, Goiás": 5219704, + "São Luíz do Norte, Goiás": 5220157, + "São Miguel do Araguaia, Goiás": 5220207, + "São Patrício, Goiás": 5220280, + "Trombas, Goiás": 5221452, + "Uirapuru, Goiás": 5221577, + "Uruaçu, Goiás": 5221601, + "Uruana, Goiás": 5221700, + "Vila Propício, Goiás": 5222302, + "Água Fria de Goiás, Goiás": 5200175, + "Águas Lindas de Goiás, Goiás": 5200258, + "Alto Paraíso de Goiás, Goiás": 5200605, + "Alvorada do Norte, Goiás": 5200803, + "Buritinópolis, Goiás": 5203962, + "Cabeceiras, Goiás": 5204003, + "Campos Belos, Goiás": 5204904, + "Cavalcante, Goiás": 5205307, + "Cidade Ocidental, Goiás": 5205497, + "Cocalzinho de Goiás, Goiás": 5205513, + "Cristalina, Goiás": 5206206, + "Damianópolis, Goiás": 5206701, + "Flores de Goiás, Goiás": 5207907, + "Formosa, Goiás": 5208004, + "Divinópolis de Goiás, Goiás": 5208301, + "Guarani de Goiás, Goiás": 5209408, + "Iaciara, Goiás": 5209903, + "Luziânia, Goiás": 5212501, + "Mambaí, Goiás": 5212709, + "Mimoso de Goiás, Goiás": 5213053, + "Monte Alegre de Goiás, Goiás": 5213509, + "Nova Roma, Goiás": 5214903, + "Novo Gama, Goiás": 5215231, + "Padre Bernardo, Goiás": 5215603, + "Planaltina, Goiás": 5217609, + "Posse, Goiás": 5218300, + "Santo Antônio do Descoberto, Goiás": 5219753, + "São Domingos, Goiás": 5219803, + "São João d'Aliança, Goiás": 5220009, + "Simolândia, Goiás": 5220686, + "Sítio d'Abadia, Goiás": 5220702, + "Teresina de Goiás, Goiás": 5221080, + "Valparaíso de Goiás, Goiás": 5221858, + "Vila Boa, Goiás": 5222203, + } diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index d74072687..d7f3700b2 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -380,6 +380,7 @@ async def main_item(dict_tables, kwargs_list): contents.extend(table_results) return contents + async def get_seller_async(url, seller_id): kwargs_list = [ {"id": "store-info__name"}, From e3c1af95cba0ac9b920ae42c15e8fde3c055c840 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 4 Jul 2023 12:50:53 -0300 Subject: [PATCH 35/86] fix flow name --- pipelines/datasets/mercadolivre_ofertas/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 2841982d0..f9b26c1fa 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -135,7 +135,7 @@ dataset_id = Parameter( "dataset_id", default="br_mercadolivre_ofertas", required=True ) - table_id = Parameter("table_id", default="item", required=True) + table_id = Parameter("table_id", default="vendedor", required=True) materialization_mode = Parameter( "materialization_mode", default="dev", required=False ) From 39ae3a2f399560e5f0f1af24e219b36b67956e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Wed, 5 Jul 2023 16:18:47 -0300 Subject: [PATCH 36/86] feat: changing default parameters --- pipelines/datasets/br_cvm_fi/flows.py | 56 +++++++++++------------ pipelines/datasets/br_cvm_fi/schedules.py | 9 ++++ 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/pipelines/datasets/br_cvm_fi/flows.py b/pipelines/datasets/br_cvm_fi/flows.py index 4597cfe85..a1ea8cd0f 100644 --- a/pipelines/datasets/br_cvm_fi/flows.py +++ b/pipelines/datasets/br_cvm_fi/flows.py @@ -52,22 +52,22 @@ code_owners=[ "arthurfg", ], -) as br_cvm_fi_documentos_informe_diario_flow: +) as br_cvm_fi_documentos_informe_diario: # Parameters dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) table_id = Parameter("table_id", default="documentos_informe_diario", required=True) materialization_mode = Parameter( - "materialization_mode", default="dev", required=True + "materialization_mode", default="dev", required=False ) materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True + "materialize_after_dump", default=False, required=False ) dbt_alias = Parameter("dbt_alias", default=False, required=False) url = Parameter( "url", default=cvm_constants.INFORME_DIARIO_URL.value, - required=True, + required=False, ) df = extract_links_and_dates(url) log_task(f"Links e datas: {df}") @@ -125,11 +125,11 @@ ) -br_cvm_fi_documentos_informe_diario_flow.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -br_cvm_fi_documentos_informe_diario_flow.run_config = KubernetesRun( +br_cvm_fi_documentos_informe_diario.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +br_cvm_fi_documentos_informe_diario.run_config = KubernetesRun( image=constants.DOCKER_IMAGE.value ) -br_cvm_fi_documentos_informe_diario_flow.schedule = every_day_informe +br_cvm_fi_documentos_informe_diario.schedule = every_day_informe with Flow( @@ -139,9 +139,9 @@ ], ) as br_cvm_fi_documentos_carteiras_fundos_investimento: # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) table_id = Parameter( - "table_id", default="documentos_carteiras_fundos_investimento", required=False + "table_id", default="documentos_carteiras_fundos_investimento", required=True ) materialization_mode = Parameter( @@ -155,7 +155,7 @@ url = Parameter( "url", default=cvm_constants.CDA_URL.value, - required=True, + required=False, ) df = extract_links_and_dates(url) @@ -230,22 +230,22 @@ ], ) as br_cvm_fi_documentos_extratos_informacoes: # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) table_id = Parameter( - "table_id", default="documentos_extratos_informacoes", required=False + "table_id", default="documentos_extratos_informacoes", required=True ) materialization_mode = Parameter( - "materialization_mode", default="dev", required=True + "materialization_mode", default="dev", required=False ) materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True + "materialize_after_dump", default=False, required=False ) dbt_alias = Parameter("dbt_alias", default=False, required=False) url = Parameter( "url", default=cvm_constants.URL_EXT.value, - required=True, + required=False, ) file = Parameter( @@ -325,8 +325,8 @@ ], ) as br_cvm_fi_documentos_perfil_mensal: # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter("table_id", default="documentos_perfil_mensal", required=False) + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) + table_id = Parameter("table_id", default="documentos_perfil_mensal", required=True) materialization_mode = Parameter( "materialization_mode", default="dev", required=False ) @@ -338,7 +338,7 @@ url = Parameter( "url", default=cvm_constants.URL_PERFIL_MENSAL.value, - required=True, + required=False, ) df = extract_links_and_dates(url) @@ -410,22 +410,22 @@ ], ) as br_cvm_fi_documentos_informacao_cadastral: # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) table_id = Parameter( - "table_id", default="documentos_informacao_cadastral", required=False + "table_id", default="documentos_informacao_cadastral", required=True ) materialization_mode = Parameter( - "materialization_mode", default="dev", required=True + "materialization_mode", default="dev", required=False ) materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True + "materialize_after_dump", default=False, required=False ) dbt_alias = Parameter("dbt_alias", default=False, required=False) url = Parameter( "url", default=cvm_constants.URL_INFO_CADASTRAL.value, - required=True, + required=False, ) files = Parameter("files", default=cvm_constants.CAD_FILE.value, required=False) @@ -496,20 +496,20 @@ ], ) as br_cvm_fi_documentos_balancete: # Parameters - dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=False) - table_id = Parameter("table_id", default="documentos_balancete", required=False) + dataset_id = Parameter("dataset_id", default="br_cvm_fi", required=True) + table_id = Parameter("table_id", default="documentos_balancete", required=True) materialization_mode = Parameter( - "materialization_mode", default="dev", required=True + "materialization_mode", default="dev", required=False ) materialize_after_dump = Parameter( - "materialize_after_dump", default=False, required=True + "materialize_after_dump", default=False, required=False ) dbt_alias = Parameter("dbt_alias", default=False, required=False) url = Parameter( "url", default=cvm_constants.URL_BALANCETE.value, - required=True, + required=False, ) df = extract_links_and_dates(url) diff --git a/pipelines/datasets/br_cvm_fi/schedules.py b/pipelines/datasets/br_cvm_fi/schedules.py index 33899f784..930615a60 100644 --- a/pipelines/datasets/br_cvm_fi/schedules.py +++ b/pipelines/datasets/br_cvm_fi/schedules.py @@ -8,6 +8,7 @@ from prefect.schedules.clocks import IntervalClock from pipelines.constants import constants from prefect.schedules.clocks import CronClock +from pipelines.datasets.br_cvm_fi.constants import constants as cvm_constants every_day_informe = Schedule( @@ -24,6 +25,7 @@ "materialization_mode": "prod", "materialize_after_dump": True, "dbt_alias": False, + "url": cvm_constants.INFORME_DIARIO_URL.value, }, ), ], @@ -43,6 +45,7 @@ "materialization_mode": "prod", "materialize_after_dump": True, "dbt_alias": False, + "url": cvm_constants.CDA_URL.value, }, ), ], @@ -62,6 +65,8 @@ "materialization_mode": "prod", "materialize_after_dump": True, "dbt_alias": False, + "url": cvm_constants.URL_EXT.value, + "file": cvm_constants.FILE_EXT.value, }, ), ], @@ -82,6 +87,7 @@ "materialization_mode": "prod", "materialize_after_dump": True, "dbt_alias": False, + "url": cvm_constants.URL_PERFIL_MENSAL.value, }, ), ], @@ -101,6 +107,8 @@ "materialization_mode": "prod", "materialize_after_dump": True, "dbt_alias": False, + "url": cvm_constants.URL_INFO_CADASTRAL.value, + "files": cvm_constants.CAD_FILE.value, }, ), ], @@ -120,6 +128,7 @@ "materialization_mode": "prod", "materialize_after_dump": True, "dbt_alias": False, + "url": cvm_constants.URL_BALANCETE.value, }, ), ], From 5451c05fd6f7384b639b881b9ffca0fdeba0cbe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Gusm=C3=A3o?= Date: Wed, 5 Jul 2023 16:21:37 -0300 Subject: [PATCH 37/86] fix: removing temporal coverage updater --- .../br_rj_isp_estatisticas_seguranca/flows.py | 141 ------------------ 1 file changed, 141 deletions(-) diff --git a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py index 1228bf88b..ecd23486a 100644 --- a/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py +++ b/pipelines/datasets/br_rj_isp_estatisticas_seguranca/flows.py @@ -62,9 +62,6 @@ "materialize_after_dump", default=True, required=False ) - update_temporal_coverage = Parameter( - "update_temporal_coverage", default=True, required=False - ) dbt_alias = Parameter("dbt_alias", default=True, required=False) rename_flow_run = rename_current_flow_run_dataset_table( @@ -117,33 +114,6 @@ wait_for_materialization.retry_delay = timedelta( seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) - with case(update_temporal_coverage, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - updater_flow = create_flow_run( - flow_name="update_temporal_coverage_teste", - project_name="staging", - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - }, - labels=current_flow_labels, - run_name=f"Atualiza {dataset_id}.{table_id}", - ) - - wait_for_update = wait_for_flow_run( - updater_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_update.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_update.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - evolucao_mensal_cisp.storage = GCS(constants.GCS_FLOWS_BUCKET.value) evolucao_mensal_cisp.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) @@ -702,114 +672,3 @@ evolucao_mensal_uf.storage = GCS(constants.GCS_FLOWS_BUCKET.value) evolucao_mensal_uf.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) evolucao_mensal_uf.schedule = every_month_evolucao_mensal_uf - - -with Flow( - name="br_rj_isp_estatisticas_seguranca.evolucao_mensal_cisp_teste", - code_owners=[ - "arthurfg", - ], -) as evolucao_mensal_cisp_teste: - dataset_id = Parameter( - "dataset_id", default="br_rj_isp_estatisticas_seguranca", required=True - ) - table_id = Parameter( - "table_id", default="evolucao_mensal_cisp_teste", required=True - ) - - # Materialization mode - materialization_mode = Parameter( - "materialization_mode", default="dev", required=False - ) - materialize_after_dump = Parameter( - "materialize_after_dump", default=True, required=False - ) - - update_temporal_coverage = Parameter( - "update_temporal_coverage", default=True, required=False - ) - dbt_alias = Parameter("dbt_alias", default=False, required=False) - - rename_flow_run = rename_current_flow_run_dataset_table( - prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id - ) - - d_files = download_files( - file_name=isp_constants.EVOLUCAO_MENSAL_CISP.value, - save_dir=isp_constants.INPUT_PATH.value, - ) - - filepath = clean_data( - file_name=isp_constants.EVOLUCAO_MENSAL_CISP.value, - upstream_tasks=[d_files], - ) - - wait_upload_table = create_table_and_upload_to_gcs( - data_path=filepath, - dataset_id=dataset_id, - table_id=table_id, - dump_mode="overwrite", - wait=filepath, - ) - - with case(materialize_after_dump, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - materialization_flow = create_flow_run( - flow_name=utils_constants.FLOW_EXECUTE_DBT_MODEL_NAME.value, - project_name=constants.PREFECT_DEFAULT_PROJECT.value, - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - "mode": materialization_mode, - "dbt_alias": dbt_alias, - }, - labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", - ) - - wait_for_materialization = wait_for_flow_run( - materialization_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_materialization.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_materialization.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - with case(update_temporal_coverage, True): - # Trigger DBT flow run - current_flow_labels = get_current_flow_labels() - updater_flow = create_flow_run( - flow_name="update_temporal_coverage_teste", - project_name="staging", - parameters={ - "dataset_id": dataset_id, - "table_id": table_id, - }, - labels=current_flow_labels, - run_name=f"Atualiza {dataset_id}.{table_id}", - ) - - wait_for_update = wait_for_flow_run( - updater_flow, - stream_states=True, - stream_logs=True, - raise_final_state=True, - ) - wait_for_update.max_retries = ( - dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_ATTEMPTS.value - ) - wait_for_update.retry_delay = timedelta( - seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value - ) - - -evolucao_mensal_cisp_teste.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -evolucao_mensal_cisp_teste.run_config = KubernetesRun( - image=constants.DOCKER_IMAGE.value -) -# evolucao_mensal_cisp.schedule = every_month_evolucao_mensal_cisp From 6c85902712fcec8d40e7862017cb2de6ce74817a Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 15:32:13 -0300 Subject: [PATCH 38/86] fix seller link getter --- pipelines/datasets/mercadolivre_ofertas/utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index d7f3700b2..b82a35b07 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -230,8 +230,11 @@ def get_seller_link(soup): Raises: None """ - class_seller = "ui-pdp-family--REGULAR ui-pdp-reputation-title-link non-selectable" - seller_link = soup.find(class_=class_seller)["href"] + class_seller = "ui-box-component ui-box-component-pdp__visible--desktop" + seller_link = soup.find(class_=class_seller) + seller_link = seller_link.find('a') + seller_link = seller_link['href'] + return seller_link From 4c49e5010ddb3001730441f1df43f1fa2812d645 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 18:33:17 +0000 Subject: [PATCH 39/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index b82a35b07..af1b77925 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -232,8 +232,8 @@ def get_seller_link(soup): """ class_seller = "ui-box-component ui-box-component-pdp__visible--desktop" seller_link = soup.find(class_=class_seller) - seller_link = seller_link.find('a') - seller_link = seller_link['href'] + seller_link = seller_link.find("a") + seller_link = seller_link["href"] return seller_link From 97a1431b35b2c4b8ad4db5f71118f4eb266f1f3b Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 16:12:09 -0300 Subject: [PATCH 40/86] fix constant --- pipelines/constants.py | 1 + pipelines/datasets/mercadolivre_ofertas/flows.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/constants.py b/pipelines/constants.py index c372d4a90..c7c399065 100644 --- a/pipelines/constants.py +++ b/pipelines/constants.py @@ -33,6 +33,7 @@ class constants(Enum): # pylint: disable=c0103 TASK_MAX_RETRIES = 5 TASK_RETRY_DELAY = 10 # seconds PREFECT_DEFAULT_PROJECT = "main" + PREFECT_STAGING_PROJECT = "staging" # Code Owners # ###################################### diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index f9b26c1fa..b9e823182 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -97,7 +97,7 @@ current_flow_labels = get_current_flow_labels() sellers_flow = create_flow_run( flow_name="mercadolivre_ofertas.vendedor", - project_name=constants.PREFECT_DEFAULT_PROJECT.value, + project_name=constants.PREFECT_STAGING_PROJECT.value, parameters={ "dataset_id": dataset_id, "table_id": table_id, From 14a248abf2b9e8bb77283fc64de5955c881df94d Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 16:39:40 -0300 Subject: [PATCH 41/86] add get_today_sellers function --- pipelines/datasets/mercadolivre_ofertas/flows.py | 7 +++++-- pipelines/datasets/mercadolivre_ofertas/tasks.py | 12 +++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index b9e823182..1b6fcc766 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -26,6 +26,7 @@ crawler_mercadolivre_seller, clean_item, clean_seller, + get_today_sellers ) from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item @@ -53,6 +54,8 @@ filepath_raw = crawler_mercadolivre_item() + seller_ids, seller_links = get_today_sellers(filepath_raw) + filepath = clean_item(filepath_raw) wait_upload_table = create_table_and_upload_to_gcs( @@ -103,8 +106,8 @@ "table_id": table_id, "mode": materialization_mode, "dbt_alias": dbt_alias, - "seller_ids": None, - "seller_links": None, + "seller_ids": seller_ids, + "seller_links": seller_links, }, labels=current_flow_labels, run_name=f"Materialize {dataset_id}.{table_id}", diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 1aa183a11..f4f7c63f3 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -158,7 +158,7 @@ def clean_item(filepath): @task def crawler_mercadolivre_seller(seller_ids, seller_links): filepath_raw = "vendedor.csv" - asyncio.run(main_seller(seller_ids, seller_links, filepath)) + asyncio.run(main_seller(seller_ids, seller_links, filepath_raw)) return filepath_raw @@ -219,3 +219,13 @@ def clean_seller(filepath_raw): ) return "br_mercadolivre_ofertas/vendedor/" + +@task +def get_today_sellers(filepath_raw): + df = pd.read_csv(filepath_raw) + # remove nan in seller_link column + df = df[df['seller_link'].notna()] + # get list of unique sellers + dict_id_link = dict(zip(df['seller_id'], df['seller_link'])) + + return list(dict_id_link.keys()), list(dict_id_link.values()) From be5ce8c7134f0403cfbb4789aead5cddd00b0830 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 19:40:05 +0000 Subject: [PATCH 42/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/flows.py | 2 +- pipelines/datasets/mercadolivre_ofertas/tasks.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 1b6fcc766..cbe4bd991 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -26,7 +26,7 @@ crawler_mercadolivre_seller, clean_item, clean_seller, - get_today_sellers + get_today_sellers, ) from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index f4f7c63f3..b69795691 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -220,12 +220,13 @@ def clean_seller(filepath_raw): return "br_mercadolivre_ofertas/vendedor/" + @task def get_today_sellers(filepath_raw): df = pd.read_csv(filepath_raw) # remove nan in seller_link column - df = df[df['seller_link'].notna()] + df = df[df["seller_link"].notna()] # get list of unique sellers - dict_id_link = dict(zip(df['seller_id'], df['seller_link'])) + dict_id_link = dict(zip(df["seller_id"], df["seller_link"])) return list(dict_id_link.keys()), list(dict_id_link.values()) From 31d16ccaea26a61addbf18d3233b72c16e36c0c1 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 16:46:50 -0300 Subject: [PATCH 43/86] fix returned type --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index f4f7c63f3..ed0bd388b 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -7,8 +7,9 @@ import time import os import re -from prefect import task +from typing import List, Tuple +from prefect import task import pandas as pd from pipelines.utils.tasks import log @@ -220,8 +221,8 @@ def clean_seller(filepath_raw): return "br_mercadolivre_ofertas/vendedor/" -@task -def get_today_sellers(filepath_raw): +@task(nout=2) +def get_today_sellers(filepath_raw)-> Tuple[List[str], List[str]]: df = pd.read_csv(filepath_raw) # remove nan in seller_link column df = df[df['seller_link'].notna()] From 6c11f95028e6af203d554e8abc7f522698e121b9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 19:49:14 +0000 Subject: [PATCH 44/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index ab7026c72..c2483b7d3 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -221,8 +221,9 @@ def clean_seller(filepath_raw): return "br_mercadolivre_ofertas/vendedor/" + @task(nout=2) -def get_today_sellers(filepath_raw)-> Tuple[List[str], List[str]]: +def get_today_sellers(filepath_raw) -> Tuple[List[str], List[str]]: df = pd.read_csv(filepath_raw) # remove nan in seller_link column df = df[df["seller_link"].notna()] From e6c7117ea61061210225a388948868201e79ad19 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 17:19:36 -0300 Subject: [PATCH 45/86] add case for no sellers --- pipelines/datasets/mercadolivre_ofertas/flows.py | 8 +++++++- pipelines/datasets/mercadolivre_ofertas/tasks.py | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index cbe4bd991..4e92b57b2 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -27,6 +27,7 @@ clean_item, clean_seller, get_today_sellers, + is_empty_list ) from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item @@ -44,6 +45,10 @@ materialize_after_dump = Parameter( "materialize_after_dump", default=True, required=False ) + materialize_after_dump_sellers = Parameter( + "materialize_after_dump_sellers", default=True, required=False + ) + dbt_alias = Parameter("dbt_alias", default=False, required=False) rename_flow_run = rename_current_flow_run_dataset_table( @@ -95,7 +100,7 @@ seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) - with case(get_sellers, True): + with case(get_sellers, True) and case(is_empty_list(seller_ids), False): # Trigger DBT flow run current_flow_labels = get_current_flow_labels() sellers_flow = create_flow_run( @@ -108,6 +113,7 @@ "dbt_alias": dbt_alias, "seller_ids": seller_ids, "seller_links": seller_links, + "materialize_after_dump": materialize_after_dump_sellers, }, labels=current_flow_labels, run_name=f"Materialize {dataset_id}.{table_id}", diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index ab7026c72..c4fb538e5 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -226,7 +226,16 @@ def get_today_sellers(filepath_raw)-> Tuple[List[str], List[str]]: df = pd.read_csv(filepath_raw) # remove nan in seller_link column df = df[df["seller_link"].notna()] + log(f"Number of sellers: {len(df)}") + + if df.empty: + return [], [] # get list of unique sellers dict_id_link = dict(zip(df["seller_id"], df["seller_link"])) return list(dict_id_link.keys()), list(dict_id_link.values()) + +@task +@task +def is_empty_list(list_sellers: List[str]) -> bool: + return len(list_sellers) == 0 From 05154cfba4c8a50e0c102f4d89f3d6fa3a296451 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 20:20:14 +0000 Subject: [PATCH 46/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/flows.py | 4 ++-- pipelines/datasets/mercadolivre_ofertas/tasks.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 4e92b57b2..00f9f0956 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -27,7 +27,7 @@ clean_item, clean_seller, get_today_sellers, - is_empty_list + is_empty_list, ) from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item @@ -48,7 +48,7 @@ materialize_after_dump_sellers = Parameter( "materialize_after_dump_sellers", default=True, required=False ) - + dbt_alias = Parameter("dbt_alias", default=False, required=False) rename_flow_run = rename_current_flow_run_dataset_table( diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index d7219abe2..bdb6a9b8b 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -236,6 +236,7 @@ def get_today_sellers(filepath_raw) -> Tuple[List[str], List[str]]: return list(dict_id_link.keys()), list(dict_id_link.values()) + @task @task def is_empty_list(list_sellers: List[str]) -> bool: From 9df64d0604cfc16e55dfac21d2cb2b499ebb21c2 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 17:49:23 -0300 Subject: [PATCH 47/86] add log sellers --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index d7219abe2..3aa9ac551 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -159,6 +159,8 @@ def clean_item(filepath): @task def crawler_mercadolivre_seller(seller_ids, seller_links): filepath_raw = "vendedor.csv" + log('Type of seller_ids: ', type(seller_ids)) + log('Type of seller_links: ', type(seller_links)) asyncio.run(main_seller(seller_ids, seller_links, filepath_raw)) return filepath_raw @@ -227,6 +229,9 @@ def get_today_sellers(filepath_raw) -> Tuple[List[str], List[str]]: df = pd.read_csv(filepath_raw) # remove nan in seller_link column df = df[df["seller_link"].notna()] + df = df[df["seller_id"].notna()] + # remove duplicate sellers + df = df.drop_duplicates(subset=["seller_id"]) log(f"Number of sellers: {len(df)}") if df.empty: From d99dda8bd66dc3bc8494c871cba7ef855a812231 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 20:49:51 +0000 Subject: [PATCH 48/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 5ef3d32a9..b8c344e3c 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -159,8 +159,8 @@ def clean_item(filepath): @task def crawler_mercadolivre_seller(seller_ids, seller_links): filepath_raw = "vendedor.csv" - log('Type of seller_ids: ', type(seller_ids)) - log('Type of seller_links: ', type(seller_links)) + log("Type of seller_ids: ", type(seller_ids)) + log("Type of seller_links: ", type(seller_links)) asyncio.run(main_seller(seller_ids, seller_links, filepath_raw)) return filepath_raw From 847e4d2ea9dc5138a4c1e8d8625e69c46f3ddd67 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 18:15:01 -0300 Subject: [PATCH 49/86] add log sellers --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 5ef3d32a9..ad0595197 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -159,8 +159,8 @@ def clean_item(filepath): @task def crawler_mercadolivre_seller(seller_ids, seller_links): filepath_raw = "vendedor.csv" - log('Type of seller_ids: ', type(seller_ids)) - log('Type of seller_links: ', type(seller_links)) + log(f'Type of seller_ids: {type(seller_ids)}') + log(f'Type of seller_links: {type(seller_links)}') asyncio.run(main_seller(seller_ids, seller_links, filepath_raw)) return filepath_raw From 7b7ceca9ab84d48f051b1a6126a86d16432dd2a9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 21:16:23 +0000 Subject: [PATCH 50/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index ad0595197..5325ee037 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -159,8 +159,8 @@ def clean_item(filepath): @task def crawler_mercadolivre_seller(seller_ids, seller_links): filepath_raw = "vendedor.csv" - log(f'Type of seller_ids: {type(seller_ids)}') - log(f'Type of seller_links: {type(seller_links)}') + log(f"Type of seller_ids: {type(seller_ids)}") + log(f"Type of seller_links: {type(seller_links)}") asyncio.run(main_seller(seller_ids, seller_links, filepath_raw)) return filepath_raw From 70c495e2c01fd37de6ca3989d643d8daeaab1479 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 18:26:14 -0300 Subject: [PATCH 51/86] add log sellers --- pipelines/datasets/mercadolivre_ofertas/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 00f9f0956..7301c2076 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -55,7 +55,7 @@ prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id ) - get_sellers = Parameter("get_sellers", default=False, required=False) + get_sellers = Parameter("get_sellers", default=True, required=True) filepath_raw = crawler_mercadolivre_item() From 3a0d89fc8a341471ea90e83ffd862a3724be0fb6 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 18:48:18 -0300 Subject: [PATCH 52/86] fix parameter name --- pipelines/datasets/mercadolivre_ofertas/flows.py | 2 +- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 7301c2076..9e478bb77 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -154,7 +154,7 @@ dbt_alias = Parameter("dbt_alias", default=False, required=False) seller_ids = Parameter("seller_ids", default=None, required=False) - seller_links = Parameter("seller_names", default=None, required=False) + seller_links = Parameter("seller_links", default=None, required=False) rename_flow_run = rename_current_flow_run_dataset_table( prefix="Dump: ", dataset_id=dataset_id, table_id=table_id, wait=table_id diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 5325ee037..c2f4da495 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -241,8 +241,6 @@ def get_today_sellers(filepath_raw) -> Tuple[List[str], List[str]]: return list(dict_id_link.keys()), list(dict_id_link.values()) - -@task @task def is_empty_list(list_sellers: List[str]) -> bool: return len(list_sellers) == 0 From 4910916bfaa250b7c4f1194a0f2fbdcc680059ce Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 21:48:45 +0000 Subject: [PATCH 53/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index c2f4da495..a63af24ab 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -241,6 +241,7 @@ def get_today_sellers(filepath_raw) -> Tuple[List[str], List[str]]: return list(dict_id_link.keys()), list(dict_id_link.values()) + @task def is_empty_list(list_sellers: List[str]) -> bool: return len(list_sellers) == 0 From 45839bf503a30e45eac9f6ea7e950c38ed266a3b Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 19:21:11 -0300 Subject: [PATCH 54/86] fix parameter name --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index c2f4da495..8af02bfa9 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -185,9 +185,13 @@ def clean_seller(filepath_raw): # remove if title is nan seller = seller[seller["nome"].notna()] # clean experiencia: 3 anos vendendo no Mercado Livre -> 3 - seller["experiencia"] = seller["experiencia"].apply( + try: + seller["experiencia"] = seller["experiencia"].apply( lambda x: re.findall(r"\d+", x)[0] ) + except Exception as e: + log(f"Error in experiencia: {e}") + seller["experiencia"] = None # clean classificacao: MercadoLíder Platinum -> Platinum seller["classificacao"] = seller["classificacao"].str.replace("MercadoLíder ", "") # clean localizacao: LocalizaçãoJuiz de Fora, Minas Gerais. -> Juiz de Fora, Minas Gerais. From 2119afabcbce16c6979389508163b68616e3e11a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 22:21:47 +0000 Subject: [PATCH 55/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index b933b4434..0edb8a81c 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -187,8 +187,8 @@ def clean_seller(filepath_raw): # clean experiencia: 3 anos vendendo no Mercado Livre -> 3 try: seller["experiencia"] = seller["experiencia"].apply( - lambda x: re.findall(r"\d+", x)[0] - ) + lambda x: re.findall(r"\d+", x)[0] + ) except Exception as e: log(f"Error in experiencia: {e}") seller["experiencia"] = None From 5a11333f09dda07ac4954cf84e1e6519933bf909 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Thu, 6 Jul 2023 20:02:18 -0300 Subject: [PATCH 56/86] fix parameter name --- pipelines/datasets/mercadolivre_ofertas/flows.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 9e478bb77..4af26bee2 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -39,6 +39,7 @@ "dataset_id", default="br_mercadolivre_ofertas", required=True ) table_id = Parameter("table_id", default="item", required=True) + table_id_sellers = Parameter("table_id_sellers", default="vendedor", required=True) materialization_mode = Parameter( "materialization_mode", default="dev", required=False ) @@ -108,7 +109,7 @@ project_name=constants.PREFECT_STAGING_PROJECT.value, parameters={ "dataset_id": dataset_id, - "table_id": table_id, + "table_id": table_id_sellers, "mode": materialization_mode, "dbt_alias": dbt_alias, "seller_ids": seller_ids, @@ -116,7 +117,7 @@ "materialize_after_dump": materialize_after_dump_sellers, }, labels=current_flow_labels, - run_name=f"Materialize {dataset_id}.{table_id}", + run_name=f"Materialize {dataset_id}.{table_id_sellers}", ) wait_for_materialization = wait_for_flow_run( From bec3b1fd91311bb2f49f2933c6a856c7393fd5d8 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 13:04:19 -0300 Subject: [PATCH 57/86] add log for seller df --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 0edb8a81c..9ca0b844d 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -159,8 +159,6 @@ def clean_item(filepath): @task def crawler_mercadolivre_seller(seller_ids, seller_links): filepath_raw = "vendedor.csv" - log(f"Type of seller_ids: {type(seller_ids)}") - log(f"Type of seller_links: {type(seller_links)}") asyncio.run(main_seller(seller_ids, seller_links, filepath_raw)) return filepath_raw @@ -169,6 +167,7 @@ def crawler_mercadolivre_seller(seller_ids, seller_links): @task def clean_seller(filepath_raw): seller = pd.read_csv(filepath_raw) + log(seller.head(5)) new_cols = [ "nome", From b907096ecc5cee12f6a658410502c35c96ac94ee Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 13:41:13 -0300 Subject: [PATCH 58/86] add get_features_seller --- .../datasets/mercadolivre_ofertas/utils.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index af1b77925..b595cda99 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -215,6 +215,21 @@ def get_features(soup): } return features_dict +@retry +def get_features_seller(soup): + span_elements = soup.find_all('span', class_='buyers-feedback-qualification') + + # Initialize an empty dictionary + result_dict = {} + + # Extract the text and numbers from each element + for span in span_elements: + text = span.text.split('(')[0].strip() + number = int(span.text.split('(')[1].split(')')[0]) + result_dict[text] = number + + return result_dict + @retry def get_seller_link(soup): @@ -396,7 +411,7 @@ async def get_seller_async(url, seller_id): tasks = [get_byelement(url=url, attempts=2, **kwargs) for kwargs in kwargs_list] results = await asyncio.gather(*tasks) info = dict(zip(keys, results)) - info["opinions"] = await asyncio.gather(get_features(url, attempts=2)) + info["opinions"] = await asyncio.gather(get_features_seller(url, attempts=2)) info["date"] = datetime.now().strftime("%Y-%m-%d") info["seller_id"] = seller_id From 7fb4b94e4de313fc97baff3132cec82c46668644 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 16:41:38 +0000 Subject: [PATCH 59/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index b595cda99..afaf17a07 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -215,17 +215,18 @@ def get_features(soup): } return features_dict + @retry def get_features_seller(soup): - span_elements = soup.find_all('span', class_='buyers-feedback-qualification') + span_elements = soup.find_all("span", class_="buyers-feedback-qualification") # Initialize an empty dictionary result_dict = {} # Extract the text and numbers from each element for span in span_elements: - text = span.text.split('(')[0].strip() - number = int(span.text.split('(')[1].split(')')[0]) + text = span.text.split("(")[0].strip() + number = int(span.text.split("(")[1].split(")")[0]) result_dict[text] = number return result_dict From 9bbe17e437368d19c562c24fdda78b075dcfb8eb Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 14:19:16 -0300 Subject: [PATCH 60/86] add schema --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 9ca0b844d..3467fa971 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -189,7 +189,7 @@ def clean_seller(filepath_raw): lambda x: re.findall(r"\d+", x)[0] ) except Exception as e: - log(f"Error in experiencia: {e}") + log(seller["experiencia"].values) seller["experiencia"] = None # clean classificacao: MercadoLíder Platinum -> Platinum seller["classificacao"] = seller["classificacao"].str.replace("MercadoLíder ", "") From cfe61172ad321b9ebf5ddaf4bef4c337820862ce Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 14:44:41 -0300 Subject: [PATCH 61/86] add clean_experience function --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 10 ++-------- pipelines/datasets/mercadolivre_ofertas/utils.py | 8 ++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 3467fa971..acc7ff839 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -16,7 +16,7 @@ from pipelines.datasets.mercadolivre_ofertas.constants import ( constants as const_mercadolivre, ) -from pipelines.datasets.mercadolivre_ofertas.utils import main_item, main_seller, get_id +from pipelines.datasets.mercadolivre_ofertas.utils import main_item, main_seller, get_id, clean_experience less100 = const_mercadolivre.LESS100.value oferta_dia = const_mercadolivre.OFERTA_DIA.value @@ -184,13 +184,7 @@ def clean_seller(filepath_raw): # remove if title is nan seller = seller[seller["nome"].notna()] # clean experiencia: 3 anos vendendo no Mercado Livre -> 3 - try: - seller["experiencia"] = seller["experiencia"].apply( - lambda x: re.findall(r"\d+", x)[0] - ) - except Exception as e: - log(seller["experiencia"].values) - seller["experiencia"] = None + seller["experiencia"] = seller["experiencia"].apply(clean_experience) # clean classificacao: MercadoLíder Platinum -> Platinum seller["classificacao"] = seller["classificacao"].str.replace("MercadoLíder ", "") # clean localizacao: LocalizaçãoJuiz de Fora, Minas Gerais. -> Juiz de Fora, Minas Gerais. diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index afaf17a07..26d30f250 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -432,3 +432,11 @@ async def main_seller(seller_ids, seller_links, file_dest): df_sellers = pd.DataFrame(sellers) df_sellers = df_sellers.astype(str) df_sellers.to_csv(file_dest, index=False) + +def clean_experience(x): + try: + result = re.findall(r"\d+", x)[0] + except Exception as e: + result = None + + return result From 10ff368e3dc5d1807e1a958d27ad602dd98f1d47 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 17:45:06 +0000 Subject: [PATCH 62/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 7 ++++++- pipelines/datasets/mercadolivre_ofertas/utils.py | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index acc7ff839..b1f8b034a 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -16,7 +16,12 @@ from pipelines.datasets.mercadolivre_ofertas.constants import ( constants as const_mercadolivre, ) -from pipelines.datasets.mercadolivre_ofertas.utils import main_item, main_seller, get_id, clean_experience +from pipelines.datasets.mercadolivre_ofertas.utils import ( + main_item, + main_seller, + get_id, + clean_experience, +) less100 = const_mercadolivre.LESS100.value oferta_dia = const_mercadolivre.OFERTA_DIA.value diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 26d30f250..70c8eef01 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -433,6 +433,7 @@ async def main_seller(seller_ids, seller_links, file_dest): df_sellers = df_sellers.astype(str) df_sellers.to_csv(file_dest, index=False) + def clean_experience(x): try: result = re.findall(r"\d+", x)[0] From 42fd21df6a037cbecacd74e83cc53da9abf97117 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 15:51:07 -0300 Subject: [PATCH 63/86] fix seller name --- pipelines/datasets/mercadolivre_ofertas/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 70c8eef01..2bbe5cc5b 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -415,6 +415,7 @@ async def get_seller_async(url, seller_id): info["opinions"] = await asyncio.gather(get_features_seller(url, attempts=2)) info["date"] = datetime.now().strftime("%Y-%m-%d") info["seller_id"] = seller_id + info["title"] = " ".join(re.findall(r"([A-Z]+)+", seller.split("?")[0])).strip().title() return info From ff2ff3bd6be2b0721e5aa984daf4782049d94195 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 18:51:29 +0000 Subject: [PATCH 64/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 2bbe5cc5b..51c84d673 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -415,7 +415,9 @@ async def get_seller_async(url, seller_id): info["opinions"] = await asyncio.gather(get_features_seller(url, attempts=2)) info["date"] = datetime.now().strftime("%Y-%m-%d") info["seller_id"] = seller_id - info["title"] = " ".join(re.findall(r"([A-Z]+)+", seller.split("?")[0])).strip().title() + info["title"] = ( + " ".join(re.findall(r"([A-Z]+)+", seller.split("?")[0])).strip().title() + ) return info From 72a1bbd9c19129ba90ff9f25b3887da7da9fb327 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 16:38:39 -0300 Subject: [PATCH 65/86] fix seller name --- pipelines/datasets/mercadolivre_ofertas/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 51c84d673..02e21ae89 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -416,7 +416,7 @@ async def get_seller_async(url, seller_id): info["date"] = datetime.now().strftime("%Y-%m-%d") info["seller_id"] = seller_id info["title"] = ( - " ".join(re.findall(r"([A-Z]+)+", seller.split("?")[0])).strip().title() + " ".join(re.findall(r"([A-Z]+)+", url.split("?")[0])).strip().title() ) return info From 66b20b7afbb339d1b36c240349a1626e5dea6cdb Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 17:30:11 -0300 Subject: [PATCH 66/86] fix seller name --- pipelines/datasets/mercadolivre_ofertas/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 02e21ae89..f80eeb136 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -402,13 +402,12 @@ async def main_item(dict_tables, kwargs_list): async def get_seller_async(url, seller_id): kwargs_list = [ - {"id": "store-info__name"}, {"class_": "experience"}, {"class_": "seller-info__subtitle-sales"}, {"class_": "message__title"}, {"class_": "location__wrapper"}, ] - keys = ["title", "experience", "reputation", "classification", "location"] + keys = ["experience", "reputation", "classification", "location"] tasks = [get_byelement(url=url, attempts=2, **kwargs) for kwargs in kwargs_list] results = await asyncio.gather(*tasks) info = dict(zip(keys, results)) From 56e6fa30dbbae0d0e1888bddfff313a20781ae54 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 17:54:32 -0300 Subject: [PATCH 67/86] fix dict --- pipelines/datasets/mercadolivre_ofertas/utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index f80eeb136..964dba805 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -410,13 +410,15 @@ async def get_seller_async(url, seller_id): keys = ["experience", "reputation", "classification", "location"] tasks = [get_byelement(url=url, attempts=2, **kwargs) for kwargs in kwargs_list] results = await asyncio.gather(*tasks) - info = dict(zip(keys, results)) - info["opinions"] = await asyncio.gather(get_features_seller(url, attempts=2)) - info["date"] = datetime.now().strftime("%Y-%m-%d") - info["seller_id"] = seller_id + info = {} info["title"] = ( " ".join(re.findall(r"([A-Z]+)+", url.split("?")[0])).strip().title() ) + for key, value in dict(zip(keys, results)): + info[key] = value + info["opinions"] = await asyncio.gather(get_features_seller(url, attempts=2)) + info["date"] = datetime.now().strftime("%Y-%m-%d") + info["seller_id"] = seller_id return info From 525abd504ea37fa9315af43afa94a9045de400d2 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Fri, 7 Jul 2023 18:15:35 -0300 Subject: [PATCH 68/86] fix dict --- pipelines/datasets/mercadolivre_ofertas/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index 964dba805..ad13cb718 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -414,7 +414,7 @@ async def get_seller_async(url, seller_id): info["title"] = ( " ".join(re.findall(r"([A-Z]+)+", url.split("?")[0])).strip().title() ) - for key, value in dict(zip(keys, results)): + for key, value in dict(zip(keys, results)).items(): info[key] = value info["opinions"] = await asyncio.gather(get_features_seller(url, attempts=2)) info["date"] = datetime.now().strftime("%Y-%m-%d") From 2c1a954fba66fbca3a38fc3ad657ee2ecfc5e1af Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 10 Jul 2023 18:30:00 -0300 Subject: [PATCH 69/86] discard not named sellers --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 ++ pipelines/datasets/mercadolivre_ofertas/utils.py | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index b1f8b034a..f59cef3c4 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -216,6 +216,8 @@ def clean_seller(filepath_raw): "data", ] seller = seller.reindex(new_order, axis=1) + # drop where experiencia is nan + seller = seller[seller["experiencia"].notna()] today = pd.Timestamp.today().strftime("%Y-%m-%d") os.system(f"mkdir -p br_mercadolivre_ofertas/vendedor/dia={today}") diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/mercadolivre_ofertas/utils.py index ad13cb718..1ad02d7c5 100644 --- a/pipelines/datasets/mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/mercadolivre_ofertas/utils.py @@ -52,7 +52,6 @@ async def wrapper(url, attempts=2, wait_time=2, **kwargs): requests.get, url, headers=headers, timeout=100 ) except Exception: - print(url) return None await asyncio.sleep(wait_time) soup = BeautifulSoup(response.text, "html.parser") From 107efb74f86228df23fd2d2ad5d2da15efa2cdb5 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 10 Jul 2023 19:48:43 -0300 Subject: [PATCH 70/86] remove repeated column --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index f59cef3c4..f001ea74c 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -218,6 +218,8 @@ def clean_seller(filepath_raw): seller = seller.reindex(new_order, axis=1) # drop where experiencia is nan seller = seller[seller["experiencia"].notna()] + # drop data column + seller = seller.drop("data", axis=1) today = pd.Timestamp.today().strftime("%Y-%m-%d") os.system(f"mkdir -p br_mercadolivre_ofertas/vendedor/dia={today}") From 2941741e7ddd31a351048971c2772e82ed06a848 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Mon, 10 Jul 2023 23:22:10 -0300 Subject: [PATCH 71/86] pipeline to prod --- pipelines/datasets/mercadolivre_ofertas/flows.py | 2 +- pipelines/datasets/mercadolivre_ofertas/schedules.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 4af26bee2..8d72a2022 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -106,7 +106,7 @@ current_flow_labels = get_current_flow_labels() sellers_flow = create_flow_run( flow_name="mercadolivre_ofertas.vendedor", - project_name=constants.PREFECT_STAGING_PROJECT.value, + project_name=constants.PREFECT_DEFAULT_PROJECT.value, parameters={ "dataset_id": dataset_id, "table_id": table_id_sellers, diff --git a/pipelines/datasets/mercadolivre_ofertas/schedules.py b/pipelines/datasets/mercadolivre_ofertas/schedules.py index e7111b087..7baa9e164 100644 --- a/pipelines/datasets/mercadolivre_ofertas/schedules.py +++ b/pipelines/datasets/mercadolivre_ofertas/schedules.py @@ -17,14 +17,16 @@ interval=timedelta(days=1), start_date=datetime(2021, 1, 1, 15, 0), labels=[ - constants.BASEDOSDADOS_DEV_AGENT_LABEL.value, + constants.BASEDOSDADOS_PROD_AGENT_LABEL.value, ], parameter_defaults={ "dataset_id": "mercadolivre_ofertas", - "materialization_mode": "dev", - "materialize after dump": False, + "materialization_mode": "prod", + "materialize_after_dump": True, "table_id": "item", "dbt_alias": False, + "table_id_sellers": "vendors", + "materialize_after_dump_sellers": True, }, ) ], From 0b7e5444ed73317d1ae63baf89b324261225bcff Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 17:56:29 -0300 Subject: [PATCH 72/86] fix sellers column --- .../datasets/mercadolivre_ofertas/flows.py | 4 +-- .../datasets/mercadolivre_ofertas/tasks.py | 34 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/mercadolivre_ofertas/flows.py index 8d72a2022..cdf68eb43 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/mercadolivre_ofertas/flows.py @@ -41,7 +41,7 @@ table_id = Parameter("table_id", default="item", required=True) table_id_sellers = Parameter("table_id_sellers", default="vendedor", required=True) materialization_mode = Parameter( - "materialization_mode", default="dev", required=False + "materialization_mode", default="prod", required=False ) materialize_after_dump = Parameter( "materialize_after_dump", default=True, required=False @@ -147,7 +147,7 @@ ) table_id = Parameter("table_id", default="vendedor", required=True) materialization_mode = Parameter( - "materialization_mode", default="dev", required=False + "materialization_mode", default="prod", required=False ) materialize_after_dump = Parameter( "materialize_after_dump", default=True, required=False diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index f001ea74c..7a2023bb0 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -78,7 +78,10 @@ def crawler_mercadolivre_item(): filepath = "/tmp/items_raw.csv" df.to_csv(filepath, index=False) - log(df.head(5)) + # check if features column has values different than {} + unique_features = df["features"].unique() + log("Unique features:") + log(unique_features) loop.close() @@ -171,6 +174,29 @@ def crawler_mercadolivre_seller(seller_ids, seller_links): @task def clean_seller(filepath_raw): + """ + This function cleans the seller data extracted from MercadoLivre. It takes as input a raw data file and performs several cleaning operations: + + - It reads the raw seller data file from a CSV. + - It renames the columns into more comprehensible ones. + - It filters out entries with missing seller names. + - It cleans the 'experiencia' column by applying the 'clean_experience' function. + - It cleans the 'classificacao' column by removing the prefix 'MercadoLíder '. + - It cleans the 'localizacao' column by removing the prefix 'Localização', then transforms location names to municipality IDs using a predefined dictionary mapping. + - It cleans the 'opinioes' column by removing square brackets. + - It reorders the columns, placing 'vendedor_id' as the first column. + - It filters out entries with missing experience data. + - It drops the 'data' column as it's no longer needed. + - It saves the cleaned data to a CSV file, in a directory that corresponds to the current date. + - The function returns the path to the directory where the cleaned CSV file is saved. + + Args: + filepath_raw (str): The file path to the raw seller data CSV file. + + Returns: + str: The path to the directory where the cleaned CSV file is saved. + """ + seller = pd.read_csv(filepath_raw) log(seller.head(5)) @@ -182,7 +208,7 @@ def clean_seller(filepath_raw): "localizacao", "opinioes", "data", - "id_vendor", + "vendedor_id", ] seller.columns = new_cols @@ -204,9 +230,9 @@ def clean_seller(filepath_raw): seller["opinioes"] = seller["opinioes"].str.replace("[", "") seller["opinioes"] = seller["opinioes"].str.replace("]", "") - # put id_vendor in the first column + # put vendedor_id in the first column new_order = [ - "id_vendor", + "vendedor_id", "nome", "experiencia", "reputacao", From 55b66000ecaeace85a41bc22e13f1ced5e1464cf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 20:57:33 +0000 Subject: [PATCH 73/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/mercadolivre_ofertas/tasks.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/mercadolivre_ofertas/tasks.py index 7a2023bb0..518f5bed2 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/mercadolivre_ofertas/tasks.py @@ -175,11 +175,11 @@ def crawler_mercadolivre_seller(seller_ids, seller_links): @task def clean_seller(filepath_raw): """ - This function cleans the seller data extracted from MercadoLivre. It takes as input a raw data file and performs several cleaning operations: + This function cleans the seller data extracted from MercadoLivre. It takes as input a raw data file and performs several cleaning operations: - It reads the raw seller data file from a CSV. - - It renames the columns into more comprehensible ones. - - It filters out entries with missing seller names. + - It renames the columns into more comprehensible ones. + - It filters out entries with missing seller names. - It cleans the 'experiencia' column by applying the 'clean_experience' function. - It cleans the 'classificacao' column by removing the prefix 'MercadoLíder '. - It cleans the 'localizacao' column by removing the prefix 'Localização', then transforms location names to municipality IDs using a predefined dictionary mapping. From 41fc99e82968abe8c5a131dd89130b5c575160f0 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 18:04:54 -0300 Subject: [PATCH 74/86] rename project --- pipelines/datasets/__init__.py | 2 +- .../__init__.py | 0 .../constants.py | 0 .../flows.py | 18 +++++++++--------- .../schedules.py | 0 .../tasks.py | 5 ++--- .../utils.py | 0 7 files changed, 12 insertions(+), 13 deletions(-) rename pipelines/datasets/{mercadolivre_ofertas => br_mercadolivre_ofertas}/__init__.py (100%) rename pipelines/datasets/{mercadolivre_ofertas => br_mercadolivre_ofertas}/constants.py (100%) rename pipelines/datasets/{mercadolivre_ofertas => br_mercadolivre_ofertas}/flows.py (92%) rename pipelines/datasets/{mercadolivre_ofertas => br_mercadolivre_ofertas}/schedules.py (100%) rename pipelines/datasets/{mercadolivre_ofertas => br_mercadolivre_ofertas}/tasks.py (98%) rename pipelines/datasets/{mercadolivre_ofertas => br_mercadolivre_ofertas}/utils.py (100%) diff --git a/pipelines/datasets/__init__.py b/pipelines/datasets/__init__.py index 06a2e2d48..413b090e5 100644 --- a/pipelines/datasets/__init__.py +++ b/pipelines/datasets/__init__.py @@ -34,4 +34,4 @@ from pipelines.datasets.br_ons_avaliacao_operacao.flows import * from pipelines.datasets.br_ons_estimativa_custos.flows import * from pipelines.datasets.br_b3_cotacoes.flows import * -from pipelines.datasets.mercadolivre_ofertas.flows import * +from pipelines.datasets.br_mercadolivre_ofertas.flows import * diff --git a/pipelines/datasets/mercadolivre_ofertas/__init__.py b/pipelines/datasets/br_mercadolivre_ofertas/__init__.py similarity index 100% rename from pipelines/datasets/mercadolivre_ofertas/__init__.py rename to pipelines/datasets/br_mercadolivre_ofertas/__init__.py diff --git a/pipelines/datasets/mercadolivre_ofertas/constants.py b/pipelines/datasets/br_mercadolivre_ofertas/constants.py similarity index 100% rename from pipelines/datasets/mercadolivre_ofertas/constants.py rename to pipelines/datasets/br_mercadolivre_ofertas/constants.py diff --git a/pipelines/datasets/mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py similarity index 92% rename from pipelines/datasets/mercadolivre_ofertas/flows.py rename to pipelines/datasets/br_mercadolivre_ofertas/flows.py index cdf68eb43..a75e8eb4a 100644 --- a/pipelines/datasets/mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -21,7 +21,7 @@ create_table_and_upload_to_gcs, ) -from pipelines.datasets.mercadolivre_ofertas.tasks import ( +from pipelines.datasets.br_mercadolivre_ofertas.tasks import ( crawler_mercadolivre_item, crawler_mercadolivre_seller, clean_item, @@ -29,11 +29,11 @@ get_today_sellers, is_empty_list, ) -from pipelines.datasets.mercadolivre_ofertas.schedules import every_day_item +from pipelines.datasets.br_mercadolivre_ofertas.schedules import every_day_item with Flow( name="mercadolivre_ofertas.item", code_owners=["lucascr91"] -) as mercadolivre_ofertas_item: +) as br_mercadolivre_ofertas_item: # Parameters dataset_id = Parameter( "dataset_id", default="br_mercadolivre_ofertas", required=True @@ -133,14 +133,14 @@ seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) -mercadolivre_ofertas_item.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -mercadolivre_ofertas_item.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) -mercadolivre_ofertas_item.schedule = every_day_item +br_mercadolivre_ofertas_item.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +br_mercadolivre_ofertas_item.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) +br_mercadolivre_ofertas_item.schedule = every_day_item with Flow( name="mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] -) as mercadolivre_ofertas_vendedor: +) as br_mercadolivre_ofertas_vendedor: # Parameters dataset_id = Parameter( "dataset_id", default="br_mercadolivre_ofertas", required=True @@ -202,7 +202,7 @@ seconds=dump_db_constants.WAIT_FOR_MATERIALIZATION_RETRY_INTERVAL.value ) -mercadolivre_ofertas_vendedor.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -mercadolivre_ofertas_vendedor.run_config = KubernetesRun( +br_mercadolivre_ofertas_vendedor.storage = GCS(constants.GCS_FLOWS_BUCKET.value) +br_mercadolivre_ofertas_vendedor.run_config = KubernetesRun( image=constants.DOCKER_IMAGE.value ) diff --git a/pipelines/datasets/mercadolivre_ofertas/schedules.py b/pipelines/datasets/br_mercadolivre_ofertas/schedules.py similarity index 100% rename from pipelines/datasets/mercadolivre_ofertas/schedules.py rename to pipelines/datasets/br_mercadolivre_ofertas/schedules.py diff --git a/pipelines/datasets/mercadolivre_ofertas/tasks.py b/pipelines/datasets/br_mercadolivre_ofertas/tasks.py similarity index 98% rename from pipelines/datasets/mercadolivre_ofertas/tasks.py rename to pipelines/datasets/br_mercadolivre_ofertas/tasks.py index 518f5bed2..a3afad809 100644 --- a/pipelines/datasets/mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/tasks.py @@ -6,17 +6,16 @@ import asyncio import time import os -import re from typing import List, Tuple from prefect import task import pandas as pd from pipelines.utils.tasks import log -from pipelines.datasets.mercadolivre_ofertas.constants import ( +from pipelines.datasets.br_mercadolivre_ofertas.constants import ( constants as const_mercadolivre, ) -from pipelines.datasets.mercadolivre_ofertas.utils import ( +from pipelines.datasets.br_mercadolivre_ofertas.utils import ( main_item, main_seller, get_id, diff --git a/pipelines/datasets/mercadolivre_ofertas/utils.py b/pipelines/datasets/br_mercadolivre_ofertas/utils.py similarity index 100% rename from pipelines/datasets/mercadolivre_ofertas/utils.py rename to pipelines/datasets/br_mercadolivre_ofertas/utils.py From b2bde8c707020ecdb9a0c76b66407dead2f219de Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 18:20:54 -0300 Subject: [PATCH 75/86] rename flow --- pipelines/datasets/br_mercadolivre_ofertas/flows.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py index a75e8eb4a..10e03db98 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -32,7 +32,7 @@ from pipelines.datasets.br_mercadolivre_ofertas.schedules import every_day_item with Flow( - name="mercadolivre_ofertas.item", code_owners=["lucascr91"] + name="br_mercadolivre_ofertas.item", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_item: # Parameters dataset_id = Parameter( @@ -139,7 +139,7 @@ with Flow( - name="mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] + name="br_mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_vendedor: # Parameters dataset_id = Parameter( From ea1827f0040df74c2efc60914aac16bc3dbaf3a6 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 18:31:09 -0300 Subject: [PATCH 76/86] rename flow again --- pipelines/datasets/br_mercadolivre_ofertas/flows.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py index 10e03db98..9ef72b568 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -105,7 +105,7 @@ # Trigger DBT flow run current_flow_labels = get_current_flow_labels() sellers_flow = create_flow_run( - flow_name="mercadolivre_ofertas.vendedor", + flow_name="br_mercadolivre_ofertas.vendedor", project_name=constants.PREFECT_DEFAULT_PROJECT.value, parameters={ "dataset_id": dataset_id, From dbc6a03d61c1516a06cc8528dbde181cc25a3703 Mon Sep 17 00:00:00 2001 From: Lucas Cavalcanti Rodrigues Date: Tue, 11 Jul 2023 18:40:59 -0300 Subject: [PATCH 77/86] Update flows.py --- pipelines/datasets/br_mercadolivre_ofertas/flows.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py index 9ef72b568..40bdb5a9a 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -32,7 +32,7 @@ from pipelines.datasets.br_mercadolivre_ofertas.schedules import every_day_item with Flow( - name="br_mercadolivre_ofertas.item", code_owners=["lucascr91"] + name="br_mercadolivre.item", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_item: # Parameters dataset_id = Parameter( @@ -139,7 +139,7 @@ with Flow( - name="br_mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] + name="br_mercadolivre.vendedor", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_vendedor: # Parameters dataset_id = Parameter( From 4d8d490c85aab44b3734a6bf27e138a5af40b918 Mon Sep 17 00:00:00 2001 From: Lucas Cavalcanti Rodrigues Date: Tue, 11 Jul 2023 18:46:26 -0300 Subject: [PATCH 78/86] Update flows.py --- pipelines/datasets/br_mercadolivre_ofertas/flows.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py index 40bdb5a9a..a75e8eb4a 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -32,7 +32,7 @@ from pipelines.datasets.br_mercadolivre_ofertas.schedules import every_day_item with Flow( - name="br_mercadolivre.item", code_owners=["lucascr91"] + name="mercadolivre_ofertas.item", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_item: # Parameters dataset_id = Parameter( @@ -105,7 +105,7 @@ # Trigger DBT flow run current_flow_labels = get_current_flow_labels() sellers_flow = create_flow_run( - flow_name="br_mercadolivre_ofertas.vendedor", + flow_name="mercadolivre_ofertas.vendedor", project_name=constants.PREFECT_DEFAULT_PROJECT.value, parameters={ "dataset_id": dataset_id, @@ -139,7 +139,7 @@ with Flow( - name="br_mercadolivre.vendedor", code_owners=["lucascr91"] + name="mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_vendedor: # Parameters dataset_id = Parameter( From 2af9a7399f685642259a48c6299cd7c549e7ef5b Mon Sep 17 00:00:00 2001 From: Lucas Cavalcanti Rodrigues Date: Tue, 11 Jul 2023 18:53:33 -0300 Subject: [PATCH 79/86] Update flows.py try to registry flow --- pipelines/datasets/br_mercadolivre_ofertas/flows.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py index a75e8eb4a..9ef72b568 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -32,7 +32,7 @@ from pipelines.datasets.br_mercadolivre_ofertas.schedules import every_day_item with Flow( - name="mercadolivre_ofertas.item", code_owners=["lucascr91"] + name="br_mercadolivre_ofertas.item", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_item: # Parameters dataset_id = Parameter( @@ -105,7 +105,7 @@ # Trigger DBT flow run current_flow_labels = get_current_flow_labels() sellers_flow = create_flow_run( - flow_name="mercadolivre_ofertas.vendedor", + flow_name="br_mercadolivre_ofertas.vendedor", project_name=constants.PREFECT_DEFAULT_PROJECT.value, parameters={ "dataset_id": dataset_id, @@ -139,7 +139,7 @@ with Flow( - name="mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] + name="br_mercadolivre_ofertas.vendedor", code_owners=["lucascr91"] ) as br_mercadolivre_ofertas_vendedor: # Parameters dataset_id = Parameter( From ccb7d0f4f16023a534c599e801cfc21fce0e10f2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 21:54:43 +0000 Subject: [PATCH 80/86] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pipelines/datasets/br_mercadolivre_ofertas/flows.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/flows.py b/pipelines/datasets/br_mercadolivre_ofertas/flows.py index 9ef72b568..148cfcb18 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/flows.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/flows.py @@ -134,7 +134,9 @@ ) br_mercadolivre_ofertas_item.storage = GCS(constants.GCS_FLOWS_BUCKET.value) -br_mercadolivre_ofertas_item.run_config = KubernetesRun(image=constants.DOCKER_IMAGE.value) +br_mercadolivre_ofertas_item.run_config = KubernetesRun( + image=constants.DOCKER_IMAGE.value +) br_mercadolivre_ofertas_item.schedule = every_day_item From 92e36fc0a3eae4485c88b4dddb6c34c8f7d4e1bb Mon Sep 17 00:00:00 2001 From: Lucas Cavalcanti Rodrigues Date: Tue, 11 Jul 2023 19:05:59 -0300 Subject: [PATCH 81/86] Update cd.yaml --- .github/workflows/cd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index 682e5db59..2531942c7 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -79,4 +79,4 @@ jobs: - name: Register Prefect flows run: |- - python .github/workflows/scripts/register_flows.py --project $PREFECT__SERVER__PROJECT --path pipelines/ --schedule --filter-affected-flows + python .github/workflows/scripts/register_flows.py --project $PREFECT__SERVER__PROJECT --path pipelines/ --schedule From 78350c166e12945bcf469e6d6bc5ef87e264f53c Mon Sep 17 00:00:00 2001 From: Lucas Cavalcanti Rodrigues Date: Tue, 11 Jul 2023 19:07:08 -0300 Subject: [PATCH 82/86] Update schedules.py --- pipelines/datasets/br_mercadolivre_ofertas/schedules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/schedules.py b/pipelines/datasets/br_mercadolivre_ofertas/schedules.py index 7baa9e164..24c770980 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/schedules.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/schedules.py @@ -25,7 +25,7 @@ "materialize_after_dump": True, "table_id": "item", "dbt_alias": False, - "table_id_sellers": "vendors", + "table_id_sellers": "vendedor", "materialize_after_dump_sellers": True, }, ) From f19f0af583c11c52592608ce15dbd4cb45c00cec Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 20:36:55 -0300 Subject: [PATCH 83/86] remove logs --- pipelines/datasets/br_mercadolivre_ofertas/tasks.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/tasks.py b/pipelines/datasets/br_mercadolivre_ofertas/tasks.py index a3afad809..8b78022e1 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/tasks.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/tasks.py @@ -77,11 +77,6 @@ def crawler_mercadolivre_item(): filepath = "/tmp/items_raw.csv" df.to_csv(filepath, index=False) - # check if features column has values different than {} - unique_features = df["features"].unique() - log("Unique features:") - log(unique_features) - loop.close() return filepath From a85e02862ff61d47637c047ab48e1593da3b11c8 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 21:08:59 -0300 Subject: [PATCH 84/86] fix unique id --- pipelines/datasets/br_mercadolivre_ofertas/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/utils.py b/pipelines/datasets/br_mercadolivre_ofertas/utils.py index 1ad02d7c5..e3f6c45ab 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/utils.py @@ -83,6 +83,7 @@ def generate_unique_id(text: str): None """ # Convert the string to bytes + text = text.lower().strip().replace(" ", "") string_bytes = text.encode("utf-8") # Generate the SHA-256 hash @@ -334,10 +335,10 @@ async def process_item_url(item_url, kwargs_list): seller_link = await get_seller_link(item_url, attempts=5, wait_time=20) info["seller_link"] = seller_link if info["seller_link"] is not None: - info["seller_id"] = generate_unique_id(info["seller_link"]) seller = info["seller_link"] seller = " ".join(re.findall(r"([A-Z]+)+", seller.split("?")[0])) seller = seller.strip().title() + info["seller_id"] = generate_unique_id(seller) info["seller"] = seller else: info["seller_id"] = None From c5ce7635955db12c9682282e900bff9dafe201cc Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 21:11:11 -0300 Subject: [PATCH 85/86] fix unique id --- pipelines/datasets/br_mercadolivre_ofertas/utils.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/utils.py b/pipelines/datasets/br_mercadolivre_ofertas/utils.py index e3f6c45ab..e94aac188 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/utils.py @@ -90,11 +90,8 @@ def generate_unique_id(text: str): hash_object = hashlib.sha256(string_bytes) hash_hex = hash_object.hexdigest() - # Take the first 12 digits of the hexadecimal hash - hash_digits = hash_hex[:12] - # Convert the hexadecimal digits to an integer - unique_id = int(hash_digits, 16) + unique_id = int(hash_hex, 16) # Ensure the ID is positive unique_id = str(int(abs(unique_id))) From 6ec5391b3e23226a6cba5360f12320b455bfbee0 Mon Sep 17 00:00:00 2001 From: lucascr91 Date: Tue, 11 Jul 2023 21:38:52 -0300 Subject: [PATCH 86/86] fix unique id --- pipelines/datasets/br_mercadolivre_ofertas/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipelines/datasets/br_mercadolivre_ofertas/utils.py b/pipelines/datasets/br_mercadolivre_ofertas/utils.py index e94aac188..8f379d51d 100644 --- a/pipelines/datasets/br_mercadolivre_ofertas/utils.py +++ b/pipelines/datasets/br_mercadolivre_ofertas/utils.py @@ -77,7 +77,7 @@ def generate_unique_id(text: str): text (str): The input text to generate the unique ID from. Returns: - str: The generated unique ID as a 16-digit string. + str: The generated unique ID Raises: None